How to Be Successful in Module One (from the Repeater)
Read Full Article
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...
Hands Off the Mouse!
Read Full Article
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...
Posse Spotlight: Making Text-Based Games with Miyamoto Posse
Read Full Article
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,...
Make Database Performance Great Again
Read Full Article
I built a Rails app that took 300 seconds to load. No, that’s not a misprint. I didn’t forget to include the ‘milli’ prefix, and I’m well aware an app that slow will never be more than a dumpster fire of sadness — no matter how interesting or visually appealing the data it renders is. So, how did I get there? And more important than that, how did I refactor my code to bring database performance back to a satisfactory state? Before we dig in, let’s take a step back. On the job, you’re likely to encounter database performance issues due to the average web app being so database reliant. When this happens, where do you start? Resist the urge to immediately start rooting out N+1 queries, and instead use a service that measures app performance one call at a time. The small time investment required up front will almost assuredly save you time and headaches in the long run versus the guess and check approach. Bullet, Skylight, and New Relic are all good options for Rails apps. I used New Relic and quickly confirmed the problem I suspected — an index page was calling nearly the entire database over 200 times when only a single query was necessary. So, we’ve found the bottleneck, now what? In my app, the ‘count_tweets’ method queries a database of 10,000 tweets, groups them by user location, and groups them once more according to a hashtag ID. Prior to the refactor you see in the screenshot, the return value from ‘count_tweets’ was called by four other methods in the class and the database was queried each time. A table in the index view called these four methods for each of the 50 states plus DC — 204 database queries in all! Gross. Let’s eliminate this absurd traffic jam. Wanting to...
Tips & Tricks for Using Travis CI
Read Full Article
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...
How to Solve Communication Gaps Between Developers & Customer Support
Read Full Article
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...
Tips for Improving Web Accessibility
Read Full Article
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...
The Bottom Five Percent
Read Full Article
My name is DJ Greenfield, and I graduated from the Turing School of Software and Design in June of 2015. I only recently found employment working remote at a startup in Washington D.C. Recently, I had my baby shower at my coding school. Say that out loud: Baby shower at a coding school . Two months before, I had received an email allowing me to defer my tuition until I am in a better place financially. To top it off, I've been handed plenty of leads towards employment through the Turing network in the last five months. All of this help comes after nearly ruining my cohort's mountain retreat weekend with an unnecessary (and extremely embarrassing) trip to the hospital, verbally refusing career help from the Turing staff on several occasions, and seven months of my borderline inappropriate mannerisms which are only very very slightly overshadowed by my high-energy, happy attitude. When I can't sleep at night it's because I feel like an ungrateful jerk. This is my Impostor Syndrome. I don't fear being exposed as an empty-minded bad programmer or someone who has slipped through the cracks with no coding prowess to show for it. At the time of my graduation, I was probably the most confident student to leave the dungeons of the Turing School. All of those l33t coding skillz are great, but until I was finally employed (thanks to one of those Turing connections) I felt like a no-good impostor in my community. Earlier in the job hunt, three days before getting rejected by my number one job choice to be exact, I was informed by Turing that I was one of five remaining graduates without a job. I was 20% of the Turing graduate problem. Most of the other slackers had graduated a few weeks...
How I Learned to Stop Worrying and Love the Bomb
Read Full Article
Errors are your friends. This idea was difficult for me to grasp when I first started programming. A typical block of work time would consist of the following: Write some tests and some code that should theoretically make those tests pass Run the tests Get terminal output similar to the image above Panic I would watch my screen fill up with terrifying error messages and I'd freeze. Yes, I know my code is broken thankyouverymuch. It took me a while to appreciate that what lay before me on the screen was not a pile of computer word vomit but rather a roadmap of sorts, and all I needed to do was learn how to read it. To be completely honest, I hated school until I figured this out. One of the most important things a new developer can do is learn to read a stack trace. So, how does one learn to read a stack trace? Read on for some tips: Practice. The more error messages you read, the easier it gets. This is true for just about everything when it comes to programming, but especially so with stack traces. If you're just starting out, ask someone for help. The more you practice, the better you'll get at learning to... Recognize Patterns. If one error is intimidating to a new programmer, then multiple are just downright scary. But often, a single mistake in one's code will have a cascading effect across the entire codebase. Stack traces let us see this easily. For example, if five tests are all failing with error messages that all implicate a particular method, chances are good that this is a place to start troubleshooting. In this case, the stack trace becomes a step-by-step guide to fixing errors or refactoring. Learn What to Ignore. Most stack...
Upload Background Image