Author: Matthew

  • RubyConf 2012 recap (part 2)

    Continuing from part 1 of the recap, here are the remaining six talks I attended during RubyConf in Denver:

    • Y Not – Adventures in Functional Programming by Jim Weirich
      Jim’s presentations never disappoint and this was no exception. Similar to his prior talk where he built Git from scratch, except this time he build the Y-combinator using nothing but stabby procs. Mind blowing.

    • Ruby vs. the World by Matt Aimonetti
      A fascinating look at how Ruby stacks up agains three other languages: Go, Clojure, and Scala. Matt included plenty of code examples and shared his thoughts about the pros and cons of each language.

    • Real Time Salami by Aaron Patterson
      Building real-time monitoring systems in Ruby while enjoying delicious salami. What better combination could there be? Aaron even brought samples for everyone. I won’t call it bribery… [slides]

    • Inside RubyMotion by Rich Kilmer
      One of the most crowded talks of the conf, Rich demonstrated how to build iOS applications in pure Ruby. Impressive is an understatement. Does this project offer sweet escape from the dungeons of Objective-C? You be the judge.

    • The Insufficiency of Good Design by Sarah Mei
      A practical exploration of team dynamics, communication, code quality, and problem solving. [slides]

    • Simulating the World with Ruby by Bryan Liles
      The real world has millions of “objects” interacting in seemingly random ways. How would we go about modeling this in Ruby? Bryan demonstrated how and threw in a healthy dose of statistics for good measure. [slides]

    Attending RubyConf this year made me regret skipping last year. I’m looking forward to visiting Miami Beach for RubyConf 2013.

    If you’re interested in picking up new tricks and techniques for your own programming, or are just looking for a healthy dose of motivation, you should consider attending as well. My advice is to act fast once tickets are announced. They tend to sell out very quickly.

  • RubyConf 2012 recap

    After being unable to attend RubyConf last year, I was thrilled when I heard that this year’s conference would be held in Denver. Having lived in Boulder for several years, I’ve learned to love Colorado, the scenery, and the people. So it was almost a given that I would be attending.

    RubyConf 2012 was one of the most useful Ruby conferences I’ve been to. The variety and quality of the talks and the venue combined to create a memorable experience. My reading list is slam full of interesting things I picked up at the conf and want to keep learning about on my own. Another reason this was a great conf: the swag. I left the conf with no less than 8 T-shirts, all of which I’m reasonably sure I will actually wear (sometimes free shirts are rendered unwearable by being poorly made or just plain ugly). Some attendees even scored 9 or 10 shirts.

    But enough about shirts. Let’s go over some of the best talks I attended. (Which, by the way, will be posted online by Confreaks shortly, if they aren’t there already.)

    • My Name is MagLev by Jesse Cooke
      A Ruby implementation sitting on a Smalltalk VM, sporting a baked-in ORM that transparently persists your Ruby objects to the database. No more ActiveRecord wrangling!

    • Implementation Details of Ruby 2.0 VM by Koichi Sasada
      The 20th anniversary edition of Ruby was previewed at RubyConf and boy howdy does it have some nice features. Besides better method dispatch performance, the ability to prepend a module is very handy. The target release month for Ruby 2.0 is February, 2013.

    • Ruby Monitoring State of the Union by Joseph Ruscio
      Joseph surveyed various options for monitoring your Ruby programs: New Relic, statsd-ruby, Librato, and various monolithic open source software packages.

    • Zero Downtime Deploys Made Easy by Matt Duncan
      The title was misleading since Matt opened by saying there is no silver bullet. But he did share some interesting tricks to avoid locking database tables during long migrations, and also outlined a way to migrate between API versions.

    • Refactoring from Good to Great by Ben Orenstein
      One of my favorite talks of the conf, Ben gave several examples of smelly code and then proceeded to live code his way through various refactorings. Highly recommended.

    Tomorrow I’ll recap the remaining six talks, including Jim Weirich’s keynote which involved stabby procs and succeeded in completely blowing my synapses. Stay tuned.

  • Developers, please remember me by default

    When did developers start defaulting the “remember me” checkbox during login to NOT be checked? 99% of the time I’m on my own computer when logging in, which means that 99% of the time I want that box checked. I’ll uncheck the box myself for the remaining 1% (when I’m on a public computer for example). Fellow developers, please change your ways. It would save us all a little bit of hassle every time we login.

  • Quote of the Week: Roy DeSoto

    “Why don’t you get married instead of feeding your neurosis?” — Roy DeSoto, “Emergency!”

  • Indieconf 2012: The Anatomy of a Freelancer

    Out of all the talks on Saturday, this is the one I’d recommend for anyone who wants to become a freelancer. David Rogers gave an accurate and at times humorous overview of the distinctions between three different types of workers: the freelancer, the nine-to-fiver, and the moonlighter.

    He began by emphasizing that none of these choices are wrong or less advantageous than the others. Each work style has pros and cons. It’s up to each of us to decide which set of tradeoffs we’re willing to make. We also need to determine our own definition success.

    According to David, success:

    • should be measured by longevity, sustainability, and consistency
    • should NOT be measured by financial gain, hourly rate, or utilization
    • should produce a sense of satisfaction, belonging, and purpose

    He then introduced us to the freelancer:

    • wears many hats
    • notably independent
    • obsessed with efficiency
    • moves on quickly
    • pros: freedom of choice, what equipment and technologies to use, what to charge
    • cons: finding work, negotiating contracts, invoicing, scheduling

    Next, the nine-to-fiver:

    • values stability
    • appears dedicated
    • separates work from home life
    • pros: limited responsibility, division of labor, predictable cash flow, division between work and home
    • cons: illusion of job security, misplaced obligations (overtime), capped compensation, red tape, politics

    And finally the moonlighter:

    • distracted and tired due to alter-ego double life
    • may rely on chemical assistance or augmentation for performance
    • prone to repetitive burnout cycles or recuperative sabbaticals
    • pros: stability w/some freedom, attainable transition to freelancing, supplemental income
    • cons: extra responsibility and obligation, difficult to sustain over time, leaves little time for recreation

    Which one you are will largely be determined by your particular set of skills and whether you are comfortable with the pros and cons. That being said, it’s important that we not allow ourselves to get boxed into a job that we don’t like. Constant re-evaluation of our situation can be healthy.

    David closed with some suggestions on how to become a more marketable professional, regardless of which camp we’re in:

    • print and carry business cards
    • go places, meet people
    • make friends and be friendly
    • make connections and connect others
    • help people that need help
    • attend and speak at professional groups, social gatherings, and conferences
    • start communities and conversations (don’t wait for permission)

    Also, get plenty of sleep. Less than 8 hours is highly detrimental to learning and productivity. Contextual switching and mental fatigue are also productivity killers.

    David’s slide deck included some fantastic character art depicting each type of worker, courtesy of his artistic brother-in-law. I haven’t found his slides posted online yet, but if they show up I’ll add a link here. Update: slides posted here!

    Next Monday I’ll be sharing my recap of Merlin Mann’s presentation titled “Seven Lessons in Personal Marketing.” Until then…

    This post is one in a series from Indieconf 2012

  • Indieconf 2012: The Simple Logic of SEO

    I enjoy listening to Pepper talk. She’s a very practical and no-nonesense kind of person. Her session on SEO did not disappoint. She outlined a basic but surprisingly powerful approach to a task that is widely considered to be incredibly complex.

    There are 3 players in SEO: the people, the search engine, and the web site owners (us). Our responsibility is to offer people what they want on the pages they search. If we do this successfully, the search engines (okay, Google) will naturally rank us higher. Our goal should be to provide useful information to people, as opposed to simply trying to get millions of hits.

    There are several tools that can help us measure the success of our information sharing:

    The goal is to find out what people are looking for, and tweak our sites to offer this to them. Pepper explained that most people organize their sites in a similar way: home page, services page, blog, etc. Instead, she recommends “flipping the triangle” and creating keyword-rich landing pages that target the specific topics users are searching for.

    Also keep in mind that Google doesn’t scan keyword meta tags. Instead it relies on:

    • Title meta tag (should include keyword phrases)
    • Description meta tag (140 chars max)
    • Domain URL (to separate words use hyphens, not underscores)

    She recommends reading In the Plex by Steven Levy for a better understanding of how Google thinks.

    Tomorrow I’ll recap one of my favorite presentations at the conf, “The Anatomy of a Freelancer” by David Rogers.

    This post is one in a series from Indieconf 2012

  • Indieconf 2012: How to Form Good Habits and Break Bad Ones

    James Clear gave the first talk I attended on Saturday morning. It was all about good and bad habits and how we can form and break them. When it comes to habits we can’t rely on willpower alone. It generally fails us. Instead, James explained how we can use the 3 R’s, reminders, routines, and rewards, to shape our habits in a positive way.

    Keys to creating a good habit:

    • tie it to a current behavior
    • keep it as simple as possible
    • reverse the response (celebrate rather than suffer)

    Keys to breaking a bad habit:

    • understand what causes it (why did it start?)
    • understand why we do it (what is the reward?)
    • create a new routine that results in the same reward

    James then explained how tht 3 R’s of personal habits hold true for the business of freelancing as well:

    • “We think we decide our life, but it’s often designed for us.”
    • “We design customer behaviors whether we want to or not.”
    • “Customer decisions are guided by the information they are sent.”

    He recommended two books for further learning: “The Power of Habit” by Charles Duhigg and “Switch” by the Heath Bros. He also recommends stickK, an app that uses a rather unique approach to helping us set and meet our goals.

    Tomorrow I’ll share what I learned from Pepper Oldziey’s talk titled “The Simple Logic of SEO.”

    This post is one in a series from Indieconf 2012

  • Indieconf 2012 recap

    Indieconf 2012

    Indieconf 2012 happened this past Saturday at the McKimmon Center in Raleigh. I’ve attended every indieconf for the past 3 years and this was by far the best yet. Michael Kimsal does an incredible job of recruiting speakers and organizing a full day of thought provoking presentations. I really don’t know how he does it all. He must be superhuman or something.

    I didn’t regret attending any of the 7 talks I went to. That’s unusual. Even at some of the best conferences I’ve attended like RubyConf or BizConf, there were always at least a couple of talks that I didn’t find very useful. That wasn’t the situation at indieconf. Over the next few days I’ll be posting some useful takeaways from each talk so stay tuned.

    This post is one in a series from Indieconf 2012

  • App.net Roster goes live

    App.net is an exciting new alternative to Twitter. It’s perfect for those of us who would rather not be subjected to an endless stream of advertising. It feels like Twitter did years ago, except better because the nominal monthly fee keeps out the riffraff.

    The creators of App.net also place a special emphasis on fostering a thriving developer community. I think this is absolutely the right approach to take if their goal is to build a reliable and useful communication platform that doesn’t become annoyingly over-commercialized and frustratingly limited the way Twitter has.

    My own contribution to the ecosystem recently went live: App.net Roster lets you embed a slick, App.net-backed roster to your web page by simply copying and pasting a few lines of HTML. It’s a great way to let your web site visitors see what you and your friends are talking about on App.net.

    App.net Roster was forked from Twit Roster and is a 100% database-free Sinatra app hosted on Heroku. Check it out and let me know what you think.

  • Ruby Hoedown 2012 recap

    Ruby Hoedown 2012This year’s Ruby Hoedown was at the Scarritt Bennet Center in Nashville. Per his usual, Jeremy McAnally organized a top-notch, free, two day regional Ruby conference that was a pleasure to attend. A lot of work goes into organizing this type of thing. I doff my proverbial hat to Jeremy for making the Hoedown a reality for six years straight.

    I wasn’t able to attend the Hoedown last year so this was my first experience at Scarritt Bennett. The gothic architecture was quite beautiful and made for some lovely ad-hoc photos taken with my iPhone. The presentation room was comfortable enough and just the right size for the nearly 250 developers who attended. Power was in short supply the first day, but the problem was quickly rectified (EE pun) by the appearance of a plethora of extension cords and power strips. By the end of the day there was enough power for everyone who wanted it. Wi-fi remained stable throughout the conference.

    Brad Winfrey gave the first talk of the day, titled “gem install erlang” [slides]. I’m not a functional language guy, but Brad’s talk made me want to look at erlang again. What was most impressive to me was his demonstration of erlang’s built-in pattern matching. I can see how someone could get addicted to that kind of power.

    Next was Phil Harvey with “REST & Hypermedia” [slides]. If you’ve ever wanted to change an API without breaking things for your existing users, Phil’s talk gave a solution in hypermedia. He demonstrated various ways to link together resources using calls that return link relations. The server essentially builds URLs dynamically for the user. He also made the point that if you aren’t using hypermedia, you aren’t really using REST.

    GitHub was well represented at the conference. Brandon Keepers, one of their developers, presented on “Why Our Code Smells” [slides]. I always appreciate suggestions on how to make my code better and Brandon did not disappoint. The biggest idea I took away from his talk was to strive for clean separation between the ORM and business models. In other words, reduce coupling to the framework (e.g. ActiveRecord).

    Jeffrey Baird gave a talk titled “Growing Your Own Developers: Hiring Programmers with Little to No Experience” [slides]. I really appreciated this talk since a big catalyst to pursuing programming as a career was an 8-month apprenticeship at RoleModel Software during my sophomore year of college. Jeffrey made the point that computer science majors are not predicted to meet labor demands through 2016. One way companies can find the talent they need is to hire motivated, passionate beginners and give them the tools and training they need to grow into experts.

    To conclude day 1, Dave Worth presented “Static Analysis in Ruby Applications with Brakeman” [slides] which I unfortunately missed.

    Jeremy Holland kicked off day 2 with “Using System V Shared Memory in Ruby Projects” [slides], a highly technical but very enjoyable mini-tutorial on how to use and manage shared memory with C. The problem he was trying to solve was to quickly search a massive binary tree. Ruby has no concept of shared memory, requiring C to be brought into the equation. It was nice hearing about another tool on the programmer tool-belt that can be used to solve problems like this.

    Will Farrington introduced us to “The Setup” [slides] which is GitHub’s answer to the problem of managing an army of developer laptops. The Setup uses the CLI and Puppet and has been in development for 6 months. It enables a developer to script a configuration for his laptop (e.g. Apache, Ruby, RVM, a text editor, custom Bash aliases, etc) and have that configuration automatically installed on a new MacBook.

    “Adhearsion: Telephony Through Ruby-colored Lenses” [slides] by Ben Klang was another presentation I unfortunately had to miss. But I’m sure he knocked it out of the park, to borrow the colloquialism.

    Lance Ball presented “Sleep Better with TorqueBox” [slides], an introduction to the Java-based JBoss 7 application server. He quickly pointed out that you don’t need to know Java to use it, and that no instrumentation is required for Rails apps. In fact, the server supports any Rack-based application and provides scheduled jobs, robust background processing, long-running daemons, caching, messaging, web sockets, and clustering.

    Lightning talks have been an important part of the conference each year and 2012 was no exception. Talks were given by Will Farrington, Brandon Valentine, Ernie Miller, Cameron Dukes, Yossef Mendelssohn, Frank Rietta, Chad Taylor, Loren Norman, Edward Anderson, Winston Hearn, and Jeremy McAnally.

    Anthony Eden gave the keynote which wrapped up day 2 and the conference itself. His presentation was a nice mix of nerdy technical content (Lisp, Clojure, Erlang) along with some plain old motivational talk. He encouraged us to keep building things, to expand our toolbox by learning new programming languages, to share our experiences with others, and to never stop having fun.

    This has been my first Ruby conference in over a year. It was great to reconnect with the community, make some new friends, and learn about various software projects people are working on. I left Nashville feeling recharged and ready to put into practice what I had learned.

    You should consider attending the Hoedown in 2013. Maybe I’ll see you there.