Archive for June, 2007

irb and rails console tab completion

By chance, irb and ruby-console tab completion discovery. Made my day!
irb
irb(main)> t = Time.new
=> ...
irb(main)> t.m #[tab]
t.mday t.method t.methods t.min t.mon t.month

Rails Console
>> Feed.fi #[tab]
Feed.find
Feed.find_all
Feed.find_all_with_deprecation
Feed.find_all_without_deprecation

Win XP, ruby 1.8.5 and rails 1.2.2. Google away if not on your machine.

Pyramids, Application. An Analogy

Working on maintaining and modifying a five year-old Java application, I came to realize there’s a strong relation between legacy and pyramids. Here’s an analogy:

  • Huge PyramidPyramids are HUGE monuments, built for the sole purpose of being a tomb to one person.
  • Although the project tree is HUGE (14000+ files), the purpose of the application is amazingly modest (CRUD + search)
Building the pyramid

  • Pyramids required a lots of resources to build (time, wealth, labor).
  • The application took 5 years, 4 teams and lots of $ to build.
Build Method

  • No one knows exactly how the pyramids were built.
  • Compiling/Building the application is a black box. “Just invoke those commands - twice - and you’ll get your ‘war’ files”, said the Build Master.
  • Ancient scripts are quite scarce inside the Pyramids.
  • Project documentations are almost non-existent
  • Sometimes you wonder what motivated people to build such a thing, in such a shape.
  • The schema is highly normalized (talk about contact information spanning across 4 different tables, with email field divided into name and fqdn) - WHY?!
  • When you look closely, Pyramids are built by stacking layers of stone blocks on top of each other.
  • The application is a grand collection of all sorts of frameworks (counted 4 so far), libraries (uncountable), tools, architectures.
  • Currently, some Pyramids aren’t structurally sound, and visits to them are quite limited in fear of falling rocks.
  • Dare adding new code to that monster?
  • Bent PyramidImperfect pyramids can be found along side perfect ones, proving that it took builders decades to master the way they were built.
  • The application contain all sort of “imperfect” code as a proof of how the builders gained experience over time (JSP files with Embedded Classes, with embedded Java code and hard coded urls, business logic, view logic and data access mechanisms)
  • People visit the Pyramids for few hours as a source of great admiration and respect. Then, continue on with their lives.
  • The application’s code is a source of respect and admiration, but when it comes to something functional, better build something else.
  • Pyramids can’t be maintained.
  • The great conclusion.
UPDATE:

  • Some people have been reported to complain about a sense of suffocation or claustrophobic symptoms when exploring the pyramid internal passageways.
  • The same is experienced while reading the application code.