Code Adventurer

The Journey to Software Crafts(wo)manship

SICP and Emacs for the Vim User

• published in emacs, functional, learning, scheme, sicp

What is SICP?

SICP, also known as ‘Structure and Interpretation of Computer Programs’, is a textbook by Harold Abelson and Gerald Sussman that was written to be used with the Computer Science 100 level course at MIT. For the last two decades, it has been the cornerstone of many student’s introduction to how computer programs work. It is one of the few textbooks out there that, although originally written in the 1985, still applies in our field today. Although SICP does teach computer science concepts through the use of Scheme, the language that is being used is not as important as the concepts presented. Many fundamentals courses these days focus more on the language, and this is often cited as the reason why SICP is still relevant. After asking many programmers in several communities what their favorite book is on programming, SICP came up time and time again. As such, I am embarking on the journey to learn and practice through this textbook. But first, I need to get my environment set up. And that’s where the interesting findings began!

Building My Own Lightsaber: Ergodox Tips

• published in projects

Building a keyboard can be likened to building a lightsaber. I set off on an adventure, found some plans, and somehow found the confidence to give it a try.

This is not an endeavor that happens without trepidation. When I first decided to spring for an Ergodox kit on Massdrop, I knew that I wouldn’t be getting the parts in the mail for months. I figured I knew how to do a little soldering (thanks to the Concococtory’s beginner class), and it wouldn’t be a big deal. But once the kit was on my front porch, months later, I started to doubt my abilities to complete this project.

Build Your Own API Data Vaccum With Sinatra, Redis, and MongoDB

• published in api, mongodb, redis, sidekiq, sinatra, tutorial

After setting up a SparkCore device (an internet-connected, Arduino-like device) to report the temperature and humidity in my greenhouse, I had one problem: persistance of the data. The SparkCore can transmit data via their SparkCloud API if you assign a variable for it in your Arduino code, and so I had a place where the data was constantly being transmitted. However, since the SparkCore itself has very limited memory capabilities, and since the only thing the SparkCloud itself does it provide a JSON-formatted API, I needed to figure out how to periodically ping the API and scoop up the data into a database.

This didn’t seem like a job for the heft of Rails, so I started with Sinatra. My goals were to create something that others could reuse, improve upon, and deploy easily. Below I’ll outline how to build your own API-slurping app from scratch. If you’d rather just grab the code and hack on it, you can find it on GitHub at evolution of the project is evident through the commit log, so you can see how I started building up from a few simple files to a more organized solution.

In this walkthrough, I’ll be showing you how I built a simple Sinatra app with Redis and MongoDB to suck out data from and API and store it in a database for use in a data visualization project.

My First 100 Days as a Software Engineer

• published in journey

Today marks 100 days* since my first day as a software engineer at Hireology, and it’s been an amazing experience.

A week before I officially became a software engineer, I packed up my apartment in Denver, shipped some bigger things home, packed the rest of my life in a suitcase and hopped back on a plane to Akron, Ohio.

I had done it — I had learned as much as I could in the six months that I attended gSchool with my fellow classmates, and leveled up my game in building things on the web. I learned test-driven development, service oriented architecture, modular design and so many more things. And now, I had a week to reorganize my life, and start my job as a remote engineer on a product team.

The Value of Mentorship

• published in journey

When making the decision to start a new career, you might find yourself a little lost. This can lead to a lot of online searches, reading articles and books on the subject at hand, and trying to understand quite a bit of contradictory advice. Instead of more online searches and questions posted to forums, the best investment you can make is in finding a mentor to help you through the maze. Throughout my journey, I’ve come across great mentors, and have been starting to see patterns that emerge during a mentorship that make the relationship valuable and fulfilling for both parties.

Lessons Learned as a Budding Programmer

• published in journey

A little background

I wasn’t new to computers five months ago when I started gSchool, a 6-month intensive & immersive course in learning Ruby and Ruby on Rails, but I might as well had been.

I had spent the previous six years as a web designer who had a knack for getting things to work right. I had set up VPS servers, built up content management systems, and even began building lead generation systems from scratch in PHP with MySQL backends. I had heard acronyms like OO and MVC, but really didn’t know how to program in an object-oriented way, or why models, views, and controllers even mattered. I came to gSchool thinking I would naturally be a top student, as I had been in other courses and programs. I quickly realized this wasn’t the case, but it took me some time to come to terms with that. Looking back on the last five months I think I know why, and hope to be able to help others learning how to program understand what is happening if they come across similar frustrations.

56 Days Until Takeoff

• published in journey

56 days from now, 26 students from gSchool will be closing their laptops, saying their goodbyes, and getting ready to start their careers as software developers.