My 2014 in Side Projects

Inspired by similar posts, I decided to recount my last year in side projects. This is helpful for me because it puts the year in perspective, and perhaps hearing about some of these projects will be interesting for other people.

First, what is a side project? To me, a side project is any work that is not your main source of income. That's not a great definition, because reading a book would therefore be a side project. When it comes to side projects, perhaps it's more apt to say, as Justice Stewart did about obscenity, "I know it when I see it."

chess.dart

In early 2014, I ported chess.js from JavaScript to Dart. I had previous experience with chess programming both in graduate school and through one of my oldest still active side projectschess.dart began as a line for line translation of the original JavaScript source code, but evolved into something more. Initially, the Dart version was several times slower than the JavaScript version (largely because it relied on maps, as in the JavaScript version, rather than custom classes). I was lucky enough to have one of the godfathers of Dart, make contributions to the project that refactored it in a more Dart-like fashion. Of course after this software maestro touched the project, it significantly outperformed its JavaScript counterpart.

I haven't had much of a reason to work on chess.dart since it reached feature parity with the JavaScript version. It even passes all of the same hundreds of unit tests. I have ideas for future projects based on it, but what really delighted me was its use by Anders Forsell in chessboard.dart and chesschallenge. Both of them are really awesome projects that show off the power of Dart and web components. Anders wrote a couple blog posts about them.

Dart for Absolute Beginners

Dart for Absolute Beginners took about 9 months to write and came out in the early summer, published by Apress. It was the first book (and I believe remains the only) written about Dart designed for people learning it as a first programming language. I believe in the book and it has been very well received by reviewers. One reviewer recently called it, "...one of the best introductory texts on computer programming in general; bar none."

Writing the book by myself was a lot of work, but Apress provided a ton of editorial support. Everyone at Apress was pleasant, professional, and helpful. I think we put out a great product. Being a beginners' book, I stuck to core concepts that will not become outdated as the language evolves. However, I did manage to stick in an interview with the founders of Dart, Lars Bak and Kasper Lund. That chapter (chapter 18) is a real gem that even experienced programmers will enjoy.

I created a 12 hour video series based on the book for Apress, but its current status appears to be in limbo after a reorganization of the company. I'm as in the dark as anyone about what will happen to the series, and I am anxiously awaiting some kind of resolution regarding the matter (it was a lot of work to create!). For some reason it seems like you can buy it on Springer's website, although I haven't yet received my advance...

Kopec's Chess Camp 2014

My dad is a well known International Master in chess. He had run fairly successful chess camps since 1994 (with a dedicated business partner, NM Hal Terrie) but took a five year hiatus prior to this year's camp. He asked me to basically run the camp this year from an administrative perspective including marketing, book keeping, handling registrations, medical forms, insurance, making/mailing the brochure, etc. We held the camp at the beautiful New Hampton School near Lake Winnipesaukee in Eastern New Hampshire. While the numbers weren't huge (there's a lot of chess camp competition these days that didn't exist when my dad was a pioneer two decades ago, and the location was a bit remote), everyone had a great week.

Crump

I started working on an 80s style arcade game over the summer to help me learn Swift as part of the Summer of Swift. I used Tiled to edit the levels and the well made JSTileMap to render them with SpriteKit. I got to the point where I had a pretty cool concept and working gameplay. However, once I encountered a rendering bug, I kind of gave up on the project as other work took my time and the contest seemed to be fizzling out (was there even a winner declared?). The (currently showing a black screen) repository is still up - maybe I'll get it rendering again when I have a little more time.

Splip

Splip is an iPhone app I released in the early fall for turning a photo into two encrypted negatives that can only be recombined to view the original when you're in near geographic proximity to the person you shared one of the negatives with. It's a cool concept and the app store version totally works (using email to send negatives and Multipeer Connectivity to recombine them) but I'm not sure there's much of a market for it.

Restaurants

Restaurants is a native Mac Yelp API client that's super fast and integrated with OS X features like Continuity and Maps. I released it in November and it's been selling pretty well. It made it as high as #4 in the top grossing apps in the Lifestyle category on the Mac App Store (which doesn't take much apparently). I wrote a blog post about my experience writing it in Swift that was pretty popular (at least as far as this blog goes!).

SwiftGraph

SwiftGraph is a graph data structure library written in Swift that I created in a few days in November. It recently got a positive mention on a major iOS dev blog. Although it's not battle proven or fast, I did a lot of best open source project practices when making the library - like including copious in-source documentation, unit tests, and a fun example program. I attribute the recent interest in it to these factors.

A side note about SwiftGraph is that despite recently getting about 30 stars in a 24 hour period on GitHub, it never showed up in GitHub's trending Swift repositories. I think the algorithm they use favors projects that already have hundreds of stars, which leads to a lot of inertia. The trending page on GitHub is a place where open source projects get a lot of exposure. It's sad that its cards seem stacked against young projects. There are projects that only have 5 stars in the past 24 hours that show up in the trending 24 hour section. I emailed GitHub about what it takes to trend and they replied that they don't reveal their algorithm - I think it would be great if they were more transparent about this.

Crafting a Course

I took a job as adjunct faculty at a local community college. I'll be teaching an advanced Java class and a database course next semester. It's a side project because it won't be my main source of income, that will still be consulting projects, but I figured it would be fun and provide some great teaching experience (and maybe even inspiration for my next introductory programming book). My boss there asked me to redesign the database course I'll be teaching, so I spent some time doing that this Fall. I'm coming into it with a lot of enthusiasm and excitement. I hope the students feel the same way.

So, that's my 2014 in side projects. Back in my Dartmouth days, we might've called a blog post like this a giant "self call" which is a negative term. But to be popular in tech they say you need to master the humble brag, right? It was quite a productive year for me with regards to side projects, but I hope to exceed it in 2015. With that regard, I rather do a few less and have them be as successful as Dart for Absolute Beginners, than necessarily do as many as I did in 2014.

Incidentally, if you have potential consulting projects that are related to anything covered in this post, do get in touch with me through Oak Snow Consulting. I'm pretty booked for the next couple of months, but let's get the conversation started if there's a good fit.

Posted in , , , , , , , , , , , , . Bookmark the permalink. RSS feed for this post.

19 Responses to My 2014 in Side Projects

  1. Thanks for sharing such a great blog... I am impressed with you taking time to post a nice info.
    iPad Application Development
    Hybrid App Development
    Web Development Services

    ReplyDelete
  2. IdealAssignmentHelp Provide Affordable My Assignment Help For Australian Students. Students Need Assignment Help but TheyDon't knows how to get the best help. We have here providing 100%Plagrisum Free and High-Quality Assignment Help. Our Expert available 24*7. You have simply contact our expert team and resolve your all quires.

    ReplyDelete
  3. Thank you for the auspicious write up. It in fact was a amusement account it.
    Look advanced to far added agreeable from you!
    However, how could we communicate?
    espn.com/activate

    ReplyDelete
  4. Really informative article post.Really looking forward to read more. Really Great.
    roku.com/link

    ReplyDelete
  5. Hulu provides the simplest way to stream entertainment to your TV. On your terms. With thousands of available channels. We provide information regarding Hulu Activation Code. Go to www.hulu.com/activate, and enter the Activation Code. To activate a new Hulu account using an existing email account and you can stream television shows and movies from the Hulu site using the Hulu activation link.hulu.com/activate

    ReplyDelete
  6. Hulu provides the simplest way to stream entertainment to your TV. On your terms. With thousands of available channels. We provide information regarding Hulu Activation Code. Go to www.hulu.com/activate, and enter the Activation Code. To activate a new Hulu account using an existing email account and you can stream television shows and movies from the Hulu site using the Hulu activation link. hulu.com/activate

    ReplyDelete
  7. Watch your favorite live sports, news, entertainment, and more. Plus, get unlimited access to the entire Hulu streaming library To activate Hulu code go to url hulu.com/activate if you need help to activate Hulu

    hulu.com/activate is the cheapest online video streaming services grown ever more popular, cable connections or subscriptions became un popular and peoples are looking to cut the cord with cable operator and switching to Hulu simply activating by visiting hulu.com/activate. hulu.com/activate

    ReplyDelete
  8. Activate McAfee retail card now. Redeem your crucial 25-digit code on McAfee.com/activate and Download McAfee.
    McAfee.com/activate helps to activate any McAfee products for PCs, MAC, or other devices. McAfee download setup you can download and activate product key.
    Activate McAfee IS Retail card now. Redeem your 25-digit code on McAfee.com/activate. McAfee Antivirus, McAfee Livesafe, McAfee Total Protection, etc
    mcafee.com/activate

    ReplyDelete
  9. AVG is the one of best antivirus which protects your computer and network from bad infection and threats. AVG now includes real-time security updates, scans for both malware and performance issues, and even catches malicious downloads before they reach your PC. User can Install AVG Antivirus on their computer to protect thier computer and network...
    avg.com/retail

    ReplyDelete
  10. Panda Antivirus is the best antivirus program for all your devices. It Protects your computer, tablet and smartphone against all types of viruses, malware and ransomware. Panda Antivirus Pro 2019 The new Panda Antivirus Pro provides the easiest-to-use and most intuitive protection for your computer. Install it and forget about viruses, spyware, root-kits, hackers and online fraud. Download Panda Antivirus for Windows.
    install panda antivirus

    ReplyDelete
  11. You’re no longer beholden to cable subscription and if you want a wide range of television options get Roku device today start watching TV on upon Roku device activation by visiting roku.com/link.

    roku.com/link

    ReplyDelete

  12. Roku is a streaming device, which provides the simplest way to stream entertainment channel to your TV. On your terms. You can access more than 500000+ movies and TV episodes across free and pay on Roku. Also, you will get the best quality video streaming with it. You can watch shows, movies, an entertainment channel, web series, etc. For the activation of the Roku device, Go to URL: roku.com/link.

    roku.com/link

    ReplyDelete

  13. Roku is a package of entertainment. The Roku channel is the Expansion of programming for new generation children. Roku declares plans to Combined kids and family movies and TV together with the channel's other content, including subscriptions, its free, television, ad-supported movies, and live TV.

    roku.com/link

    ReplyDelete
  14. Activate McAfee retail card now. Redeem your crucial 25-digit code on McAfee.com/activate and Download McAfee.
    McAfee.com/activate helps to activate any McAfee products for PCs, MAC, or other devices. McAfee download setup you can download and activate product key.
    Activate McAfee IS Retail card now. Redeem your 25-digit code on McAfee.com/activate. McAfee Antivirus, McAfee Livesafe, McAfee Total Protection, etc
    mcafee.com/activate

    ReplyDelete
  15. McAfee.com/activate helps to activate any McAfee products for PCs, MAC, or other devices. McAfee download setup you can download and activate product key.
    Activate McAfee IS Retail card now. Redeem your 25-digit code on McAfee.com/activate
    mcafee.com/activate

    ReplyDelete
  16. Activate McAfee IS Retail card now. Redeem your 25-digit code on McAfee.com/activate. McAfee Antivirus, McAfee Livesafe, McAfee Total Protection, etc. Activate McAfee IS Retail card now. Redeem your 25-digit code on McAfee.com/activate. McAfee Antivirus, McAfee Livesafe, McAfee Total Protection, etc
    mcafee.com/activate

    ReplyDelete

Copyright 2012-2019 David Kopec. Powered by Blogger.

Search

Swedish Greys - a WordPress theme from Nordic Themepark. Converted by LiteThemes.com.