Category: development

  • On Manly Men

    I’m tired of what scared man-children are doing to my industry, to social media, to my country and to women. It’s self-defeating. It’s wrong. It’s violent and it’s cowardly.

    SO… Men. Stop being cowards. Stop treating people like crap. Stop threatening them. Stop lashing out like toddlers having tantrums because you’re afraid for no reason. Stop making up reasons to be scared and start living.

    Look at your behavior. If you really think that threatening women, doxing them, swatting them, demeaning them, pushing them out of your communities because you’re threatened by them… if you REALLY think that makes you a manly man – you’re an idiot.

    Being a manly man means being comfortable with yourself and not being threatened when someone else wants the same.

    Being a manly man means being courteous, debating on the merits and not throwing tantrums when someone else wants a turn to speak. It also means admitting when you’re wrong.

    Being a manly man means not being afraid of people who are different just because they’re different. It means being curious and adventurous – and not afraid to treat people like you want to be treated – or better, how they wish to be treated.

    Bullies aren’t manly men. Bullies, at their core, are afraid and have to use intimidation and violence to project power. But, they have no power. Once a bully is outnumbered, he’s just a coward again.

    Be a manly man and welcome everyone into your communities. You’ll find you’ll have more fun, learn more, and your community will be stronger for it.

    Let’s make stories like this one a thing of the past.

    And in case you’re confused, there’s nothing wrong with being a man. There is something wrong with thinking that your gender means you’re somehow entitled to affection, attention, recognition or leadership. If you really believe in a meritocracy, you’ll judge people by their results and not by what they look like, how they worship or where they’re from – and that means untangling centuries of bullshit about ability, the meaningless signifiers of “success” (for example, all our presidents have been men, therefore to be a good president, you have to be a man – or the funny bit of trivia that almost all Fortune 500 CEOs are white men over 6 feet tall). Just because historically, someone hasn’t been allowed to do something doesn’t mean they can’t. And just because this is how we’ve done it in the past doesn’t mean that’s the best way going forward – especially if it’s a cultural affectation that doesn’t actually have anything to do with the outcome.

    So, being a man – it’s not bad. But, it’s not the only thing. Being kind is more important than your gender.

  • Importing Rdio Playlists (and Your Collection) Into Google Music

    My beloved Rdio is dying, and soon. They ran out of money, sold all their assets in a fire sale and have given their users about a week to find a new music home. I tried Apple Music, but quickly ran into limitations (song limit, my patience with their awful UI, horrible apps for importing songs, etc). Asking around, it looked like Google Music was the next best option.

    And then the problem was, how to I get almost 5 years of musical history from Rdio into Google Music? All those favorites playlists from 2011-2015, the road trip playlists, the special occasion playlists… all of those will just disappear.

    It took a lot of experimentation, but I found a way to export my playlists (and entire collection) from Rdio to Google Music. Here’s what you need (sorry, this is going to require some Terminal time):

    • First, you need to install the Rdio Enhancer Chrome Add-on.
    • Sign up for the Google Music free trial.
    • Install gmusic-playlist – it’s a python library for interacting with Google Music. It has some dependencies, so you’ll need to follow the README instructions carefully.

    After you’ve gotten those installed, you need to do the following to save your playlists and collection in a format that’ll work with the importer:

    • Go to Rdio in Chrome.
    • Click Favorites.
    • You should see an Export CSV button. Click it. Depending on the size of your library, this could take a while. It’s going to generate CSV files for your entire collection. My 35,000 song collection took 3 CSV files, and about 5 minutes to generate and download them. Chrome will probably ask you if this site can download multiple files. Say yes and wait for all of them to download (15,000 songs per file).
    • Once you have all those files, it’s time to do playlists!

    For each playlist you want to save:

    • Click its link in the left nav bar.
    • Click the 3 dots in a circle button (next to the share button), then “Extras”, then “Export to CSV”.
    • That’ll download another CSV file.
    • You should open up each CSV and delete the first line (the header) or you’ll end up with “Did She Mention My Name” by Gordon Lightfoot in all of your playlists. If that doesn’t bother you, go ahead skip this step.

    Now that you have your collection and all the files you want to save, it’s time to set up the gmusic-playlist importer. After you unzip it, open the folder and then open preferences.py in your favorite text editor and make the following changes:

    • username should be your google login email address.
    • Change the track_info_order line to look like this: track\_info\_order = \['title','artist','album','trackNumber'\] (the only change is to change “songid” to “trackNumber”).
    • Change allow_duplicates to True.
    • Change search_personal_library to False.
    • Save the file.

    Now you can follow the gmusic-playlist directions to import all those CSVs. Google Music has a limit of 1,000 songs per playlist, so your collection will be broken up, but at least you’ll have all your songs!

    Update: I tried to like Google Music. I really did. But, it has some fatal flaws:

    • Their new releases page is bad and not updated with actual new releases.
    • There’s no social at all. It’s awful.
    • The Web UI is just broken enough to be really frustrating, and all the web apps for it are hamstrung by the web’s brokenness.
    • They do very strange things with explicit lyrics.

    So, I was going to update this post with instructions on how to import your official Rdio export into Google Music, but… don’t do that.

    I’m trying out Spotify Premium again for the first time since I started using Rdio, and they’ve paid attention. Social is better. Sharing is better. The queue is persistent between sessions. They have more music than Rdio did, or that Google Music has. Their new releases page is actually mostly up to date.

    Instead of using this process to import things to Google Music, use the official Spotify Rdio Import tool. It takes about five minutes and works really well.

  • Dealing With Your Kid’s Email: A Nerd’s Approach

    My kids both have Google Ed accounts for their school work, which comes with an email address. Some of the parents in the school’s Facebook group were asking how to set up the school email account on their phones, which feels like overkill to me. I don’t log in to my kid’s email – I just have all of their incoming email forwarded to me (which I then filter to get it out of the way so I can read it later).

    And here’s how to set that up if you’d like to do the same thing!

    • Go to Gmail and log in as your kid.
    • Click the Gear icon on the top right side of the page and click Settings
    • Click on the “Forwarding and POP/IMAP” tab.
    • Now click the Add a forwarding address button.
    • Put in your email address that you want emails forwarded to and click Proceed.
    • It’ll send a confirmation code to your email. Grab that and put it in the verify field.
    • Now click the radio button next to Forward a copy of incoming email to…, select your email from the dropdown and then choose keep Gmail’s copy in the inbox from the second dropdown.

    And there you go. Now you’ll get all your kid’s emails in your inbox. Lucky you!

    Now, for bonus points, filtering. I have a ton of filters to keep my inbox nice and clean, and my kids’ emails have their own filters. Here’s how to set one up:

    • After you set up email forwarding, you’ll start getting emails to your kid in your inbox. You need one of those to start with. It doesn’t matter what it is as long as your kid is one of the recipients.
    • In the search box at the top of GMail, search for to:yourkid@whatever.com (replacing “yourkid@whatever.com” with their actual email address).
    • Once the results come up, click the More button and choose Create Filter.
    • The To field should be filled out with your kid’s email address, so go ahead and click “Create filter with this search”.
    • This is where things get fun. Here are the settings I use for my kid’s email:
      • Label it with the kid’s name.
      • Skip the Inbox
      • Mark it as read.
    • With those settings, they never hit the inbox, but, I have to remember to check it periodically, so it’s probably a good idea to leave them in the Inbox to start and not mark them as read – just apply the label.

    That should help you keep up with your kid’s school emails without going crazy! Good luck!

  • Learn to Code By Cheating

    My kids love Cookie Clicker. And, only because they can’t stop talking about it, I checked it out. My 14 year-old told me he’s figured out how to cheat at the game so bad that he basically ends up with “infinity cookies”.

    Wait, let’s step back. The game is weird and silly and involves clicking a big cookie to get more cookies. You can buy upgrades like cursors that click cookies for you, grandmas who bake cookies for you, all the way up to time machines that go back in time and bring you cookies that before they’ve been eaten – and you purchase all of these with cookies that you, wait for it, click.

    Back to the cheating. The game is all done in Javascript and all done in the browser, so it’s really fun to mess around with things and cheat – and learn some Javascript fundamentals while you’re at it (and even some jQuery). There’s even a page on the Cookie Clicker Wiki dedicated to cheating. You’ll notice that all of those cheats are Javascript functions. Here’s one I wrote that is a little longer than the one on the wiki, but makes me happy because it’s all object-notated and is called cookie_monster:

    <code>var cookie_monster = {
      gimme:function() { 
        Game.ClickCookie(); 
        setTimeout("cookie_monster.gimme()", 1); 
      }
    };
    cookie_monster.gimme();</code>
    

    That’s all broken out so you can see what it’s doing. Here it is if you want to just cut and paste it into the Javascript Console in Chrome (the browser made for cheating):

    <code>var cookie_monster = {gimme:function() { Game.ClickCookie(); setTimeout("cookie_monster.gimme()", 1); }}; cookie_monster.gimme()</code>
    

    Basically, the cookie\_monster.gimme() method clicks the cookie and then sets a timer to run itself again in 1 millisecond. That ends up being a lot of cookies per second. It also unlocks a bunch of achievements, which is cool (but still cheating).

    And here it is as a bookmarklet: Cookie Monster. Just drag that to your bookmarks bar, and click on it while you’re in Cookie Clicker and the cheat will magically start running. I love Javascript.

    I’ve been talking to both of my kids now about Javascript and how we can more efficiently cheat at the game, which I think is awesome. If I can get them to think of programming as a game, then I’ve already won.

  • My TEDxCreativeCoast Talk is Up!

    [hang2column width=”560″ height=”315″]

    That’s my talk on learning to think like a hacker from this year’s TEDxCreativeCoast. It was the most nervous I’ve ever been before a talk and the most pressure I’ve ever felt for a talk. I think it turned out OK…

    I’d love to hear your thoughts on it!

    [/hang2column]

  • Recent Realizations

    • Being CEO means making decisions all the time. You don’t always have time to think about them and not making a decision is actually making a decision.
    • The more decisions you can let other people make, the better. The trick is knowing which ones you can afford to delegate.
    • I still have a lot to learn about the business side of things, and not a lot of time to learn them.
    • I miss writing code full-time. I miss the order of write, test, debug, repeat. Management is unpredictable and messy.
    • Comfort Eagle is Cake‘s best album.
    • There’s a fine line between thinking about a problem and wasting time.
    • I wish there were more British-style quiz shows in the US. I’d watch the hell out of a US version of QI, 8 Out of 10 Cats or Mock the Week.
    • The code I’m most proud of from the past 12 months has got to be my OAuth2 server. I looked at it again today after not seeing it in a while, and it’s gorgeous. Most code I’ve written disgusts me if I go back to it 6 months later.
    • Savannah is the perfect town to wreak creative havok in. It’s the right size where one person can make some real change happen if they set themselves to it (or even if they half-ass it like I do), and a great creative community that’s easy to “infect” with good ideas who will either jump in and help or at least cheer you on.
  • Two Things

    Real quick, before my brain falls out of my head.

    • I launched this. It’s still very new and so very not finished, but you can start to get an idea of what it will turn into and how awesome it will be. We’ve got 10x the number of songs that Pandora does, super awesome technology and we’re just getting started. It’s radio, but awesome!
    • I wrote this. It’s about how those of us already living in the future can help those stuck in the present (or in some cases the past). I’m still looking for the right way to say it all, and am looking for help. So, read it and let me know what you think.

    There you go. Two things. Enjoy!

  • Ficly and Creative Commons: The Power of Open

    [hang2column width=”250″]The Power of Open book cover[/hang2column]

    I’ve been a huge fan of Creative Commons pretty much since they launched. If you don’t already know, Creative Commons provides several ways for you to license your work that expressly allow people to use it in certain ways. It’s sort of copyright** – allowing folks to do things with your work that they might not otherwise be able to do legally without a lot of complicated legal wrangling. For example, there are tons of CC-licensed photos on Flickr. Depending on the license, you can use those photos for non-commercial work as long as you provide attribution, all the way to mashing them up in any way you want with absolutely no restriction. This blog has been CC-licensed since the beginning of Creative Commons. All of my photos on Flickr and presentations are too.

    But, this post isn’t about my blog. It’s about Ficly (and ficlets, may it rest in peace). Back in 2006, when we first started working on ficlets, I wanted everything to be CC-licensed. Part of the motivation for that was so we could use share-alike licensed photos from Flickr. The other reason was that the share-alike license perfectly fit the premise of the site: anyone can add sequels or prequels to your stories. It took a lot of convincing to get the AOL lawyers to sign off, but after they did some digging, they realized that they didn’t have to do any work writing an additional Terms & Conditions document for the site, since the Share-Alike Attribution license (for the sticklers, out there, I think ficlets used by-sa 2.0) covered it all.

    A few months ago, someone from the Creative Commons reached out and said they were writing a book of case studies of sites that use CC licenses and asked me if they could interview me. And of course, I said yes! Well, I’d totally forgotten about it until I got an e-mail that the book, The Power of Open is out now, and my little interview made the cut! You can download the PDF from the site, buy a copy for yourself, or just check out this screenshot of the page about Ficly.

    I’m proud to be a part of it, and proud of the ficlets and Ficly communities for creating and sharing almost 70,000 stories with the world.

  • Come Work With ME!

    We’re hiring! We’ve got a ton of work to do on an awesome new product and I need help!

    What am I looking for? Someone who “gets” working in a startup. You’ve got to understand the pressure involved and time required to launch something and the crazy stupid optimism to believe it will succeed (even if it doesn’t). You’ll be smart, creative and willing to do the right thing even if it seems a little daft at the time.

    So, here’s what we’re looking for:

    And the best part? We’re right in downtown Savannah above Leopold’s Ice Cream and close to everything happening around the heart of Savannah. We’re fun to work with and are working with some amazing technology. If you’re interested, check out the postings and apply (please)!

  • What’s the Point of Twitter?

    I’m twitter user #3,404. I’ve been a daily twitter user since before it had vowels, so I’ve seen it grow from a fun little experiment to a platform with a lot of promise to the behemoth it is today. How I’ve used the service has changed over time, but it seems like more and more, I use it to complain. And from the folks that I follow, they’re doing the same.

    Yeah, we use twitter to celebrate victories, share breaking news, and keep in touch – but it feels like the vast majority of tweets from the people I follow are sarcastic land mines – and mine are too. It’s too easy to pop open my twitter client and unleash my righteous indignation at the latest outrage perpetrated by the internet. Sarcasm is easier than productivity, encouragement, enlightenment or even humor. It’s to the point that a great percentage of my vocabulary exists only to express sarcasm.

    But, it’s not helpful. It’s not even all that much fun. It’s mostly annoying and makes people more likely to be sarcastic and annoying themselves.

    So, I’m going to try to stop. My challenge for myself this week is not to post any sarcastic tweets. None. Zero.

    Wish me luck. It’s going to be so hard.