00:00:17
Thanks for letting me follow that. Oh, my pleasure! I just want to announce a hack fest we're putting on from August 1st to the 3rd at RubyForGood. You can check it out at rubyforgood.com. This is a three-day-long hack fest to get an entry into open source. We're going to be hacking on social good projects, so come on out if you're in the DC area. It will cost about $200, a little less unless we get some sponsorships. If you work for a company like GitHub or Rackspace, we have this great product, but no one has heard of it. Maybe you can sponsor us and get your name out there.
00:01:15
All your lodging and food will be covered. If you want to sell it to your work, we're going to have workshops on the second day. We've got one of the guys from the RSpec core team giving a talk on RSpec. I'm almost out of time, so we'll also discuss Angular and building APIs. Thanks! Alright, you guys need to send messages between your projects. Normally, you would do that with JSON or XML.
00:02:43
My laptop has gone out to lunch. Oh, there it is! It's back. Alright, let's talk about JSON. JSON is cool, but there’s also another thing called MessagePack. It’s like JSON, but it’s binary. It's totally agnostic to the type of data you're transmitting. In case you haven't heard of that, check it out! Google has a project called Protocol Buffers that is even more binary. With it, you set up an IDL, or Interface Definition Language, to transmit exactly what you intend to. So why would you use one of those? Well, let’s see.
00:04:56
Actually, this may be hard to see. There are monitors in front, too, so don’t forget about that. On the left, you've got a Rails controller, responding to different formats. I tossed in some MIME types quickly so you can see the various formats. It's pretty easy to use these other data formats, except for Protocol Buffers. You actually need to define an Interface Definition Language, which can be quite fun.
00:06:05
So, how fast are they? Well, I have a benchmark here which is actually quite surprising. I expected the binary formats like Protocol Buffers to be super fast, way faster than anything else, but it turns out they are actually quite slow in Ruby. I then tried it in Python and found that Protocol Buffers aren't as slow, but they are still slower than MessagePack, which was even slower in Python. So don’t use those if you care about performance in Python.
00:07:10
Maybe it's just the dynamic languages. I even wrote the same test in Go, and it turns out that in Go, Protocol Buffers are the fastest due to minimal memory allocation. JSON and MessagePack are kind of the same in performance. Bottom line: you should know what you're going to do with your data. If you don't know, just use JSON. It gets the job done. If you’re coming from 1990, you might consider XML, but if you're using Ruby on both sides, use MessagePack since it’s actually a lot faster.
00:08:43
However, you need to consider how much data you're transmitting. For instance, if you're parsing 10,000 messages with various dates, it turns out Protocol Buffers used approximately 2.5 MB, JSON was almost 10 MB, and MessagePack sat somewhere in the middle. If you're not running it over localhost, like I am, it might actually make sense to use Protocol Buffers and just accept the parsing time. There are trade-offs to make here, and you should know about them when connecting your services.
00:10:50
Thanks! Good evening everyone! Hi, I am Sachin and I work at Josh Software from our Pune office.
00:11:01
This is interesting for me because I recently encountered a problem where I had a legacy application and needed to quickly provide support for a native mobile app. It needed to be done very quickly. That's the reason I want to share what I did during this process. You might be wondering why I’m sharing this, considering we had a great session by Jerem yesterday. However, what we saw yesterday was great, but it works best if your consumer is a web application and may not work as effectively for a native mobile app.
00:12:25
In analyzing the application, there are two scenarios to consider if a native mobile application is to authenticate with the backend service. One scenario is where the user is created during sign-up, and the second scenario is when the user signs up using a third-party provider like Facebook or LinkedIn. These scenarios must be handled properly, or else the application will fail. As a standard practice in API implementation, the solution is straightforward.
00:13:11
First, we need to enable token authentication and add an API framework. Once you do that, the first scenario basically means that the client, which is a mobile app, can request a token. It makes an API call, passes the credentials which are stored in the backend. The server authenticates the user and sends back an authorization token corresponding to the authenticated user.
00:14:30
However, this won't work in the second scenario. A typical native mobile application does not authenticate with the backend server; instead, it uses the SDK provided by third-party providers like Facebook or Twitter to authenticate directly.
00:15:46
After successful authentication, the mobile app expects the backend service to respond with data pertaining to the particular user. This complicates things further because you cannot store or send the credentials to the backend server. So what do we do? Anyone here who has encountered this?
00:16:50
Okay, many of you are familiar with this process. What you need to do is pass back the access token received from Facebook or Twitter, along with the provider, and the user ID (UID). When you send these details to the backend server, the backend server can serve data based on that user. However, there is a crucial step here: when you send this information to the backend server, it is necessary to authenticate that the UID being passed belongs to the user requesting the data.
00:17:19
This can be accomplished easily using the access token to contact the provider and validate the information against the UID. If you do this, then you're good to go! That's all. Thank you, everyone!
00:18:24
Good evening, friends! My name is Ghani, and I have my colleague Siddhant with me. We already spoke about accessibility on the first day after DHH's keynote. However, after interacting with a few of you, we realized we needed to reiterate the "why" and "how" of accessibility. So now, over to Siddhant.
00:19:44
Hello! Am I audible? So, first of all, what is accessibility? Accessibility issues are akin to when I am walking down the street, trying to ask someone for directions, and I ask, "Where is XYZ?" The response is "It's right there," but I can't see where 'there' is. This is the type of accessibility issue faced, which is even more prominent on the web, like images lacking descriptive text.
00:21:05
So, why should you really care about accessibility? There are blind users, and yes, that’s a small percentage, but should I really care? No, but please do care because if you don’t, there will be consequences to face with legal obligations. It's not just about legalities; accessibility can actually improve your business. The end users of your web presence increase significantly as we stated during our first day's talk: about 15% of the world population has a disability, that's over a billion people!
00:22:36
If more businesses prioritize accessibility, then you’re in demand as a developer knowing those principles. Additionally, from an SEO perspective, accessibility can help improve search rankings, and finally, of course, you'll be less prone to run into legal issues regarding accessibility compliance.
00:23:41
So, how should you go about it? Start by studying the Web Content Accessibility Guidelines (WCAG) or the Accessible Rich Internet Applications (ARIA). Just Google WCAG 2.0 or ARIA, and you’ll be on the right track. There are three main ways accessibility can be implemented: you can learn it yourself, get professional training, or involve subject matter experts, including end users who rely on screen readers.
00:25:09
We also offer trainings, conduct workshops, and certify websites for their accessibility. Please get in touch with us to learn more about accessibility techniques.
00:25:59
Next up is Andre with his talk "Pairing from the Remote World of Your Couch!" We've started our fifth lightning talk in 3, 2, 1. So who is this Mohawk guy talking to you? I am a software engineer at Articulate. What is Articulate? It's an e-learning company focused on creating tools primarily designed for teachers and trainers. We focus on remote work, which comes with its own unique challenges. I sometimes work there with my two children. I have to introduce them because they help compensate for my talk.
00:29:12
Now before you ask, no, I am not breaking bad! In addition to being a software engineer for Articulate, I am the magistrate of fermentation and co-founder of Cataman Brewing Company outside of Chicago. When talking about remote development, it's often seen as a challenge, but in reality, it’s quite different. You need to focus on time management. The first complaint people have when they work remotely is that they get so little done. Reality is, that’s more about the individual’s time management and less about the remote work structure itself.
00:30:43
I’m going to demonstrate how I manage my time daily with kids and two jobs. My day usually starts at 6:30 am with heating brew water, then watching Magic School Bus with my son at 6:45. Time management matters! By 8:10, I am reviewing PRs and pivoting on tasks as the day progresses. Throughout the day, I manage my brew processes, have coffee breaks, and maintain my kids' schedules while still being productive for the work tasks.
00:31:58
The key takeaway is to block out your time effectively when working remotely. Pairing or working alongside someone else keeps both parties accountable. Remote collaboration still requires clear communication, similar to traditional office spaces.
00:32:51
How many of you have used Shared Computer setups? Remote pairing? Love those! In physical spaces, you have keyboards, desks, and verbal communication. For remote work, the technology looks surprisingly similar, with tools today allowing us to maintain collaboration without being in the same physical space. In this new remote era, Shared Computer setups and collaborative tools help you stay in touch with team members seamlessly. Pairing shouldn't feel lonely!
00:34:22
Let’s take a look at what’s required for remote pairing! You can use remote sharing of a pair’s machine via SSH or use an independent pairing machine. Terminal editors work great for those who program in a terminal environment.
00:35:53
Serious work calls for serious tools. Using packages like tmux means sharing becomes easy. You connect with the project, everyone can see changes happen live, and the real power lies in the collaborative efforts that come from working together in this way. If your IDE requires collaborative work, I encourage you to research tools like Screen Hero or Flubits. Leveraging platforms supports a flexible work environment.
00:37:15
Verbal communications can be maintained via platforms like HipChat or Google Hangouts. Those tools are vital for keeping connected. Pairing setups can help conquer the isolation that sometimes comes with remote work. Also, don't forget about articulated hiring as Articulate is actively looking!
00:38:41
Next up is Justin! Have you received password resets in recent weeks? I'm Justin Love. I run the JavaScript group and helped with the Ruby group here. We know passwords won’t disappear overnight, but we can enhance existing authentication processes with QR codes!
00:39:35
QR codes can streamline logins when you scan them with your phone. This is the idea behind SQRL or SFQR for quick logins, which essentially simplifies user authentication without password dependency. On the backend, when a user engages, your server will manage a cryptographic challenge and respond with necessary credentials, all kind of seamlessly.
00:40:52
Most importantly, there are security benefits since users control their own private keys. You have ideas in web development to eliminate passwords altogether!
00:41:15
And why? Because as web developers, you are shaping the future! You can explore the SQRL project online, and improve user authentication experiences across web experiences. You understand the current climate and have power to create a safer, more streamlined ecosystem.
00:42:07
So my call to action? Learn more about SQRL, explore how web developers can eradicate passwords, and head towards a secure and user-friendly web experience. Display your ideas on a pinboard to share resources.
00:43:22
Next, Andrew is sharing insights on punchlines and silly hacks. Punchlines come from jokes, so here’s my setup. There was a tweet that queried whether array indices should start at 0 or 1. My joke setup to that gets rejected because when you try to use a 0.5 as an array index, Ruby calls absolute on it, sending it right back to zero!
00:44:39
So, I devised a gem called array subindex, which lets you use floats as array indices. The caveat? Do NOT use this code in production! Now using the array subindex gem, if we use an index of 0.5, we get 1.5—half of values at positions 0 and 1 combined, which makes sense to everyone except programmers.
00:45:17
In showing it as a comedic lesson, I hope to convey how humor can aid in learning complex programming concepts. It reduces anxiety while experimenting, encouraging developers to play with code in levity.
00:46:38
So again, this shows that experimentation leads to better coding practices. I've learned more than I could express through professional settings by developing a playful understanding to find creative solutions. Now you can do the same! Experimentation can lead you to remarkable insights, and I will encourage more such experimentation for the sake of improving my own coding process.
00:48:20
Switching it up—my name is Andrew Vit, and I’m going to discuss Hugin, a system for building personal agents. This year, it has improved significantly since my last talk on it. Hugin is now open source with an extensible Ruby API and has seen about 30 collaborators over the last year.
00:49:44
In Hugin, events flow between agents in an event flow diagram. To automate a task, like reminding myself to take an umbrella if it rains tomorrow, I create a weather agent and give it an API key and location. Then, I create a trigger agent for processing that information by feeding it data from the previous agent and a digest email agent that sends alerts at a specific time.
00:50:50
You can also set alerts for general trends, using Twitter or specific sources like NASA. Integrating SMS and web scraping into Hugin helps streamline location tracking and data analysis into an easy-to-manage platform.
00:52:15
Now, let’s switch gears and update you on Tokaido. You’ve probably seen it in action already, but I’ll be demoing some features as it integrates Ruby and Rails development into a streamlined workflow. Tokaido allows for one-off rails app generation and handles dependencies, creating isolated environments to get you started without any unnecessary installation overhead.
00:54:14
Let me open the terminal down here, where I can create a new Rails app easily while maintaining a clean workspace. Just a straightforward command to set everything up.
00:55:47
As a last bit of excitement, I’d like to share a bit about community contribution and involvement. Here at Tokaido, we strive for clean integration pathways and ensure that our efforts lead to a great user experience while getting the flexibility needed to really focus on creating efficient processes.
00:57:43
So, let’s keep Ruby development accessible and user-friendly. The goal has always been towards helping everyone—from beginners to advanced developers—collaborate and enjoy what they do best. If you have any questions regarding Tokaido, feel free to check in with me after!
00:58:38
Hi guys, I’m Ryan, and I work at Fangamer. Today I’m going to discuss a Rails app built as a single file because we can! It's called Reverse Archaeology. The goal is to learn about Rails using the minimum number of lines of code.
01:00:01
So let's start with Rack. Rack allows you to create responsive routes, treat requests and responses over a defined structure. When we add everything that otherwise seems cumbersome, we can have it all set up in a single file while simplifying the overall application flow. You can make a new Rails app called 'my_app' and watch it all come together pretty seamlessly.
01:01:22
By being modular, we can clarify and ease large frameworks into effective functionality seamlessly while still keeping code concise and well-structured so that both users and developers can focus on enhancing user experience. Remember, well-structured code elevates the entirety of your projects.
01:02:51
This is how we not only teach programming skills to enhance team efficiency but also provide ample opportunity for individual connection and growth as we drill into programming paradigms. A collaborative environment will always yield better results in learning and development.
01:05:00
Finally, I’m Adam Cuppy, co-founder of a consultancy that prides itself on test-driven development and Ruby on Rails. I want to share something we've learned: simple things can carry bigger messages. Functioning examples may be boring, but they're foundational! When you're running commands like these in tests, ensure outcomes are clear when specifications aren't met. The goal is to enhance clarity and understanding.
01:06:33
With our Superstar Formatters gem, we design formatters that enhance the response from RSpec runs, giving developers clarity and understanding when tests fail. As you collaborate, keep pushing towards collective improvement!
01:08:11
I want to build on what Mark said regarding collaborations and engagement. Active participation and experiences shape a stronger web community moving forward, one that thrives on shared understanding. Let’s embrace CGC and focus on grossing knowledge across domains!
01:09:37
I’m Trevi Yarrish of Zeal and I’m here to provide insights on how company culture creates engagement. I’ll end with some insights related to culturing atmosphere for learning experiences! Engaged environments help cultivate appreciation and excitement to delve deeper into software development.
01:10:48
Thank you for attending RailsConf! Let’s set forth and remain curious about our craft! Collaboration creates innovative, empowered teams!
01:12:10
And now, here's Victor! I represent Crowd Interactive from Mexico, where I’m committed to connecting more deeply with our community of developers. We’re passionate about making connections across borders to share insight and build synergies through programming.
01:13:35
Magma Conf is an initiative aiming to build a tighter community; anyone who has felt the bond of camaraderie is welcome to participate and share your experiences. As we raise awareness and expand invitations across various mediums, we can cultivate a stronger talent foundation across companies!
01:14:52
We hope to collaborate with as many developers as possible, so if you have any questions post-event, reach out directly!
01:15:00
Finally, Brian Garside here to reflect on the importance of clear communication. It’s not enough to build great products; we must ensure comfort in our spaces. It's the journey that creates connection.
01:16:18
I recommend sharing prototypes and engaging beyond expectations! Every bit of detail is valuable, and we have incredible opportunities to shape the landscape of development together. Thank you.
01:17:30
Next we hear from Kyoto! Come and explore the endless possibilities of fluentd within the realm of data management! Enthusiasm promotes better systems! Let’s keep the momentum rolling!