CocoaConf Chicago 2014

14 March 2014

This past weekend was the latest CocoaConf Chicago, and it was a blast. I guess I never wrote a blog post about it, but this was my second: I attended CocoaConf Boston back in October, but definitely enjoyed this one more. CocoaConf has several speakers who go on the road with them and give the same talk a few times, so I attended a few of the sessions that went over my head the last time around. And, since this one was local, I already knew a bunch of attendees from meetups and SecondConf, and it’s always nice to go into an event already knowing some people.

I had been fighting a cold all last week, so I just decided to get a room there at the hotel so I could sleep more instead of driving back and forth to the city. I later found out that this was a pretty popular strategy among the local attendees, and it meant that I got to hang out with people at the hotel bar on Friday night, since I was feeling a lot better by then.

I also got to show off my app Shoot during the We Made an App For That session Friday after lunch, which was pretty awesome. I got a lot of good feedback and ideas from other attendees throughout the weekend, and won the prize for best presentation, which was quite flattering.

It was a pretty fantastic weekend. The Klein family puts on a great conference, and I’m sure I’ll be there when they (hopefully) come back through Chicago next year.

This time around, I tried to jot down a couple takeaways for each session, and for a lot of them, I also had a few items to follow up on.

Makeover Your Table Views for iOS 7: James Dempsey

I’m not quite sure what I thought this talk was going to be, but it mostly focused on upgrading table views from iOS 6 to 7 and Dyanmic Type.

Takeaway: I need to review the settings on my table view controllers (since the app was updated from iOS 6 to 7), and use the pre-defined styles whenever it makes sense to, since they will resize to the user’s font size setting.

NSIncrementalStore - Bet you didn’t think Core Data could do that!: Jonathan Penn

This was one of the talks I saw back in October, and it was a little out of my grasp then. This time, it made sense.

Takeaway: Using plist files for a persistent store isn’t a great idea, but I’m going to use it anyway on a utility app I’m working on. CoreData works weird: like, the managed object context asks the persistent store coordinator to fetch data, and then the PSC asks the MOC to fetch each object…from itself.

Taking Your Automated Testing to the Next Level: Brad Heintz

I was hoping this talk would be a little more practical hands-on type stuff, but it was interesting.

Takeaway: Write tests first. Red, green, refactor—and anything goes for making the tests pass. Xcode uses Xcunit, but there are other options; in particular, I need to look into KIF for testing the UI.

Followup:

Advanced Core Data - The Things You Thought You Could Ignore: Aaron Douglas

This talk was a nice complement to Jonathan Penn’s talk, since it focused “above the line”: Jonathan focused on the persistent store coordinator while this talk focused on everything above that.

Takeaway: CoreData can get messy. It’s really hard to handle threading correctly, but incredibly important to do so.

Performance Optimization: Monitoring Metrics in Real Time: Brittany Young

I was hoping this talk would be more about measuring performance, but it was more about identifying what needs to be improved.

Takeaway: High percentages of users will just drop the app if there’s any delays or slowdowns. It’s important to measure performance because there isn’t much value in taking wild guesses about what’s wrong.

Tips & Tricks of Effective iOS Developers: Ben Scheirman

This talk was a collection of good ideas and things for me to follow up on.

Takeaway: Keep an eye on file length and the complexity of class dependencies. Pick a couple new-to-you keyboard shortcuts and practice them until they become part of your workflow. Make snippets in Xcode to speed things up.

Followup:

View Controller Transitions: Jonathan Blocksom

This was another talk I saw in October. It made a lot more sense this time, but the practicalities of transitions still seems more complicated than they need to be.

Takeaway: I need to look into interactive transitions more, because I want to allow users to drag one view aside to see the next one.

You Bought What?! Lessons From Acquiring And Running Glassboard: Justin Williams

It was nice to see a more business-oriented session among all the tech talks.

Takeaway: Running a business is hard. People who aren’t paying for the service aren’t customers, but you still need to treat them well if you hope to convert them to paying customers.

Auto Layout is a unicorn, wild and free. Learn how — and why — to harness its power and magic: Ben Lachman

I think I’m getting the hang of autolayout.

Takeaway: Turn on Editor > Canvas > Show Involved Views for Selected Constraints. Don’t modify view.frame directly.

I Love Frank Turner

12 January 2014

I have not listened to very much new music in a few years now, for one reason or another, but for the last year, most of the music I’ve listened to has come out of Frank Turner.

This is not something that I would readily admit for some time, because most of what I’ve been into for the past decade has been punk rock, and Turner is quite about softer than what I usually listen to. And yes, I am fully aware just how absurd it is to be thirty years old and self-conscious about my musical preferences.

I’m not entirely sure how I found Frank. His song Poetry of the Deed was on the Epitaph New Noise Vol 1 three and a half years ago. I wasn’t a big fan of it then, but at some point I came across his song Glory Hallelujah, which I quite liked at the time. I’m not sure when I connected the two, but in March I bought his latest album: Englang Keep My Bones, at the time. It was a great album to start with (I like the stuff before that, but less so). I particularly like the first half of the album, especially these ones:

This album always does, and always will, remind me of the front range in Colorado. I would play it while driving to and from trailheads in the mountains on weekends, and it would be stuck in my head while hiking through the rock and snow. That’s always going to be connected in my mind.

His next album was released about a month after I bought the other one, but it was another five months or so before I bought Tape Deck Heart in September, which I really can’t explain. It’s another great album:

For the past few months, if I’m listening to music, it’s this album. I got lucky back in October and got to see Frank live here in Chicago. It was a great show, and I bought the rest of his back catalogue when I got home, after not knowing half the stuff he played that night.


Anyway, enough of the history. The fact of the matter is that his music is catchy, and tends to be a lot more interesting than most music I’ve listened to in years. I mean, I still love the punk bands I’ve always loved, but let’s be honest: with the exception of Bad Religion, they don’t tend to be that intertesting, lyrically speaking. His songs still adhere to the verse/chorus/bridge structure that has served us well for so long, but he messes with that structure pretty often.

And perhaps the thing that appeals to me most: he talks a lot about death…which sounds morbid, but I find it inspiring. We are all going to die, and soon (in the grand scheme of things). It’s worth keeping that at the back of one’s mind. We have a very limited amount of time to do what we want to do with our lives. It’s not something to dwell upon, but when I’ve had a particularly uncompelling week, when I’ve done nothing memorable or interesting with myself for a while, I find the memento mori valuable.

From The Road:

Ever since my childhood I’ve been scared I’ve been afraid
Of being trapped by circumstance and staying in one place
So I always keep a small bag full of clothes carefully stored
Somewhere secret somewhere safe and somewhere close to the door

So saddle up your horses now and keep your powder dry
‘Cause the truth is you won’t be here long
Yeah, soon you’re going to die
To the heart, to the heart,
There’s no time for you to waste
You wont find your precious answers now by staying in one place

From I Am Disappeared:

And on the worst days
When it feels like life weighs ten thousand tonnes
She’s got her cowboy boots and car keys on the bed stand
So she can always run
She can get up, shower in half an hour
She’ll be gone

And on the worst days
When it feels like life weighs ten thousand tonnes
I sleep with my passport
One eye on the back door
So I can always run
I can get up, shower and in half an hour
I’ll be gone

From Losing Days:

And I used to think that I
Would never live past twenty five
And when you think like that
Each day is a gift if you survive
But I’ve survived too long for my side of the deal
And as I reach that shore I’m not sure how to feel\

I keep losing days that used to take a lifetime
In the blinking of an eye
And all these small ideas are suddenly commitments
As greatness slips on by
Greatness slips on by

From Polaroid Picture:

But in the stillness of the moment it takes for a polaroid picture
To capture our faces forever,
The world has turned a touch on its axis, and the only thing certain
Is everything changes.

From Reasons Not To Be An Idiot:

So why are you sat at home?
You’re not designed to be alone
You just got used to saying “no”
So get up and get down and get outside
Cos it’s a lovely sunny day
But you hide yourself away
You’ve only got yourself to blame
Get up and get down and get outside

From Peggy Sang the Blues:

It doesn’t matter where you come from
It matters where you go
No one gets remembered
For the things they didn’t do

My 2013

31 December 2013

When I even start to think, “nothing exciting happened this year,” I just remember where I was this time last year, because this was a big one: even without the more minor stuff, I moved twice and took two trips to Latin America, so it couldn’t have been that dull. Things were set in motion last December when Erin was accepted into gSchool and we started making plans to move to Denver.

January

  • Flew out to Denver for a couple days to find an apartment and buy a car.
  • Moved away from DC, after living there for seven years. I spent three days driving a Uhaul almost-cross-country by myself, since Erin was in Michigan to attend a funeral.
  • After unpacking the entire apartment (hey, I had to work, and she had a week or two off), Erin started the six-month gSchool class to become a Ruby on Rails developer.
  • I started actaully learning Objective-C and Cocoa after fiddling with it a few times over the past several years.

February

  • Spent a couple days meeting with a client near San Jose, and met up with Ryan and Kat while I was there.

April

  • Spent a week in Tampa with the Lullabot client services department for our retreat.
  • Went home to Buffalo to meet my brand-new niece, Mackenzie.
  • Hiked the Eldorado Canyon Trail, which was by far my favorite of the hikes I did in Colorado.

May

June

July

  • Spent a day at the Colorado Irish Festival and finally saw what hurling looks like. No, the other kind of hurling. Did NOT see Gaelic Storm because I got too much sun on the first day and was too wiped to go back for more (you’d think an Irish festival would be equipped with sunscreen dispensers the way most have Purell near the porta johns).
  • Erin finished gSchool and accepted a position at Table XI in Chicago. While I was in Portland on business, she went to Chicago with her dad to find an apartment, and took the dog (Lola) to stay with her folks while we traveled and moved. Said goodbye to another city.
  • Rented a Harley Davidson and spent the day riding around the mountains, to take advantage of one of my last weekends in Colorado.

August

  • Went to Chile for a week to attend Sarah and Rod’s wedding, and spent two days with them in Valparaíso.
  • Took the cog railwar up Pike’s Peak and felt kind of high for half an hour because there isn’t any oxygen up there.
  • My parents come out to Denver to visit for a few days. We went for a hike in Rocky Mountain National Park, and visited Garden of the Gods and Cave of the Winds.
  • Packed up everything we own (again) and spent almost three more days driving a Uhaul, this time taking the long route from Denver to Chicago by way of Mount Rushmore.

September

  • Settled into the new apartment, and Erin started her new job.
  • Erin’s sister and brother-in-law come to visit twice, on the way to and back from a road trip.
  • Attended SecondConf at Sears Tower

October

  • Visited Erin’s family for an early Thanksgiving, and brought Lola back to Chicago.
  • Attended CocoaConf in Boston and saw some college friends while there, then stuck around for an extra day to visit people in nearby Providence.

November

  • Lullabot company retreat in Mexico! We had four big houses right on the beach a bit south of Cancun. It was pretty awesome.
  • Erin’s folks came to visit us for the actual Thanksgiving, and we spent the next afternoon at the top of the Sears Tower.

December

  • Found out that I get to work on some interesting projects in the new year. I’m not sure if I’m allowed to talk about it publicly yet, so I’ll just say that I’m super excited about what’s coming up.
  • Spent Christmas back in Buffalo with my family, and made pit stops in Detroit on the way there and back to spend time with Erin’s parents.

Some misc highlights:

  • Read 22 books.
  • Watched 37 movies (the fewest in the ten years I’ve been tracking them).
  • Saw a few concerts: Volbeat, Frank Turner, Street Dogs, 6’10.
  • Did a bunch of hiking in the Rockies, but in retrospect, not nearly as much as I should have. I had no idea how much I would miss the mountains when we moved to Chicago, and I wish I would have taken advantage of them more than I did during our eight months in Denver.
  • Saw way more out-of-town friends than probably any year before. In part, this was due to conferences and work trips (Portland twice, San Jose, Boston & Providence, Boulder), but we also had several people crash on our couch on their way through Denver and Chicago.

All in all, it was a pretty busy year, and it sure doesn’t feel like a year has elapsed since we started January: it seems like just last month that Erin was freaking out about the folks wearing cowboy hats at the Denver airport, certain that we had accidentally committed to moving to some podunk little city out west (it took a day or two before she believed me that the cowboy hats were pretty well limited to the airport staff).

I have high hopes for 2014. I mostly stick to quantifiable goals for the new year (which I’m keeping to myself), but there are a few things that I’d like to do differently in 2014:

  • Get out of the house more. Frankly, this is harder for me in a major city than it was in a small one, despite my aversion to the outdoors. In Denver, it was easy: within 45 minutes of locking my front door, I could be at a trail head on a mountain; it’s hard not to leave the house when that’s an option. In Illinois, I need to work a little harder to find hiking opportunities, and I suspect that it will be too muddy to take advantage of them till late spring anyway. But, I also just need to get out of the house, even to pop down to a bar for dinner or a drink or something. For me, it’s very easy to slide straight from working-from-home to evening-tinkering-in-the-office, and there are many weeks that I don’t leave the house except to walk the dog and run errands. I need to work on this.
  • Make more friends. I have no idea how to do this. In Denver, I never really met any new people, and when I did hang out with people, it was folks that Erin knew from gSchool or her previous job. There are a few people in Chicago that I (similarly) know from college and previous jobs, but I need to actually make plans with people if I ever want to see them. I’m generally content to eat dinner or see a movie alone, but this has been an unusually lonely year for me, largely because of gSchool: for the first half of the year, I was doing everything on my own because Erin was busy with classwork. Related:
  • Attend more meetups. There are two iOS groups here (Cocoaheads and NSCoder), and I’ve attended both exactly once. I haven’t even made it to any of the Drupal meetups, the movie meetups, the weekly tech talks—and I have no excuse.
  • Read more books and watch more movies. I wind up burning so much time on stupid crap: reading Twitter and mindlessly clicking around the Internet. There are times when one needs to just veg out (10 years ago, I would have been in front of the TV), but I could be spending a lot more of that time learning new things, or at least enjoying decent movies.
  • Ship more code. I’ve been working on an iOS app since February, mostly fine-tuning and refactoring as I learn more. I’ve got ideas for at least three more, plus a couple web apps, plus some fiddly little scripts that I used to tinked with for fun. I need to get back on the release-then-iterate horse and just get more stuff on Github. If nothing else, the feeling of accomplishment (no matter how minor) fuels more coding.

In any case, I expect 2014 to be a lot mellower than 2013. We have no intentions of moving to a new city again for at least a few years, and don’t have plans for any major trips. We should have some time to get to know our new city (especially once it warms up), and I’m looking forward to that.

The Parable of OSS and Feminism

19 November 2013

Once upon a time, a n00b found an open source project. The project was an ambitious one, one that wanted to change the world for the better. A lot of people had been working very hard on the project for a very long time.

The n00b saw the value of the project, saw that it was poised to make the world a better place, and thought: I should keep an eye on this.

Some time later, the n00b was getting frustrated. The project seemed to be gaining more users, and the n00b kept seeing more and more tweets and blog posts about it, and particularly about the primarily controller used by the app. “This thing is stupid. Why is this so complicated? I bet I can help make this project much more accessible to people who haven’t used it before,” thought the n00b, n00bily.

The n00b hadn’t actually read many of those blog posts, had only skimmed some of the tweets, and hadn’t read any of the documentation on the project, but surely, the n00b brought a new perspective that would be appreciated by the project maintainers. So the n00b opened a pull request to submit a change that would gut the primary controller and make it much easier to understand, even though the n00b didn’t fully grasp how each method worked, and there were no unit tests.

And oh, how the n00b was ripped a new one. The project maintainers and users of the project piled on the n00b, and the n00b became angry. “I was just trying to help!” shouted the n00b, to the rolling eyes of everyone who had seen this play out before. Because, you see, there were already scores of pull requests just like the n00b’s, and none had been merged. The documentation for the project, and many of those blog posts that the n00b skipped, started out by explaining exactly why the controller worked the way it did, and why a gutted version like the one offered by the n00b wouldn’t work. There were years of hard work backing up the architecture of the controller, and everyone was sick and tired of having to explain everything every time a helpful n00b wanted to join in.

And that’s how the n00b ragequit the issue queue, and tweeted angrily, and grumbled about how that project would change the world if only the maintainers would be willing to coddle every n00b who hadn’t bothered to RTFM.


Like open source projects, I think the feminism movement appreciates newcomers who want to help and make a difference. And, in both cases, I think they especially appreciate those who do a little research beforehand and have enough self-awareness to realize that their first contribution is unlikely to be so simple and straightforward that it simply hadn’t been considered before.

Markdown Footnotes in Jekyll on GitHub Pages

23 October 2013

I switched to using Jekyll a few months ago, and then to Jekyll Bootstrap just the other day. Plain Jekyll and Jekyll Bootstrap both work great on GitHub Pages: just push the Jekyll directory, with your _layout and your _posts and whatnot, and GitHub Pages handles the parsing and generates your site.

My big complaint in switching was that my Markdown footnotes stopped working. If you scroll to the bottom of this old post, you’ll see a footnote there. Yesterday, that displayed as [^1] because the redcarpet Markdown parser that I had been using didn’t parse footnotes.

Thanks to someone named Brian Willis on StackOverflow, I now have working footnotes. I just had to switch my markdown processor to kramdown. In _config.yml, change the markdown: line:

markdown: kramdown

If markdown: isn’t in your _config.yml already, you can just add it on a new line.

Default Markdown File Extension in TextMate 1

20 October 2013

I still use TextMate 1. It ain’t broke, so I ain’t fixed it.

Changing the default file type for TextMate is easy enough; I posted the howto for that years ago. In short, just run this command from the command line to switch the default language to Markdown:

defaults write com.macromates.textmate OakDefaultLanguage 0A1D9874-B448-11D9-BD50-000D93B6E43C

So that’s great: TextMate now uses Markdown by default.

But, I’m picky, and by default, new Markdown files are saved with the “mdown” file extension (ugh). I prefer “md” because it’s nice and tidy and nerds need these little things to fuss over.

Here’s how you can change this default file extension:

  1. Click on the Bundles menu, expand Bundle Editor, and click Show Bundle Editor.
  2. In the list at left, find Markdown and expand it. Find the “Markdown” line preceded by a gray L icon.
  3. The second line in the right panel lists the file extensions for which TextMate will use the Markdown bundle, and the first item in the list is used as the default extension when you create Markdown files in TextMate. Move “md” (or whatever you want) up to the front of the list.
  4. Restart TextMate or select Reload Bundles under the Bundles > Bundle Editor menu.

Markdown bundle config screenshot

And that’s that. Create a new file and initiate a save, and you’ll see untitled.md where it had been untitled.mdown.

Markdown file save screenshot

That's Some Fine Poping

17 October 2013

I like this new pope a lot.

Rattled by Pope Francis’s admonishment to Catholics not to be “obsessed” by doctrine, his stated reluctance to judge gay people and his apparent willingness to engage just about anyone — including atheists — many conservative Catholics are doing what only recently seemed unthinkable:

They are openly questioning the pope.

This delights me for two reasons.

  1. This pope is way more Jesusy than the last pope. I love that he’s brought some humility back to a post more recently known for elaborate thrones and fancy shoes.
  2. Catholics questioning the authority of the pope. I have long held that it would do everyone some good to take a long hard look at what the believe and why, and decide whether their beliefs really jive with what’s handed down from on high by the Church. Granted, the reason for their introspection now seems to be outrage that the pope had the audacity to wash lady feet and treat non-believers and gays with some measure of dignity, but still.

My Forever Project

12 October 2013

Introduction

LifeTracker is my forever project.

The idea is simple: I just want an app where I can track everything about my life. This is why Quantified Self appeals to me, but only partly: I’m not really interested in the “quantified” part. Numbers and figures and stats don’t really appeal to me. I’m more interested in the obsessively documented self: I want to track what I was doing when, where I lived and worked at the time, who I was with and how I first met them, and see a photo of the thing right there alongside it all.

I’ve been making notes and plans about this project since least December 5, 2007 (that’s the earliest note that I’ve found about it), but I’ve been talking about it much longer. I can remember explaining to Heewa that I wanted something like this way back in 2004 or 2005.

I also realized halfway through writing this that I had already written about it, about two years ago. But that’s OK, I still like talking about it, and things have evolved a bit since then.

Who Cares?

No one, probably, but I feel I need to start collecting my thoughts on this if I’m ever going to get to work on a project of this scale. I’m not worried about exposing my ideas and plans. Ideas aren’t worth shit: the value is in implementation. As I’ve said before about this, I would love for someone else to take the initiative and steal my idea. I want the tool more than I want to build it.

Plus, I’m pretty sure Erin is tired of hearing about it. If I start writing about it here instead of talking to her about it, it’ll be easier for her to ignore me.

Background

The origins of this project are fuzzy, but firmly planted in the fact that I have a crappy memory. I’m just not good at remembering things, plain and simple, so I try to write things down as often as I remember to do so. These efforts have been successful in some cases, garbage in others. For example, I’ve noted every movie I’ve seen since 2004 (and have record of a few years worth of theater visits before that thanks to a mug full of ticket stubs). Since February 2008, I’ve kept a brief log of what I’ve done every day. Back in August 2003, I decided to start writing down how I knew people, where I’d met them, stories about them from back in the day, that sort of thing; unfortunately, I only wrote one. I have a text file listing every real job I’ve ever had, back to my first full-time summer job when I was 15. There’s an entry in Evernote listing every house, apartment, and dorm room I’ve ever lived in, with whom and when.

Because I forget. Because I’m not good at remembering. Because I like to reminisce, but it drives me up a wall when I can’t remember details or timelines. Because I know that no one else is going to remember these things for me, and once I forget them, they’re gone forever.

Requirements

Most of these are from the two year-old post I already made about this project.

  • Open data formats. I’m leaning toward JSON because it’s flexible and easy enough to use.
  • Linked data. Previously, I thought that different types of data would need to handle this differently. For example, Event records would need to be linkable to People and Story records. At this point, I think that every piece of data in the system can have an open-ended Related field that can point to any number of other pieces of data, of any kind.
  • Data Syncing. Still important. I want to enter new data while at my main machine or on a mobile device.
  • Reasonably simple. This is hard to do on any app, let alone something like this, but at the very least, the barrier to entry has to be nearly non-existent. Because:
  • Easy to quickly input information. I have been able to keep up a daily log for nearly six years because it’s quick and easy to write a few lines each day. The project to write about how I came to know people, or the stories from college, or anything like that: those have failed completely because they require longer periods of focused time and attention. It needs to be trivially easy to (e.g.) make a note on a Person record when I remember that time we went dumpster diving together in college.
  • Extensibility. I need to be able to define different data types with different types of information: People have different details than Stories or Photos or Journal entries. As I noted in the previous post, maybe someone wants to track details about every Nethack game they play: that’s going to require a different set of data fields than other data types, and entries of that type will display differently. My thinking around this is largely influenced by the way that the fields and display options can be configured on Drupal node types, because that’s the system where I spend most of my time. I’m trying to distance my thinking from that so I don’t inadvertently limit myself to doing things the Drupal way.
  • Security. Privacy is still a big concern on this.

Nice-to-haves

These things seemed like requirements in the past, but at this point, I think I’m more interested in getting the core functionality than in getting everything I want. I can always add more later on.

  • Versioning. This was listed as a requirement before, but this isn’t a big one for me anymore. It would still be cool to find a way to store all data in a git repo or something, so that one can see the history and revert changes and the like, but it’s not that important.
  • Pull in external data. Again, this was a requirement before, but now I’m less concerned with pulling in tweets or Goodread data.

Planning the App

This is a difficult app to try to plan for. Frankly, I have no idea what the UI should look like or how it should work. So, I’m starting with something more basic.

My plan at this point is to build a simple journaling app to replace DayOne for my daily logging. Not because I have any complains about DayOne, mind you, but this seems like a good place to start. It’ll just be a simple app to note things that happen in a given day, and indicate their level of importance. For example, my wedding day was the most important one of 2009, so that would have year-level importance. Getting together with a friend I haven’t spoken to in a decade might be a month-level highlight. There will be some way to zoom out and see, at the week level, the things that were deemed the most important in that week. Similarly, the month and year views will show the items that were most important at that level.

Looking at one day, you’ll see everything that happened that day. At the week level, you’ll see that you went apple-picking on Saturday. At the month level, you’ll see the day you moved to a new apartment. At the year level, you’ll see the birth of a child, the wedding day, or the college graduation.

Collecting and storing this data will be easy, but I’m still figuring out how to handle the display, both during input and when viewing those zoom levels.

Sketches

Names are Hard

Everybody knows that there are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors. In this case, the only one I’m struggling with is naming.

I’ve kicked around a lot of ideas over the years, and for a while, had settled on Supplemental. As in, “Captain’s log, SUPPLEMENTAL!” For the initial daily logging version, though, I came up with an even better name: Ensign’s Log. It’s a captain’s log, but for the rest of us.

Keep an eye on that repo. I’d love to make this a profitable project one day, but realistically, I don’t see that happening. It’s far more important to me that it gets built and out there than makes money. And, maybe I’ll have more incentive to keep working on it if I know people can see when I’m slacking.

Moving Efficiently

21 August 2013

People who travel a lot have their own system: things to prepare in the days before a trip, everything packed in it’s right place, printout of the flight itinerary in a front pocket in case the luggage goes missing, and so on.

I have a system for moving, because I’ve done that a lot. I spent seven years in DC and lived in just as many apartments there. Then, we moved to Denver, and now, seven months later, we’re moving to Chicago. And I know exactly what to do.

Prep

  • Get rid of stuff. Lots of stuff. Start doing this a month before the move, because you have absolutely got a bunch of crap you don’t need. Donate it to Goodwill, and if it’s not stuff they’ll take, list it for free on Craigslist and it’ll be gone in no time. If it’s not even worth giving away, toss it. There’s a reason you never wear those torn up old jeans, and ain’t nobody else gonna want them either: get rid of ‘em.
  • Get boxes. When we moved from DC to Denver, we rented boxes from BungoBox: they have these big, re-usable plastic crates that they drop off and pick up. You rent them by the week, and they are awesome: they’re tough as hell, you can get them with wheeled dollies to move them around, and packing the truck is a breeze when all the boxes are the same size. Unfortunately, they aren’t in too many cities, and we haven’t been able to find similar services that are in both Denver and Chicago. If you can use BungoBox, do: it’s worth it. If not, go to U-haul and buy a crapload of boxes, focusing on small and medium ones (large boxes are useless for anything more dense than blankets). You can also look on Craigslist for used moving boxes, but the quality and quantity are a real crap shoot. Just buy new ones and take good care of them (easy with the markers), and then you can be the one selling used boxes on Craigslist for fifteen bucks.
  • Get some supplies. If you don’t already have some floating around from your last picnic, get a small pack of paper plates and plastic silverware, so you can still eat after packing up the kitchen. Get a shower curtain lines, rings to hang it, and a bar of soap (more on these later).
  • Stock the new place. If you’re moving within the same area and will get the keys to the new place before you show up with the truck, stock the fridge with some soda, beer, and bottled water. Whether you’re hiring movers, getting help from friends, or doing it all yourself, everyone will appreciate a cold beverage once the truck is unloaded. Also get some toilet paper, hand soap, and a roll of paper towels. You’ll get a chance to do a full grocery store run once the truck is unloaded, but you’ll probably at least want the option of using the bathroom before that if the need should arise.
  • Get a couple hundred in cash and find a safe place for it. This really only applies if you’ve hired movers: you may need to pay them in cash, and they’ll definitely appreciate a tip in cash. I like to put an envelope with the moving fee and tips in a kitchen drawer once the drawer’s contents have been packed (sssh), so I can find it easily once the truck is loaded and it’s time to pay up.
  • Make a list of all the places you need to change your address. USPS. Driver’s license. Car registration. Bank, credit card, and loan accounts. Lojack. National Bike Registry. Magazines. Amazon. Netflix.
    • Your free credit report is a great way to get accounts that you’ll need to change. It should list any loans (even if your student loans got sold all over the place like mine did) and credit cards (remember that card you got in college to get a “free” T-Shirt that you never use?).
    • If you use Amazon, you can use them to handle most popular magazine subscriptions. Then changing your address and renewing are dead simple.
  • Make sure you’ll have utilities at the new place. The practicalities of this one will depend on which utilities you will be responsible for. To be honest, I haven’t given much thought to water/gas/electricity at our new place in Chicago, because I’ve already got the DIY Comcast setup kit for the internet connection. So really, this step could be called Make sure you have Internet when you get there.

Packing

  • Start with books. Packing is one of those there’s-so-much-to-do-I-don’t-know-where-to-start kind of jobs. Start with your bookcase. You can make some quick progress and get the process moving. Besides, you want the heavy books at the bottom of the pile of packed boxes, so you may as well start there.
  • Mark your boxes. This should be a no-brainer, but I’ve definitely done moves where I didn’t bother labeling anything, and had the movers just dump it all in the living room. This was a mistake.
    • Mark boxes HEAVY if they’re over 50 pounds (that’s the limit that OSHA says could cause injury). You don’t want some overzealous friend lifting a seemingly small box of your pet rock collection, only to throw out their back. At least they’ll test it first or get somebody to help.
    • Mark boxes FRAGILE in bright marker and circle it 10^5 times. Unless you have professional movers, tell everybody to let you get those yourself. Your friends will thank you since they no longer have to worry about breaking your priceless collection of Star Wars figurines.
  • Pack a carry-on full of clothes and toiletries. Even if you’re moving to another place in the same city, just fill the carry-on. It makes sense to pack clothes in luggage anyway, and who knows how long it will be before you get the rest of your clothes unpacked at the other end. This is especially important if your move will include any overnights (like driving between cities), since you’ll need this bag wherever you spend the night. The front pocket of the carryon gets the shower curtain, rings, and bar of soap (remember those from earlier?), along with a towel. After unloading the truck at the new place, especially if it’s summer, you’re going to want to take a shower without having to tear into every box marked “bathroom” to make it happen.
  • Leave a crappy old bath towel and a trash bag in the bathroom of the old place, and leave the shower curtain liner up. Pack the decorative shower curtain, leave the plastic liner hanging. Whether you shower right when you get up on moving day, or after loading up the truck, the last thing out of the apartment can be a trash bag with a torn old bath towel, the old curtain, and the rings it hung from (those are cheap, just toss ‘em).
  • Leave your cleaning supplies accessible
    • You might need to clean your old place before moving out. A little elbow grease could save quite a bit of money in cleaning fees depending on your current lease.
    • You will also want to clean your new place before unpacking everything. Vacuuming an empty room takes about 30 seconds. Wiping down walls and stuff is much easier without furniture in the way. Focus on rooms with the most furniture, like your bedroom, living room, or office. Skip the bathroom, hallways, and kitchen since you probably won’t be any worse off in a month when you finally get around to it.
  • Make sure you know where your checkbook is. If you’re like me, the checkbook only comes out once a month for that one bill that you still can’t pay online. As such, my checkbook is just in a drawer somewhere, and would get packed in a box with all the other junk if I’m not careful. That’s a good thing to have close at hand during the moving process, just in case.

Moving Day

  • Get the last of your stuff packed up. The first time I moved after college, one of the things I unpacked was a trash bag containing whiteboard markers, some dirty dishes, and a disgusting George Foreman grill, because I had somehow failed to pack (or clean) those items, and a friend that was helping me move just tossed them in a bag. Whether you’re hiring movers or paying friends in pizza and beer, make sure all your stuff is packed and ready to go out the door before your help arrives.
  • Trust the movers. You did hire movers, right? As much as I love my friends and appreciate their help on previous moves, none of us do that kind of thing for a living. Pay someone who knows how to properly pack a truck, and who is insured in case anything gets dropped.
  • Moving yourself?
    • Think about how long you think it should take. Now add 6 hours… Don’t forget to plan for when you need to return the truck. You might need to quickly unload everything into your driveway/garage/sidewalk so you can get the truck back and not pay tons of money in late fees.
    • Moving trucks are generally much more expensive on weekends and the start/end of a month.
    • Forearm forklifts seem cheezy, but they work great. Even after you move, I’ve used them to move furniture around without dragging it.

Unpacking

  • Put together your bed first. I like to unpack as much as I can in the first day at the new place, but I always start with the bed. When I get to the point where I can’t possibly unpack another box, the last thing I want to do is shuffle around a bunch of junk so I can lay down the mattress that’s leaning against a wall. Our bedsheets are kept in under-bed totes that are easy to pick out among moving boxes, but you may want to stick those in your carry-on too, so that you don’t have to go hunting for them come bedtime.
  • Clean out the kitchen cupboards. Scrub ‘em before you unpack the kitchen, then maybe put down that contact paper, too.
  • Get furniture in place. I find it’s easier to shuffle the boxes around as needed to get furniture where you want it, and go from there. It’ll be easier than having a kitchen table buried under boxes, sitting where you want to put the couch. Or, opening boxes of books and having nowhere to put them because the bookshelves are buried behind boxes, and so is the spot on the wall where the shelves were intended to go. This step is a pain in the neck because it often means moving full boxes to and fro around the room, but it makes unpacking the boxes a lot easier.
  • Unpack the boxes. I don’t really have a system from this point. I tend to start with the boxes that are tripping me up most often and go from there.

Once you’re settled a bit

  • Take a lap with a screwdriver. Every apartment comes with loose towel racks and doorknobs. It’s the kind of thing people just stop noticing and learn to live with. Tighten those up before you get accustomed to a bunch of wiggly crap.
  • Take stock of the lightbulbs. Let’s be honest: CFLs are usually crummy, mismatched wattages look like crap, and one dead bulb in the bathroom or kitchen makes all the difference in the world. I like to just replace all of them to avoid the mismatches and take care of the dead ones.

Piece of cake, right? Enjoy your new home!

Jekyll Posting Interface

29 July 2013

I made myself a simple web interface to create new Jekyll posts. This is actually the first post that I’ve written in it, so let’s hope this works right. It’s rare for me to be away from my primary machine, but I thought it would be nice to have a web interface to create a new post from my phone…and I kind of just wanted to see if it would work.

You can see the new post form on my site, though you won’t be able to submit the form—or at least, it won’t do anything if you try to. I’m taking advantage of Github’s new file interface, so one needs permissions on my Github pages repo to create a new post.

The code for the form is pretty simple and pretty ugly, and it to is on in the Github pages repo. It’s just a title field, and a content textarea. A hidden filename field is set by Javascript on form submit. I’m not even using jQuery: the code is super-ugly, but it gets the job done, and that’s all I wanted.

The actual form doesn’t look half bad, because like any true developer, I threw Bootstrap at the problem to make it look at least a little bit OK.

If you want to try it yourself, grab new.html from that repo, and change the action attribute on the form element to point at your own repo address. You may also want to tweak the YAML front-matter that gets added at the end of the Javascript.

Update: The new file form in Github is a bit weird. If you don’t change either the filename or the file content, it will throw an error when you submit: “A file with the same name already exists. Please choose a different name and try again.” I’ve submitted a bug report to Github, but in the meantime, you just need to make a change, like add and then remove a newline at the end of the post.