Archive for the 'TechKnow' Category

Ruby on Twitter

Here is a short list of 21 fellow rubyist that also use twitter. By no means is this a complete list, this is just all the ruby/rails hackers that I follow. If you like to follow me just befriend me and I’ll be sure to add you to my friend list.

Technorati Tags: , , , , ,

In A Startup

After working for upstart startup, I thought of a few axioms of working for a small and agile team in a fast and merciless marketplace.

  • In a startup, you can have any title you want, say VP of Version Control, but no one reports to you other than yourself.
  • In a startup, if you code it, break it, test it, or fix it then you own it.
  • In a startup, if one guy call in sick a third of your development team is out.
  • In a startup, if you been there longer than 3 years you are most likely been there longer than your CEO.
  • In a startup, you have more hats than the Queen of England, and you wear multiple hats at the same time.
  • One year in a startup equals 2.7 in a large corporations.
  • Would you rather start a startup or upstart a business?

If you have any advice or experience from working in a startup, feel free to share them in the comments.

Technorati Tags: , , , ,

How To Kill A Community

If you don’t understand Open Source licensing, don’t start an Open Source project. Keep your code! ExtJS, a JavaScript framework for building business forms, recently made big news, the bad kind, when it changed it’s license from LGPL to GPL. ExtJS started as an extension to the Yahoo! UI library.

ExtJS had been in my radar for a long time, but I never downloaded it, used it, wrote about it, or contributed to the community in any way because since its foundation the licensing of the library seemed awkward to me. If my memory serves me right, earlier releases of ExtJS had interesting clauses that prohibited you bundling ExtJS in frameworks. For me, I keep on using jQuery and YUI.

Open Source is not so much about the code, it is about the community and how that community interacts with other communities. Open Source is community building. In this Age of Meetoo, companies are sprung with VC money simply by cloning services and products of other companies. Look at all the ’social viral video sharing’ sites are just imitations of YouTube. In this age, the real value of code does not lie in the source code, the value lies in the knowledge and expertize of the community. The same can be said of a service, the value lies in the user base.

The folks behind ExtJS feel that this license change to GPL adheres to the quid pro quo principle. This is true if all you want is code, but community evangelism is worth is worth more than its weight in code. Look at the spectacular growth and good will around jQuery. For every one line of code in jQuery, there is at least one plugin written by a third party. For every one line of code in Ruby on Rails, there is at least one coder-blogger-evangelist promoting the framework.

It is true that you can shoot yourself in the foot with just about any programming language, but with changing the license of an Open Source project you can shoot your whole community, execution style.

Graeme Roche, project leader of Grails, said, “What they have effectively done is built up a community, taking full advantage of the open source model by accepting user contributions and patches and then turned around and kicked their own community up the backside.”

Jack Slocum, the lead developer and founder of ExtJS, responded to all the criticism on his blog. Jack complains, “Shortly before 1.0 is released, there numerous Ext “clones” started popping up that were hacking Ext themes.” Other developer hacking, learning, promoting, evangelizing, and cloning is the great benefit of releasing an Open Source application, ExtJS itself was a ‘clone’ and a hack of Yahoo! UI.

What I find interesting of the whole event is that this is history repeating itself. This is not the first time nor will it be the last time that some organization has leverage a license for some perceived monetary benefit.

What follows is a pretty comprehensive list of articles that talk about the recent ExtJS license change.

Technorati Tags: , , , , , , , ,

Startup School 2008

The Startup School 2008 is a one day conference geared towards entrepreneurs put together by the folks behind YCombinator. This year the speakers included David Heinemeier Hansson creator of Ruby on Rails, Mike Arrington founder of TechCrunch, Paul Graham founder of YCombinator, Peter Norvig Director of Research of Google, Paul Buchheit of GMail/FriendFeed, Greg McAdoo of Sequoia Capital, Marc Andreessen of Netscape/Ning, Jeff Bezos founder Amazon, Sam Altman founder of Loopt, and Jack Sheridan from Wilson Sonsini.

Here are some of the advice given to the entrepreneurs and starter-uppers present.

When going in the wrong direction, it doesn’t matter how fast you are going.
Peter Norvig

Data is more agile than code.
Peter Norvig

Semantic Web; the future of the web, and it will always will be.
Peter Norvig

The odds are not created equal.
David Heinemeier Hansson

Often the simplest idea in the world, like treating your customers nicely, while still asking for money for what you do, can work. And you can build great businesses like that.
David Heinemeier Hansson

Make something people want.
Paul Graham

If you are really committed, and your startup is cheap to run, you become very hard to kill.
Paul Graham

Be soo good that they can’t ignore you.
Marc Andreessen

Always have a blog, always have twitter, always be part of the discussion.
Mike Arrington

Embrace criticism. … Don’t embrace the trolls.
Mike Arrington

We are more innovative, and do more interesting things if we stay customer focused instead of competitor focus.
Jeff Bezos

Invites are good to keep users away.
Paul Buchheit

I think, unfortunately, in startup and probably in all other worlds there is like this cargo cult tendency where they see something successful and they immediate the superficial attributes of it, like they say ‘oh that site has like a rounded logo, that must be the key to success.’
Paul Buchheit

More people, if they are really good people, I found I never really had problem figuring out what to do with. More really great people, if they are great they can take care of themselves.
Paul Buchheit

Funding does not make you successful.
Sam Altman

Create some Sand Hill Buzz around your deal. Make investors feel like if they don’t act fast, they’re going to miss the next Google.
Sam Altman

If you can get your company and your space talked about at drinks on Friday afternoon at Four Seasons in Palo Alto, that is a net win.
Sam Altman

1 - Market. 2 - Team. 3 - Product. 3.5 - Revolutionary, not incremental.
Sam Altman

Surf someones else’s wave.
Sam Altman

Raise 2x what you think you need.
Sam Altman

A great surfer can’t exist without a great wave.
Greg McAdoo

If you want to build a truly great company, you have to ride a really big wave and you got to look at market waves and technology waves in different ways than other folks and see it happing sooner and know how to position yourself out there.
Greg McAdoo

Don’t get it perfect, get it good enough, get it out there, listen very carefully, and make changes very quickly.
Greg McAdoo

Video of the Startup School 2008 is available on Omnisio, a YCombinator company.

Technorati Tags: , , , , , , , ,

Running with Shoes - Form and Function

The Shoes microframework has a small number of succinct data entry controls. Essentially you can create User Interface forms and screens with buttons, text fields, text areas, and select options.

All of the Shoes UI controls can have associated code blocks that execute when the control changes. For example, lets create a text field in Shoes, default it with a string value, and print the current text in the console when someone edits the text field. Here is the code that does what we want!

Notice that the method edit_line creates a text field. The method edit_box create a text area, and edit_list creates a select box. To create a button, simply use the aptly named button method.

Lets create a little more elaborate Shoes UI example. Lets add a text field, selection list, and button in a Shoes canvas. When the button is pressed, we will set the text field with the value of the currently selected value in the list.

Lets create another Shoes example. This time lets dynamically update the available items in a list when a button is pushed. Here is the code for this scenario.

Notice that for to update the available values in the list, you need to call the items= method.

To create a text area use the edit_box method. Like the edit_line, edit_box accepts a code block that is executed every time the text is modified. As expected, you can set the edit box height and width. The height needs to be an integer number of pixels. The width can be an integer number of pixels or a decimal (0.0 - 1.0) for the percent of the available space. For example, to create a text box that is 200 pixels high and takes up 50 percent of the available canvas width we can use code like the following.

All Shoes UI control widgets, and shapes for that matter, can be made to hide, and appear by invoking the hide and show methods respectively.

As of this writing, Shoes does not support checkboxes, radio buttons, tabs, or tables.

There are more Shoes GUI tutorials and code samples here.

Technorati Tags: , , , ,

Ruby Web Frameworks

Ruby on Rails is perhaps the most popular Ruby-based web framework, but it is not the only web framework that is available to fellow rubyist. In fact there is a growing number of alternative Ruby Web Frameworks. In not particular order, here is a short list of my top favorite Ruby web frameworks.

Ruby on Rails - Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
Nitro - Nitro provides everything you need to create state-of-the-art Web 2.0 applications with ease and joy. Nitro applications are written using Ruby (server side) and Javascript (client side).
Camping - Camping is a web microframework which consistently stays at less than 4kb of code.
Merb - Like Ruby on Rails, Merb is an MVC framework. Unlike Rails, Merb is ORM-agnostic, JavaScript library agnostic, and template language agnostic, preferring plugins that add in support for a particular feature rather than trying to produce a monolithic library with everything in the core.
Waves - Waves is feature-rich, compact, and extensible. Waves is thread-safe, hot-patchable, and supports easy clustering. Waves relies on best-of-breed Ruby libraries, including Rack, Sequel, and Markaby among others.
Ramaze - Ramaze is a simple, light and modular open-source web application framework.
Sinatra - Sinatra is the easiest way to create a Fast, RESTful, web-application in Ruby with few dependencies, setup, and LOC.

Technorati Tags: , , , , , , , ,

Next Page »