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

Learning About Machine Learning: An Introduction

“Machine learning” is the kind of tech buzzword that is both alluring and vague. From tech giants like Google and Facebook to just-off-the-ground startups, machine learning seems to be everywhere. But what does it actually entail? And what is the best way to get some practical experience with this powerful technology? This post summarizes my introduction to the basics ( very basics ) of machine learning. It also represents my minimum viable product of learning, so to speak, and will hopefully serve as an encouragement to others with little experience that the subject can in fact be approachable. Overview: Supervised Learning with Linear Regression Machine learning is a tool that can give us insight into large datasets. But its real power comes from being able to process data and then make predictions and decisions based on data it has previously processed. Boiled down to its simplest form, when we talk about machine learning we are asking the computer this question, “Given this set of data, what can you tell me about a new data point that you have not yet seen?” In this blog post, I will talk about supervised learning, in which we train the machine to mimic and extend a dataset. What does it mean to mimic and extend a dataset? Let’s look at the simplest example, a line of best fit. If we have a dataset, say data about the relationship between an apartment’s square footage and its rent price, we can plot our data and draw a line that describes the data in the most accurate way. (For the sake of this example, let’s forget about other factors like location.) We can say the best fit line mimics the data because it describes the data trend, but it doesn’t map exactly to the points we plotted...
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

How to Be Successful in Module One (from the Repeater)

In February, I started a program at Turing School of Software and Design to become a software developer. After experiencing the professional world for a few years, I was desperately ready for a change. I stumbled onto Turing through fate (and through a panel geared towards women interested in learning to code), and the rest is history. Or is it? While in module 1, I realized that I was not ready to move onto module 2 like the rest of my classmates. I could give you a million excuses as to why I was not ready, but the reality is that this is extremely hard stuff and not everyone is going to understand it all the first time. So I decided to repeat module 1, and from that experience, I created a few tips for repeating or incoming students on how to be successful at Turing: 1. Understand your Environment Turing is chock-full of students looking for something different. Most people don't attend Turing when things are going awesome in their lives. This school is a path to new, life-changing careers. Remember that not everyone came from the same place you did, but the motivations for change are very similar. 2. Don’t Disregard the Experience of Others Because you do not know everyone’s background, you do not know their experiences. To the eye, someone could seem to be less experienced or less worldly, but never discredit where that person has been. I have met so many people that I assume come from a certain background and upon further conversation, they are not who I thought at first (they are always better) . There are people of all ages and socio-economic statuses, and you cannot tell that from looking at them. Embrace the group interactions that are forced upon you. It...
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

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

Tips for Improving Web Accessibility

Since Turing is such an intensive program, we often don't have the time to scrutinize every design choice for the applications we build. HTML and CSS are mostly self-taught ( but not for long ), so it’s no surprise that most of us do not consider web accessibility when frantically trying to get a fully functional application running in three days. Making sure your website is accessible means making it available and usable by everyone, including people of all different abilities. Would a person who can only use the keyboard be able to navigate your website? Is content available in different formats so that, for instance, a person who is hard of hearing can access a transcript or subtitles for audio content? There are many other considerations: Text alternatives for non-text content such as images. Captions and alternatives for all audio and video content. Sufficient contrast between text and background (contrast ratio of at least 4.5:1). Site can be navigated entirely with a keyboard. Make sure there is enough time to read all content (allow user to pause content, or use these other options ). Do not use content that will trigger a seizure (flashing lights of 5-20 flashes per second - see this full list of triggers ). For more detail and a full list of considerations, see these accessibility principles on W3C ’s Web Accessibility Initiative . Also take a look at these preliminary checks to see if your website meets some basic standards. Besides opening up your application to more users, there is another benefit to making your website accessible -- search engine optimization. With text alternatives and microdata, search engines can find content more easily and accurately. Microdata are simply descriptions of content on the page and you can implement them using attributes like this example...
Read Full Article
Upload Background Image
Drop File