Since the start of COVID19, my home internet has gotten noticeably slow between the hours of 8p and midnight (JST, local). I suspect this is a widespread issue as more people are staying home and doing things that exercise both local and global internet connections. My ISP seems to do a decent job keeping things like video streaming prioritized, but work can be a big pain. Operations like apt…
About two months ago, I switched from the Elastic Cloud SRE team to one of the Kibana software teams at Elastic. This has had me using a lot fewer cloud instances and a lot more of my local laptop CPU. Elastic gave me a fairly new MacBook Pro (16-inch, 2019), with a 2.4 GHz 8-Core Intel Core i9 and a whopping 64 GB 2667 MHz DDR4. By all means this computer should be crazy fast. But when I ran yarn…
This morning, like many developers, I woke up to an email telling me that Docker Desktop would now require a subscription for me to use at work. While I’m sure my company could handle the expense, I wasn’t happy to about the likely overhead and wanted to explore my options. So I took a deep breath and hit the uninstall button. This part was easy. But how should we get docker functionality back?…
The Nagoya Startup Weekend this year was exhausting yet rewarding. To cap off the effort, I thought I’d write up a quick retro. Things that worked First, hats off to the organizers. Fantastic event, very well organized. If you’re organizing a similar event, I’d recommend paying similar attention the the details that ours did so well, namely: snacks, plenty of them music, easy to listen to and a…
The big one, Otto Otto is a tool that wraps up Vagrant, Packer, Terraform and Consul and provides clean layer of abstraction on top. This provides a seamless way to transition from your local environment, into a dev VM on VirtualBox, then on to an instance on AWS. The same Appfile is used on both environments then fed through either Vagrant locally or Packer & Terraform on AWS. In addition…
It’s an old question. And one that can vary quite a bit from domain to domain. But for Web Operations there are some definite patterns I’ve come across. Most of these come from the last two years I spent working as a Reliability Engineer at Netflix. Even though we had hundreds of discrete applications when something broke you often found yourself looking at similar sets of metrics. So without…
When I started at Netflix almost two years ago, one of the first things that occured to me was “We could really use a general helper command.” Other developers even agreed that it could be handy. I recalled Nick Quaranto’s handy sub repository but with Netflix being a Java shop, I wasn’t sure about introducing something that required a bash environment. A few months passed while I tinkered with…
If you’ve ever used Trello, Jira, or other kanban board tools you may be used to seeing a board that looks like this: Note: The ticket names have been changed to protect the innocent. Here we have a typical 3-column layout; To Do, Doing, and Done. Our three available “dimensions” represent the following: Vertical: Priority Horizontal: Status Color: Logical track of work The use of color may vary a…
I spent the last two years doing deployment automation work and helping startups build Rails applications at Mashion. It was great fun but rarely put me in the path of high-scale customer traffic. Getting close to that traffic was a big factor in my decision to move west and help run one of the largest installations on the internet. Since I joined Netflix last April there have been a number of…
So what happened last year? I taught Rails at UPenn I taught a full year of CIS196 at UPenn. Being an adjunct teacher was great and highly recommended to anyone interested. The skills I learned on presenting, course organization and mentoring keep coming in handy again and again. I took a full-time job at Netflix This was a tough move but consulting just wasn’t teaching me much about technology. I…
Here at Mashion, we pair program a lot. We’ve been iterating through a handful of pairing setups and have finally settled on what I’m happy to call a masterpiece. But first, a little bit about how we got there. We decided that having a dedicated pairing machine wasn’t practical, partly for price but also because we’d have to maintain another machine and the data on it. Instead, we opted to use our…
Trevor encouraged me to write a paragraph on sexism in computer science and how we can change it. I encourage you to do the same! Here’s mine: Angela Harms had a great quote on her recent appearance on the Ruby Rogues podcast. It’s been ringing in my head all month: Stay present, stay vulnerable. I think it applies in a lot of situations and sexism in the work place is one of them. The news I’ve…
At Mashion our usual pairing setup means we have one laptop that’s not doing much work. It’s handy to have for email, or breaking off to google something but it’s idle most of the time. When looking for a CI solution on a recent project, it made sense to me to use that second machine rather than spend money on a VPS. So I set out to make a simple local Jenkins server. Here’s what I came up with.…
Update 2015/01/14: This post is from 2011! If you’re looking for a minimal ubuntu running on VirtualBox I highly recommend you check out Vagrant . Once you have it installed you can get a minimal Ubuntu box running with two easy commands $ vagrant init ubuntu/trusty64 $ vagrant up The instructions below still might work, but have only been tested on 10.04 LTS which is quite old at this point. In…
So you might have seen the “one click” installer for CloudFoundry that my esteemed colleague Trotter Cashion posted yesterday. This is very cool. If you have an Ubuntu server handy you can run that script and you have a cloud. But I like to keep things local so I started working to get it installed on VirtualBox. And here’s the solution, packaged as a script. To use this script you’ll need: A Mac…
As the co-founder of Mashion and organizer of Philly.rb I get a lot of emails from people looking for Rails developers. To help spread the word and maybe do a little less typing, I decided it was time for a blog post. Before we get into it you should know that finding a good developer in any technology is difficult. Even in larger developer pools like Java or .Net, isolating the top talent is…
I just finished up an awesome week by speaking at RubyNation . Hats off to the organizers and the sponsors for throwing a great conference! During my twilio talk I mentioned how we had problems running Artifice during our @javascript Cucumber features. Here’s how that goes down. If you’re trying to use any sort of global Net::HTTP mocking tool during your Cucumber tests, you might encounter…
It’s easy to make your own Ruby gem. Even without a library to help you. If you have RubyGems installed you’re already good to go. First, make a directory for your project. In that directory make gemspec file named after the gem. For example, my_awesome_gem.gemspec . The gemspec file is just Ruby. Here’s a basic example: Gem :: Specification . new do | s | s . name = 'my_awesome_gem' s . version =…
Normally I’m not one to repost, but I was cleaning my office and came across an old handout from Click Equations and wanted to share it. It’s a good summation of most of what I know about SEO so maybe some others can learn from it too. Hopefully no-one from Click Equations minds, but I’ll be happy make modifications if they do. DO Consider the needs of search engines when setting up Web sites and…
So I’ve been playing around with Pure Data a lot lately. I’m finally getting to a point where I think I “get” it. But one thing Pure Data doesn’t seem to do very well is sequencing, or building melodies and patterns to play back. Unable to find an open MIDI sequencer for OS X, I turned to Ruby… Full. Double. Rainbow. First, a little background incase you haven’t played with Pure Data. Pure Data is…
So usually Trev does notes, but he was presenting, so I tried to take some instead. Here they are, essentially unabridged so excuse any typos. Feel free to comment if you have errata or questions. If you need a little context or want to rate the talk, check out the [SpeakerRate page](http://spkr8.com/e/626 “philly.rb 10/12/2010 SpeakerRate”). Why VCR? Mocks are hard :) So Trev wrote a big ruby lib…
If you’ve been reading my blog at all you’ve probably noticed that I am not a lawyer. Sadly when starting your own business , there are legal documents involved. Now I don’t know about you, but doing find and replace on my agreements for every new client sounded tedious and not fun. So I’m working on a way to make it more programmer-ish. Basically I’m taking the Jekyll approach to legal…
So it’s been awhile since I’ve posted, and no I haven’t decided to take up cooking . Although I do use chef a lot at work. I’ve been spending a lot of time lately working on the Redcar Text Editor . It’s become my favorite way to spend my personal hacking time. My most recent contribution has been some work on “Runnables” which is the Redcar plugin that lets you run commands from inside the…
Most people are in agreement now that testing is a good thing. But most any JavaScript developer out there will tell you that testing browser-dependent code (jQuery, Raphael, etc.) can be a pain. You usually have to concede to running your tests in the browser, or spend lots time of pounding out env.js bugs to get something headless running. But here at Hoopla, Trotter and I have found a very…
So I’ve been working with working with Rails 3 and bundler full time for a month and a half now and it’s going swimmingly. Here are some things that bundler does that I think are awesome. Gems from git repositories We use custom forks of arel and savon in our project. Before bundler, managing this would have been a mix of submodules/braid/piston and custom gem files that could easily become a…
This month I started a new gig which landed me with a new MacBook so I thought it seemed like a good time to try out the Homebrew package manager. It’s almost a month later and I am loving it. The beer-related jargon doesn’t hurt either. Have you ever gotten annoyed at the time it takes for a package to get updated on MacPorts or Fink? Or tried to install a MacPorts package only to have it…
I’ve been having so much fun with Inkscape lately that I thought I should share. I basically got started with it when my wife and I ended up with no other option for our Christmas cards but to decorate our photos ourselves. Apparently most photo places don’t do Christmas templates in a 4x6 format. So I downloaded Inkscape, bought a set of Christmas-styled stencils from iStockPhoto.com and we went…
As an update to my previous post , one of my coworkers found that this technique was also applicable to migration between Subversion servers and that using git as intermediary was actually a bit more graceful than the traditional svnadmin dump/load approach. Git wins once again! The one thing he noted is that this ends up with occasional 0-length patch files, I’m guessing from commits that only…
So my new favorite hack of the week was created while trying to find a good way to import code from our partner’s Perforce repository to our Subversion repository. I wanted to do this while retaining history but the p4svn script that I found depended on the deprecated Perforce Perl API which made me nervous about trying to get it working. So instead I decided to use Git as an intermediary. My…
A little belated, but not too long ago I went to Barcamp Philly 2009 with my wife and son. It was a great experience not only to be a part of the blossoming Philly tech scene, but also having my family there encouraged me to branch out a little and head to some really enjoyable talks that I probably wouldn’t have otherwise. Shortly after the event, Kaori posted a writeup in her Mixi blog . I…
So I just ported my blog from WordPress to Jekyll . Why? Because once again while posting my latest maven trick I got frustrated trying to post code in my blog and also get the formatting to work the way I wanted it. I think I just prefer WYSIWYM to WYSIWYG . But that’s just me. The transition wasn’t bad, but was more manual than I had hoped, mostly because of all the garbage formatting in my…
Ever been frustrated trying to extend maven ? Yeah me too. So here’s a trick I finally pounded out a couple weeks ago that I thought I’d share here. It’s pretty common place to use the maven antrun plugin to perform some extra build work that you couldn’t otherwise do without writing a full-blown maven plugin. You might even already use it to call scripts that move files around, compress CSS, or…
(Reposted from http://github.com/matschaffer/trimpath-templateRegistry ) Ever wanted to render HTML templates from javascript? Yeah, so did we. And so do a lot of people apparently. There are a lot of toolkits around for this. We at CIM were evaluating some of them and had the realization that since we’re already processing JavaScript (compression) and CSS (from LESS and compression) at build…
JavaScript testing has been a hot topic at CIM lately. Enough that I’ve managed to form some opinions on the matter that Arpit thought I should share with the world. So here’s a rundown of all the javascript testing tools I’ve looked at and my opinions on them. Screw Unit : More than just a funny name, this is so far the most enjoyable javascript testing tool I’ve used yet. BDD looks great in…
So last night I tried to install ImageMagick on Leopard but couldn’t find the requisite blog article that detailed the installation. So I thought I’d write one. I managed to dig up some forum posts , so here’s the whole deal. ImageMagick itself compiles fairly easily on OS X , but it’ll end up missing JPEG support, which was kind of a bummer. Here’s how to fix it without using MacPorts (which I…
A lot of people reading this are probably using frameworks that have decent session storage and don’t often need to worry about cookies. But over at CIM the thought of session state for many tens of millions of requests per day is daunting. As a result we use a lot of cookies. Probably too many, but that’s a story for another day. Ever read the RFC for cookies ? Neither had I. I probably wouldn’t…
UPDATE: New version 1.1! Download it here . UPDATE 2: Github now has issue tracking! So I’m dropping uservoice. If you have ideas, submit them here . So over the past month I’ve been working with Dashcode trying to come up with a nice representation of Septa train data. I’ve managed to come up with a simple widget that combines the data from iSepta with the ontime/late data available from Septa’s…
I saw a beautiful thing this evening in the ZenTest 4.0.0 release notes (emphasis mine): 2 minor enhancements: Deleted autotest/screen - releasing as a separate gem soon. Deleted test-rails and rails test audit. Removing unnecessary code has always given me a warm fuzzy feeling. In today’s world of backups , version control and dependency management we need to learn to be ruthless with the delete…
I’ve been doing a fair bit of JavaScript at work lately and while I really enjoy the language there’s something that’s been nagging at me which I’ve come to call The Creep of Asynchronicity . I’ll use some of the examples I’ve been working with to illustrate the idea. Let’s start with a function to get all the videos on a device that looks like this: videos = device . getVideos (); doSomethingWith…
During our last sprint at work I got a good chance to get Groovy working for our unit tests. It took a bit of googling and trial and error, so hopefully this post will benefit others trying to do the same thing. Here’s what I did: Set up your pom with the following dependency: <dependency> <groupId> org.codehaus.groovy </groupId> <artifactId> groovy-all </artifactId> <version> 1.6-beta-2…
Rather than continue my review/rant about GTAC2008, I think I’ll let you just decide for yourself since the videos are now available. Many of them are less-than-interesting, but the following are probably worth a look. Boosting Your Testing Productivity with Groovy – Andres Almiray I’ve been doing a lot of this stuff with Groovy lately, more detail to follow. Video:…
I felt a blog post was in order to commemorate a totally epic 2 year anniversary for PhillyOnRails PubNite . We had quite the turnout last night, definitely upwards of 20 people! Colin took some photos, so I’ll lean on him to get them up on his flickr account soon. A big thank you to everyone that came out and I’m really looking forward to next month!
Thanks to a strong collaborative effort between myself and one of the members of our front end team . I’m pleased to announce my new cross-platform strategy for glyph management. It’s capable of operating under a variety of modes including that of a 6, 9 or lower-case ‘e’. This new initiative will be the focus of my coming year. (How’s that, Karl ?)
Advances in Automated Software Technologies, Elfriede Dustin and Marcus Borch This started with focus on applying hardware testing techniques to software testing. Namely with regards to reusable components (citing koders.com and krugle.com ). The components in question seemed to largely be toolkits that they use in testing including STAX /STAF Fire eye – for test data generation VNC Robot – for…
I traveled to Seattle last week for this year’s Google Testing and Automation Conference . I tried to take some notes for the benefit of my own memory and others, so I’ll be posting notes and reactions to my blog over the next few days starting with this post. As for a quick overview of this year’s conference, here it is: the attendees were great, but many of the presentations were really weak.…
Some of you may remember my tumblr post about using a directory of configuration files in place of the standard single .profile script for setting up a Unix environment. I’ve since refined the idea even more and started working on generalizing it for use across multiple operating systems. And to make it even more fun I’ve started publishing it to github. I have a number of tricks in there like…
So last night I did a little more work on Corundum (still not totally satisfied with the name). I managed to get most of the pom stuff and JRuby dependency packaged. Now any project that uses it just needs this simple pom file and this assembly file . The assembly file is still a thorn in my side and hopefully I can figure out how to get it out of there. I’m planning to look at the flex-mojos…
So in following with my last JRuby post , this weekend I came up with the next piece to the puzzle; how to use maven to build a self-contained jar file that runs ruby scripts. It’s still pretty raw and lacking an interesting name, but I threw my test code up on github for now to assist in its evolution. If you’re interested in trying it out do the following: git clone…
I got this from hohle , but the formatting on Jon’s post is less-than-ideal. So here it is, reposted for easy copy/paste: Download his applescript here . And here’s the plist: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version= "1.0" > <dict> <key> Disabled </key> <false/> <key> Label </key>…
At work I’ve recently been tasked with figuring out how to backup and rename databases in the Berkeley DB store that’s in one of our middleware components. So I thought I’d try it out in JRuby . Getting the basics was surprisingly easy: module J require 'java' require 'je-3.2.44.jar' import 'com.sleepycat.je.Environment' import 'com.sleepycat.je.EnvironmentConfig' end conf = J :: EnvironmentConfig…