Menu

Sanspoint.

Essays on Technology and Culture

Antisocial Calendaring

There’s been a wave of new iOS calendar applications that promise to make calendaring “social,” showing you who you’ll be meeting, where you’ll be meeting, and do it all by integrating with your assorted social networks, primarily Facebook and LinkedIn. I gave three of these apps a try, though by “try,” I mean I installed them and deleted them within the space of five minutes. The first, Tempo lost me the minute I saw it had a reservation system, akin to e-mail app sensation Mailbox. Perhaps I’m a little old-fashioned, but I don’t like waiting longer than the download process to use an app. If your app isn’t ready to handle the load of new users, your app isn’t ready, period.

The second app, Sunrise, lasted long enough for me to sign into it with my Facebook account, only to discover that it didn’t integrate with the native iOS calendar, only with Google Calendar. While I’m wary of using Facebook to sign into anything, not being able to view the pre-existing calendar events on my own phone was a deal breaker. Deleted. A similar app, UpTo, had the same problem. Deleted.

After three application failures in a row, I backed up and rethought the whole thing. Why the hell does my calendar have to be “social” anyway? There may be some value to this in a business environment where you have specific meetings with specific people, but that’s what the event name and notes fields are for, yes? “Meeting with Bob from Sales” is enough information for me. I don’t need a picture of Bob, the ability to view his LinkedIn profile, or anything beyond knowing when the hell I’m meeting with him and why. Having a calendar access my social networks to view calendar events is useful to a point, but even with the Facebook integration in iOS and OS X, I find myself just manually adding the events I’m going to a calendar rather than rely on the global Facebook Events calendar, but then again, I get a large number of event invitations on Facebook.

This takes a lot of gonads to say, especially since I work for a social network, but not everything needs to be “social”. Back when I was exploring task managers in the days before Things.app had sync, I tried out Wunderkit, a task manager that was also its own social network. The idea boggled my mind. Whose task list am I going to follow? Why do I need to follow it? At work, we use Trello to manage projects and tasks for our various teams. It’s invite-only, and while I’m not exactly fond of it, Trello is clearly designed to be a group task service. It’s networked, but it’s a-social. There’s value in services like Trello, Campfire, etc., for small organizations to get things done, but they work best as an overview of what’s on the team’s plate. It’s up to the individual to manage their own tasks at the individual level.

Ultimately, I’m a believer in software that does one thing really well. To wrench this back to calendars for a moment, the only calendaring app that wedges in secondary functionality I’ve seen that remotely compels is Horizon, which integrates a weather forecast. But, my phone has a perfectly reasonable weather application that is literally a gesture away. It’s not hard, and I’m not pressed enough for time, that I can’t pull down the Notification Center and see if the weather is going to be crap.

“Social” features are an easy way to differentiate your app from the mass of similar apps in your class. There’s only so many ways you can cleverly display a calendar, show tasks, read e-mail, et cetera. Differentiation is hard. Facebook integration is easy. [1] When it comes to calendars, the one that still stands above the rest is Fantastical. Why? Because it is extremely easy to put something into it, and extremely easy to get something out of it. Launch the app, click the plus symbol, and type out a simple phrase: “Meeting with Bob in Sales at 2PM next Thursday,” for example. Fantastical knows how to parse that, and makes it easy to add it. Boom. Done. No muss, no fuss, no Facebook, and no waiting in line. If someone can find a way to make calendaring better than that, I’d like to see it. Really. Just a tip: making it “social” isn’t going to do it.


  1. Well, I’ve never used the Facebook API, but I’m sure it’s easier to code for it than it is to come up with a new, groundbreaking feature.  ↩

Whittling Down the Musical Backlog

My name is Richard J. Anderson, and I have a problem. I have a huge music collection, and I’ve barely listened to any of it. I have a Smart Playlist in iTunes for all music with a play count of zero. It contains 90 gigabytes of music. 90 gigabytes. That is a lot of music. This happened because I am, by nature, a completionist. I want complete discographies of my favorite artists, including singles, B-sides, and live albums. I gravitate towards extended versions of albums, special editions, bonus tracks and bonus discs—even for artists and bands I’m just starting to get into. Now, I’m in a crippling music debt, and Crush On Radio isn’t helping.

I’ve decided to whittle away at this backlog, slowly but surely. It’s starting with an official moratorium on new downloads—excluding picks for Crush On Radio. It’s a little thing, but it keeps the problem from becoming increasingly, exponentially, worse.

The second part is to sit down and actually listen to the music. I’m accomplishing this with a pretty simple setup: a Smart Playlist of unplayed tracks, and LaunchBar. Since iTunes handles playcounts on a track-by-track basis, it’s impossible without scripting to pull a list of complete albums with unplayed tracks. Instead, the Smart Playlist gives me a visual overview of what is sitting in my library, and I summon the complete album using LaunchBar.

If there’s a missing element to this, it’s music on the go. I’m willing to think in depth about solving this problem, as I have a short commute and mostly spend it listening to podcasts over music. However, the basic framework for a solution is in place here, starting with another Smart Playlist, this one of music that I’ve added to my library in the last two weeks. This gets synced with my iPhone and iPad—whenever I think to sync—and gives me the freshest music in my library.

Handling the archives of unplayed material is going to be trickier. I’ve found some scripts that can help pull and generate playlists of albums, but I’ll still have to winnow those playlists down to fit on a 32GB device, and nestle alongside apps, books, and my evergreen portable music collection.

Remember, that’s 90 gigs of music. If they ever put out a 256GB iPhone and iPad, this would be less of a problem.

Finally, there’s the hardest thing to do for any music fan: culling. Typically, I cull music from my library only when I’m upgrading an album to a superior version. I don’t need two versions, for example, of Frank Zappa’s Hot Ratswhen the 2012 remaster is so much better than the previous version. I have music in my collection that I’ve picked up with the full intention of listening to so I can see if I will like an artist or band, only to put it aside. I need to isolate those albums, play them, and decide if they should stay or go.

I’m probably never going to have a music collection small enough to use iTunes Match, or not need an external hard drive, or cause iTunes to take several minutes to launch. That doesn’t mean that I shouldn’t know what’s in there, listen to it, and have only things in it that I enjoy.

What to Learn, What to Build

So far, my grand attempt at learning web programming has been a refresher course in stuff I know. The basic semantics of coding, variables and functions, for and while loops, data types and arrays—these are things I learned and was taught, but it never hurts to go back and brush up when you’ve been out of practice. The language I’ve been learning, through Codecademy’s free lessons is JavaScript, a simple language and a good place for me to start as not knowing it is a gaping hole in my skill set. The plan is, once I have a grasp of JavaScript, to learn jQuery, which is how a lot of the neat animated and dynamic stuff happens on websites these days.

After that?

I see two choices for what language to learn: PHP and Python. [1] I already have some grounding in PHP, having designed WordPress themes and built a database driven site from scratch, albeit a poor one. It would be an easier place to start. Python, however, compels me as the company I work for uses it as the basis for their product. It would make me extra valuable to be able to not just point out bugs, but possibly go in and fix them. Another tool in the utility belt. The jury is still out, however, on which. (Suggestions appreciated, provided you can back them up.)

The other question is what to build. The first thing that comes to mind is to go back and rebuild the blog/database site I wrote in PHP so many moons ago, this time done right with objects and frameworks to make the code maintainable and logical. Whichever language I use is secondary. The important thing about building something is that it is truly learning by doing. A virtual classroom and instruction only can take you so far up the Dryfus model. Working outside of the classroom and figuring things out on your own is where the action happens.

For now, however, it’s classroom study and review. And patience.


  1. Cue the wailing and gnashing of teeth on the part of the Ruby programmers.  ↩

Learning to Write Code All Over Again

When I went off to college for the first time, I was set on studying Computer Science. The plan was to learn how to program, and maybe get a job creating video games or even start my own video game studio—a dream shared by almost every geeky teenager in the early 2000s, I suspect. Three semesters later, I decided English was more to my liking, and that the higher math required in a CompSci program was beyond my grasp. My grades in CompSci weren’t great either. I passed my first course by the skin of my teeth, and begging my professor to regrade a misgraded assignment.

I got started with programming like many people my age, with QBASIC, though my first real exposure to programming as a concept came from Apple II LOGO in grade school. In QBASIC, the furthest I got was discovering how to write trippy graphical screen savers using random number generators and drawing primitives on screen. In 8th Grade, I got ahold of a copy of Microsoft Visual Studio 6 that, er, fell off the back of a truck. [1] In high school, I switched to Visual Basic, thinking it would be the best step up from QBASIC.

There were two pet projects I had in high school. One was a simple game: “Whac-A-Mac” where the player had to click to smash Macintosh computers that popped up on screen in the style of Whac-a-Mole. I completed this, but it was a bloated, ugly mess. The next project was “NerdQuest,” an RPG inspired heavily by System’s Twilight, a Mac-only puzzle game. This never got off the ground. My understanding of how to do graphics in Visual Basic was non-existent, as illustrated when a friend offered me the code to his isometric graphics engine that he wrote in Visual Basic. One look at the code made my head hurt.

I had exactly two successes as a teenage programmer: a Visual Basic database-based app on the various animal kingdoms I wrote (barely) for a High School biology class, and teaching myself TADS, the Text Adventure Development System. Ultimately, I focused on learning HTML and CSS, with a tiny bit of JavaScript, and enough PHP to design WordPress themes, and be dangerous. I did, with help from a book, write a very basic PHP and MySQL based blog and database for Booji Boy’s Basement, but after a previous webhost was hacked, I lost the source code.

Lately, however, two things have me thinking it might be a good idea to try and learn how do program again. The first is that I am now part of the technology startup economy, albeit in a non-programming role. [2] The other is listening to tech podcasts like the now defunct Build and Analyze, Back to Work, and Quit!. Regular topics of discussion on all of these shows has been learning to program, working for yourself, or changing your role in a job to a technical one—and doing so without expensive education.

The barrier to entry to a programming job has been lowered, significantly. If you have the chops, and have the code to back it up on GitHub, you can find work. Xcode, the tool used to create software for the Mac, and iOS, is free. To become an iOS developer costs $99. There are free and paid classes on how to program in the languages that make our modern tech go, including JavaScript, jQuery, Python, Ruby, and Objective-C. It couldn’t hurt me to learn. So, the other day, I downloaded Xcode, installed a Python development environment, and reinstalled MAMP, with the full intention of getting back into programming, at least as a hobby. We’ll see how it goes.


  1. There was a minor underground economy of software trading in my middle school, which was also a high school. This was back in the days when the fastest home internet connection was a 128kbps ISDN line, and BitTorrent didn’t exist. It was a miracle we even had these CDs of Photoshop 7, Bryce 3D, and Visual Studio floating around.  ↩

  2. Creating e-mail newsletters involves no programming. It’s simply HTML and CSS, albeit HTML and CSS done with standards circa 2002. Thankfully, I haven’t needed to use spacer GIFs. Yet.  ↩

NYC Chief Digital Officer: upgrading a subway system is a lot harder than restarting a router

The Verge interviews Rachel Haot, NYC’s Chief Digital Officer.

One more thing to love about my city of choice: We actually have someone who is in charge of the technology side of things in more than just the IT sense. The Verge‘s interview Rachel Haot is essential reading for techies, urbanists, and both. She brings an interesting perspective to the infrastructure side of things. They also talk about how she actually gets stuff done without getting bogged in implementation details. I like that.

And the sooner we get Wi-Fi on the subway, the better. No voice service, though, please. People on the trains are loud enough already.