Skip navigation

Looking for me? I’ve made a new personal site, at the much less clever but definitely easier to guess http://www.aaronnemoyten.com

You should probably go there instead.

Please, go there!

I mentioned on a Reddit thread that I had met Rick Rubin and somebody asked me for the story, so I wrote it. It was long enough that I figured it was worth saving in a blog post. So here it is!

There was this band called The Matches who used to produce their own shows in Oakland. They had a lot of buzz – they had just released their first album, which they had funded and recorded themselves in someone’s mom’s basement with a friend, and had gone on a national tour on their own dime by calling in favors from bands they had booked at their shows.

So Rick Rubin shows up at this show in this weird little venue in Oakland with a bunch of his friends. To watch the Matches, and possibly sign them, and possibly consider working with them on an album.

He actually stood in the audience for a bit, in the sweet spot in the middle of the room about halfway between the front and back. A friend of mine, also in a band, introduced himself to Rick and said he really admired his work. Rubin thanked him in a tone of voice that sounded as if he had never received a compliment before – “Thank you, I really appreciate that!” He sounded totally genuine. (Even when my friend told him, “You’re my second favorite producer, behind the Neptunes.”)

Eventually, he wandered upstairs to check out the “control room,” because the venue broadcast all shows online and that was totally unique – this was around 2004!

I knew a lot of people in that scene at the time (including the guys in the band), so I was able to just walk into the control room shortly thereafter. Thing is, I was on the level where I could go into the control room, but not at the level where the main guys in the control room would bother to introduce me. So I just stood there awkwardly. I had another reason to talk to the guy who ran the venue (related to my own band), but I was just using that as an excuse.

I was standing near the entrance. Rick got up to head back downstairs, and was about to squeeze past me to exit. He saw that I was looking at him and didn’t know what to say, so he just stuck out his hand and said enthusiastically, “Hi, I’m Rick!” I was taken aback, so I weirdly said “I know,” laughed, gave him my name, a REALLY awkward pitch for my band, and a folded up piece of paper that had our web site address on it. He was polite, said he would check it out, and that was that.

I’ve only met a few celebrities, but I gotta say, Rick Rubin was a class act. He was really nice to everybody, very polite, and basically the way he comes off in interviews. No wonder people like working with him!

I guess I’m doing this every two weeks instead of every week!

This last Saturday, I attended YCombinator’s Startup School 2016. Rather than write about that, I’ll talk about it a bit in my next update video. Or I may make two update videos.

I had two major changes over the last few weeks, plus some minor ones.

The Big Refactor

Finally started the not-undoable massive overhaul of the app to support multiple bands. This includes a new band selector screen, different login flow from a user perspective, and changes to the player/user/session systems, order of loading data, and lots more.

The biggest change is that the app goes from knowing it needs all the data about one band right at startup, to having to wait until login to be told what bands are relevant. This also means that I have to plan for much larger data sets to be loaded incrementally – we don’t want to be loading ten thousand venues and a thousand bands at startup if the user only cares about a few bands and their tens of upcoming shows.

I also had to rewrite a bunch of code to be aware that there may not be a “current band” because the user might be in a state where they’re selecting bands.

I left the app in a semi-working state at the end of last week, and I hope to finish this all within the next few days. Refactoring is fun, and/or I’m a masochist.

Upgrading XCode and Swift

Upgraded to XCode 8/Swift 3. Ripping the band-aid off!

One of the major changes is that the compiler is now much more strict about Optionals. I don’t remember the specifics, but the compiler is so helpful about telling you what you’re doing wrong that remembering the specifics isn’t necessary anyway.

There was a non-trivial amount of work because of changes to handling of AnyObject and the addition of the Any type. Basically, I need to cast JSON data that comes back as AnyObject to other formats earlier in the process, and appropriately use the Any type whenever possible. A whole lot of this:

let chats = json["chats"] as [AnyObject]
for chat in chats
{
    self.chats.append(Chat(data: chat as [String:AnyObject]))
}

That cast to [String:AnyObject] didn’t used to be necessary because I could just pass an AnyObject to Chat.init(data:) and read properties from it directly. No more!

I’m okay with this change because it actually makes things much more clear.

I’m also glad that this no longer causes a compiler segfault:

methodName(anyObject["some_property"] as AnyObject)

The minor changes

  • Real-time RSVP updates are now working, including properly removing people from the list if they cancel
  • Set up Redis and Celery to support offline processing of tasks like…
  • Saving shows and marking them as Ready to Promote will now automatically create scheduled push notifications to all fans of a band about the show. Updating the start time will appropriately update the push notes (well, update is charitable… it deletes them all and makes new ones). Big thanks to OneSignal for making this easy.
  • New chats for a given band will trigger push notes for all users who follow that band. This is throttled to every ten minutes so it’s not TOO annoying. (I’ll add some client config to turn this off at some point before full launch.)
  • A bunch of custom Django admin stuff to make sure bands can only edit their own information and shows.
  • Added change tracking for Shows and Venues. I want bands to be able to edit Venues freely, wiki-style. In order for this to work, of course, I need to have past update info available.
  • Created reusable view for lists of fans in tables for RSVP, check-ins, etc.
  • App now handles when no future shows are available instead of crashing
  • Updating HockeyApp settings, tokens, app name, etc.
  • Added a skinning plugin called NUI, played with it a lot, used it to find a good look, and then deleted it because it’s not worth keeping now that I know what I want everything to look like!
  • Making the “beat” interval (how often the client pings the server to get new chats and other updates) configurable via the server
  • Spent a ridiculous amount of time wrestling with Framework config, Cocoapods, etc. This stuff is not that hard, but if you do something wrong and don’t notice, you can end up spending a lot of time fixing your mistakes.
  • Finally fixed a bunch of possible weirdness with saving off device-specific push note ids when a player accepts push notes on a new device or a device that previously had a different account associated with it.

That sounds pretty productive, right? Once the major refactor is completely done and I’ve got a logo ready, it’ll be time for Private Beta. Awesome!

 

Hey, it’s my first post on Medium!

Check it out here!

I had planned on doing these “git commit” summaries every week, but I took last Friday off to spend time with my fiancee, so this update’s going to include everything since my last one!

  • You can now take a photo of your pretty face and set it as your profile photo. No support for importing other photos or images (this is deliberate)
  • Adding support for an RSVP system
  • Added a widget that displays RSVPs for upcoming shows and checked-in users for the current show. It updates in basically real time, so profile images will appear as people are checking in or RSVP’ing. Pretty sweet.
  • Initial work towards supporting all bands in one app (rearranged a bunch of stuff on the server)
  • Added a Feedback button with my email address and phone number
  • Added support for when there are no upcoming shows (so the app doesn’t just crash)
  • Shows can now have an optional name and description
  • Integrated MixPanel so I can have analytics
  • A ton of refactoring, new Service classes, stuff like that. I’ll do a technical post about this at some point when it’s more stable.
  • I spent a bunch of time working on build configuration. I learned how to set up multiple builds and created an AppConfig class that used compiler directives to switch config details depending on build flags. I compiled to TestFlight, which is not a great option for beta testing because Apple wants to approve everything. Then I compiled for HockeyApp, which is a lot easier to build for but harder to add new testers because you have to update the provisioning profile for EVERY SINGLE DEVICE. Basically, beta testing on iOS is a pain in the ass no matter what.
  • Also set up a Heroku account… not quite as easy as they make it sound to get an app up and running when it was already configured to work somewhere else!

Not quite as much raw stuff, in terms of app bullet points. Some of that was because I was working on market research and surveys, and some was because stuff like profile photos, RSVP’s, and Heroku setup took up to a day each.

In other news, I’ve been accepted to YCombinator’s Startup School 2016. If I have enough of this app done by then, I may build a special Startup School version and release it before the event.

A bit late on posting this here, but here’s my latest video blog. This time, about “why” I’m doing this, from a more personal perspective.

Posted a new video blog yesterday about validating my idea!

Enjoy!

I quit my job to build an app and start a startup!

It’s been a few weeks and I’ve been posting updates to Facebook, but today I feel like updating my WordPress!

According to my git commits, here’s what I did this week:

  • Check-ins are now associated with shows instead of venues (obvious in retrospect)
  • If there’s a show happening right now, the app will get a list of all checked-in users and flag them when they participate in chat.
  • Users can now change their display name via the Settings/Profile screen
  • Added support for different types of shows (IE regular show, secret show, appearance w/o music, invite-only shows, etc.)
  • Added a leaderboard to the app that fetches on app startup but can be reloaded via pull-down-to-reload pattern
  • App now knows which users are band members so they can be highlighted in chat
  • Refactored all client and server request handling code to use JSON for client requests (previously was url-encoded string, which was working until I needed to send an array!)
  • Added “heartbeat” code that automatically grabs chat and check-in info every ten seconds. It’s generalized so that any frequent updates can be added and broadcast to the rest of the app using a notification pattern.
  • Added support for push notes via OneSignal, including storing push note data on the server so I can support server-side push notes later. (Later meaning tomorrow, when I hope to get them working!)
  • Added client support for loading band info at startup (future support for multiple apps running on the same server)
  • Updated top-bar layout to user prettier (and smaller) font
  • Completely refactored app startup sequence into a service separate from controllers (should have done this in the first place!)

Whew! That’s a lot for one week, but I still had a bunch of other stuff going on (errands, etc.) so I definitely could have done more.

Plus, I wasted a ton of time on push note stuff before implementing OneSignal. I didn’t realize that OneSignal handled the whole PN prompt process from the start!

One thing I want to note that I did last week that I’m really proud of is lazy loading of user info in chat. Basically, I don’t want to send player info along with every chat message because that’s hugely inefficient. Here’s my solution:

  1. Chats from the last week are sent to the client on startup along with player info.
  2. Leaderboard data is always sent on startup, and it includes the top 250 users. It’s safe to assume that these will also be users who chat a lot. Player info from the leaderboard can be used to populate player info in chat.
  3. Chat info loaded from the ‘heartbeat’ (IE after startup) is sent only with player id and message. The client matches up player ids to existing in-memory data, compiles a list of player ids from chat that it doesn’t have data for, and sends that list back to the server to get info for JUST those players.

This guarantees that the client will only ever load player data for new chat participants, and the server doesn’t ever have to send redundant player data along with “heartbeat” chat data.

Whew, that’s it for now! Tomorrow I’ll tackle server-side push notes and then hopefully go see Star Trek Beyond!

What is up with video card naming?

I’m having trouble getting Skyrim to run well on my work laptop, which by all accounts should run the game just fine.  In researching what I can do to fix the problem, I just read that Skyrim requires “GeForce GTX 550 Ti or GeForce GTX 260, or above,” which means nothing to me because the numbers don’t consistently count up and I have no idea how “GTX” fits into the general scheme of things.

It’s like saying that the fruit required for a good fruit salad is “nectarine and up.” Am I supposed to hold a stack ranking of all possible fruits in my head?  “Oh, of course, so that means no grapefruit or banana…”  No wonder people just give up and buy a new computer when new games don’t run well anymore.

Is this an intentionally opaque industry practice, or simply because marketing departments like to name graphics cards like luxury cars? For instance, there’s such a thing as the Lexus ES 300, but I don’t know how it compares to other Lexus models, or other luxury cars, or really anything for that matter.  At least non-luxury cars let you make a mental map of just a few key models and then put the year in front of it. That allows me to immediately compare the cars, provided I know the hierarchy of Corolla/Camry/the third one that is clearly more expensive.

Of course, this is why people can usually remember how Apple products stack up, because there are only a few and they’re updated roughly every year.  So a 2012 Macbook Pro 17″ is better than a 2011 Macbook Pro 17″ (for example), or a Macbook Pro is better than an iBook, and that’s the entire product spectrum.

But graphics cards.  What’s available right now?  Let’s take a look a the Desktop GPU’s on the NVidia page:  http://www.geforce.com/hardware/desktop-gpus

Five pages of esoterically named products.  Each of them has a really fancy marketing description, like “GeForce GTX 760 is a powerful, feature-rich graphics card stacked with advanced gaming technologies …” Well, great, but how the hell do I compare that with “Turbocharge your gaming experience with the GeForce GTX 750 Ti. It’s powered by first-generation NVIDIA® Maxwell™ architecture…”

I don’t know how to choose these, except to pick a price and then read reviews and rankings based on price range…  which is exactly how to choose a car in most cases.  I want $30k worth of car, what’s the best I can do?  It needs to seat four people and have reasonable trunk space, and also I would like to minimize the chance of it exploding in an accident.  Hit up Consumer Reports, make a judgement call, etc.  If that’s the process for video cards (replace Consumer Reports with Tom’s Hardware or something similar), then there’s no point to the names or descriptions of any of the cards.  All that matters is how much it costs and whether or not it’s going to crash or explode.

What I’m really saying is, I wish graphics cards were named like cars and then updated every year.  What if there were just NVidia Fusion, Dynamo, and Vertigo (in ascending order of price), and then a luxury brand with three more models?  Then, just add the year to the name, and suddenly I have context to make a better decision!  Wouldn’t it be easier to figure this all out?

Now if you’ll excuse me, I’m going to go spend an hour trying to get my NVidia NVS 4200M to run Skyrim…

Isn’t it easy to dislike popular music? More than movies, more than books, more than video games, mainstream music seems to be the most often dismissed of the major forms of entertainment. Every year, every hit single, and every new I-V-vi-IV song that enters the Billboard chart and stays for more than a few seconds is a reason to be annoyed at the state of popular music.

But why music? The magnitude of the complaints about the film industry pale in comparison. Even the most cynical of moviegoer may have a guilty pleasure Michael Bay explosion-fest that they admit enjoying some of, if even just for a few minutes.

I propose that the reason that music is the form of entertainment that receives the most cynicism is that people consider an enormous amount of extra cultural information when consuming it in a way that they don’t do to nearly the same degree with anything else. I am mostly referring to 20th century music, which for cultural reasons tends to be subjected to much more scrutiny than earlier music.

Perhaps it’s because the music industry itself has focused so much on the performers or writers, how they look, what they wear, and their biographies. It’s easier to break down someone’s barriers to enjoying (and purchasing) music when they are already aspiring to or identifying with the performer. The problem with this strategy is that it can backfire for some percentage of the potential audience.

For example, imagine switching the songs of Hanson and Tenacious D. The boys (now men) of Hanson can sing, they can play their instruments, they can harmonize… Tenacious D and Hanson both harmonize over acoustic guitars, and both groups’ break-out albums were produced by the Dust Brothers.

These groups singing each others’ songs, especially when Hanson had their initial success, would have been really weird. Can you imagine those three boys singing “The Greatest Song In the World”? Can you imagine Tenacious D singing “MMMBop”? The answer is probably no, because you’ve invested meaning in Tenacious D singing their songs, and you’ve invested a different meaning in Hanson singing their songs.

So what happens when a non-target listener consumes the music of an artist they can’t identify with? If you’re like me, you have to fight the urge to judge the song based on all the cultural baggage that comes with the artist just to appreciate the melody, or the lyrics, or the production, or the musicianship.

Here’s a list of cultural reasons not to like a song:

  • The singer has behaved badly in public
  • A band member looks like somebody we would expect not to like or get along with
  • The band/artist’s image seems to have been generated by a committee of music industry robots
  • Some of the artist’s music seems to advocate or glorify bad behavior
  • A band member is originally famous from another industry
  • The singer comes off as unlikeable in interviews
  • The band wears makeup or silly outfits or is otherwise intentionally unfashionable
  • The band’s “image” seems to be composed of ideas entirely taken from a previous generation
  • The band’s music has changed over time and they are now 100X more popular than they used to be
  • The band is popular but has a reputation for attracting fans who are younger and dress differently than you

Even when we aren’t culturally predisposed not to like something, it’s easy to focus on specific qualities of the song or arrangement that, in isolation, seem like Bad Things. It’s even easier to focus on these things when we’ve spent a moderate amount of time and effort in writing our own songs, getting to that phase of artistic output where our ear has outpaced our ability to create. Everything we make isn’t good enough, so we judge our own creative output harshly, and then hold anything else to impossibly high standards that can only be met by our already-favorite artists.

Here’s a list of reasons not to enjoy a song:

  • Melody is confined to one or two notes
  • Chord progression is the same for the verse and chorus
  • Chord progression is only four chords for most to all of the song
  • The singer’s voice is annoying or off-key
  • The techno drums are inappropriate
  • I recognize a melodic sample that underlies most of the song
  • The song is too similar to another song I know and like better
  • The singer’s voice is similar to the voice of a singer I know and like better
  • The main riff is repeated too often
  • The musicianship seems sloppy

Unfortunately, putting down other peoples’ taste in music is easy and somewhat addictive. It feels good. It makes you feel superior. And knowing that a song used a chord progression out of Songwriting 101? That makes it so much easier to make an official ruling on the Objective Measurement of Song Suckiness.

Of course, it also means that you’ll find reasons to dislike every band that has ever existed. Melody is confined to just a few notes? You can rule out some really good John Lennon/Beatles’ songs. Musicianship seems sloppy? There go the White Stripes. Singer sounds too similar to another singer? If you liked Radiohead first, then gone are Muse and Coldplay. The techno drums seems inappropriate? A lot of great songs from the 90’s, well, now They Suck Too. Chord progression is the same for the entire song? Well then, Leonard Cohen’s Hallelujah must Also Suck!

You get the idea. There are a million reasons not to like something. It’s easy, fun, and disgustingly enjoyable to be cynical, to run around the musical circle playing “suck, suck, goose,” cursing most things and damming the rest with faint praise.

The truth is, though, there’s only one reason that matters: Do you enjoy listening to the song? When you stop judging it based on any individual factor, when you take in the whole, how do you feel? Do you want to tap your toe? Do you want to bob your head? Do you want to sing along? Did the song paint a picture or evoke a distant memory? Did you shake your head, remembering a relationship that went bad? Did you smile, thinking fondly of your girlfriend, boyfriend, wife, husband, or other kind of significant other? Did you want to dance? Did you want to cry?

And if you did any of those things, what does it matter that the singer is a jerk? If you liked the song, who cares if, on close examination, it’s actually very similar to another song that was less popular 20 years ago?

Honestly, though, I can’t always turn off the judgemental part of my brain. That’s just how I am. Through practice, though, I have learned to ignore it. It’s still harder to turn it off with music, especially popular music. It still happens in film, too, but generally only when I’m not enjoying the movie anyway. I try to absorb myself completely in the world that the film is creating, and only if that continuity is somehow broken (by the movie itself or by real-world distractions) do I tend to start thinking of the movie as the sum of its components rather than the whole… and that’s what makes it easier to pick it apart.

I almost wrote a paragraph that sounded like a television advertisement for a new drug: If you find yourself judging and deconstructing music or any other kind of entertainment, ask yourself… etc. Then I realized, that’s just me judging everybody else (judging things), and that’s not good either.

As far as I see it, the truth is this: With access to services like Spotify and Pandora, there’s no reason for music-lovers not to consume as much music as possible. Discover new things, use the Related Artists feature in Spotify or listen to an entire unknown song you’re not so sure about in Pandora before you give it a thumbs-down.

Use your ability to deconstruct to find elements you do enjoy in songs you would otherwise not enjoy. Appreciate the production in a pop song you don’t like, or the emotion from the voice of a singer who can’t hit their notes. Focus on the musicianship in metalcore or the ridiculous amount of patience and technical knowledge that went into a dubstep track.

There’s always a bucket list of media yet-to-be-consumed that some friend or critic or academic recommended. If you love music or film or video games or any kind of entertainment, consume as much as you can. You won’t regret enjoying it, and if someone tells you it sucks and you shouldn’t like it, that’s their problem.