First step into a larger world
The Title of this post is a quote – 10 points to the first commenter who credits it correctly.
I have a LOT of ideas. I have ideas for games, stories, business, applications, management, for everything in my life. Just ask my friend Khye, because I think he gets tired of hearing all of my Great Ideas(tm) and then never seeing me act on them!
I had an idea a year or so ago for an application that would help the process of collecting feedback on creative work. I talked it over with a few people, which I consider Stage 2 for a Rick Idea.
Most ideas don’t make it out of Stage 2. (Maybe I should just start a patent company!) This idea for a structured review app kept coming up and I went through a lot of mental excercises of how to best implement it. Crucial to the application would be the ability to tie review comments and markup to a particular version of the work being reviewed. For a web site, this would either mean saving the HTML, CSS, script files, and images OR taking a screenshot of the web site. Since saving a page is a very non-sustainable solution I decided that a screenshot was the only way to go.
The application is collaborative in nature, thus it must be built as a web app; but I despise the idea of requiring the user to install some extra program, browser plugin, or extension. But how else could I take a screenshot from a web app? Javascript and Flash certainly couldn’t do this – at least not reliably. You could probably do it with a Java Applet, but who uses those anymore?! This idea was stalled at Stage 2…
Until I saw Vyew.com. Vyew.com is a lovely little web app for doing online meetings, kinda like WebEx, but it’s a lot quicker and easier because it all runs on Flash. Vyew has a nifty feature that lets you take a screenshot of your desktop and share it with meeting attendees. Wait a tick, how’d they do that? With a Java Applet?! And it’s really unobtrusive and fairly quick! Why did I count Java out so easily?! Who cares, on to Stage 3…
As you’ve no doubt guessed, ideas don’t make it into Stage 3 very often around here. Stage 3 is where I start experimenting. This was pretty intimidating because I don’t know Java and I want to write the backend in Ruby on Rails, which I also don’t know. Not to mention that I’ve barely written a line of code in any language for like 2 years!
Regardless of being completely slack on my skills and facing TWO new programming languages, I wanted to do it The Right Way. Stage 3 is accompanied by that euphoria which exists right before reality sets in. The first, obvious, and wrong way to do this would be to take the screenshot, save a PNG to disk on the client machine, and then FTP it up to the server. I could probably get that working with a little Googling and some Copy/Paste. In my Stage 3 euphoric state I set out to do it the right way: convert the screenshot to PNG in memory and then upload that to a web service powered by Ruby on Rails.
That, it turns out would take quite a few weeks (and a whole lot of Elder Scrolls 4: Oblivion), but I’m proud as hell to tell you that I got it working Saturday night at 1am! I faced a lot of challenges along the way because of SO much unfamiliar territory. I’m very proud to say that I’ve kept myself away from comfort zones, learned a whole lot of new stuff and can definitely say that I really understand everything that is going on under the hood (as opposed to the Google+copy/paste method). I learned a little bit about Java, Apple’s IDE XCode, and XML-RPC (adding org.apache.xmlrpc to my Java project was difficult for some reason). I’ve begun my foray into Ruby and the Ruby on Rails framework and I look forward to using RoR a lot on this project.
As a C-style programmer (Actionscript primarily), Ruby expressiveness is both intimidating and delightful. It’s really neat to work in Java and Ruby in tandem because you really see the differences. To get simple-medium things done in Java you go through a lot of hoops, but you can see everything leading up to the final output. In Ruby you so often write just one line of syntactically loaded code. I’m constantly asking myself “how does it know that if I didn’t tell it” and “where is this inheriting from?” But once I figure out the code I realize that I actually did tell it everything, just through a far more expressive and concise syntax. And inheritance is so obvious that I was looking right past it.
I’ll wrap this up, but the other huge difference that I want to mention is the documentation. Both languages have a bunch of auto-generated API docs with some human commentary interspersed, but Ruby’s documentation is so easy to see at both high and low levels. Anytime you read through API docs you run the risk of losing site of the forest for the trees, so I submit to you this analogy in reference to the languages and their documentation:
Ruby is Central Park
Java is Canada
I’m utterly in love with this idea and I’ve proved to myself that the screenshot portion can actually work: welcome to Stage 4 (SSJ4 – 20 points for that one!)
About this entry
You’re currently reading “First step into a larger world,” an entry on Slacktastic
- Published:
- October 3, 2006 / 12:42 am
- Category:
- Entrepreneurship, RubyOnRails, applets, business, java, ruby, slack
- Tags:

3 Comments
Jump to comment form | comments rss [?] | trackback uri [?]