Posts

Don't Outsmart Yourself

Image
  The great Richard Feynman had a saying.  "The first principle is that you must not fool yourself and you are the easiest person to fool."    I believe there is a similar principle that can be applied to software engineering.  "Don't outsmart yourself."    As a software engineer, it can be easy to: Over-engineer a solution to a simple problem. Strive for elegance over ease of understanding for others. Use an obscure, or less popular approach to solve a problem. Abstract away complexity pre-maturely. Write a custom library when something that could have worked off the shelf would have sufficed but maybe wasn't a perfect fit. It feels good to do these things.  It works parts of your brain that might be aching to do something interesting.   It can impress your peers.   In time though, you will outsmart yourself .  The smarter you are, the more prone you will be to outsmarting yourself.   The trick is to balance ego...

The Prototype Maturity Model

Image
Moving Fast, Taking Shortcuts Not all ideas are good ideas.  In fact, the majority of your ideas will not be good.  When it comes to building software, it doesn't make much sense to build out a prototype of a new idea with all the best practices a full fledged software product requires.   This is why we rapidly prototype software for a new feature, or product.  We want to validate the idea as quickly as possible. This is the whole philosophy behind the minimal viable product or MVP that start ups are always talking about.  But MVP doesn't just apply to startups.  There are ideas that can be prototyped in the biggest companies that could save the company employees hundreds of hours of time, or millions of dollars.   So, you decide your idea might have some merit. You meet with the team, and list out the core, minimal features.  Everyone is on board, and your team has the green light to build a prototype.   Now, the hard decision...

It's Business (Logic) Time

Image
( Sea Dragon Pirate Cruise - Panama City Beach) If you've worked at a company where your job is to deal with software code, you've most certainly heard the term "business logic".   Recently I had a conversation with my team at Frame.io, and it was clear that we all had different interpretations of what this lingo actually meant.   I figured each person's experience around the use of the term business logic must color their definition of the term.  Rather than dig up a bunch of blog posts that try to explain as an authority what business logic actually means, I decided to go to the people.  I created a simple google form for people to submit their interpretation of the term, and their role at the company.  I was interested to see if the term had different meanings for different roles.  For example, do quality assurance analysts define the term the same as a product manager?  What about a developer, or manager? Before I color your interpretati...

So Long, and Thanks For All The Pizza

Image
On a cold Wisconsin day in December 2014, my good friend Jonathan Kupcho  and I patiently waited next to 2 large Dominos pizzas, and a case of warm Diet Coke.   We had 11 RSVPs.  Some of them would show up... right?   Had we given clear enough directions, and parking instructions?  Did people deem it too cold to journey out that night?  Our fears subsided as the first attendees started to trickle in.  I don't remember the exact number of attendees, but the exact number is not important.  People came! That night was the first event ever for the Greater Milwaukee Java Meetup . As the organizer of this meetup, I planned, emailed, called, coordinated, ordered pizza, ran to the grocery store, and even had time to do a bit of open sourcing!  Now, over 50 events later, I am stepping down to let others run the group.  Before I fade into obscurity, I want to share the lessons I learned while running this meetup.  Hopefully you...

To The Moon - Game Review - Humble Indie Bundle X

Image
I picked up  Humble  Indie  Bundle  X last week.  After installing the games, I didn't know where to start.  I looked over the titles and their screenshots.  One in particular caught my eye.  The title was To The Moon .  I was intrigued by it's 90's sprite-ish overhead Japanease art style.  I like this style as it reminds me of many great games I have played like ChronoTrigger , Zelda, and Pokemon.  I also wanted to be an astronaut as a kid, and the concept of going back in your memory to live another life was very interesting.   I decided to give the game a try, and I was not disappointed.  While there are some game-play flaws, I think the story, theme, and heart put into the game by the developers trumps the downfalls enough to say this was a great play-though. Visual Style The visuals in the game are amazing.  The colors used blend well together.  I always enjoy games that have such great styling...

Extremely Fake Cheapskates! Season One Recap

Image
If you've been browsing Netflix lately, you may have noticed a recent influx of trashy reality TV shows.  While I normally avoid these like the plague, there was one that recently piqued my interest.  I've been reading the Mr. Money Mustache blog lately so I just HAD to watch Extreme Cheapskates .   Have these extremists used any of MMM's penny pinching tactics? Maybe there would be some useful tricks I could impress my wife with! I was not disappointed.  This show was a gold mine of hilarity, but it was rather inconsistent.  On one hand there are characters such as Jeff, a man who may out stash Mr. Mustache himself.  On the other, we have people like Vickie, John, and Abdul, who's money saving methods seemed about as real as an episode of Keeping up with the Kardashians . Lets meet the cast of characters that Extreme Cheapskates has lined up and see if we can filter out the real eagle squeezers.  I'll rate each one on a scale of 1 (Gucci hidden un...

Java 8 - Using Parallel Streams

Java 8 is not slated to come out until Spring 2014, but the features are so enticing that I just had to download the snapshot, and give it a test run. After messing with python the past few weeks the Java 8 feature that I am most looking forward to is lambda support. The second feature I'm digging is the new Stream API. Now these are both very useful APIs on their own, but I really like how Python uses them with the functions filter, map, and reduce. You can read about that here if you'd like. Java 8 provides the same functionality, but it is a bit more verbose. On the plus side, it gives you a few extra useful features that Python does not. (At least that I know of, I'm a Python n00b.) Note: All example code can be found here. My first test was just a few simple filters, and maps. public void test1() { List strings = Arrays.asList( "One","Two","Three","Four","Five"); List longerThanThree =...