Readit.me

A typical library trip.

Every developer has a different method for learning a new language. Some learn by reading tutorials, others by reading code, others by writing it; most learn by some unique combination of these things. I tend to gravitate towards the "writing it" angle. I can read a book or a blog post, but unless I actually create something, I do not retain the knowledge for very long. When I first learned CakePHP, I did it by writing an application called "Spitgamer."

For my first full-scale Rails app, I decided to create an application that is a minimalistic reading diary. I read a lot of library books and I often find myself checking out the same book again, attempting to remember if I read it, and if so, what I thought about it. I've checked out some of the other online reader communities, but they seemed to suffer from feature-bloat. I like minimal interfaces (ala delicious).

Readit.me still lacks some of the ideas that I'd like to see deployed, but it's basic premise is all there. (I am an adherent of the school of release early, release often.) I used the Amazon e-commerce API to pull in book data. It's currently tied into Facebook Connect, and I hope to integrate it with other social services as I have time.

It's been a good experience working with Rails, too. I prefer it's reliance on the command-line, as that's where I'm most comfortable.

It's difficult to make the jump from a "PHP" guy to a "Rails/Python" guy. My work comes from referrals - so that tends to mean that all my past PHP clients forward me new PHP work. Picking up work in a new language can be difficult as a consultant. However, I'm certainly headed in that direction and I hope to eventually phase out the PHP work into "occasional" projects and maintaining legacy applications (much as I work with Java now).

Replies / add new reply

What is the value of four hundred minus one?

Ongoing Compendium of Nashville User Groups

There are a lot of programming language or web application user groups here in Nashville. I live and breath open-source, so a lot of the groups I am aware of tend to be OS-centric. There have been many complaints that there is no one-stop-shop for anyone looking for these groups (or an event calendar for the Nashville tech scene in general). NashvilleGeeks.org has been working on a calendar for the tech-scene in general, but it's still a work in progress.

Here's the list, last updated October 25, 2009.

Enterprise LAMP
Run by Marcus Whitney. Unfortunately the website has very little information on the monthly meetups, and I'm not sure there is a site with current information on it. The best way to find out about it is to follow enterpriselamp on Twitter. This group generally covers a wide range of topics in the open source world. It meets monthly and alternates between Emma in Nashville and Vaco Technology in Brentwood. There is also an email list, Nashville OSS, and and upcoming site (nashvilleoss.org) meant to help folks keep up with all of the local UGs.
Nashville Ruby on Rails Meetup
Run by the venerable Josh Crews. Meets once a month at centre{source}, I believe on the second-to-last Thursday of the month (odd date due to calendar conflicts with other CS events) at 5:30pm.
Nashville Ruby Group
Run by Will Bridges. Not sure what the regular meetup schedule is yet.
Nashville Drupalers
Not sure who is running this one (I'm not a Drupal guy), but they appear to have regularly scheduled meetings.
Nashville Symfony UG
Run by Travis Roberts and Brent Shaffer, both of Centresource. Meets at 6pm the first Tuesday of the month at Centresource.
Nashville Dynamic Languages
You'll have more luck with this group on IRC (#nashdl, Freenode). They meet weekly for hack sessions and socialization, but it's a pretty small group and seems to function as more of a social club than an actual user group.
Nashville Linux Users Group
Also on IRC (#nlug, Freenode). Meets at 6pm on the second Tuesday of every month on the Vanderbilt campus.

Groups That Appear Inactive

Nashville PHP UG
Run by Will Fitch. Appears to be somewhat dormant. (Same can be said for NPUG).

Am I missing anyone? Let me know in the comments or shoot me an email.

Replies / add new reply

What is the value of four hundred minus one?

Clark Everett and I have talked about restarting the Nashville PUG. Need some show of interest though.


10-27-2009 at 09:11a.m.
by Shawn Stratton

I would certainly be interested. I'd like to see a group that has some staying power rather than wilting away after a few months.


10-27-2009 at 09:36a.m.
by Brian
BarCamp Nashville 2009

BCN is spinning up to be a great event. I hope it lives up to the hype!

I just wanted to post the following conversation just because I think it's fun to read it and replace "slides" with "pants." What am I, twelve? Only in my head, baby, only in my head.


nicholasholland: I'm going to try presenting without slides... *gasp* I wonder if the crowd will be shocked (bored?) at Barcamp Nashville #bcn09 #fb

marcuswhitney: @nicholasholland you wont be alone ;)

johnmorgan: @nicholasholland I did no slides at Podcamp. They loved it. I'm not doing slides this time around cause I want to be different & I'm lazy!

kateo: @nicholasholland I did my session at PodCamp Nash '09 without slides; seemed to work fine. Keeps people from reading ahead. ;) #bcn09

There, now it's saved for internet posterity and in context. I will be a lot more comfortable talking at BarCamp if all of the big shots are going pants-less.

Replies / add new reply

What is the value of four hundred minus one?

The Capitalist Programmer

Stealing MySpace is a fascinating book that chronicles the beginnings of the popular social networking site. The book is well researched and does a good job summarizing both the business decisions and sheer chance that took MySpace from a Friendster clone to the height of its popularity.

Back when MySpace first opened up its "MySocial" API (allowing you to create MySpace applications) I was hired to develop a simple app that would list jobs near a user. The API had only just been opened. Documentation was poor, patches would be released only to break functionality, and in general I found it to be about as much fun as a visit to the dentist. I was surprised that a company as large as MySpace could get away with the "build it first, let the customers test it" philosophy. I suspected that given their company culture, maybe they had always been that way.

Based on Julia Angwin's research in Stealing MySpace, that certainly appears to be true.

MySpace's philosophy was "Get it out fast, fix it later," according to chief technologist Aber Witcomb. That philosophy was the antithesis of the Silicon Valley point of view, which values in getting the technology right. [....] MySpace took the opposite approach, throwing a totally unworkable website online and trying to fix problems on the fly—all while constantly adding new features that crashed the site.

How could a company do this and gain market share so quickly, you may wonder.

MySpace users were surprisingly tolerant of the site's quirks, in part because [Tom] Anderson's humorous, self-deprecating blog postings and news updates created a sense of intimacy between them.

It's really not that surprising. Good businessmen have always known that ultimately it always comes down to the relationship with the customer.

The Software Artisan

Any good software developer knows that you need to deliver quality code to the end consumer. Bugs and crashes will drive away users, harm your image, and ultimately benefit your competitors. The culture of testing is a sign that the web development industry is maturing. There are plenty of testing methodologies out there, some of which are sold with the zealotry approaching religious fervor.

There is, however, a balance. Others have capably elaborated on this.

The Entrepreneur

The entrepreneur knows that unless you gain a market share, owning the widget with the highest-quality code is going to be irrelevant. Most entrepreneurs making an early entry into a field are focused on releasing a product that is good enough. In some areas of development culture that's taboo, but there, I said it. Good enough means:

  • Sufficient Quality: Few enough bugs that it doesn't drive your customers away.
  • Low Financial Cost: Developed at a low enough cost that risks are managed (cost meaning both time and money).
  • Low Time Cost: Developed quickly enough to beat possible competitors to market.

As aside: "Sufficient" does not mean "poor." "Sufficient" quality must be prefaced with all sorts of conditions and requirements. Caveat emptor. Additionally, I realize that this could very quickly devolve into a discussion of the old "Good, Fast, Cheap: Pick Two" maxim. It's a maxim because it is true.

What I'm focusing on here is the "Quality." As a developer, I prefer to release code that is well-tested, well-documented, and elegant. As an entrepreneur, I recognize that this isn't always feasible. Herein lies the difficulty.

Furthermore, if you are a developer and you are aghast that I would suggest that there is such a thing as "sufficient" quality, then I hasten to remind you that whether or not you realize it, you (yes, you) have weighed the cost of quality all along. No software is perfect. At some point in the development cycle someone has to make the decision to release.

If you're still with me, then you see the problem here. "Few enough bugs" means different things for different stages of industry maturation. In a young industry, there are fewer competitors and it's more about getting to market first. In a more mature industry, you may already have competitors that are well established.

One of the reasons that MySpace won out over Friendster is that Friendster stalled development for nearly a year while their developers refactored code to make the site more stable. MySpace had shorter, faster iterations: they copied anything and everything ("Hot or Not", Evite) and released it quickly; if it didn't work or attract a user base, they took it back offline.

On the other hand, when Google entered the search engine wars their competitors (Microsoft and Yahoo!) were pretty well established. The frenzied pace would not have attracted a market share. What did work was a faster, better search engine. A parallel can be seen in MySpace's slow, inevitable decline.

What's Killing MySpace?

Ultimately, MySpace never grew up. The social networking market space matured, but MySpace never did. When they released their application platform it was in response to Facebook. Just as they had always done, they played the role of cowboy coder and release buggy code, followed by patches that just muddled the pond further, frustrating both developers and end-users. Do you see a future for MySpace as they are today? I don't.

The Takeaway

Running a business is much like life: it's a constant, never-ending balancing act. One is constantly evaluating the risk of a given decision against the potential reward; weighing the marginal cost against the marginal benefit.

A good artist doesn't want to create something that he's not proud of (which is why artists are often labeled perfectionists). Software artisans are often focused on meeting a business need with well tested, well documented, elegantly written software. What an artisan wants is perfection: but perfection takes time and money, and that increases the total cost. In a young industry, that cost is, well, more costly. It bears more heavily when an opportunity window is only open for a short amount of time.

However, as a company or an industry matures, quality starts to become exponentially more important. If your company is not maturing with the rest of your industry, then your competitors start to eat your lunch. The annals of Silicon Valley are full of businesses that were first to market and then were later devoured by their competitors.

When weighing the cost of perfection, there are many considerations. If you work in healthcare then the cost of data loss or a break-in is far greater than it would be for a social networking application. Assuming the role of cowboy can be very costly, as it was for the bookmarking service Ma.gnolia.

The bottom line is that entrepreneurs cannot afford to be methodology zealots. Entrepreneurs must be risk-weighers who are sensitive to both changes and opportunities.

Your thoughts?

I still consider myself a student of both business and web development. I find this balancing act to be fascinating and I would love to hear what you think about it. If you are both an entrepreneur and a developer, how do you balance your zealousness for quality with your attempts to crack out a market share?

Links

Replies / add new reply

What is the value of four hundred minus one?

I'm certainly no Web developer, and only a budding entrepreneur, but I will say this tension exists in other professions.

I'm a journalist by training, and the balancing act between getting it right and getting it out there is certainly a struggle with which I can relate.

From an outsider's perspective, I'm interested in how other disciplines approach this dilemma.


09-2-2009 at 04:57p.m.
by Matt
Evangelism and Scrum

DevLink is really aimed towards Microsoft programmers. I'm not a Microsoft programmer. I live and breathe Linux. However, the conference had a session on Ruby and a Project Management track, so I figured, why not?

The Good

The highlight was the Ruby/Koans session with Leon Gersing of Edgecase. Gersing has the demeanor of a natural mentor. The class was about three hours long and basically consisted of fixing broken Ruby tests. It was a great introduction to the idiosyncrasies of Ruby. Gersing paired up users that didn't bring a laptop, so I welcomed a native Microsoft developer to work alongside me. At first I was a little concerned that my partner would be put-off by my use of vim, but I was pleasantly surprised that this particular developer was quite familiar with vim. I don't think I'd be as comfortable as my partner was if I was thrown out of my element and into a Visual Studio editor.

The Bad

I also attended a session on Scrum.

Any time a certain development or management approached becomes etched in stone and I hear the words, "If this doesn't work for you, then you're not doing it right" I start to get very, very skeptical.

It got really interesting when the speaker started telling the audience how he would hold scrum sessions while he was running on a treadmill in preparation for a marathon. He explained that his development team "understood." I daresay that his team correctly assumed he was what Mark Twain would refer to as a "pompous ass."

"Don't let your developers slouch," he preached, waving his Agile bible in the air. "If I catch a developer in the meeting slouching, I give them a quick pat," with this he mimes patting a butt, "and tell them to straighten up."

Developers are not elementary school students. If you treat them like such, you're going to make them hate you. If I had a project manager that had the nerve to pat my rear and issue commands, I'm pretty sure I'd wait for them in a dark alley and break their kneecaps.

There are some parts of scrum that I can buy.

Short meetings? I can buy that.

Reporting what you did yesterday and what you plan to do today? I can buy that, too.

What I can't buy is, "If you follow these instructions, all of your wildest dreams will come true." That's baloney.

What I see in scrum is that it allows managers that don't have a familiarity with development to apply a system to a process that's really something of an art form. With art forms, you need some measure of flexibility. Take the good, apply it, but don't get evangelical about it. No process is perfect. If you become a zealot, be it a PHP zealot, a Ruby zealot, or an Agile zealot, then you've lost some measure of clarity. You certainly have no business talking at a conference.

Additional Resources

Replies / add new reply

What is the value of four hundred minus one?

Agreed. I would have walked out of the talk. He obviously doesn't know or understand his audience.

At conferences especially it's important to provide practical information that the audience can take from the talk and apply to their situation.

Zealots do more harm than good in most cases as they tend to steer others away from whatever their so excited about, simply by the vibe they give off.

I'd bet the speaker isn't asked to speak again. (based on this talk)


08-26-2009 at 11:20p.m.
by Kevin Old

I ended up leaving it about fifteen or twenty minutes early. I just couldn't take it anymore.


08-27-2009 at 02:25p.m.
by Brian Dailey