Adam Fortuna Ruby/Rails Developer in Orlando, FL

Technical Podcast Recommendations?

Lately I’ve been searching for and trying to listen to more technical podcasts. It’s a great time for podcasts right now, with more high quality technical podcasts available than ever before. I’m always looking for more recommendations, but here are a few that I’ve been listening to lately.

General Programming

Ruby 5 – Quick look at what’s going on in the Ruby world.
The Ruby Show – Longer look at the Ruby world with some good humor thrown in.
Stack Exchange Podcast – As a long time read of both Joel and Jeff’s blogs, I’m very happy to see this podcast come back after a long hiatus.
This Developers Life – A look at developer stories told in a similar way to This American Life.
The Changelog – Focuses on the new projects and tools, usually by interviewing the authors.
Hanselminutes – Very long running podcast with a Microsoft tilt, but covering a wide range of development.

Non-Programming, but Science, Math, Technology related

Back to Work – After reading Merlin Mann’s blog for years, and hearing him speak at IzeaFest, it’s great to hear him talk.
The Talk Show – By the respected Apple writer John Gruber.
Freakonomics Radio – A new look at old statistics.
Radiolab – Entertaining science focused stories. Huge archive, but worth going back and listening to every one.

Already Popular

Dinner Party Download – Fast and funny “booster shot” of news and culture.
Wait Wait Don’t Tell Me – Hilarious take on the weeks news.
This American Life – Storytelling at it’s best on the radio.
The Moth Podcast – Live stories told on stage. Usually they are hilarious, and no two are the same.
NPR: Planet Money – All the financial news you really need, usually told through stories and people.

Recommendations Welcome

There are only so many podcasts that I can listen to in a day before jumping back to music, but this mix of different categories has kept me entertained for a while now. Are there any podcasts that you love and listen to as soon as you can?

May 26, 2011

podcast

Launching a Project in a Month

After leaving from my last job in mid March, I decided I wanted to get some Rails 3 experience as soon as possible. The best way to do this? Build a site that I’ve always wanted to do! The idea for Line of Thought had been around in my mind for a long time (the domain was registered back in 2004 when I had the idea). The idea? A place to track and share what technologies power a specific website – or see a list of sites powered by something.

I see this as hitting a niche for a few specific groups. Developers wanting to…

  • Learn more about a specific website.
  • Share what technology their website uses.
  • Find out what’s hot that they should be paying attention to.
  • See which sites are using a specific tool, framework or whatever.

I was lucky enough to have a few week gap between jobs, so as long as I had a goal for those weeks I could make the most of it. It’s not often we have an idea to work on, the desire and skills to do it, and the financial availability to pull it off on our own as a full-time thing. Development picked up on Line of Thought on my first unemployed day and continued for nearly everyday for my 4 week break before starting over at EnyLabs earlier this month.

This was a project with a very limited scope, so it was very doable by one person. Most days I worked from home, but at least once a week I’d try coworking where ever I could find a desk. The goal of the project wasn’t to create the next big money making site, but create something I’d want to use that the web was missing. A side goal was also to just get this idea that I’d had in my mind for 6 years out there.

Technology Behind the Scenes

One advantage of Line of Thought is that it makes it dead simple to share what powers the site. For instance, the technology behind Line of Thought contains a more detailed list of specific libraries than you’d likely see listed out in a blog post. I’ll go over a few of the choices.

Rails 3

The application itself is written Ruby on Rails 3. It was my first shot at a Rails 3 app, so often I’d start out doing something the Rails 2 way before discovering the Rails 3 way. Since I’m now working there it’ll sound like a plug, but the Rails 3 Best Practices Course was a huge help in making the transition from Rails 2 to Rails 3 for me.

Apache Solr

The app is hosted on Heroku, and for the most part costs almost nothing to run. The site was initially running Apache Solr behind the scenes. Solr using Sunspot was used for site wide search, category drill down and autocomplete. The autocomplete part was fun, and only takes a few lines to implement:

class Tool < ActiveRecord::Base
  def self.autocomplete(q = "")
    search do
      with(:lower_name).starting_with(q.downcase)
    end
  end
end

Delayed Job

There are a number of actions that hit external services (loading site title and description, pagerank and alexa). All of these happen in a DelayedJob and don’t affect the dynos (which process only web requests). The Workless gem is used to automatically scale Job runners on Heroku – which saves a good deal of money. Because of this architecture, and optimizing the page load times I can control down to under 100ms for all GET requests, it should scale up extremely well. There’s places I can still add caching, but for now the only cached page is the homepage using Memcached.

jQuery UI Autocomplete

One of my favorite discoveries was the easily extendible autocomplete system in the latest jQuery UI. When you’re adding the tools used on a specific site, it uses this autocomplete system to grab the results and show the favicon of the site. You can override the renderer used by jQuery UI, which is how we create the nice list item with a favicon, tool name and URL – then after a tool is chosen the tool ID is set to a hidden field while name and URL of the tool are shown to the user. Only a few lines of jQuery to do all this.

Pismo Gem

One fun library I ran into was the Pismo gem. It’s used to analyze the response from pages, as well as parse favicon, title and description. One added bonus is that when people add new tools, we can automatically try to classify them based on the content of the tools homepage. If it mentions framework 4 times and ruby 3 times, you can take a good guess as to what the tool is written in and what it does. There’s still a few more steps to take with this, but the basics are set in place.

Jekyll

The Blog is running on GitHub Pages using Jekyll. I enjoyed working with Jekyll so much that I decided to move this blog over to it as well. If you’re looking for a simple blogging platform that you can host pretty much anywhere, it’s worth a shot.

Lessons Learned

Like with any site I had high hopes for a launch – even though it was written almost entirely in a 3 week period. The launch is just a starting point for getting feedback though, but it has been a valuable step towards finding out what I should focus on based on what people are actually using.

Search was completely over-engineered. You really don’t need solr to start with if you don’t even know if you’ll have any traffic. I really wanted to use it for something to get some experience, and for that I’m glad I did. In the end though, I added an option to turn Solr off and have the site degrade to using SQL for everything. With an extremely small database at the moment, this is still extremely fast, and if the site does take off Solr can always be turned on.

Downgrade as fast as you upgrade. If you have allocated tons of resources but no one is there, have a plan to scale down. Right now the site is running, but I’m not pushing traffic towards it. On the bright side it’s cheap to keep it running.

It’s not important to launch with a professional design if you’re bootstrapped or still working out the core concepts. I could have spent some money to hire a designer, but I didn’t have a good idea of what the pages were going to do until the last week. For instance, based on feedback from the initial release to a few alpha users, I got rid of an entire page. Previously there was a separate page to manage tools for a site. This was basically the same as the tools list, but with a form at the top, and editable. By combining these two pages with some Javascript, and tweaking the user flow when they add a site, the result is a lot more straightforward to new users.

Could I have just done this project in my spare time instead? Yes, definitely. I was under an NDA at the time though, so unfortunately the project would have been owned my previous employer. The same was true about my past 2 jobs actually, which was one reason the idea sat around as long as it did (that and doing other fun projects). Unfortunately in Florida this is a common practice, but from what I’ve read this isn’t allowed in California.

If you have an idea for a site, build it! You can worry about not doing your idea justice, or you can start working towards it and iterate until it meets your needs.

April 30, 2011

lineofthought, rails, ruby, lessons, heroku

2010 Year in Review

My yearly recap of what’s happened in my life over the last year.

Travel

  • Twitters first Developer Conference in San Francisco, Chirp and got to see family in the area
  • My first cruise- – a 7 day Royal Caribbean cruise to Haiti, Jamaica, The Grand Cayman Islands and Cozumel with Marilyn
  • Went horseback riding on a somewhat wild horse named Alarma in Cozumel
  • Climbed a waterfall in Jamaica.
  • Scalloping at Homosassa Springs
  • Crab Feast in St. Petersburg!
  • Stayed at the Don Cesar in St. Petersburg for Nate and Bekah’s Wedding
  • Went to Miami Beach for Nate’s bachelor party and stayed at the iconic Eden Roc
  • Westin Channelside and Hard Rock Casino for IZEA’s retreat

Life

  • Started a 4′×9′ vegetable garden
  • Began composting
  • Bought a wheelbarrow
  • Had our first yard sale at this house
  • Cleaned out the garage to where we can actually use it
  • Dropped cable TV in favor of using Plex, Netflix and Hulu
  • Digitized most my DVDs and media. Still a few to go, but the bulk of the work is over
  • Slowly increasing savings and investments on Vanguard and following investment advice from John Bogle
  • Had a major disagreement with GE over them charging me $400 for something they broke. Complained on Twitter and they resolved it before my check was even cashed.
  • Developed an appreciation for beer
  • Went on an indoor plant buying frenzy resulting in many casualties. Only the strong survive.
  • Played on my works kickball team with Marilyn

Events and Entertainment

  • Flaming Lips and Imogen Heap concerts at Hard Rock Orlando
  • Got Disney passes and went to Epcot’s Food and Wine Festival way too many times
  • Saw Jonathan Coulton and Paul and Storm at The Social
  • Saw Rick Springfield and Boyz 2 Men at Epcot (but we missed Hanson)
  • Largest holiday party so far over at our place
  • Tron Legacy Midnight release with Marilyn and friends
  • Lots of movies . My favorites that came out this year were Inception, Exit Through the Gift Shop and The Social Network
  • Favorite TV shows discovered were Breaking Bad, House, Jericho and The Colony
  • Played through Mass Effect twice and Mass Effect 2 almost twice and loved them both
  • Thanksgiving at Marilyn’s Moms, with firetruck and family
  • Went to Plazaween in costume with Marilyn and friends

Programming and Technology

  • Launched Cost Per Click for SponsoredTweets
  • Helped get SocialSpark V2 launched and did a tiny bit of work on WeReward
  • Started organizing hack days and lunch-and-learns at work, we even had a chance for a hack week!
  • Completely dropped organized hosting on Dreamhost in favor of S3, Posterous and Github.
  • Launched MovieFly , then a few months later Miso launched
  • Changed AdamFortuna.com into a splash page instead of a blog
  • Started a mobile blog for pictures taken from my phone
  • Moved ArcadeFly over to Heroku
  • Bought an iPad, a new shuffle running and upgraded to a iPhone4
  • Started learning iOS development
  • Started working on a new site in Rails 3 that should launch next year
  • Messed around with some new technology over the year including node.js, redis, websockets, css3, html and mongo db
  • Upgraded to Road Runner Lightning, and slowly backing everything I have up to BackBlaze

As for new years resolutions? Probably increase savings a bit more, eat a little healthier and spend less time on the couch. Like to eat out less and get better at creating the things I love to eat and drink from scratch including salad dressing, sauces and brewing beer- – and maybe later on wine. If there’s one thing I want to do in 2011 though, it’d be launch the site I’m working on in my spare time, and do it right.

December 31, 2010

personal

Latest Project from IZEA - WeReward

This is a Sponsored post written by me on behalf of WeReward . All opinions are 100% mine.

Since January, we’ve had a small development team here at IZEA working on WeReward.com , breaking us into a whole new market here. If you’ve ever heard of Foursquare or Gowalla, WeReward is similar, but builds on them with some neat additions.

How it Works

Let’s say you’re looking for a place to go out to eat. You can search WeRewards for the type of business you’re looking for (restaurant, pizza, wings, subs), and see what’s close by. That part you can do on a million other apps — but what makes WeReward special is that the results will have rewards of various amounts. The default amount is 5 points (5 cents) of businesses not claimed by the owner. Once an owner claims a business, they can up the reward to whatever they want.

Some places might offer a 100 point ($1.00) reward for completing a specific objective. All objectives are in the form of a picture to verify. Usually this means taking a picture of your meal, your receipt or your happy face smiling at the business.

After you take the picture, you can also share it on Twitter, Facebook or Foursquare. If you share it, a link to your checkin will be posted, where others can see the picture you just took. I like it because it combines the checking with the image post – and makes people click through to see the picture you just took.

What are these Task Things?

In addition to checkins, WeReward also has a separate section for tasks . Tasks are similar to checkins in that you have to complete some objective and take a picture — the only difference is that you usually don’t have to be at a specific location.

There are dozens of tasks in there right now. Here’s a few examples…

  • $5 from EyeFi – Take a picture at Best Buy or an Apple Store with an employee and an Eye-Fi package.
  • $1 from T.G.I. Fridays- Take a picture with Friday’s Bartender, your Waiter or Waitress.
  • $0.52 from Target – Take a crazy picture of yourself with the Target logo at a store. Share with @target!

Get the App Now!

Getting the app into the app store a fun ordeal. WeReward was launched at Techcrunch Disrupt 2010 , which meant that the iPhone app should really be available by then (the phone is kind of essential for everything I’ve listed so far). We went through a few rounds of the app store approval process, but eventually got it pushed through and approved within a day when the app was presented. Luckily most the companies presenting had prototypes and ideas, so WeReward being a public app that was being released right there stood out due to the polish.

The app is available for iPhone and Android right now, with a Blackberry scheduled for late August. If you have any questions about the app, you can checkout WeReward.com for more information on how it works and how to use the app.

August 06, 2010

izea, sponsored

jQuery Driven Tokenizing Additions

Facebook got tokenized input right. If you’ve ever sent someone a message, or searched for someone a message you probably used what was previously a less user-friendly system to perform this same task. The idea is easy- you want to enter one or more names or other text and select matches. Gmail uses the same kind of auto-complete to allow you to email to multiple email addresses, as do a host of other sites, so it’s surprising there aren’t better solutions to this in the public. I came across one amazing solution for this when I was working on MovieFly a few months ago, and was able to expand it with a few more options while working on SponsoredTweets .

The jQuery Tokenizing Autocomplete was released last year, with some nice additions to it in December. It’s an extremely rich plugin that behaves very similar to the Facebook version. You can select previously entered tokens and delete them, navigate completely by keyboard, or with the mouse- it’s amazing. My branch has a few additions that were used on SponsoredTweets including suggestions when there are no matches.

March 30, 2010

jquery, javascript