Behavior-based modeling is a good fit for application-level data modeling. Behaviors and their supporting nouns tend to be consistent within an application, regardless of varying ways the data may be persisted. For system or cross-application data modeling, a more abstract, noun-first (object-based) approach may be better. This way, the data structure doesn't have to change from application to application.
I'm at RailsConf.
Portland, Oregon is, well, Portland (overcast and wet). Got in late last night and walked over to Stanford's. The service was friendly, even at 10:30 PM. Everything about the burger was above average. And it came with hot, crispy, slightly salty fries. It was all devoured with sips of a local wheat bear that I forget the name of.
So far, having been away from Ruby and Rails for over a year, it feels like going back to a place you used to live. Some things are still the same. In other ways, I hardly recognize the place. New techniques like elastic computing (and plenty of competing commercial hosting options), new tools such as git, tarantula, and hobo, etc. Good stuff.
I'll pretend I blog and let you know how it all goes.
Sketching User Experiences: Getting the Design Right and the Right Design (Interactive Technologies), by Bill Buxton, is an excellent read on the scope, purpose, and implementation techniques for designing good user experiences. Buxton's narrative style is easy, warm, and conveys his rich experience and passion for the subject. He includes a rich set of stories and case studies that demonstrate the importance of design and techniques for doing it.
Continue reading "Book Review: Sketching User Experiences by Bill Buxton" »
As of Oct 8, 2007, the San Francisco 49ers on on pace to produce the worst rated offense since the league changed to a 16 game schedule in 1978.
In SOA and Agile: Friends or Foes?, Amr Elssamadisy opens a discussion on the perceived disconnect between what should be the mutual admiration societies of SOA and Agile developers. Most of the comments to Amr's article are also informative and and well-written. However, in the discussion, not mentioned are the non-technical forces in play which, hopefully, this response can illuminate.
Like my development environments, things change. Since my next project is to extend a product written in Java and, since I used to develop Eclipse rich clients in my webMethods days, I figured I'd install Eclipse on my MacBook Pro.
We use SVN so, I also installed the most excellent Subclipse Eclipse plug-in. All was going well until, I tried to synchronize to the repository. When I did, I got the following error:
Continue reading "Subclipse Installation Problem on Mac OS X" »
Ever had a long string like this: "myveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongstring" and wanted to turn it into something much shorter, such as this: "myveryvery...longstring"?
Here's a little snippet that does just this. It works great in HTML select lists which, to my knowledge, are impossible to dynamically resize as the user drags their browser window larger or smaller.
Continue reading "Ruby Snippet: Shortening Long Strings For Display" »
If you're new or semi-new to TextMate and you're collaborating with someone on the same development project, file change collisions are inevitable. Textmate has nice support for resolving file conflicts when they show up after updating to the latest SVN depot revision.
Note: This post assumes you are on a Mac :^).
Continue reading "Resolving Files with TextMate, Subversion, and FileMerge" »
As a former Java developer and new to the concept of blocks, these API options seem perplexing at first. They're not. All three take a block. How they use the block is what distinguishes them. You should read the RDoc for yourself but, if you want a quick a dirty summary, continue reading this post.
Continue reading "Ruby Arrays: select(), collect(), and map()" »
Introducing Ruby refactoring pattern called "Forward with Default Params." This applies to any language that supports parameter defaulting, actually. And, this pattern may already be documented somewhere for all I know - I haven't looked into it. If someone can point this out, I'll be happy to defer all credit. In the meantime...
Problem: You keep creating new methods, each calling the same helper or 'core' method (we'll call it 'method_a'), but with different params. You can't change the required params of the core method because spagetti-legacy code relies on method_a, without params, such as with Rails controllers. You should fix the spagetti code but time dictates otherwise. However, you feel dirty violating DRY in your controller. What to do?
Continue reading "Ruby Refactoring Pattern: "Forward with Default Params"" »
In this post and the two that follow, I highlight interesting talks at The Rails Edge, 2006. I do it for Google searching posterity and for my admittedly selfish desire to reinforce key concepts presented.
Nothing ground breaking in this post. I write it only because the existing documentation for this behavior is weak or nonexistent.
Have you ever seen the following message while testing your Rails app?
NameError: uninitialized constant ... blah, blah
Checkout the JotSpot acquisition FAQ.
Several people I know have asked me this recently. Without just pointing straight to Bruce Tate, here's what I've come up with.
<short_answer>
* Ruby is an order of magnitude more powerful and less bloated than Java
* Ruby has Rails and an explosion of new libraries being built with or for Ruby
* Ruby will make you look good to your customers by developing more efficiently, making you more money
* Ruby is hot
</short_answer>
While creating an Eclipse TableView using Eclipse 3.2, oddly, only one of two defined table column titles was showing up. My table should have showed "Type" and "Name" columns but only the "Type" column header text would appear:
they needed their king
to come again
to raise them in
more revenue
more quickly than
competition
a savior described
saving nothing yet,
save this drawing
an allusion to a solution
slowly formed
in recursion
a king in code
iconified in a crown
and created in a flow
that focused on nothing
but a sword of bits
and a deadline
read the writes
and tested in trial
against flawed chaotic forces
he executed in complex choices,
becoming strong enough
to carry the load
entered finally into memory
enter, and data delivery
this user-slave
master-of-code
at last presents
their king
Save your spot: http://www.waterfall2006.com/
If you you’re a Perforce customer and an Eclipse user, you should use the Perforce plugin for Eclipse. It makes the job managing check-ins and check-outs easy, allowing you to stay nearly fulltime in your environment. Unfortunately, renaming an Eclipse plugin project isn’t supported very nicely.
Continue reading "Renaming Projects with the Perforce Plug-in for Eclipse" »