asoft
sea

~ tiny vessels of code slowly floating out to sea

Powered by a motorboat called the S.S.Tumblr

1 year ago

@6:11pm

Comments

37 salad dressings

I’m thinking of a spork with no knives

As a younger man, one of my favorite types of restaurants to eat at were buffets.  What can be better than an endless supply of everything? I pay one price and get as much as I want. So many choices!

As I got a little older, I started noticing a couple things about these types of restaurants.  For starters, I never actually ate everything on the menu. I would go in and usually get the same thing every time.  It was the idea that I could have anything that was so alluring, not the fact that I actually ever ate everything.  Over time I realized that the few things I actually did eat at buffets were actually pretty low in quality compared to a restaurants that solely made just one type of food.

Complexity leads to anger. Anger leads to hate. Hate leads to suffering.

Now that I am older, I am more aware of these things as they apply to other areas of my life and have come to appreciate single purpose things.

Of late, I’ve been thinking about this a lot as it applies to software.

I love software. I love writing software. I love reading software, but one of my biggest problems with software is when it wants to do everything.  A huge side effect of this type of software is that it tends to be unnecessarily slow.  Slow software makes for very angry bears in a campground with no jars of honey. People will get hurt.

How does software get to be slow? How can we make it faster?

The answer should be simple.  Do less.  If you think your library is already pretty fast, how do you make if faster? The answer is also pretty simple. Do even less.  Reduce your complexity and make your code faster.  Just ask John Resig.

A while back, I read a short book about a company who has had pretty good success with writing less.  Hey Bob! That’s crazy talk!  How can you be successful by having less features?

Less features means less running code. Less running code means less places where things can go wrong.  Less things going wrong means stable software.  Fast stable software makes for happy bears, content with sweet jars of honey.

Castle in the sky

The dream of O(bject)O(rientation) was to have these small interchangeable software modules that we could bind together to build bigger systems as we did as children building castles and helicopter robots with our lego sets.

In a the giant Library of Congress of fat open source magic box abstractions, some of us might have noticed that the promises these libraries make often lead to frustration. How often do you find there is at least one problem of the many a library tries to solve that does not suit our needs?  Trying to hack around this one thing tends to break more than it fixes because it was not the original intent of the aforementioned library.

The idea of an abstraction is to make a complex problem simple.  That is not a bad thing.  If it were, we’d all be working with byte arrays rather than objects types.  Abstractions allow us to be more productive by focusing more the the problems we are trying to solve rather than low level details.  One thing we should be focusing on is giving these library abstractions a more narrow focus.

I mainly deal my codings cards in the game of Uno called called web software.  By web software I usually mean web frameworks.  It’s made me happy to see a few great single purpose pieces of software have popped up in the past year or so to provide a simple, common, modular substrate for web frameworks to build on top of.  You can bet your gingersnap cookies that I’ve got something similar for scala baking in my kitchen.  On the other hand, what makes me unhappy is to see that there is still a bevy of web frameworks out there that will lock you into a trap.  The trap is providing you with a buffet of features, most of which you will probably not be using in the end.

I’d like to put in an order for take out

If there is one thing I’d love to see in the future, it’s more high-quality single purpose software working together as loosely coupled modules rather than one monolithic box full of assumptions about my needs.

Most of the time I prefer to build my own castle with a box of colored legos over moving into the same prefab one all of the other dev’s on my block live in.  If I do have to move into a prefab one, it had better be easy for me to convert into a giant helicopter robot.  If not, I’d like to submit a bug.

blog comments powered by Disqus