Archive for July, 2007
Reading time: 2 – 4 minutes
- I left the botique enterprise content management software consulting company, Technology Services Group. 
- I joined FeedBurner, as an engineer in February.
- I did some really cool ad serving optimization code. My IE degree let me do some fun multivariate linear regressions to prioritize ad serving into their feed ad network. The code base was great to work in. Plus the team was great and I’ll really miss them. This leads to #4.
- Thanks to the Chicago PHP users’ group, as well as my Chicago tech event calendar site Techsocial, I was able to attend php|tek. The presentations are now available. 
- Google acquired FeedBurner in July. I don’t have much to say here, other than I learned a ton living through the acquisition process.
- Meanwhile, I incorporated a side business that I’ve been working on since 2003. It’s been profitable since the launch in September ‘06. The entity is Second Valley, Inc, but I”m operating under another name. 
- I pretty much had the perfect opportunity to ramp up my business by working on it full time. I’ll spend a few months at marketing, product development, (more) SEO, statistical analysis enhancements, and rebuilding the PHP app in Ruby on Rails.
- This is where I started my career and if any of you reading this are college students interviewing with TSG, feel free to contact me. Because of the small size, and management style, if you’re aggressive you can get 3 years of experience in 18 months. I went from zero to supervising another developer and working directly with clients on $200K and $300K+ projects. Plus the people are really fun!
- I’ve spent most of my time in Java, but up until now all my side projects were in php. The Facebook APC presentation was killer!
- Last year at Bar Camp Chicago a bunch of us tried to get Chicago Coworking up and running. That never took off, but one of the name ideas was Second Valley (You know, create an entrepreneur friendly community like Silicon Valley. Call it… Second Valley. Which is even a bigger pun when you think of Chicago’s Second City.) My business is unrelated to coworking, but I had the domain, and it can hold multiple doing-business-as projects, so I figured it’s good enough.
Reading time: 2 – 4 minutes
I’m migrating one of my main e-commerce sites from php to Rails. Coming from a few years of Java and php makes me really appreciate this framework’s rapid development cycles, as well as strict MVC approach.
Note: this is a technical post, it assumes you’re interested in, and familiar with Rails.
Rails wants to be RESTful. Many sites and books go into depth explaining REST. Last year’s Railsconf keynote by DHH can give you the big picture of CRUD and RESTful applications. (Be sure to follow along with the pdf slides, while you watch the video).
Look at an existing mature project (Beast) to learn how to make RESTful models
Nitty gritty RESTful implementation details have been hard to find. So I started searching out open source projects that are known for good design. And I read the code.
I’m a visual person, so I created the chart below to help me get the hang of what the Models and relationships look like in Beast. Big bold squares are actual database backed objects. Dotted squares are just regular models.
Here’s how you use the diagram
Right now, browse here: http://svn.techno-weenie.net/projects/beast/trunk/app/models to the Subversion source of Beast. Back already? My you’re fast. Read over the different model objects. See how they relate. Think about what’s been abstracted into additional Resources, rather than creating actions willy nilly in the controllers.
Then check it out and run it in your local environment. Even if you couldn’t care less about the (quite nice) forum software that it is, it’s good to learn by taking it for a spin.
But I think I need more actions than CRUD gives me!
As DHH said in the 2006 Railsconf keynote, sometimes you think you need another non-CRUD verb to your controller. Say you have a Forum that has Users and Topics. Some users want to monitor topics. At first blush, you may want to add an action to Topic. You’d then post to /topic/monitor/123 to start monitoring topic 123.
There is another way.
Relationships, events and states can all be models. When a new topic is to be monitored, you’ll GET to /monitorships/new to get the new Monitorship object form. Then POST to /monitorships to actually create it.
Models are more than things.