Synthesis : Scott Becker

Hasta la…. vista?!

Veerle has a funny post about how there’s going to be not one, but SEVEN versions of Window’s Vista, from “Starter” edition to “Ultimate” edition, and everything in between. And I don’t think this list even touches on the server versions.

To see a complete rundown, check out Paul Thurrott’s WinInfo site.

Here’s the part I thought was the most hilarious:

Windows Vista Starter Edition: Aimed at beginner computer users in emerging markets who can only afford a low cost PC. … Starter Edition will allow only three applications (and/or three windows) to run simultaneously, will provide Internet connectivity but not incoming network communications, and will not provide for logon passwords or Fast User Switching (FUS). Windows Vista Starter Edition is analogous to XP Starter Edition. This version will only be sold in emerging markets.”

Bwaahahaha! And they expect people to actually pay for this? When you can get a free copy of Linux that runs as many programs as the computer is capable of? That runs Firefox, Thunderbird, OpenOffice, etc, without paying a dime?

As far as Apple’s user versions go, OSX has one. It also has one server version.
“Am I glad the folks at Cupertino aren’t smoking the same joints as Microsoft does,” Veerle said. Indeed, somebody must have laced their joints with crack.

I currently run Windows XP. Next year, I plan to buy a Mac laptop when the Intel versions come out, and our server setups will all be *nix based. By the time Vista rolls around, I plan to be completely devoid of Microsoft products.

Comments Off on Hasta la…. vista?!

The MP3 phone wars

Apple won the MP3 stand-alone player war. It’s over. Done. Good luck Sony, but I think you’re just wasting your time.

The next battle is the MP3 phone. It’s just getting started, and obviously, Apple’s first foray into the market, the Motorola ROKR (it just sounds silly), looks to be a dud. It’s bulky. It’s got no class. It’s $250 and it can only play 100 DRM-managed songs.

The problem is, Apple doesn’t want to cannibalize their own product lines by introducing a super cool iPhone that people would rather purchase than an iPod. Especially after all the R&D they just poured into the Nano.

And that is their weakness. The only way Apple could get knocked off their high horse at this point would be for someone to introduce a high-capacity, sleek yet simply designed MP3 phone that looks as good or better than an iPod, and managed to do both things well, not mediocre.

I’d rather the have something that is the BEST at one thing, than a half-baked all-in-one solution.

I’ve got a phone with a camera in it, and guess what? Right, the camera sucks. Oh yeah, the phone sucks too. (Hey, it was free. With that 2 year contract extension. We all make mistakes.) And who makes that phone? Sony. Hahaha.

Apple’s advantage is that they’ve developed such a huge reputation for perfection. If they do introduce an iPhone, as some think they will, even a year from now, it will become the hottest, most desired phone on the market.

Imagine it, you’re in the market for a new phone. You can get a Nokia, a Sony, a Motorola, or any other phone with 50 twiddly buttons, half-baked user interfaces, slow-to-respond software with lots of unnecessary clicks, and much much more. Or, you can get an Apple iPhone. It’s as minimal as possible. Its only got the absolute necessary functionality, but it performs those functions perfectly. It’s probably got a scroll wheel which will let you perform most functions without ever using the keypad. You can get it in the timeless colors of either white, titanium silver, or black. Sure, it costs a bit. A Lexus costs more than a Ford. But you’re going to want it. And so will everyone else.

It’s a simple formula really. I wonder why no one else “gets it”?

Comments Off on The MP3 phone wars

Escaping Bloglines and the Sea of Same-ness

I usually read blogs from Bloglines, so everything tends to look the same. Lame. What a shame. Too bad bloglines doesn’t let you read each blog in the design the author intended.

I just updated my blog’s sidebar with a list of my randomly favorite blogs. (Leaving out still a bunch of others I check out just because I don’t want the list to scroll forever.) Clicking around, I noticed that a couple of them have recently re-designed! Check out the fresh looks at:

Comments Off on Escaping Bloglines and the Sea of Same-ness

Creative ideas for staying creative

Originally seen at Needmore Notes, here’s 11 Tips to surviving a day job with your creativity intact . Creativity is a muscle that needs exercise just like any other, or you will become weak. This article has ideas that will inspire and show you how to make time for your creative side.

The article reminded me of The Creative Habit by Twyla Tharp, another great book on creativity.

Speaking of which, I’d really like to bust out an original design for this blog sometime in the near future.

Comments Off on Creative ideas for staying creative

acts_as_awesome

Ruby on Rails continues to amaze. Things just keep getting easier. With the file_column mixin, and the new acts_as_taggable mixin, generous people in the RoR community are quickly abstracting away all of the code thats generally a pain in the ass to write, and making things more and more fun. I just implemented file_column today, easy peasy. As well as a little RMagick for automatic thumbnailing of images.

With all this sophisticated functionality becoming so easy to implement, in 6 to 12 months I can imagine the average small business website being much more full featured, and possess what today is only for the big dogs and the super technical. Users will assume its a given and expect these features.

Best of all, the technology is free, contributed by the open source community. Things happen fast. No waiting five years for the next version. It gets better every day. If for some reason, someone wants to spend thousands of dollars for Windows Server, .NET, Visual Studio, SQL Server, and on and on, so they can write 10 times the code to do the exact same thing, well I guess that’s their prerogative. Good luck with that. 🙂 Unless a commercial solution somehow jumps way ahead of open source in capability and convenience, I can’t imagine going back. For the entrepreneur or small start-up where capital is a limited commodity and needs to be used as efficiently as possible, open source tech makes much more sense.

When I was only immersed in the MS/ASP.NET world, even simple functionality required a lot of boilerplate code to be written before your app could even begin to work. You could use one of the many O/R frameworks and code generators to overcome some of that, but I’ve yet to see anything as clean and simple as the Ruby/Rails combo. And when that unnecessary complexity isn’t weighing you down, you can move so much faster. Now, when someone asks me if I can do some whiz-bang fancy functionality, I say with confidence, “Sure, we can do that.”

As the enlightened (and rapidly growing) few already know, there is a better way.

Reference Links:

Comments Off on acts_as_awesome

AJAX Spellchecker

How to build an AJAX spellchecker with Ruby on Rails

Word. That is pretty aweseome.

Edit: hahaha, see above. i just went back and read what i posted. oh the irony…

Comments Off on AJAX Spellchecker

RoR Grid Control Part II

My reusable “grid control” with paging and filtering is almost finished. I made some changes to the syntax, and I converted the whole thing to a component, so it can simply be dropped in the components directory of a rails app and used as is.

Defining the columns is very DRY, the minimum thing you have to specify for each column is a title. From this the component will guess the actual database column to be the same (with spaces converted to underscores). If your database column name is different, you can specify that.

I also added some display format options, including “email”, “website” and “money” and “date”. These will make the columns look and behave as you would expect.

Here’s what the code to call it looks like now:

  def my_controller_method
    grid_html = render_component_as_string(:controller => 'controls/grid', :action => 'grid',
      :params => {
        :model => Product,
        :obj => params[:obj],
        :columns => [
          { :title => "Category",
             :db_column => "category_name",
             :filter_type => :select,
             :filter_column => "category_id",
             :filter_options => Category.find(:all, :order => "name ASC").collect {|c| [ c.name, c.id ] }
          },
          { :title => "Name" },
          { :title => "Published",
             :filter_type => :select,
             :filter_options => Product.published_options
          },
          { :title => "Featured",
             :filter_type => :select,
             :filter_options => Product.featured_options
          },
          { :title => "Retail", 
             :db_column => "retail_price", 
             :format => :money, 
             :filter => :false 
          },
          { :title => "Stock", 
             :db_column => "in_stock", 
             :filter => :false }
        ],
        :joins => ["LEFT OUTER JOIN categories ON products.category_id = categories.id"],
        :alias_columns => [["categories.name", "category_name"]],
        :order_by => "category_name, products.name",
        :per_page => 25
      })
    render :text => grid_html, :layout => true
  end

Once I get everything reasonably ironed out and add a few more things like sorting, I plan to open source this code…

Again, here is what mine looks like. This could easily be customized to look any way you want, by simply modifying the view rhtml file:

Comments Off on RoR Grid Control Part II

lighttpd / apache / textdrive speed up!

My websites running on textdrive were running really slow, which was frustrating since I’ve heard all the talk about how lighttpd is supposed to be fast fast fast. I was starting to think it was because my sites are on a shared server with many other websites. To my relief, it wasn’t that at all. After digging around on their forums, I discovered the issue!

To quote user ‘jmoses’:

“The slowness is caused by the Apache proxying. It takes apache forever to lookup the domain name to forward to.

If you change your ProxyPass and ProxyPassReverse from http://<hostname>:<port> to http://localhost:<port> you should see a dramatic speedup. I went from ~5-8s a request, to <1s."

Well, I just made the change, and bam, my sites are way faster.

See the whole thread.

They really need to change this on the textdrive manuals site.

Comments Off on lighttpd / apache / textdrive speed up!

MySpace sold to FOX

Wow. News Corp (owners of FOX) have agreed to purchase Intermix Media (owners of MySpace) for $580 million. Any web developer including myself could have written that website. It’s really not even that great! It could be so much better.

Really need to start thinking about what “next big thing” to create.

Comments Off on MySpace sold to FOX

Ruby on Rails Data Grid Control

As far as I can tell, Ruby on Rails doesn’t have a built in control for displaying tabular data in a grid. Not a rich one anyway, with paging/sorting/filtering capability built-in. I plan on attempting to create one. I’m actually almost there. I’m doing this instead of getting my actual projects done. 🙂

All parameters should have defaults to do the standard thing, with ability to further customize if so desired. Convention over configuration and all that. It should be able to do sorting/paging on columns from associated tables as well. Here’s the proposed syntax for how this might be called in a controller:

a simple example

class AgreementsController < ApplicationController

  def list_simple
    grid_view(Agreement,
      :columns => ['title', 'active', 'amount', 'frequency']
    )
  end

end

a more complex example:

class AgreementsController < ApplicationController

  def list_complex
    grid_view(
      Agreement,
      :columns => [
        "Status",
        "Company Name" => {
          :dbcolumn => "company_name",
          :filter => true
        },
        "Category" => {
          :dbcolumn => "agreement.category_id",
          :filter => true,
          :filter_type => :select,
          :filter_options => Category.find_all.collect {|c| [ c.name, c.id ] }
        },
        "Active" => {
          :dbcolumn => "agreement.active",
          :filter => true,
          :filter_type => :select,
          :filter_options => [["Yes", 1], ["No", 0]]
        }
      ],
      :joins => ["LEFT OUTER JOIN categories ON agreements.category_id = categories.id",
                 "LEFT OUTER JOIN companies ON agreements.company_id = company.id"]
      :alias_columns => [["companies.name", "company_name"],["categories.name", "category_name"]],
      :order_by => "category_name, products.name",
      :per_page => 25
    )
  end

end

The grid_view method will be at the application level, so you can call it from any controller. The presentation (view) will live in one /shared/_grid_view.rhtml partial file and be 100% customizable. And because of that, it doesn’t even have to be a table or look like a grid! The MVC pattern of rails allows this, and would make this far superior and easier to customize than say – the ASP.NET data grid control, in my opinion. Here’s one possible way such a beast might look like:

Comments Off on Ruby on Rails Data Grid Control