Concurrency or How I Learned to Love the 'Stache


Concurrency or "How I learned to love the 'stache" from Chris Williams on Vimeo.

We are always looking for ways to improve our knowledge base as well as make new friends and help them see different lights (maybe not better lights, but different). A big part of this is reaching an increasingly larger group of people and trying to convey the morsels of information goodness we have found along the way. Our current push as you may know from chatting with us, is the exposure of Erlang and how the lessons within the language are valuable for all languages. We could (and sometimes do) wax poetically about the values of non-shared state and data and how concurrency will change the world, but we decided to present it to the people in a seminar style.

We devised a talk with the following sales pitch,

"An indepth technical discussion about concurrency and why it matters in modern web and general programming environments. With the upcoming Ruby 1.9 release and Rails 2.2/3.0 with thread safety, concurrency should be on the mind of every Ruby programmer. This talk will go into a discussion of what the different types of threads are, what precautions or advice you should carry with you as you write concurrent code, and why you should be looking into other fundamentally different languages (like erlang or scala) for long running, complex, and multi faceted requests. Topics will include Fuzed and why it represents an exciting shift in hosting options and a telnet chat client, which will be used as a backchannel during the demonstration. The goal is not to scary you, but to help you see the forest despite the concurrent trees."

We are presenting this talk at the local area user groups, NOVARUG and DCRUG, as well as the NOVA Languages group. Each time we do this presentation it grows, expands, and becomes more kick ass based on audience feedback. I unfortunately forgot to record NOVARUG's presentation, but will record the DCRUG one and post it to our blog when it is ready. Until then, we have provided our first cut of the presentation here for your viewing and listening pleasure (and as part of our world dominance plan for functional programming!!!). We want to try to evangelize the benefits of at least looking at different languages and understanding why they are different. If you are interested in having us present to you, your local user group, or your company, send us an email at .

The slides for this presentation are also available in their most current form for your entertainment!

Announcing the great erlang:out event

The Northern Virginia Languages Group will be holding as its culmination of the Erlang Language the Great erlang:out Event. It will be a 9AM-6PM Hackfest (maybe longer) of Erlang project development. The project has not yet been decided and we will be learning as much as we can between now and the event date (tentatively September 20th, 2008) in preparation of building the next killer app for Erlang, assuming CouchDB, Facebook chat, and ejabberd are the existing killer apps. Stay tuned to join us and we might be looking for beer/pizza/etc sponsorships. This event will by no means be centralized (like Erlang itself) we will be doing remote commits and changes - more details to come either on the NoVA Languages Group Google Group (link above) and the Iterative Designs blog, which you are reading right now.

You Made Two Hours Happy

We want to thank all of the people who attended the RubyNation Happy Hour. We had a great time and hope you did as well. With the tremendous support of Blue Box Group and Hotel Sierra, we were able to pull of a great couple of happy hours. Special thanks go out to Ken Henderson for all of his help and effort to arrange the day of festivities. We have made a rubynationhappyhour tag on flickr, so if you have more pictures of the event please post them with that tag! Thanks!

Why limit happy to just an hour?

As you may know we have a bit of the taste for great craft brews and a desire to support and if possible inspire communities of social tech. We previously announced that we are sponsoring the RubyNation conference in Herndon, VA, but we decided to go even a bit further. We are co-sponsoring with Blue Box Group the conference happy hour. The event will be the night of Friday, August 1, 2008 from 6pm - 8pm at Hotel Sierra in Dulles Virginia. We are opening the invitation up to anyone who would like to come, but please if you are planning on joining but not able to make it to the conference, can you send us an email to let us know. We would appreciate the heads up so we can make sure the hotel does not flip out. Looking forward to seeing you there!

Fringed Out

I just got back from RubyFringe and it was without question the greatest conference I have ever had the pleasure of attending. I am sure you have seen the postings through the Internet, so I will try to not repeat the wild applause for the event. This is how I have always hoped conference would be and were always seriously let down. The entire weekend was an incredible blast of energy, excitement, and meticulously crafted perfection. My hat is off to unspace and the fringe community - I am honored and proud to be a member. I learned a lot about merb and other technologies that I have seriously wanted to just dig into, but never could find the time. I met a lot of awesome people, with awesome stories, and very cool projects. I think I started like 5 applications at this conference, hopefully I will finish one of them -- some day.

If they do this again and I very much hope they do, I will definitely be getting the tickets the day its announced, its the only conference I have been too that I came back feeling refreshed despite very little (read in no) sleep. The Ruby community and programming world in general is a much, much better place thanks to RubyFringe.

Northern Virginia Languages Community

There are two things we are all about at Iterative Designs, passion and community. As you can probably guess being a web development company, passion for programming is a critical aspect of our business. We love learning new languages because they help us see our world differently and sometimes are even useful in their own right. We got the great idea to not be selfish with this passion any longer and decided to set up a Google Groups and host (hopefully) weekly meetings to go through a chapter of a programming language book with a group of like minded and passionate individuals. The group, named NoVA Languages (ok so we admittedly suck at naming Google Groups), is currently open to followers. Join up if you are interested in joining our group and learning some cool languages - there is no commitment, but you will have to have your own computer -- its only a minor requirement to the industry ;). We hope to see a lot of people at the meetings and we will be sponsoring the first couple meetings. If you aren't local to Reston, VA, don't worry - we are working on a way to let you be involved though distant.

QuickTicket Open Sourced

One of the things that we work very hard on is making sure that issues and ideas are recorded with as little effort as possible. While working with PatentMint, we determined that having alpha users log into our Lighthouse account had become a barrier to obtaining their ideas and issues. We needed an unobtrusive, but always available ticketing system that we could load for the application that would allow the users to quickly and easily provide their information. Thus the QuickTicket plugin was created so we could not only use it for this application, but for the other ones we have in the queue. Simultaneous to this, the ultra-hip GitHub was released, so naturally we were compelled to post it there. We have made the plugin as easy to install as we could, but left it such that you have to install the routes (one of those things that we felt over stepped our bounds).

In order to get it to work, make sure to check your environment.rb file and update the settings that have been added (Lighthouse account, token, project, and the enviornments that you want this plugin to show up in) . Recently we have made the plugin so that it could use either the default Rails provided Prototype/Scriptaculous combo or the recently hot JQuery libraries. We have made the style completely configurable as well.

Be sure to check the plugin out if you do any sort of UAT or alpha/beta testing (and who doesn't these days)

QuickTicket Link

DragDropExtra.js

We have been using the Prototype and Script.aculo.us javascript libraries for quite some time now with much success. That said, there was one area that with a client we were having a impassable problem. They wanted two columns, both of which have overflow set to "auto" so they both scroll independently. They wanted from there to have the items in one column draggable to the other, without modification to the actual column (leave the element, create a ghost). Seems simply complex right? We worked with the Script.aculo.us library in an attempt to accomplish this, but most solutions turned up bust. We eventually extended and enhanced the Draggables and Droppables code to accomplish the functionality. We named this extension DragDropExtra.js and it is a drop in enhancement (just include and you get the benefits of it). It has been verified as working with the newest script.aculo.us library (1.8.0). Usage is simple, you just set the parameter superghosting to true and it enables the creation of a new element at the body level and allocation for the dragging. This is in contrary to the standard version which replicates the element and attaches it to the original parent, making dragging out of a overflow: auto pretty much impossible (or at least unusable). Finally we enhanced the positioning code to ensure that the dropping will factor in when the overflow: auto has been set on the drop area and appropriate calculate where the item was dropped. If you find any bugs or issues, twitter me at http://www.twitter.com/voodootikigod with them.

We are publishing this code extension with the standard MIT license, from Iterative Designs with love.

UPDATE: The code has been posted to GitHub for hot forking action please help fix/grow/expand its reach and functionality: http://github.com/voodootikigod/dragdropextra/

Download DragDropExtra.js.

Copyright © 2007-2008 - All Rights Reserved