Skip to content

Ramblings

Musings of Matt Williams
  • Blog
  • About
  • Chibi
  • Ruby Blender
  • Archives
  • Log in
 
Less
More
Trim
Untrim
« Older
Home
Loading
Newer »
Tag Archive for 'philosophy'
02Sep08 A language a year
philosophy programming
3 Comments

The Pragmatic Programmers have proposed that developers learn a language a year.  I agree that it’s very important to keep abreast of changes in IT and that by learning new languages we can keep our minds sharp and bring new ways of doing things into old languages.  However, I have to wonder if this learning a language gets in the way of knowing a language.

I’ve always been a generalist, when I was younger I wanted to be a renaissance man.  But sometimes I think that getting caught up in being a generalist is as large a trap as specializing in one thing and not not being willing to learn anything else.

When I was 19, I taught C at a local community college’s Continuing Ed programme.  I’d been asked to do so six weeks prior to teaching the course.  I followed K&R, and I know I was able to get the gist across to my students.  I’d learned C, but I didn’t know C.  It took at least 6-12 months of programming C day-in, day out to know the language.

And then there’s unix.  I recently celebrated my 20th aniversary of using it.  I can claim to having learned it, even perhaps understanding it.  But knowing?  I’m still discovering new aspects of it.

I agree that it’s important to learn new things, but sometimes you need to just know a thing.

27Aug08 Programming philosophy in the oddest of places
philosophy programming
2 Comments

Today’s thought for the day from A Word A Day is:

Not being able to govern events, I govern myself.

-Michel de Montaigne, essayist (1533-1592)

This struck me as being very much the idea behind defensive programming.  Because we don’t know what sort of events life will throw at a programme, we need for it to be robust and able to respond to most anything, barring, of course, Fear, Fire, and Foes.

So how do we go about doing so?  For starters, there’s testing, whether BDD or TDD.  Boundary conditions and fencepost errors frequently cause grief.  And any time the programme interracts with the “outside” there’s room for error — whether it be bad data or an I/O error.

Assume Nothing! Trust no one! Paranoia is good! (in moderation)

Assume Nothing! Trust no one! Paranoia is good! (in moderation)

26Aug08 Mini Sagas
Just Enough Programming mini sagas
2 Comments

One of the manifestos from ChangeThis this month is about Mini Sagas.  The author, Rajesh Setty presents the idea that writing mini sagas, which contain exactly 50 words, expands your creativity — following on the idea that Creativity Loves Constraints. Typically the mini saga expresses some sort of message or value — I think in some ways they might be like koans or zen stories.  Here’s one I’ve written:

Once there was a developer who wanted to make the new killer app.  He plotted and planned for months, seeking perfection.  He planned for infinite scalability and flexibility.  Then he coded.

Another developer wrote code that was just enough to solve his problem.  And the problem of millions more.

14Aug08 Quotes on Simplicity
Just Enough Programming programming
1 Comment

“If a thing can be done adequately by means of one, it is superfluous to do it by means of several; for we observe that nature does not employ two instruments where one suffices.” — Thomas Aquinas

“Simplicity is the ultimate sophistication.” — Leonardo DaVinci

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity.

A program should follow the `Law of Least Astonishment’. What is this law? It is simply that the program should always respond to the user in the way that astonishes him least.

A program, no matter how complex, should act as a single unit. The program should be directed by the logic within rather than by outward appearances.

If the program fails in these requirements, it will be in a state of disorder and confusion. The only way to correct this is to rewrite the program.  — The Tao of Programming, 4.1

09Aug08 Just Enough Programming
Just Enough Programming
0 Comments

I’ve been giving a lot of thought over the past months to the idea of “Just Enough Programming”.  Agile manufacturing has led to Just In Time manufacturing.  We also have Just In Time compilers.  But I’ve seen far too many times where application architectures have been far too complex — where things are done, not because they’re truly needed, but rather because:

  • It is the “buzzword approved” method.
  • Architects and developers want to play with new toys.
  • Features and functionality added because they might be needed someday.
  • Premature scaling.  If an application does not need to be infinitely scalable, then why add the overhead of making it so?
  • Guru / Instructor / Net God / Writer X say that this is the right way to Y.

I’d like to make a case for applying a serious shave with Ockham’s Razor to these architectures, with a goal of creating “Just Enough Programming”.

Expect more on this topic in the weeks and months ahead.

 
Browse Archives »
  • administrivia (6)
  • books (1)
  • Computers (2)
  • css (3)
  • cygwin (1)
  • eating crow (1)
  • games (1)
  • glassfish (1)
  • gotchas (19)
  • howto (2)
  • idiocy (3)
  • javascript (4)
  • jboss (6)
  • jruby (8)
  • Just Enough Programming (7)
  • life hacking (2)
  • mini sagas (1)
  • miscellany (1)
  • monitoring (1)
  • mysql (1)
  • philosophy (4)
  • php (1)
  • programming (17)
  • rails (7)
  • rants (2)
  • refactoring (1)
  • ruby (14)
  • tips (10)
  • tools (2)
  • torquebox (2)
  • Uncategorized (9)
  • UNIX (1)
  • utilities (3)
  • web (5)
  • web design (3)
 

Latest

  • cygwin and torquebox and rvm, oh my!
  • JBoss Client Jars for Messaging
  • rsh hates nohup
  • Torquebox and Cygwin: Take I
  • Rails & JRuby in a Jar
  • Fractal Terrain Generation
  • Quick thought on programming and distractions
  • Using jnp as a JBoss heartbeat
  • z-index and events
  • JBoss port confusion

Flickr

layout_newm3headerTerrain Testa

Blogroll

  • Development Blog
  • Documentation
  • Plugins
  • Suggest Ideas
  • Support Forum
  • Themes
  • WordPress Planet

Search

Browse by Category

  • administrivia (6)
  • books (1)
  • Computers (2)
  • css (3)
  • cygwin (1)
  • eating crow (1)
  • games (1)
  • glassfish (1)
  • gotchas (19)
  • howto (2)
  • idiocy (3)
  • javascript (4)
  • jboss (6)
  • jruby (8)
  • Just Enough Programming (7)
  • life hacking (2)
  • mini sagas (1)
  • miscellany (1)
  • monitoring (1)
  • mysql (1)
  • philosophy (4)
  • php (1)
  • programming (17)
  • rails (7)
  • rants (2)
  • refactoring (1)
  • ruby (14)
  • tips (10)
  • tools (2)
  • torquebox (2)
  • Uncategorized (9)
  • UNIX (1)
  • utilities (3)
  • web (5)
  • web design (3)

Browse by Tag

  • 1.2.6
  • 2.1
  • administrivia
  • autotest
  • books
  • controller
  • css
  • feed-normalizer
  • feeds
  • gotchas
  • idiocy
  • irb
  • Java
  • javascript
  • jboss
  • jruby
  • just enough programming
  • mini sagas
  • open-uri
  • philosophy
  • php
  • pragmatism
  • programming
  • quotations
  • rails
  • rants
  • reading
  • restful_authentication
  • rspec
  • rss
  • ruby
  • rubygems
  • scriptaculous
  • setup
  • simplicity
  • sprites
  • statemachine
  • tips
  • treetop
  • utilities
  • web
  • web design
  • websense
  • yaml
  • zentest

Browse by Month

  • June 2012 (1)
  • November 2010 (1)
  • August 2010 (1)
  • June 2010 (1)
  • March 2010 (1)
  • September 2009 (1)
  • August 2009 (2)
  • July 2009 (2)
  • May 2009 (1)
  • April 2009 (1)
  • February 2009 (4)
  • January 2009 (2)
  • December 2008 (2)
  • November 2008 (5)
  • October 2008 (3)
  • September 2008 (12)
  • August 2008 (28)
 
 
  • Blog
  • About
  • Chibi
  • Ruby Blender
  • Archives
  • Log in
 


Theme Design by Jay Kwong | Powered by WordPress and K2

 

Home Top Archives Entries FeedComments Feed