I Annotate 2014 Conference: Day 1
I’m here in San Francisco for the second annual I Annotate conference. Today I’m presenting my work on the H2O project, but in this post I’ll share a couple of focus points for the conference thus far, described below.
What do we mean by Annotations?
Annotation work is off the path of End Point’s ecommerce focus, and annotations means different things for different users, so to give a bit of context: To me, an annotation is markup tied to single target content (image, text, video). There are other interpretations of annotations, such as highlighted text with no markup (ie flagging some target content), and cases where annotations are tied to multiple pieces of target contents.
Annotations in General
One of the focuses of yesterday’s talks was the topic of how to allow for the powerful concept of annotations to succeed on the web. Ivan Herman of the W3C touched on why the web has succeeded, and what we can learn from that success to help the idea of annotations. The web has been a great idea, interoperable, decentralized, and open source and we hope that those concepts can translate to web annotations to help them be successful. Another interesting topic Tom Lehman of RapGenius …
conference javascript
2014 Mountain West Ruby Conference Day 2
This past Friday concluded my second Mountain West Ruby Conference right here in my backyard of Salt Lake City, Utah. Just like the 2013 MWRC, this year’s conference was great. It was also nice to meet up with fellow remote co-worker Mike Farmer for both days. Here are a few of my personal favorites from day 2 of the conference, which I almost missed when I had the audacity to show up without a Macbook Air/Pro. (Kidding!)
Randy Coulman — Affordances in Programming Languages
Affordances (“A quality of an object or environment that allows someone to perform an action”) are all around us. Randy opened with some examples of poor affordances such as a crosswalk button with two enticing-looking widgets that requires arrows drawn on the box to point to the one that actually is a button. Then, a counter-example showing the “walking” or “standing” footprints painted on an escalator and how they instantly and intuitively communicate how to best use the escalator.
Randy followed with a few examples of affordances in software. One of them was a simple Ruby implementation of an affordance called Deterministic Destructors. It was a method that acquired a resource, yielded to a block argument, …
functional-programming javascript conference ruby rails
Puppet, Salt, and DevOps (a review of the MountainWest DevOps conference)
Last week I attended the MountainWest DevOps conference held in Salt Lake City, Utah. This was a one day conference with a good set of presenters and lightning talks. There were several interesting topics presented, but I’ll only review a few I wanted to highlight.
I Serve No Master!
Aaron Gibson of Adaptive Computing discussed a very common problem with Puppet (and other configuration management systems): they work well in the scenario they were designed for but what about when the situation isn’t typical? Aaron had a situation where developers and QA engineers could instantiate systems themselves via OpenStack, however the process for installing their company’s software stack on those VMs was inconsistent, mostly manual, and took many hours. One of the pain points he shared, which I related to, was dealing with registering a puppet node with a puppet master—the sometimes painful back and forth of certificate issuing and signing.
His solution was to remove the puppet master completely from the process. Instead he created a bash wrapper script to execute a workflow around what was needed, still using puppet manifests on each system but run locally. This wrapper tool, called …
automation cloud conference devops puppet salt
ZNC: An IRC Bouncer
Kickin’ it Old Skool
At End Point, we use IRC extensively for group chat and messaging. Prior to starting here I had been an occasional IRC user—asking questions about various open source projects on Freenode and helping others as well. When I began to use IRC daily, I ran into a few things that bugged me and thought I would write about what I have done to mitigate those. While it might not be as fancy as Campfire, HipChat or Slack I’m happy with my setup now.
What did I miss?
The first thing that annoyed me about IRC was the lack of persistence. If I wasn’t logged on to the server, I missed out on the action. This was exacerbated by the fact that I live in the Pacific Time zone and lots of discussion takes place before my work day begins. Some people on our team solve this issue by running a terminal-based IRC client (like irssi or WeeChat inside a tmux or GNU Screen session on a remote server. This approach works well until the server needs to be rebooted (e.g. for OS or kernel updates etc.). It also introduces the limitation of using a terminal-based client which isn’t for everyone.
Test Driving IRC Clients
The next challenge was finding a good IRC client. In my attempt to …
tips tools
GIS Visualizations on the Liquid Galaxy
The Liquid Galaxy presents an incredible opportunity to view Google Earth and Google Street View, but did you know that the platform is also amaza-crazy good at visualizing GIS data?
Geographic Information Systems are concerned with collecting, storing, and manipulating data sets that include geographic coordinates, and with displaying this raw and analyzed data on maps. In the 2D world this usually involves colored pencils or highlighted polygons. As computing power advances many GIS consultancies have extended the GIS visualization methods to see complex 3D visualizations on digital maps. The Liquid Galaxy takes this concept forward another step: see your data across an immense landscape of pixels in a geometrically-adjusted immersive world.
The Liquid Galaxy has separate instances of Google Earth running on each screen. In a standard Liquid Galaxy this means that each 1080x1920 screen is getting a full resolution image. It also means that the viewing angle for each screen matches the physical angle of that screen. Together, those elements can show geographical information at an incredible scale and resolution.
End Point has developed skills and methods to take GIS data sets …
visualization gis visionport
Mountain West Ruby Conference, Day 1
![]() |
MWRC Notes |
It’s that magical time of year that I always look forward to, March. Why March? Because that’s when Mike Moore organizes and puts on the famed Mountain West Ruby Conference in Salt Lake City, Utah. This conference is always a personal pleasure for me due to the number of incredible people I get to meet and associate with there. This year was no exception in that regard. It was simply fantastic to meet up with old friends and catch up on all their latest and greatest projects and ideas.
In writing a summary of day 1 here, I’d like to focus on just three talks that you will definitely want to go watch over on confreaks as soon as they are up. All the talks were great, but these three were exceptional and you won’t want to miss them.
A Magical Gathering
The opening keynote started off with a bang of entertainment and just plain geeking out with Aaron Patterson. Aaron holds the peculiar position of being on both Ruby core and Rails core teams. Aaron’s code is probably used by more people than just about anyone in the Ruby community. Everyone that knows and loves Ruby and Ruby on Rails is indebted to this genius and generous coder. But Aaron is more than just a coder. …
conference ruby rails
Proxy Nginx ports using a regular expression
I’m working on a big Rails project for Phenoms Fantasy Sports that uses the ActiveMerchant gem to handle Dwolla payments. One of the developers, Patrick, ran into an issue where his code wasn’t receiving the expected postback from the Dwolla gateway. His code looked right, the Dwolla account UI showed the sandbox transactions, but we never saw any evidence of the postback hitting our development server.
Patrick’s theory was that Dwolla was stripping the port number off the postback URL he was sending with the request. We tested that theory by using the RequestBin.com service for the postback URL, and it showed Dwolla making the postback successfully. Next, we needed to verify that Dwolla could hit our development server on port 80.
I started Nginx on port 80 of our dev server and Patrick fired his Dwolla transaction test again. The expected POST requests hit the Nginx logfile. Suspicions confirmed. It looked like we would just have to work around the Dwolla weirdness by proxying port 80 to the port that Patrick’s development instance was running on. Then we’d need a way to make that work for the other developers’ instances on the dev. server, as well.
Proxying a single port to …
camps nginx rails
Significant Whitespace in an Interchange UserTag
Here’s a quick issue I ran into with an Interchange UserTag definition; I’d made some changes to a custom UserTag, but upon restarting the Interchange daemon, I ended up with a message like the following:
UserTag 'foo_user_tag' code is not a subroutine reference
This was odd, as I’d verified via perl -cw that the code in the UserTag itself was valid. After hunting through the changes, I noticed that the UserTag definition file was itself in DOS line-ending mode, but the changes I’d made were in normal Unix line-ending mode. This was apparently sufficient reason to confuse the UserTag parser.
Sure enough, changing all line endings in the file to match resulted in the successful use of the UserTag. For what it’s worth, it did not matter whether the line endings in the file were Unix or DOS, so long as it was consistent within the file itself.
interchange