Defensive BASH Programming

Nothing is new here, but from my experience pepole like to abuse BASH, forget computer science and create a Big ball of mud from their programs.
Here I provide methods to defend your programs from braking [sic], and keep the code tidy and clean.

I'm guilty of regulary ignoring so much of this. The comment threads, though absent the author, held a few other interesting nuggets. For instance, there's an IDE for BASH.

Jun 8th, 2014

WWDC Thoughts

I had a rare (for me, anyway) opportunity to stream the WWDC Keynote at work on Monday. Normally I have to follow one of the many live blogs and then watch the video after the fact, and even in the last few years since the stream has been public, most streams have been choppy and un-viewable.

The two-hour keynote was like drinking from a firehose of awesome. Some thoughts have been percolating since, and so what follows is what's been on my mind:

Apple

My 2¢: for the past few years it's felt like Apple's only goal was to put us in our place. Now it feels like they might want to be friends.

For the first time I can recall, I was thoroughly entertained during the keynote. I wasn't just waiting for the details on what they were releasing; I was genuinely entertained. The presenters, seasoned and raw alike, were confident and seemed to have a ton of fun. They played to developers, and the audience (largely developers) seemed to eat it up.

I really should be taking video of @marcoarment during this segment. He is literally bouncing.

Overall, they rocked it.

Yosemite

The UI refresh looks nice. Nothing huge, nothing so ground-breaking that anyone should be up in arms about it.

I need to play with Mail to know if it's worth going back to it from Airmail. The version of Mail in Mavericks is pretty terrible for Exchange.

The notification center overhaul / widgets look neat but possibly annoying. It seems to indicate that Dashboard is on its way out someday, which I like.

Spotlight's update sounded like it might upset Alfred, but I use Alfred for so much more than finding/launching stuff. I think it still has a permanent home.

iCloud Drive and Photos

This could be a "big deal" for me. I've been a big Dropbox user for years, and have loved the ubiquitousness it delivers. Between that and Crashplan, I don't worry about my data being lost1, and can easily share a song, document or whatever with anybody. My photos are all in one place, and for the moment I haven't run out of space2. I am, however, almost exclusively a Mac user now, and having a native experience for cloud-based file storage sounds great.

Also, it's less expensive than Dropbox. I have the Pro200 plan now with Pakrat3, which costs roughly $200 a year. For the same storage space on iCloud Drive, I'll pay $48. That's $150 I can do better with.

I have a lot of questions about how they're going to deliver this, such as:

  • Will there be a Windows client?4
  • Will all of my iCloud Drive files be synchronized locally? Can a 3rd-party tool back up those files from your file system?
  • What if my local drive is smaller than my iCloud Drive? What gets sync'd locally?
  • Given this will integrate with the new Photos application, can I have photos in multiple structures or only in the Photos "silo"?
  • Will the folder structure be "normal" or will it be in my /Users/matt/Library hierarchy somewhere, obfuscated from me without Finder?
  • Can I symlink in/out of the folder structure?
  • Will there be an IFTTT channel?
  • What about file sharing, share links, public links, etc.? Will I still need/want Dropbox, even a 2gb free plan, to share via links?
  • What sorts of privacy statements are they making about these files? Dropbox seems to be taking it seriously, or so they say.

The iOS implementation looks really awesome. I'm mostly concerned about how this is manifested on my Macs.

It seems like they're going to replace iPhoto with this on the Mac. I've always hated iPhoto, so I'm interested to see how this pans out. I've wanted an app for photo management that I didn't hate for at least six years.

Family Sharing

This is great. Just great. So long as by "credit card" they're also ok with "PayPal Account". Also, I have no intention of sharing apps with my son's iPad, but this was interesting:

Just caught this detail on the iOS family sharing. pic.twitter.com/hgwMmOxE1k

iDevice / Mac Integration

Again, it all comes down to implementation. If they use Bluetooth LE, that bugs me, though this would seem a straightforward way to tackle proximity so that my computer at home doesn't try to answer my phone call when I'm on my way to the office. I hate having bluetooth enabled everywhere, so I'd prefer they do something different, for instance a P2P wifi connection ala AirDrop. It would seem that they'd need to be clever about proximity, and I see all sorts of holes using things like common network details for other connected networks. I suppose they could use signal strength.

Messages

Group messaging looks cool, but not something I'm likely to use very often. I can see my wife using it more with a few friends, or groups or parents or something.

Audio messages are wicked cool... Who needs voicemail anymore?

SMS in iMessage is fantastic, and is a feature my wife is actually excited about.5 I'd greatly prefer a full keyboard for messaging whenever I could have one, but speaking of keyboards...

Other IOS8

3rd-party keyboards

Swype.

AirDrop between iDevices and Mac

YAY! YAY YAY YAY!

Enterprise Features of IOS8

They didn't even talk about this, but I'm jazzed about:

  • S/MIME from Mail. Woo!
  • You can email meeting attendees from Calendar. Should have been that way forever!
  • Swiping to mark read/flag/etc.
  • Designate threads as VIP
  • Turn out of office on/off from my phone

Swift

I don't have a lot of thoughts about this yet, other than that I've had a few ideas for iOS apps for a while, and learning Objective-C was the only thing stopping me. This might be enough to get me moving.

Conclusion

Overall, I'm excited by all of this and am trying to decide which Mac is going to run the Yosemite dev preview when it's ready.


  1. I suppose I need to worry about it being kept

  2. Based on my estimates, I have until 2016 or so.

  3. Because I never, ever want to be faced with an OMG where did that file go??!? moment ever again.

  4. Someone has to ask…

  5. She normally rolls her eyes about these sorts of announcements, but this actually piqued her interest.

Jun 6th, 2014

Don Zimmer

When I was a kid, I was more of a baseball fan than a football fan. I loved the Chicago Cubs, and tolerated the White Sox. During the late 80s and early 90s, I religiously watched or listened to the games as much as possible. I collected thousands of baseball cards, and Ryne Sandberg was my favorite player.

To me, as a Cubs fan, the only manager I remember was Don Zimmer, and my memories of the Cubs seem to be completely encapsulated in the 1989 team, a season that found them winning the NL East, but failing to make the pennant. It was a fun season of players to watch, and Zimmer's presence in the dugout, and whenever he'd burst out onto the field. He was a great manager, and a great coach before that.

Sadly, the last memory I have of him on the field is this one:

He's going to be missed in the world of baseball. I like how The Loop called him The Forrest Gump of Baseball:

Zimmer met Babe Ruth (in 1947), was a teammate of Jackie Robinson (1954-56) and played for Casey Stengel (1962). He was in uniform for some of the most iconic teams in history: the team that lost the most games (’62 Mets) and the team, including postseason play, that won the most games (’98 Yankees). He was in uniform for the only World Series championship for the Brooklyn Dodgers (1955), one of the most famous World Series home runs (Carlton Fisk’s shot in 1975), one of the most famous regular season home runs (Bucky Dent in 1978), the Pine Tar Game (1983), the first night game at Wrigley Field (1988), the first game in Rockies history (1993), and all three perfect games thrown at Yankee Stadium (Don Larsen, David Wells and David Cone).

Jun 5th, 2014

Babun

Via One Thing Well:

Babun is a linux-like console on a Windows host…

Babun features the following:

* Pre-configured Cygwin with a lot of addons
* Silent command-line installer, no admin rights required
* pact - advanced package manager (like apt-get or yum)
* xTerm-256 compatible console
* HTTP(s) proxying support
* Plugin-oriented architecture
* Pre-configured git and shell
* Integrated oh-my-zsh
* Auto update feature

I have a set of servers in our data center which must run Windows Server, and write log files out via logback, which I'd love to be able to tail on a semi-regular basis.1 I tried using the GNU Coreutils package, but it complained about the file. I tried this wicked long PowerShell command:

1
Get-Content -Path "C:\path\to\file.log" -Wait

...but it did not work, and I have no idea why, because PowerShell might as well be Sanskrit.2

I also tried tailforwin, for which I had no expectation of success having been written when I was still in college for operating systems few people use anymore.

I could have used Cygwin, but these servers have no external access to the Internet3, and while I could have built my own standalone installer... I strongly dislike it, and dealing with mirrors makes me angsty.

Enter Babun, which gave me everything I wanted4 in one handy package requiring no admin rights to install. I ran into issue #90 right away, but I had the same problem back when I used Cygwin and wasn't greatly surprised by it. Other than that, and needing to navigate out of the fake root filesystem hierarchy, it's an incredibly complete 1.0.0 release.


  1. Ideally, I’d be writing all of these logs to something like logstash and viewing them elsewhere, but I already need console access to these machines, so I might as well view logs there.

  2. I could handle Latin.

  3. Nor should they.

  4. Except tcsh. Why does everyone like zsh?

Jun 4th, 2014

How Recruiters Review Your Resume

Stumbled upon a really fascinating heatmap-based study (PDF) on how recruiters review your online resume. This quote struck me:

In fact, the study’s eye tracking technology shows that recruiters spent about 6 seconds on their initial “fit/no fit” decision.

I think I average 30 seconds or so once a recruiter has done an initial "fit" screen. I'll have to ask our recruiting staff if this holds water or not.

Their recommendations1 were interesting2:

  1. Remove your profile photo.
  2. Remove all visuals
  3. Clearly state your Name, current title/company/employment dates, previous title/company/employment dates and education. These are the 80% of the 80/20 rule. Everything else is fluff.3

  1. Both explicitly stated and implied.

  2. It should be noted that this study was done by The Ladders, which is a job board, and they clearly state that they think their style of profiles are superior and are the model to be followed. So, you know, take that as you will.

  3. Incidentally, this is how my actual resume is formatted. I exclude my skills list, for instance.

May 23rd, 2014

The Vocal Ranges of the World's Greatest Singers

This interactive chart is incredible. Who knew Axl Rose was so versatile1, or that he has a lower recorded low note than the Man, himself, Barry White.

I appreciate that the data here is based on recordings and not reported capability, as anyone cay say "I have a five-octave vocal range", but Axl Rose and Mariah Carey have proof.


  1. Apparently both Rolling Stone and NME did.

May 22nd, 2014

Health Axioms

The very talented designers responsible for Design Axioms have released a new deck of Health Axioms, almost better than the first. My UX guru dropped by my office to give me her only deck, knowing how much I'd appreciate them.

SO. RIGHT.

The whole set of images is available in the team's github repo. These might have to start travelling with me.

May 21st, 2014

On Octopress

The site is live and running on Octopress. I'm super happy with the way it has turned out. From the base setup, I:

The whole conversion process from exported markdown to properly-formatted markdown with proper YAML that Jekyll expected was about 2 elapsed weeks of free time here and there, chunking sets of posts and tweaking the site as I found something that I needed to do differently from the default. There was very little that was scriptable in that process, but I made use of some command-line perl and sed/awk as necessary.

Everything else about Octopress, heroku and re-implementing this site has been incredibly smooth.


  1. It is not perfect. I’d prefer to have an easier way to do this, and until the various rake tasks become second-nature, I imagine I’m going to forget some posts along the way.

May 20th, 2014

My Go Bag

This is the bag I carry with me on a daily basis to/from the office.

go-bag-annotated by matthew.shelton

My Go Bag

Read on
May 13th, 2014

First Post on Octopress

I've been a wordpress user since it was a 0.x release. I loved wordpress, and b2 before it. Wordpress has become a poor man's CMS rather than a blogging engine. I'm OK with that, and I have made use of those features extensively. But now, wordpress kinda stinks for writing, and I like to write, given the chance.1

One thing I don't have a ton of time for is re-inventing the look/feel/action of my website all over again. Maybe some day, but between 60hr work weeks, two kids, a wife, a house/yard, church ministries, etc., the last thing in the world on my list is tweaking my blog's CSS. So I'm also OK with using someone else's theme running on heroku for free.

It's going to take some time to port my existing blog over, so once I do I'll swap this one in for that one. Until then.. well, this will just have to do.


  1. Honestly I’m not sure I have much to say, but when I do say it, I like to say it how I like to say it. That almost makes sense.

May 9th, 2014