This is the blog, but if you want to know more about me and my projects, check out the Projects and About pages.

My Current Interests (May 2015)

I’d like to start listing the stuff I’m playing with these days as a way to look back and as a way to track my progress (or lack there of).

Currently working on / playing with / reading about…

Soldering

My family went to Maker Faire and my daughter was really into it. All she could talk about was robots and how she wanted to make her own robot friend. We settled on a marshmallow shooter project for now (she’s only 2.75) but I need to step up my robot making skills while she levels up to the point where we can make a robot together.

3D Printing

My Solidoodle Press has been out of commission for a little while and I’ve been too busy to really dive in, but I’ve got a new RMA’d version sitting in my home office and I’m itching to get back in to all that is 3D printing.

Quadcopters

Another hobby had to cast aside for a while that I’m looking to get back in to. I have a Hubsan H107D that I’d like to keep practicing FPV (first person view) flight in the hopes of putting the two above interests together to make my own quadcopter.

Card Tricks

I used to be pretty interested in magic when I was in middle and high school, but I’d like to get back in to it and learning it the right way. I luckily have access to a very skilled magician so I have the right books in hand, I just need to read them and get practicing!

Database and Big Data Tech

Getting a deeper understanding of the lower-level workings of databases, particularly big data is a new interest after talking to the founder of Pachyderm recently. They are being very gracious in answering my questions while living the life of crazy busy start up founders.

ScreenShop Demo at 500 Startups WMD 2015

image

The folks at Comedy Hack Day reached out and asked Dan, Toby and myself to get the band back together to do the ScreenShop demo for the 500 Startups conference: “Weapons of Mass Distribution”. Unfortunately Toby was in New York and couldn’t make it, but fortunately I got all his lines!

Here’s the video embedded below and you should watch the whole thing, but if you want to jump to our demo you can click right here!

The performance went well, with none of the technical issues from the first big demo, and thanks Craig and Brian @ Cultivated Wit, to the crowd at WMD and to 500 Startups for inviting us!

Life as a Gopher

image

It seems like discussions about Go (or Golang), Google’s new-ish, C-like, programming language, are everywhere these days. I’ve been using Go in my free time to work on little projects for the last few months and thought it was time to jot down a few thoughts on the language.

Background

I find in articles like this even a short amount of background helps color the views. For example I recently read an article where someone was saying how he showed his team of Java developers Clojure and they quickly said they didn’t like it. Well…did a bunch of OOP devs not know how to read lisp and had neither the time or inclination to learn? That might be your problem. Here’s my background: I run a dev team that is all Clojure on the backend and all Javascript (Node.js and ReactJS) on the front (and middleware) side. I used to code in PHP all the live-long day when I worked at Answers.com, and I’ve experimented with the usual suspects like Java (I made an Android app), Ruby, ObjectiveC…and now Go!

Why Go?

When I tell people why I’m so excited about Go these days I start with a seemingly odd comment: I love Clojure. I was the Sr. Architect and led the team that brought Clojure to Answers.com and when I left and came to Collective Digital Studio I brought Clojure with me and all our brand new backend technology was written in Clojure. It’s a language with a strong philosophy, it has great concurrency sugar, and it’s fast…for long-running services. Clojure isn’t fast for small scripts, not because of Clojure, but because it runs on the JVM (don’t forget to install Java!) and you have to start that up and load in all the Clojure libraries and then your code runs. That’s no good for a lot of the scripts I was having to write as a CTO who does most of his coding in short bursts in and effort to block random tasks from hitting his team. I’m writing CLI scripts, or small web servers or apps that need to be run other places that may or may not already have Java running. This issue is when I started looking and quickly found Go. In fact, Go was actually the first place I looked because it shares a lot with Clojure. Go is also a functional language with a very strong opinions but look no further than Clojure’s core.async and it’s “go blocks” for another key similarity. Where it differs from Clojure is the fact that it compiles to a native executable making it great for my #1 use case (it also differs in that it’s far far far more verbose but we’ll get to that later).

It’s similarity to Clojure is why I started learning about Go, but the breath of amazing projects written in Go kept me there because…well…look at all this cool stuff! IPFS, Pachyderm, Cayley, and a lot more

What’s Great?

I’ve already mentioned a lot of the high-level aspects of Go that I like: functional, fast, and easy concurrency, but there’s a bunch of small things that I think are really great too that I should mention. Being someone who writes both code and words frequently, I’m a huge fan of bullet points! This feels like a spot for that:

  • go fmt - I love that there is no need to argue about where your brackets go, or when or when not to use spaces, etc. I have a Sublime Text plugin that runs this for me on save and I put it in all of my Makefiles.
  • go get - It has a lot of issues for libraries (see below) but when you just want to pull down a quick Go app and run it nothing is faster than go get ...
  • go-binddata - A Go library that will generate code to merge static files in to your Go binary. I used this on my Quackerjack project to fold in the basic web ui file in to the binary for easy distribution and it worked wonderfully. – github.com/jteeuwen/go-bindata
  • Go’s project format. - This one took me longer to figure out than I would have liked, but once I found out that all .go files in an project directory are simply just concatenated together and you don’t have to worry about manually including them, I found it to be pretty great. If you want to group a few files together, then make a sub-project and use go get. Easy.
  • flag - A great CLI param processing library.
  • “Hacking with Andrew and Brad” - Every language should do videos like these.
  • defer - Being able to defer a command to when a function ends is such a nice feature. Lots of uses for it, but in a simple example just being able to open a file and then immediately tell the function to close it whenever it exists is pretty great.
  • A Bunch of Stuff I Haven’t Explored Yet - go generate, go doc, …? What did I miss?! Tell me!

What’s Not Great?

The best way to find out what’s not great in Go is to swing by Hacker News at any given day. Chances are there will be a discussion or two about what’s wrong with Go, or the Go team, or the Go tooling, or the Gopher, …

That’s not to say these arguments are wrong. I agree with a lot of them:

  1. Holy crap it’s verbose! So many if blocks and lots of repetitive code. Maybe I’m still a bit of a newbie, and maybe it’s worse coming from Clojure, but it feels like I’m typing A LOT to get something to work.
  2. It’s Google’s language, and therefore is really focused on the Google use cases and process.
  3. …and yet it’s not mentioned on this year Google IO schedule?!
  4. I wish there was a repl. There are some attempts at them, but the best option is the Go Playground which is less than ideal but I still use it all the time.
  5. go get is great to pull quick apps down, but ignoring versions is a big big problem. (Check out getgb.io for another take on go get)
  6. Comments should just be comments.

Also…

No one’s given me a plushie Gopher yet…or hell, even a Go sticker! I have Clojure stickers coming out of my ears (parenthesis stickers too) but no Go sticker.

Summary

I like Go. There’s somethings I don’t like about Go, but even on those issues I do like the amount of discussion they are getting so I’m hopeful. I’ve also made some pretty cool stuff with Go in a very short amount of time and I’m noticing the same from a lot of other developers and that says a lot. If I started a brand new tech stack at a new company today would I use Go as the base rather than Clojure? No, probably not…but I a few Go services and CLI scripts are a good thing and I know that no matter where I work or what I’m working on in the future there will be plenty of apps that will be powered by Go that that makes knowing Go a power asset to have. In short, it’s a fun language that makes sense to know business wise and that’s about as good as a language gets.

Top 10 Sitcoms of All Time

  1. Seinfeld
  2. NewsRadio
  3. Cosby Show
  4. Parks and Recreation
  5. Arrested Development
  6. Frasier
  7. Night Court
  8. I Love Lucy (early pre-farm years)
  9. Growing Pains
  10. The Golden Girls

Screenshop - My Team's Comedy Hack Day App

image

Comedy Hack Day was a pretty freaking cool experience all around and made better by the following:

  1. With my background in both tech and comedy (writing), I’ve been dying to do Comedy Hack Day for a while now and just couldn’t make it work with my schedule.

  2. My team (the three of us just randomly formed in the chaos) worked our asses off to get a demo and an iOS app (I had to learn Objective C on the fly) just in time.

  3. We made the finals to do our little demo shtick at the big SF Sketch Fest!

  4. Got to be on stage performing with Scott Aukerman (comedian), Natash Leggero (comedian), Jonah Ray (comedian) and Veronica Belmont (tech personality)!

  5. We won runner up (second place)!

Here’s the demo video:

Check out more about Comedy Hack Day SF 2015.

mikeflynn @ GitHub thatmikeflynn @ Twitter