Posts related to software

Qualities of Quality Software

What makes good software good? What attributes does it have, how can someone converge on better solutions?

Dealing with Unkown Unknowns

Unknown Unknowns are things that you don’t know you don’t know, made infamous by Donald Rumsfeld’s comments around the Iraq War. Any sane / rational person can deal with known unknowns, it makes sense to get a grasp on things that you don’t have much context on or are uncertain about. Unknown Unknowns are more insidious and trickier to deal with. The question then is how do you take Unknown Unknowns and make them known and therefore easier to deal with?

Values in Software Design

I thought that the value of software comes for its reach, how much a person can accomplish using it. But that may have been a poor and disheartening way to view it. Poor in that it doesn't capture the true value of software and disheartening in that it forces a chase after more features and more complexity. Well designed software isn't really about what one _can_ accomplish while using it, but rather about how enjoyable it is for someone to use.

Woodworking for Quality

How woodworking also applies to software. As with woodworking the goal of software is not to produce a piece of software, but rather to produce a quality piece of software. Approaching software as a craft improves how we think about software development.

Designing for a use case

When you develop an application or some software artifact you consider what task the program is to complete. You make a model of who your customers are, and how they interact with your service, and then you proceed to implement that.

Design Principles Behind Smalltalk

Ingalls describes Smalltalk, a language that “Provides Computer support for the create spirit in everyone”. I love how the paper starts off with the describing the purpose of a language as communicating models between the user to the compuer, the goal is to develop an expressive yet simple language that that empowers its users. Ingalls goes over 17 principles that all languges ought to follow.

The Philosophy of vim

For those of you who have not heard of the text editor vim, it is a text editor lauded for its adaptability, and supreme extensibility. You can basically do anything you want in vim, and that’s nice, but at the same time it has the steepest learning curve for any piece of software you will encounter.

We shape the tools that shape us

We build things in order to make us better at what we do, whether that be a saw to cut known materials more quickly or a piece of software to solve a well understood problem. This is well and good, but I can't help but wonder what it would have been like if the tools we created were not the best tools, and now we cannot escape the choices we have already made.