Welcome to the Bleeding Edge: Web Development in Swift

While in Module Four, I set out to write an app using Vapor, a web framework exponentially growing in popularity. With the help of the amazing Vapor community, and a number of educational videos, I was able to learn the foundations of Swift and Vapor. That said, I also learned the cost of developing with something so new. This post will serve as an introduction to creating a Vapor project and a retrospective into the cost of developing with bleeding edge software. I’ll be discussing it from the viewpoint of a Ruby on Rails developer, but most of the takeaways should remain agnostic. What is Swift? Released in 2014, Swift was created as a solution to the antiquated Objective C language that powers the Apple platform. Its syntax and language style follow that of more modern languages like Ruby or Python, but under the hood, it’s an inherently compiled language like its older brother Objective C, making it blazingly fast. Within the year, the interest in Swift skyrocketed, reaching the Top 3 of Most Loved Languages on Stack Overflow in 2015 and in 2016. It began to dominate all mobile development, replacing Objective C as the primary language. Overall, it became a smash hit. So of course, people wanted to use it for Web Development. Meet Vapor Thankfully, Apple heard the pleas to make web development happen, and open sourced the entirety of the language in December of 2015. This allowed a number of open source projects to spring up that leveraged Swift to build web frameworks while running on a traditional Linux server node. Currently, at the forefront of this movement is a project called Vapor. Created by Tanner Nelson and Logan Wright, the project was launched in January of 2016 and just reached 1.0 as of September 15th,...
Read Full Article

Hack the News: Our First Hackathon

From Chelsea Skovgaard A mad rush of two hours of writing code, merging CSS and Ruby on Rails, munching pizza, and drinking beer was our experience at our first hackathon. On September 16, a team of Turing students competed at the Hackthe.News event that was hosted by Name.com . The goal of the hackathon was to bring developers and journalists together to create ways that reporters can share important stories while maintaining their business’s sustainability. I, Chelsea Skovgaard, and Jasmin Hudacsek were lucky enough to be two of the students who participated. Often, it is challenging to participate in an event outside of Turing with the intensity of the work, but taking time to participate on the Friday before finals week was one of the best decisions I made during my first module at Turing. The Turing team consisted of me (1608 Front End), Orion Osborn (1410 alum), Noah Berman (1608 Back End), Jasmin Hudacsek (1606 Back End), Jean Joeris (1606 Back End), Christopher Calaway (1606 Back End). Our team members’ reasons for joining the hackathon varied from exploring technology careers linked to journalism to discussing the lack of quality news during this election cycle. After a short brainstorming session that involved talking to a couple journalists, we decided to work on a tool for journalists that would combine tracking story pitches along with a contacts database to streamline sources and stories. Due to the team’s background, we decided on an RoR application while I — being the sole front-end focused member — wrote the CSS. From Jasmin Hudacsek I’ve only been at Turing for the last four months, so it was a bit intimidating going into my first hackathon. However, the turnout for this event left me feeling a bit more at ease. The team to get second place...
Read Full Article

Where to Begin: Solve a Problem that You Know Well

In this post, Kerry Sheldon describes her personal project from module 3 of our Back-End program. With this project, Kerry was one of the winners in our first Demo Competition Finals. Our next Demo Competition Finals will be held on Thursday, October 6th. Stay tuned for a meet-up announcement! I enrolled at the Turing School of Software and Design because my “ideas" notebook in Evernote had become a virtual graveyard. I couldn’t bear to open it; the gulf between my skills and ambitions was too large. In the five months I’ve been at Turing, I flexed a lot of muscles that I hadn’t used in a long time. But one remained relatively dormant. My “idea" muscles were atrophying. At the end of Turing’s third module (the program consists of four 6-week modules), students work on a self-directed individual project. I wanted to build something with immediate utility. I needed an idea that didn’t require a client or organizational owner, or depend on a network of users in order to be useful. I wasn’t ready to face the Evernote notebook, but I could solve a problem that I’d been having. I built CodePoints as a productivity app for beginning programmers that allows users to set small weekly practice goals for focused programming skills they want to develop. Users log their practice sessions from the web app or from a companion command line app. The app tracks practice activities by skill, has a point system that rewards goal achievement, and provides data on practice sessions for a variety of time periods. User’s current week dashboard of goals and logged practice sessions Before I came to Turing, I made a few attempts to teach myself to program. I was awed and excited by the large and growing number of free (or affordable) resources...
Read Full Article

Kanban's Fo' Everyone!

At Turing, the pace moves so quickly that I wish I had the luxury of more time or could even be granted a do-over. That is unfortunately not the case for many aspects of life, let alone a fast-paced code school. So what are the options for dealing with a fast-paced environment? I have found myself thinking about this topic more and more as time goes on, and I believe I have found an answer. The solution is not as easy as pausing time in the way that so many books and movies have made it seem. Instead, the solution deals with managing all of the assignments, errands, and tasks that life provides as soon as possible. I do not mean that all of these tasks should be completed right away, just simply managed. A simple way to accomplish all tasks would be to adopt the Kanban Board, a workflow cycle utilized by both manufacturing and software companies. The Kanban Board was originally used by Toyota during manufacturing in the 1940s. In Japanese, Kanban means “visual signal.” The meaning is the foundational property that has kept the Kanban Board a useful resource for so long. It was used to visually pass messages relating to progress down an assembly line by Toyota. Now, it can be used in group assignments or implemented by a single individual as I plan to do. The Kanban Board may sound like a huge piece of beautiful wood, but it can really be anything from a poster, whiteboard, or even some tape on the refrigerator door. But every board must have three vertical columns with the titles “to-do,” “in-progress,” and “done.” Once the layout is complete, one would simply need to write all of their tasks out onto separate note cards or sticky notes. Next, one...
Read Full Article

Hands Off the Mouse!

As a newcomer to the world of programming, I was somewhat reluctant to learn keyboard shortcuts. Using hot keys and being able to “type quickly” as I saw it seemed like finishing touches to my education rather than the keys to its success. As I’ve become more comfortable with code, shortcuts have become a way of personalizing my workflow, and something I’d encourage everyone who is new to developing to learn and learn quickly. Thus far in my education as a developer, workflow has been highly emphasized. That’s because it's actually pretty important to know your way around the keyboard. Constantly arrowing one key at a time around my code and manually searching a Rails project for a certain file not only takes time, but it takes your head out of the problem you’re trying to solve. After finally realizing the importance of what I was once so reluctant to learn, I’ve adopted some favorite shortcuts that I would encourage every developer to learn. Below I will go through a list of my favorite shortcuts, as well as ones I am still incorporating into my workflow. Keep in mind that these will be specific to my text editor, atom, and the browser I use most often, Chrome. Across different applications these shortcuts may vary so double check if you use something else. GitHub Shortcuts: These are not shortcuts I started out with, but ones I am learning. Anywhere on GitHub you can type: in order to see all handy shortcuts available on github. Keep in mind some of these are only available within a specific repo while some are sitewide. Take a look at some of these and try to incorporate them into your Git workflow. Chrome Shortcuts: Chrome is another area in which I am still working on improving...
Read Full Article

Posse Spotlight: Making Text-Based Games with Miyamoto Posse

Last module, the Miyamoto posse was founded. Our focus is game development, and we are named after esteemed game creator Shigeru Miyamoto , who created a lot of the games we love (Donkey Kong, Legend of Zelda, Metroid Prime). We began the module by following some tutorials on how to build 2D games with the Gosu gem. The Gosu gem has a lot of built-in methods that make game development easier. However, we had a lot of students in the posse who were newer to programming, so the syntax-heavy 2D games were a bit too challenging at the time. We started on a text-based game, which is a great introduction to game development. No need to worry about rendering images — you only need to worry about the logic of the game itself. We decided the theme of our game would be “Turing Apocalypse,” and you would need to enter the various rooms of the “dungeon” in order to advance in the game. Text-based games allow newer programmers to practice principles of object-oriented programming. It is conceptually easy to break the games in OOP components, such as Player, Monster, Room, etc. For example, here is our Player class: The Player class only has two attributes: name and health. We instantiate a new Player object at the beginning of the game after we ask the player’s name. We also have a Monster class that has virtually the same attributes. Games rely on loops — the game needs to continue until the player beats the game (or they die). Here is our current game loop: The playing variable is a boolean (is set to true or false) that controls when the game ends. As soon as the player dies, this variable is set to false, and the game ends. In our loop,...
Read Full Article

Posse Spotlight on Pahlka Posse

One of the aspects of Turing life is our posses, which are student groups designed to provide peer support and are named after well-known people in tech history. Last intermission week, Turing decided to do a "posse reboot," changing a number of things about the ways posses work at Turing. Namely, they are now opt-in and are focused on a particular topic or meeting schedule. I and a number of other students were invited to be new posse leaders. At first, I felt pretty hesitant about heading up a new posse. My prior posse was a little lackluster, and I had already put a lot of my time into other community programs and wasn’t sure if I would have the ability to head up a new posse well. But then, another student, Beth Sebian, asked for a partner in creating a posse focused on civic tech. Beth is one of the coolest people on the planet and I feel very passionate about addressing social issues, so, (of course) I had to ask Beth if she’d have me as her partner. She, (of course) was happy to have me, and we ventured forth on the creation of the Pahlka Posse, named after Code for America founder Jen Pahlka . Creating a Space People Want to Be In First step to getting our posse off the ground: recruit people to be in it. I ran around hyping the posse up to anyone who would listen, and then we pitched our posse along with all the other posses in front of the student body. From this, we got our first 10 members! Next step to starting the posse: get people to stay active in the group. We have all seen our fair share of groups form and then lose momentum and peter out...
Read Full Article

Embedding Rust in Ruby

Current 1602 student Matt Pindell shares a quick tutorial he created on the basics of embedding Rust code within Ruby by using FFI (foreign function interface) to speed up an implementation of nth prime: Acccess the screencast by clicking on the screenshot above or you can find it on Youtube here .
Read Full Article

Tips & Tricks for Using Travis CI

My project at school this last week was to work with a team on an established Rails application in the same fashion we would if we were working together on the job out in the real world. We had to submit and comment on pull requests as each of us built out a feature, did research, or attempted to chase down a bug. I undertook the task of implementing Travis CI, something I thought was going to be very simple and only take a day, maybe two. In retrospect, this whole thing was very simple, but figuring out what I needed and how to string it all together the first time was a bit of a headache. So I'm going to lay out the basic steps here in a hopefully more straightforward and helpful manner than what I myself encountered. But first, what am I even talking about? Well, the 'CI' in Travis CI stands for continuation integration , a development practice in which each time a pull request is submitted on Github, the code is checked against an automated build and tests are run automatically. The idea behind it is that any issues will be caught early on, before a branch is merged into master. My favorite part is that I often forget to run my test suite before pushing up my code, so it's nice to have that check in place. The first thing you want to do in order to add Travis CI to your project is sign in to Travis with your Github account. If you then go to your accounts page and click Sync account you should be able to look at all your repositories. There will be a little toggle switch next to each repo - flip the switch on for any repos you...
Read Full Article

How to Solve Communication Gaps Between Developers & Customer Support

In a prior life, before entering the world of software development, I worked for WeddingWire.com on the Customer Success Team. I had many responsibilities related to WeddingWire’s paying advertisers, one of which was reporting site bugs and/or client product feedback to the development team. From that experience, I know that there can be significant gaps in the communication between a development team and a service team at tech companies. Though easier said than done, I believe development teams and developers themselves should make a greater effort to proactively minimize those gaps, and I want to present an example scenario in which WeddingWire’s development team could have helped me perform my job more effectively. Have you seen the skit where a developer is asked to “draw seven red lines, all of them strictly perpendicular, some with green ink and some with transparent ink”? (If not, check it out ). The point is though, it can be really challenging for developers to work with folks who don’t develop. Be it a product manager, customer service rep, or even company leadership, sometimes people simply don’t know what they’re asking for. Still, I find that sketch particularly humorous because, having been on the other side of the equation, I know it only paints half the picture. Here’s the thing guys and gals: it ain’t rainbows and sunshine working with developers either. As a Customer Success Manager at WeddingWire, the hardest part of my job was handling angry or upset clients. You’d be amazed what sets people off, like not being able to add custom music to a slideshow tool (hello, copyright infringement!), or a competitor showing up above them in search results (the competitor is paying five times what you’re paying to get that placement, so...). These complaints can be handled fairly easily, but...
Read Full Article
Upload Background Image
Drop File