Grafana UPS Dashboard

I couldn’t find any decent Grafana-based dashboards for monitoring APC UPS’s. So I wrote my own. Below is a quick guide to what it took to get my UPS’s power/battery statistics into a decent-looking dashboard.

Load balanced Kubernetes Ingress. So metal.

Kubernetes has some incredible features, one of them being Ingress. Ingress can be described as a way to give external access to a Kubernetes-run service, typically over HTTP(S). This is useful when you run webapps (Grafana, Binder) in your Kubernetes cluster that need to be accessed by users across your network.

Typically, Ingress integrates with automation provided by public cloud providers like GCP/GKE, AWS, Azure, Digital Ocean, etc where the external IP and routing is done for you. I’ve found bare-metal Ingress configuration examples on the web to be hand-wavy at best. So what happens when there are so many standards, but not sure which one to pick? You make your own. Below is how I configured my bare-metal Ingress on my CoreOS-based Kubernetes cluster to access Grafana.

Kubernetes, CoreOS, and many lines of Python later.

Several months after my last post, and lots of code hacking, I can rebuild CoreOS-based bare-metal Kubernetes cluster in roughly 20 minutes. It only took  ~1300 lines of Python following Kelsey Hightower8217;s Kubernetes the Hard Way instructions.

Why? The challenge.

But really, why? I like to hack on code at home, and spinning up a new VM for another Django or Golang app was pretty heavyweight, when all I needed was an easy way to push it out via container. And with various open source projects out on the web providing easy ways to run their code, running my own Kubernetes cluster seemed like a no-brainer.

Large refactors require large changes in code.

It had been several months since I was away from my machines at home, and in that time, CoreOS changed their bare-metal installation procedures quite a bit. To the point where it almost seemed like an after-thought that folks would run CoreOS anywhere outside of GCE/AWS/Azure. Being that I don’t want to spend my money on cloud-based infrastructure when I’ve got a perfectly adequate 8-core machine at home with 32GB of ram and a few TB of storage, I knew I needed to update my virthelper scripts to get with the program.

No more powerline networking in this house.

I finally got around to wiring Cat6 to my desktop machines at home, and ripped out those powerline network adapters. I ran a test if iperf between my desktop and my router before and after the upgrade to see how things fared. iperf results before: desktop1:~$ iperf -f m -V -t 30 -c ———————————————————— Client connecting to, TCP port 5001 TCP window size: 0.08 MByte (default) ———————————————————— [ 3] local 10.

What I read today:

I’d like to (try to) keep a running tab of all the technical, and non-technical, bits of information I pick up day to day. I’m hoping it might provide some insight into what I’m interested at the time, or little tidbits of helpful information I find laying around the web. Pain(less) NGINX Ingress Once I get my Kubernetes cluster back up at home, I want to create separate environments for promotions.

Kubernetes, the slow way.

It all started when I began hearing about this container thing outside of work. I’ve been a Google SRE going on 6 years, but knowing that the way we do containers internally on Borg is probably not how the rest of the world does reliable, scalable, infrastructure. I was curious, how hard could it be to spin up a few containers and play around like I do at work?

Little did I know, it would take two months, a few hours a few nights a week, to get the point where I was able to access a web service inside my home grown Kubernetes cluster. Below are the high level steps, scripts, and notes I kept during the process.

A simplified way to securely move all the bits.

A while back, I wrote a post about setting up an L2TP/IPSec VPN on my home firewall/router. It required two daemons and a bunch of configuration that had hard coded IP addresses. While this solution used firmly-established practices (L2TP/IPSec), it felt too brittle. What happens when my dynamic IP address changes? Now I need to update config files, restart daemons, etc. There had to be a better way.

Enter IKEv2. IKEv2 is a successor implementation to Internet Security Association and Key Management Protocol (ISAKMP)/Oakley, IKE version 1.

LACP, VLANs, always stay connected.

I was bored last weekend, so I configured a two-port LACP bonded trunk from my FreeBSD-running NAS connected to my HP Procurve switch. Why? I could? I had all these spare Ethernet ports on my NAS, and they seemed bored. More seriously: high availability. One interface serving all my storage traffic just seemed ripe for failure. Imagine serving all your VMs over NFS to a VM server across the network over one NIC, and that one dies.

Get off my lawn, DMZ edition.

I recently changed Internet providers from Comcast Business to Verizon Fios connection. As part of the Fios package, are TV Set Top Boxes (STB) which use coax for Video, and Internet via MOCA for the guide data. It made me curious, what kind of traffic were these things sending on the network? What would they be trying to access? And how hard would it be to DMZ these things off from the rest of my wired/wifi network given I have no idea what they are up to. Behold, a DMZ configuration


  • Cable boxes need to get out to the Internet.
  • Cable boxes should not be able to touch anything else network-wise inside my house but what’s inside the DMZ
  • My wifi/wired networks should be able to initiate connections to the DMZ devices. For science of course (but more for seeing what they are doing).

I wrote my own network latency monitoring agent in Go

For a while I had used Smokeping to generate pretty graphs of network latency between various hosts on my network. The downside with Smokeping was always getting it working. Did I configure my webserver just right? Did I remember to save the webserver configs so that the next time I set this up, things just worked? Did I install all the right Perl modules (and the right versions of each) so that Smokeping’s binary worked?

A brand new blog for 2016

A new year gave me an itch to scratch. For years I had been running a pretty standard setup when it came to blogging. Linode Apache WordPress MySQL It was as vanilla a setup as one can get, running on a $10/month Linode instance out of their datacenter in Atlanta. I never used the VM much other than for keeping what was an almost-completely static blog. I never had any issues with it.

From 0 to an OpenBSD install, with no hands and a custom disk layout

No one likes to do repetitive OS installs. You know the kind, where you are just clicking through a bunch of prompts for username, password, and partitioning scheme as fast as you can to quickly get to the point where you can get some work done. This scenario happens to me every time OpenBSD releases a new errata. As my OS of choice for firewalls/routers, I use a fresh OS install as the baseline for building a -stable branch of install set files.

All the bits, from anywhere.

Problem Statement: While OpenVPN has served me well over the past few years both for site-to-site and road-warrior style VPN connections, it always bugged me that I had to hack a config file, juggle certificates, and use a custom client that isn’t part of the base OS to bring up the links. My Android phone has a built-in L2TP/IPSec VPN client. My Macbook Pro OS X 10.9 laptop has both an IPSec and L2TP VPN client GUI wrapped around racoon.

Family Tech Support: Vacation Edition

This was an epic visit home, tech-wise. Just so I don’t forget, and can hold it over my folks’ head for a while: Upgraded two five-year-old Linksys E2000 AP’s to Netgear r6250’s. Those old ones were just not reaching the entire length of the house anymore. Upgraded the firewall/router from OpenBSD 5.5-stable to OpenBSD 5.6-stable. It just so happens I’m home every six months to stay relatively close to the most-recent errata.

Third time’s a charm? Gitolite, Git, Nagios, and a bunch of hooks

I was hoping with my past posts on this topic, I would have enough examples to just copy-and-paste along to configure my Gitolite+Nagios monitoring setup. Not so true. It looked like there were semi-colon’s missing in my past examples. After looking at the huge number of changes in Gitolite, I had to re-do everything. Not to mention I always wanted a better way to manage the hooks as opposed to editing them directly on the host.

Unattended Ubuntu installs, part 2

In my initial post about unattended Ubuntu installs, I made the less-automated choice of hacking at the Ubuntu installation ISO and baking my preseed configuration right into the ISO. This proved to be incredibly inefficient and prevented a lot of the customization and quick-spin-up potential of what I interested in. In other words, if I wanted to spin up five identical VMs differing only by their hostname, was I really expected to bake five custom ISO’s whose preseed file only differed by their specification of the hostname?

Look ma’, no hands with Ubuntu installs.

In my day job, it’s all about automation. Automate what is repeatable, and move on to more interesting and not-yet-automated tasks. For a while, I’ve run a KVM/libvirt setup at home, running various iterations and distributions of Linux, OpenBSD and FreeBSD for various pet projects. Going through each distribution’s install procedure was getting old, requiring me to input the same parameters, set up the same users and passwords, over and over again.

i3wm, i3bar, and rhythmbox

I was interested in customizing my i3wm setup a bit more, and wanted to display the current song playing in Rhythmbox while running the i3wm window manager. It turned out to be just a few lines of configuration to my i3bar config. First, I grabbed a copy of the Python wrapper around i3bar, This wrapper merely takes the output of a command, wraps it in compliant JSON, and returns in a way that i3bar uses it generate its output.

FreeBSD on the desk, another try

After several years of mindlessly running Ubuntu on the desktop, I am attempting to dive (back) into running FreeBSD on the desktop. Considering that the majority of applications I use on the desktop are a browser (Firefox/Chrome), an ssh terminal, and Rhythmbox, how hard could this be? Some of the hurdles Given I still wanted to keep Ubuntu around and not redefine my default setup, I kept Grub2 as my bootloader on the MBR.

Wireless, now with more 802.11’s…

With nothing else to do around here tonight while the whole state is shut down thanks to a blizzard, I should catch up on some blog posts. On my list of home network upgrades for the past several months was the wireless. As my wife and I add to our collection of smart phones, laptops, tablets, and wireless streaming devices (I am looking at you EOL Logitech Revue with Google TV) the amount of latency and available bandwidth started to show signs of strain.

California 2012, thricely.

Condensed version of trip #3 to California. San Diego Sushi Ota: Sake and sushi with Mozilla folks. For the quality of the sushi (incredible), the price (reasonable) blew me away. Tajima: Ramen! The spicy miso ramen here lives up to its name, be prepared. Fish Market Cucina Urbana: Serious Italian, and a wine list to match. Funky interior too. Davanti Enoteca: Good tripe dish San Francisco State Bird Provisions: Dim sum delivery, California style.

Nagios and Git hooks, a redux

A while back I blogged about how I hooked up Nagios and Git to run the Nagios preflight checks before restarting with a new checkin’s worth of configs. But the more I looked at how it all fit together, the more I knew it could be improved. A sed hack, expecting a certain pattern in the nagios.cfg? Bad bad bad. Most of the improvement revolves around Nagios’s ability to reference relative paths for its config files.

Remind Me: Damage done in San Francisco in six days

I am lucky enough to have a sister living out in San Francisco, and to be able to work out of our offices there. Below is a hit list of the places I ate at and visited in the span of six days. My stomach has finally recovered. Wineries (Sonoma County): Preston Vineyards: Unti Vineyards: Bella Vineyards and Wine Caves: Truett Hurst Vineyards: Dry Creek General Store: http://drycreekgeneralstore1881.

The Internet is slow. Is the Internet down?

We have all heard the same questions at one point in our careers, “Is the Internet down?” or “Getting to X site is slow.” You scramble to a browser to see if Google, ESPN or the NY Times websites are up. Then you fire up traceroute. In some cases, the pages might load slowly, in other cases not at all. These two situations are often downstream fallout of two connectivity issues: latency and packet loss.

A home network overengineered: dhcpd, tsig keys, ddns

I started to write this post, explaining how I upgraded my home network setup with a dhcpd server, multiple dns servers communicating securely via tsig keys along with dynamic dns, but the post became unwieldy and would have been thousands of words. Instead, I’ll post some links and gotcha’s and hints on how to make it work a lot easier. Links scoured and re-read in the process: Securing zone tranfers with TSIG Bind Security: Transaction Signatures (TSIG) Configuration Security Zone Transfers With Bind 9 Hints:

Remind Me: Initial Data in a Django class-based Form

I love Django‘s class-based way of handling forms. You name the class, articulate each field (data point of your form), and attach it to a view. Voila. But what happens when you want some initial data in the form? Initial to the rescue! What your class might look like: class PersonForm(forms.Form): first_name = forms.CharField(max_length=100) last_name = forms.CharField(max_length=100) gender = forms.CharField(max_length=1) hair_color = forms.CharField(max_length=256) If you now wanted to initialize your form for males with blonde hair, include this snippet in your view:

Boston Barcamp 6, Day Two

Finally got this post out after having a bit of a busy week. Location based networking, anurag wakhlu (coloci inc) * location based apps: where are you now? or where will you be? * where are you now: foursquare, gowalla, loopt, etc * where will you be: coloci, fyesa, tripit, plancast * interest based networking: the reason to talk to someone who is near you. tie an interest: sending someone a coupon when they are near starbucks.

Barcamp Boston 6, Day One

Having never been to a Barcamp before, I knew the overall structure of the conference, but was curious if I would actually like it. Truth be told, I found it full of content, without a lot of fluff, even for the talks I sat in on where I had no prior knowledge. My notes follow, thanks to the great OSX app Notational Velocity hooked up to Simplenote. My overall thoughts in italic after each post.

New toy, Nikon style.

It had only been ‘recently’ that I had purchased myself a micro four-thirds digital camera for my honeymoon. It took pretty good pictures, and I loved its compactness when roaming around Portugal for 10 days. But I had always wanted a bit more control over the photos I took; whether it was exposure modification, lense type, or overall flexiblity for shooting in different situations (low light at night). ‘Lo and behold, Nikon announced the D7000.

Remind Me: Adding SNMP mibs for querying

I was having issues trying to get Nagios to more easily query my APC UPS with the APC-provided MIB. It took me a while to figure out the right bits both on the file system and in my query to have the MIB ‘processed.’ I still don’t know how to add that MIB to the “automatically process me too if snmpwalk is run” piece of the puzzle. But for what I have running a home, some notes for myself and others who ripped out enough hair already.

You go here, you go there. Bending DHCP to your will.

TL;DR: How to hand out DNS servers in different orders to different clients based upon MAC address. Background: I was connected into my office’s VPN a few months ago and was noticed some very slow DNS resolution of host names back at the office. I would attempt to ssh into another host, and the connection would sit there for more than a few seconds before finally proceeding. This didn’t happen for just ssh, but also for making http requests.

Remind me: Configuring BIND9 plugin for Munin on FreeBSD (and Linux)

I was attempting to get Munin working on a new FreeBSD machine, monitoring the rate of queries to a Bind9 DNS server. Every time I attempted ‘munin-run bind9’ I was presented with the same error: 2011/01/29-18:09:55 [3581] Error output from bind9: 2011/01/29-18:09:55 [3581] Died at /usr/local/etc/munin/plugins/bind9 line 41. 2011/01/29-18:09:55 [3581] Service 'bind9' exited with status 2/0. Digging around in the Bind9 Munin plugin, line 41 complains about a state file that Munin uses.

Munin monitoring your SB6120 Comcast Cable Modem

For those who have spent time debugging their Comcast Internet connection, we all know the frustration of trying to explain to Comcast that something on their end is the problem. In this case, more data is better: latency history, ping times, traceroutes, etc. You can run Smokeping to monitor latency between your home connection and a remote Internet IP address for example. You can also print out traceroute examples and email them if you have an astute support contact.

I Am Lazy: Python, to convert a file’s age in seconds since epoch to a readable format

For my own lazyness, so I don’t need to hunt for this damn chain of syntax. >>> time.strftime("%Y%m%d-%H%M.%S", time.gmtime(os.path.getctime("$path_to_file"))) '20101213-1948.58' >>>> time.strftime("%Y%m%d-%H%M.%S", time.gmtime(os.path.getctime("$path_to_file"))) '20101213-1948.58'

Howto: Git, hooks, Nagios, oh my.

At work we have a monitoring configuration workflow where our Nagios config files are parsed and generated before they are allowed to be ‘svn commit’ed. I know this verification has saved me many times when trying to add new hosts or services, since everything might not be ready for prime time. I wanted to see if I could recreate this scenario at home using Git hooks, if only for my own interest and curiosity.

Network printing at home, over-engineered.

Compared to most other home networks, mine is a bit more complicated. I admit networking has always been an interest of mine, so I run my own OpenBSD firewall/router/vpn-endpoint, which itself runs the ISC Dhcpd v3 and BIND. With these together, I am able to run dynamic DNS. But some background first. Insert my 11-year old HP2100m printer that I have outfitted with an HP Jetdirect 610N 10⁄100 internal print server.

Testing wp->twitter oath

Is this new oAuth thing the apocalypse we all predicted?

Google Wave as an online notepad?

Months ago when Google Wave was the new hotness on the block, and everyone and their Internet-connected Mother was trying to get an account, I mostly scoffed at the technology. At the time I felt it was a cross between IRC, a rich real-time Wiki, and some crazy new “look what we can do Web 2.0” type application. I poked around the various incarnations it took through the preview, but mostly forgot about it months ago.

Find, you are a dirty mistress

In my latest task at work, I have to write a script to take the most recent file from a particular directory changed within the last 240 minutes and copy it to a particular dated directory, in YYYYMMDDHHMM style. After some digging in the ‘find’ manual page and bothering a co-worker I present: find $directory -mmin -240 -name ‘foobarstring’ -printf “%pn%CY%Cm%Cd%CH%CMn” This prints out on two successive lines: $(filename) $(dated string in the date format above)

Wine Riot 2010

I have been meaning to write this post for a few weeks, both as a recap of the event, and as a reminder to myself of the wine I want to keep a lookout for. For those not familiar with Wine Riot, it’s basically a beer festival/tasting, but with wine. A bunch of retailers, distributors and vineyards themselves come to the event and give samples of their product to attendees. This happened to be the biggest surprise for me.

Sprinkling an ‘or’ on your regex

Had some fun today getting this working. If you need to do a boolean ‘or’ comparison inside a regex with python, this is how I did it: if (re.match(r”([0-9]{6}|[0-9]{8})$”, mydate)): In this case, I was trying to either match a date string using 8 digits, YYYYMMDD, or 6 digits, YYMMDD.

Review: Ergotron LX Dual/Triple Display Lift Stand

During my annual trip to CES in Las Vegas this past year, I entered myself in the Tweet2Win contest hosted by Ergotron. They are a company from St. Paul, Minnesota, who make ergonomic products for work environments, from monitor stands, to portable desks, laptop stands, and everything in between. Turns out, I was one of the winners. Through a series of conversations, I was able to receive an LX Dual/Triple Display Lift Stand as my winnings.

Holy Dim Sum

I was down in Chinatown a couple weeks ago having shabu shabu while my mother was in town. I was waiting for her to arrive, and wandered over to an area of the neighborhood I don’t normally frequent (the East side of Surface Road for those curious)t. I came upon Hei La Moon, a resturant I had frequently read about via local food blogs and forums. I grabbed a menu and noticed that the dim sum list was at least 20-30 deep.

2010, a goal sheet.

Since everyone is blogging about how they want to make 2010 the best year ever, this is my list of resolutions/goals for the year. Most importantly, is to get married. August 7th seems far away now, but I am sure once things pick up, surviving my wedding will be a great goal to have completed. Improve my programming skills. I’m an operational programmer at heart, coding to get the job done.

Top of the Hub with the new camera

As a birthday gift, I recently purchased a new digital camera, a step up from my old point-and-shoot. Over the weekend some friends were married in the atrium of the Boston Public Library in a small ceremony. While I was asked to not post the pictures of their actual ceremony online, we did head up to the Top Of The Hub resturant after for drinks, and I snapped this picture looking East towards the Hancock Tower and downtown Boston.

Do or do not…the use of Try, with Python and sqlite

I’ve been hacking around writing random Django apps and scripts lately and came across something I had been meaning to look into over the past couple weeks. What happens when you select a row of data from a database (mysql, sqlite, whatever), that comes back empty and you try to iterate over it? Example: select * from authinfo where username = “foo”, and the user ‘foo’ does not exist. At first I thought:

Is this thing on?

Testing out the new wordpress install on the new webhost. Does it make it to twitter….

O Ya for Sushi? Oh Yeah

I had RSVP’d for Ignite Boston 6, hosted by O’Reilly which was downtown this year at Fidelity’s Headquarters. Since it was right around dinner time, I figured I would grab some dinner downtown, maybe run over to Chinatown before jumping back to the Financial District. I had looked around, and noticed the O Ya was around the corner. O Ya being ranked as one of the country’s best Sushi resturaunts last year by the NY Times.

Round two with Toro

M and I hadn’t gone out to dinner all weekend, and we figured, it was about time. I was having a hard time trying to figue out where we should go, and since neither of us had work in the morning, we could stray a bit farther from home. A friend’s Facebook status mentioned ‘sangria’ and I immediately thought tapas. Our normal standby tapas place is Dali in Somerville near Harvard Square.

How not to help a stutterer, the National Grid Way

For those who know me, know I stutter. It comes and goes, not really any one situation or context where I am more fluent than others. But one situation has always given me problems, the phone. I don’t know what it is, whether I can’t see the person’s face on the other end to help me along, or just the fact that I feel rushed, and don’t want them to wait, the words are just more difficult to formulate and get out.

There’s wine in Southern California!

I have been meaning to write this post for a while, but as you can imagine, work and life got in the way. Anyways..Back in May, I went out with M to a friend’s wedding in Woodland Hills, CA. just north of Los Angeles. Given that we had all of Saturday to kill before the Sunday wedding, we jumped in the car and headed up The 101 towards Santa Barbara and the Santa Ynez valley, where there are a ton of wineries.

Configuring Gitweb on Ubuntu

I’ve been digging into Git more lately as a revision control system for my personal stuff, and wanted a nice GUI way to visualize diffs in a browser. Enter Gitweb. I poked around and found bits and pieces of tutorials, but nothing specific for Ubuntu. So I present to you my step-by-step on how I got it working viewing repos. Ensure you have a working Apache setup first. Install the package: aptitude install gitweb Edit your /etc/gitweb.

It only took me six months to read War and Peace.

Like a lot of people here in Boston, I take the T (subway) to and from work. From where I live along the Green line into Cambridge is about a forty-five minute jaunt. Some people read the newspaper, others read books, and others cram for a biology test they are on their way to. While I could get through the paper in a couple stops (for me, it’s currently an 18 stop trip from home to work) and then have nothing else to do.

I biked the five boroughs of NYC..

A while ago I was in some bike store and saw a flyer for the Five Boro Bike Tour, 42 miles through the five boroughs of New York City. Interesting idea, the cost wasn’t too bad (about $50), and sounded pretty unique to be able to bike through NYC’s biggest streets without the threat of being mowed over by a car or bus. Then it started raining. At first it was a light drizzle biking through the streets of Manhattan, up past Radio City Music Hall, through Central park, and up through Harlem.

She said yes…How it happened

Since everyone is asking how it happened, I figured I’d write it up. So the lies started early. I went away the weekend before to the Masters, with the plan of telling Meryl that we had plans the following Friday night. Her and I had planned a week-long vacation to Seattle and Vancouver, and I wanted to do the proposal the night before. So I lied to Meryl, saying we had to meet one of my father’s clients for dinner, and that it was a client we couldn’t say no to.

Live Nation Highway Robbery, DMB/Fenway Style

Among the most hated companies around is Ticket Master, known for shoddy service and outrageous fees. With its now widely-known merger plans with Live Nation, concert goers have grown concerned of a monopoly on the concert ticket market. With less competition, companies have less incentive to keep fees low, having no one to compete with but themselves. Which brings me to today. In the mail I received my Dave Matthews Band tickets for Fenway Park, for a concert in May.

New Router, Asus WL-500gP2 and Tomato

Last Sunday, I woke up to a dead Internet connection. Gmail, Cnn, ESPN, all wouldn’t load. Great. Checked the laptop wireless, no connection. Even better. Power cycled the cable modem and connected the laptop directly to it, and voila, I was back on the Internet. A dead Linksys WRT54G on my hands. It had served me well, but being a couple years old and not having the specs to run any of the newer versions of DD-WRT or Tomato.

Restaurant Review, Ten Tables Cambridge

The never ending race to Friday night, where M and I get home, and ask each other, “So where are we going out to eat this weekend?” I hadn’t come up with any new places, so I went through OpenTable curious to see where we could get into. Ten Tables popped up, the Cambridge location, and we called, just to see for the hell of it if we could get in.

Upgraded wordpress on the iphone

Just upgraded the wordpress app on my iPhone. Landscape typing is pretty good. Much wider area to type. Here is to blogging on the go…

Airline miles and credit card points, what a racket.

I don’t often use this medium as a bully pulpit to rant and rave about the idiocy I see around me, but this situation warrants it. I am in the midst of planning a vacation for my girlfriend and I. We had been batting around ideas of where to go, and have settled on going from our home in Boston to see Vancouver and Seattle for a week in April.

RAID array monitoring at home

Ever since I started using a simple RAID-1 setup at home, the only verification I had done to check on the status of the array was issuing some commands by hand on the command line. I finally got around to implementing something a bit more proactive using Nagios, its NRPE plugin tool, and a simple bash script that queries dmraid. To cut to the chase, for those who understand Nagios syntax, the below two sections are added to my server’s Nagios configs.

wd-50, gastronomic A+

Last weekend I went down to Manhattan for the weekend with the Girlfriend, and had wanted to try a new resturant. Having combed OpenTable, Chowhound and Yelp, I was surprised to see an open reservation at wd-50 for Saturday night, pre-theater hours. wd-50 is Wylie Dufrense’s resturant, his style of cooking easily described as molecular gastronomy. Take a dish, deconstruct it, and put it back together in an incredible preparation and presentation.

CES 2009, Day 1

Finally back at CES after a one-year hiatus, and it definitely has a different feeling from when I was last here. As most, if not all, of the news reports are showing, attendance and show size are down. The car pavilion was smaller, not as many tricked out cars with huge subwoofers showing their stuff. The electronics halls are not as packed with as many of the big name (Samsung, Toshibia, etc) electronics manufacturers.

Out with the old

I was getting fed up with my main desktop at home. It was a Pentium 4⁄2.8Ghz with 2GB of memory and I think it had seen its finest days. It had run Ubuntu starting with 7.04, and been steadily upgraded from 7.10 to 8.04 and 8.10. When I say upgraded, I mean to say that I did do the upgrade, but found that post-upgrade, crumbs were left behind from the old install, and subsequently made the machine even slower and more frustrating to use.

Oops I lost my phone, Facebook Edition

Everyone on Facebook has seen it. The groups your friends join that have to do with someone losing their cell phone. Whether it’s in the toilet, left in a cab after a night of alcoholic debauchery, or just plain forgetfulness. Being the curious people we are, we click on the name of the group, to see who lost their phone this time. What is then listed is a bunch of random people you probably don’t know, listing their phone numbers.

Upgraded to WordPress 2.7

So I had been waiting for a while to upgrade to WordPress 2.7, seeing all the screenshots and hooplah over the new version. I expected a huge upgrade process, since it was a major version bump. I grabbed the tarball, unpacked it over on top of my current WordPress install, surfed over to /wp-admin/upgrade.php and was done. The new admin panel is nice, and I’m still poking around to customize it a bit more to my liking.

Dual Head Nvidia in Ubuntu Linux 8.10

I recently blew away my desktop machine and installed the new Ubuntu Linux 8.10 Intepid Ibex released today. Since I have two monitors at home (2 x 21″ Samsung 213T LCD’s), I normally use a dual-head setup. Easily enough there is an application, nvidia-settings, that makes this stupid proof. After doing the base install and firing up nvidia-settings, when saving the Xorg conf, the app crashed, Seg fault, wonderful. I ran it through strace which didn’t seem too helpful, complaining about a bunch of files not found.

Texas, The Damage Report.

Besides all the listed food, we had a blast in Texas. Watching the game in the parking lot of a bar with big screens and a ton of screaming intoxicated people. I both missed Austin and UT on one hand, but felt like I had moved on. I miss that school experience, that curiosity where people have 24 hours a day. And how can you go wrong beating OU 45-35?

In Austin, catching up on life.

Finally taken my first vacation in a while with M. We came back to where I did my undergrad degree, the Univ of Texas-Austin in Austin, TX. I must say, it’s that odd feeling of knowing I don’t live here, but knowing my way around without thinking twice (okay, maybe a couple U-turns needed). It just so happens that it was ‘OU Weekend’, where UT plays OU in Dallas at the Cotton Bowl.

I drank the Kool-Aid

Over the weekend my father was upgrading his 2G iPhone to the 3G model. I had himmed and hawwed about getting the iPhone or waiting for the Blackberry Bold. Screw it, I got the new 3G iPhone, the 8GB model. Now I’m basically loading up on the needed accessories, a case, extra sync/power cable, apps from the app store. The one thing that I’ve come to rely on is the calendar.

Hello, World!

I’ve given the blog another incarnation, this time on a real bonafide website, Webfaction. After reviewing a ton of other hosts, reading even more blog and forum entries, Webfaction had the best balance of cost, features, and location on the Internet (In ThePlanet datacenter in Dallas) that seemed to suit my needs. Here’s to another go at this whole blog thing.

Stack it up: KVM, VLANs, Network Bridges, Linux/OpenBSD

I’ve had some free time and a desire to break stuff on my network at home. I wanted to fix my home network’s topology to more correctly split up my wired (DHCP), wireless (DHCP) and server (statically-configured) subnets. At a high level, I had to create a server subnet, create vlan’s on my layer-3 switch for each of those pervious subnets, then I had to move the network interfaces on my VM host around to only connect to the networks I wanted it to (wired and server).