RailsConf Friday morning. I’ll write out as best I can about the talks I attend. I’ll bullet-point most of the talks and type out some of my own thoughts as time allows. Things here are moving faster than ever and I can only write so much.
The wireless network is crunching under the load, which is no surprise and happens at every geek conference out there. The screens keep showing a graph of saturated activity on their 14mbps connection. However, after some difficulties connecting, it turns out to be pretty responsive, even with a few thousand people in one room pounding on their laptops. Rich Kilmer mentioned on Twitter that Lost cut out here in Portland for about ten minutes, so Chad begged everyone not to download Lost on the conference network.
Chad made his introductions and gave some history about RubyCOnf & RailsConf. The quote of the morning is “RubyConf2005 maxed out with 200 people, and we didn’t really know a lot of them, and when we started talking to them, it turned out, a lot of them were these ‘Rails’ people…”. His history and experiences with previous Ruby/Rails conferences and meeting capacity is a terrific insight into the behind the scenes to these events. I too was curious about how it could be that RailsConf2008 didn’t sell out and what that means. I’m glad to know that the reason is because Chad’s getting smarter at running them and not because Rails is dying.
Chad has a letter about conferences being like school in the schwag-bag and he also talked about it during his welcome speech. He encouraged people to participate and interact with one another. As he put it: “How do we keep RailsConf weird”. I think this is a great sentiment that will keep the community tight-knit for some time to come. Chad is also talked about rejected speaking proposals (of which mine was one of them).
- Make People Happy
- Obsess over Aesthetics
- Observe the Culture Code
Make People Happy
- Demonstrated logging into windows…automatic updates come up, let’s look at them, okay, let’s install them. 18 progress bars later…
- Give users agency/control of their environment.
- Put the user in control.
- Positive Feedback.
- We all know about AJAX requests. What do they do? They give your user instant feedback about what is going on.
-It’s important to note that AJAX CAN be a great tool to provide instant feedback but only when done properly. This includes simple things like a loading widget, highlights when something new is loaded, etc. These are all things that are typically provided by the browser itself in a typical request, but you lose that functionality with AJAX and must replicate it yourself. If you don’t provide a replacement, then you lose the instant feedback. And worse, there is no intermediate feedback in the request at all, which will quickly lead people to click the same link a million times or more.
Obsess over Aestetics
- Aestetics can overcome a lot of flaws
- Samsung Blackjack vs Apple iPhone
- Monument Buildings in France vs US
- Lipstick vs Guts
- Skins – If the underlying functionality is heinous, then it can’t be made to look beautiful.
- Modernist vs decadence
Observe the Culture Code
- Safety by design
- Sedans vs SUVs – The Culture Code
- Enterprise vs web 2.0?
- Ruby: love beauty happines
- Python: sadness pain hurt
- Java: death destruction nuclear war
- Go to the movies and you have to go to the bathroom but are stuck because of fat people: You will say you hate the movie
- Go on a date and go to a coffee house: The girl will be drinking coffee that raises her heartbeat and will think she’s on a great date.
- Go to a speech and the presenter shows pictures of Angelina Jolie and makes lots of jokes (Just like Joel) and you’ll think you loved the presentation.
A very succinct demonstration that what should be the number one priority is to MAKE YOUR USERS FEEL GOOD. There are practical methods, such as positive feedback and putting the user in control. There are aesthetic methods (making it look pretty makes your users feel good). And there are cultural methods to help you users associate better. Do whatever it takes to make your users feel good.
Overall a good talk. Not mind blowing, but good and thought provoking.
PS Joel Spolsky speaking reminds me of an Eddie Izzard act….anybody else agree?
Entrepreneurs on Rails
The room was absolutely packed. This was one very popular presentation. About half way through about half the audience was forced to leave to clear the aisles in case of a fire.
Know Why – You need to have a reason for building an business. Maybe the reason is “There is a large demand that I can meet”, maybe it’s “It’s cool” (although that’s probably not a good reason). But you need to know why you are doing what you’re doing.
Set Goals - These should be metrics about productivity, revenue, customer base, etc. By setting goals, you can
Have an Exit Strategy
Why Create a Company
- Seperate entity – A business has it’s own bank account, etc
- Working with other companies is easier – Companies want to avoid overhead associated with hiring individuals. They can ‘outsource’ to your company and all they have to do is cut a single check.
- Raising Money
- Percieved Credibility – There is a perception that if you are just one guy writing code, you are less credible and less reliable
Types of businesses
- Create a Brand – This is a great way to bring you into the community. Contribute to open source projects, be active on mailing lists, etc. But this isn’t enough. You need to have a simple and straight forward message associated with your name or company. Examples: thoughtbot.com scoutapp.com
- Target the right market – Markets have different sizes
- You will spend 40% of your time marketing. Count on it.
- Making it Work – Getting started is easy. Ideas are cheap. Making it work is the tough part.
- Feast or Famine – How did he manage it? Took any job for very little money.
- Working from Home – He has a place in his house dedicated to work. His office is just for work.
- RFP – Used to be the RFPs were public and you downloaded them and then wrote and submitted your proposal. Now you must request the RFP before being given a chance to submit a proposal
- Proposal – Dan usually writes 30-40 page proposals that covers a project in extreme detail
- Contract – It’s very important that your contract lay out everything in detail.
- Functionality Outline – The more detailed your specifications are, the better you can support your case when a client says “it’s supposed to do X, not Y”
- Getting the Money – Businesses like to pay with Net 30, Net 60, or beyond. This can be a big problem for a small entrepenuership where cash flow is critical. Write into your contract that payment must be Net 0 or Net 15.
- Terms of Service – This limits your liability when things go wrong (ala Twitter). Don’t promise or let people think you’re promising things you can’t deliver
Why you might want to raise money
- Lengthy Development Cycle
- Office space
Kinds of Funding
- Personal Financing
- “Love Money”
- Equity Funding – Venture, Angels, IPO’s
- Debt Financing
Eventually you will not be involved anymore. Planning on how to wrap things up or hand it over to someone else.
Overall, a good presentation for any independent developers or people looking to start a business. Nothing really Rails specific, but obviously this is information that a lot of people need.
Ezra, et al
- active_record “find(:all).each do |leak|” Development with 20 records. Production with millions of records. No limits, no indexes.
- Not up to par with MySQL – Relink back to prior posts
- If you have a foreign key, it needs an index
- ferret – Corrupt indexes, out of control index size. Move to ultra/sphix. Ultrasphix now supports delta indexing. No reason not to move.
- image science + monit: monit likes to clear ENV variables
- hodel 3000 – Way too much logging means a total data overload. Switch your log leve
- Digg – 10,000+ visitors, very few signups
- TechCrunch – 1000 visitors, almost all signups
- Today Show / Fox News – hundreds of thousand of visitors… 2000+ connections
How well can you code:
- File io: Log to different disks, don’t be reading & writing to disk simultaneously
eycap – gems.engineyard.com
gem source -a gems.engineyard.com
Mongrel alternatives are good: ebb & thin. But you don’t need to worry about the difference unless you’re doing 1000+ requests / s. Look at your code first.
- What happened with nginx: “This presentation was about problems that we’ve had problems with. We haven’t had any problems with nginx – It is perfect”
- Passenger/mod_rails: “It runs on apache, so we haven’t worked with it much, but it’s interesting and is doing some good things”
- Memory footprint of different app servers to run more mongrels: “YOU NEVER NEED MORE THAN 3 OR 4 MONGRELS PER CPU. Adding a ton of extra RAM to run more mongrels doesn’t do any good.”
- Do static files need to be local or can they be shared between cluster elements: “It’s a very good thing to share the static files so that cached and uploaded files are immediately available to the entire cluster”
- Best way to handle background jobs: “BackgroundRb was naively developed, now background job (bj) is the best method that we use”
- Do you use keep-alive with nginx: “Not sure, we haven’t tested it. But one great thing is to use many hostnames for asset servering so that the browser will simultaneously load from many different places, even if all the hostnames map to the exact same machine/IP”
- What is the best way to distribute the workload across servers (especially virtualization): “The typical physical hosting of distributing web, app, db servers isn’t really needed for virtualization. Each slice has its own nginx, mongrels, & memcached.”
- SLA’s/Uptime: “Engineyard has 3 9′s of total APP TIME availability (approaching 4 9′s).”
Overall, another good talk. I’m very much interested in deploying/hosting/operating Rails sites, so I was glad that most of my opinions on how to run Rails sites was validated by what the EngineYard team had to say.