Follow Join

PGannotations.js 11 years ago


  1. Copy and paste this code

  2. Pick your favorite PG blog that has linked annotations (go back as far as 2007 or 2008 I think) such as this one

  3. Paste the script into the console and press enter (for the uninitiated - you can just right or control click the page, hit "inspect element", and then click the console button, paste + enter)

  4. Click the number next to any of the footnotes. It will take you back to the passage from which it was referenced. YAY!

4a. If you're actually Paul Graham, just copy and paste this right after the body of your document

My two favorite writers who publish primarily on the Internet are Paul Graham and Bill Simmons. While they share share very little in terms of content topics, they do share one obvious common stylistic choice: the use of linked footnotes. I love footnotes - they're so much better for adding a second voice than parenthesis (see how annoying this is) and HTML adds the perfect system for footnotes - anchor tags. Just link the annotation to the footnote and the user is taken right where they need to go.

However, it has always annoyed me on PG's essays that his footnotes are at the bottom of the page, but the note itself has no link back to the passage from which it was cited. So I made myself a little script to fix it. It's pure JS, and just does some very basic DOM manipulation. It works all the way back to where he started adding anchor tags to his pieces. No more control+f'ing or scrolling back to find the right passage!

Just load it in to the console, click a footnote, then click the number next to the note and they'll flip you back and forth to the proper place. Click any footnote at any time and see the relevant passage it references. Seriously, it'd be cool if PG just threw anchor links in his footnotes, but for now this will do. I actually use this every time I read a PG blog, it makes a difference.

Let me know what you think! On the Hacker News thread On Twitter

I just saw all I needed to see about Windows 8 12 years ago

This morning I had a meeting with a client who loves his Asus touchscreen Windows 8 laptop. He loves it. He loves scrolling and clicking by touching the screen, loves the sleek design, loves the size, he loves it.

Except when it jumps to the Windows 8 "tile" screen for seemingly no reason. I work with computers for a living, and I could not for the life of me:

  1. Figure out how to make that happen with the touchpad or why it was happening randomly or
  2. Why you would ever want it to happen.

I was so excited when Windows 8 came out that I was seriously considering buying a Surface instead of the new Macbook Pro I desperately needed. But I've seen all I need to see.

Sometimes, you just need someone to slap you 12 years ago

Recently, I've had some mild success. I had a website appear in Time Magazine's top 50 of 2013, I learned enough Objective C to successfully ship a couple of iPhone Apps for a couple startups in town (still being tested internally), and I landed in what will be the highest profile technology project in my town (which isn't saying too much, but is cool). None of this is going to make me rich, none of this makes me deliriously happy, but coming off running a failed startup, it feels better than failing.

It also has people talking, a little bit at least. Getting freelance work has gotten tremendously easier, so much so that my roommate has quit his full time job to join me freelancing full-time. This has inevitably started the conversation - "Should we start a service company? Not a company that builds products and takes on projects to pay the bills, but a full on, innovation-centric service company". We could probably grow pretty quickly, get some cool people behind us, and make a living work for each other. What's more, in this conservative southern town, when you bring up the possibility of building a service company, there's no end to the support you'll get. It's the only thing people understand, and they'll get behind you immediately.

So I've spent the last week talking to people about the possibility of starting a service company and what it would look like, and got a ton of support, which of course feels great. Finally I got to the last person I wanted to talk to, the person I knew would give it to me straight. And he fucking lost it.

"What happened to all those conversations about creating real lifetime value for yourself, for others, being an innovator, being a creator! Aren't you already bored with this project work shit?"

And he was right. I am bored. I can barely start working on my client's work every morning, because there is so much bullshit involved. And the thing is, bullshit is fine when YOU'RE the person who can potentially benefit in the long term from the bullshit or when it's for something you really care about. But when it's not? It's terrible. I don't regret a single second of bullshit I put up with running my The City Swig, and I don't regret failing. It's the only thing I've ever done in my life that made me truly happy, even though a lot of the time it sucked. Only a handful of people in the world understand that, and you need to trust them.

I'm not starting a service company. I'm starting the startup I've been working on. More on that next time. Thank you for slapping me in the face buddy, I needed that.

Don't ask what language you should learn, just get started 12 years ago

One of the weird results of my journey from "non-technical" to "professionally" technical in less than a year has been how I've been able to convince so many other people to do the same thing. Convincing someone to learn to code is a classic example of where voice matters: when I say I went from knowing nothing to getting a job coding in 6 months, somebody with no coding experience sees a path to follow, whereas when someone with a CS degree says it, they see a bunch of bullshit. I take this seriously, and I spend a ton of my time advising and helping people get started with learning to tell computers to do their bidding (i.e. learning to code).

The biggest hurdle I've found is that most people who are learning code ALSO have friends who have been coding for years who confuse them with a bunch of shit that doesn't matter. The biggest one: spending three months asking What language should I learn first?

OH MY GOD IT DOESN'T FUCKING MATTER! Especially when it comes to server-side languages, the differences between learning Python, Ruby, or Php are just not that important. I personally suggest Python to a real beginner, because grasping the syntax is really easy, but that really only matters for the first week or two. Once you understand what an if statement does, you can Google the syntax of if statements in ANY language at ANY time and then you know it. The concepts are generally the same across all commonly used server-side languages, and while the specifics of each language will matter to you at SOME point, it's certainly doesn't matter now because you don't know anything.

You need to do the following: 1. Pick a tutorial to start learning what code is and how you write it. I recommend Codecademy, but whatever. 2. Learn how to set up a Dev environment with an IDE and something like MAMP. Google it or ask your friends. 3. Start building something, anything, and when you don't know what to do, Google it. Watch YouTube videos, copy other peoples code (but don't copy and paste, write it out), and go from there. 4. Ask other people for help, but with tangible questions because you're actually building something.

You'll be surprised how fast you know what you're talking about if you follow those steps. What matters isn't what code you learn, it's that you learn to code at all. Mastery and being picky about what language to learn comes later, just get started!

This is why you ship 12 years ago

When my company decided to make an iOS game, we all agreed it would be a good idea for us to work on. We agreed on the concept, agreed on the title, agreed on the logo, agreed on the font. We agreed. So we built it. It was hard.

Then we began disagreeing. Should we focus on making it simple for kids? Making it social? We couldn't agree, so we built both. But which do we ship? Which is first? It paralyzed us. We didn't ship for over a month. I personally believed we needed to ship the game as a social game, as did most of us, but we couldn't get everyone on board. So those of us who believed in the social track did a hard thing: we gave up, and we said "fucking ship it".

And we shipped it.

It was named one of the best apps of the day by (a huge site) and is being reviewed by others as I write this. It's the #18 paid educational game on the App Store after one day, and moving up fast. Everyone we talk to loves the social direction we built and it has the potential to make the game viral, but now instead of starting from 0 we'll have thousands of users to test it on and distribute it to.

Always ship. Always. Fucking. Ship. God damnit, SHIP YOUR CODE ALREADY!

HN discussion

Yes, programmers ARE speaking a different language 12 years ago

"Whenever I talk to programmers, I feel like they're speaking a different language."

How many times have you heard that? How many times have you rolled your eyes?

If you're not a coder, the most important thing to understand is this: yes, programmers ARE speaking a different language. Language is a form of communication that uses logic and syntax to convey ideas to another entity. In virtually all languages, there are multiple ways to convey that idea, but whatever conveys it the most clearly is considered the "best" way.

That is what we do. Attempt to convey our messages and instructions to computers in the simplest and most effective way possible. I'm not talking about any individual programming "language" here. In fact, the biggest mistake a rookie programmer can make is assuming there is one "language" they can learn that will allow them to do everything they want to do it. It's not like that. The many languages, processes, and systems work together to work like traditional verbal and written languages.

It's just like writing or speaking except, ya know, when what you're saying doesn't make sense the computer doesn't tell you that it does.

Follow me on Twitter Hacker News discussion

Don't copy and paste other people's code, type it out 12 years ago

(From my blog for my company)

If there’s one thing that hasn’t changed for me from the first day I started writing code until today, about my 500th day, it’s that not knowing where to start is incredibly intimidating. I acutely remember the panic of learning HTML and having no idea how to get my divs to go where I wanted them to go. The concept of setting up a grid system made sense to me, but the execution eluded me for days.

My relief finally came when I had the greatest realization of my young coding life: good lord, there is working code everywhere! It’s all over the internet! Just find it, copy it, and see how it works and you’re golden! I became a Google, “view source”, and “inspect element” maestro over night, learning structures and logics by reading other people’s successful executions. And for a while, this was all I needed. I needed to learn such basic things that just reading and seeing how other people’s code executed then editing it to fit my needs was the best thing for me. However, as my skills improved, I found myself lacking the skill to write code from scratch as elegantly as I wanted to. So I started a new system: instead of coping other people’s code, I type it out.

When Hunter S. Thompson was working as a copy boy at Time Magazine in 1959, he spent his spare time typing out the entire Great Gatsby by F. Scott Fitzgerald and A Farewell to Arms by Ernest Hemingway in order to better understand what it feels like to write a great book. To be able to feel the author’s turns in logic and storytelling weren’t possible from reading the books alone, you had to feel what it feels like to actually create the thing. And so I have found it to be with coding.

When I’m doing anything from executing a JQuery plugin someone else wrote to creating a static page in Python on a framework (like Cactus), whenever possibly I split the code onto one screen and my IDE on the other and type out the whole thing. It’s amazing how deeply I can understand the logic and any foreign syntax when I actually have to write it out. My mind has to actually narrate, like “here’s where they’re splitting the string, here’s where they’re parsing it, and WHOA! I didn’t know you could do that with Javascript!” when I undergo this process.

And it’s working. It’s awesome. I suggest you try it.

Nobody ever learned to become a great writer by reading a dictionary, you’ve got to feel it.

Follow me on Twitter Hacker News Discussion

Understanding and Combatting Coder's Block 12 years ago

(Taken from my blog for my company

It’s very hard to explain to non-coders how artistic coding really is. People who use software are constantly complaining about usability issues, but when they think about the code behind the software they think “it either works or it doesn’t.” That is not how coders think of coding, and the process of coding isn’t mostly about writing code that runs. Building software is mostly two things:

1 Staring at a blank screen with a goal in mind, such as “I need something that accomplishes x goal” and determining the best strategy to accomplish the goal.


2 Looking at something that already accomplishes a goal and determining how to accomplish the goal better.

The more experienced you are as a programmer, the more of your time is spent on those two things and the less that is spent on actually writing code. And in this way, it is almost exactly like writing prose or poetry. Great writers are really great at going from nothing to something in a way that makes sense and then taking that something and distilling it into its most elegant and clear form. Great writing isn’t the writing that uses the most obscure wording, it’s writing that keeps a coherent structure and conveys its message effortlessly in the readers mind. When a writer can’t conceive of how to do one of those two things, it is called writer’s block.

And this is where coder’s block comes from.

Coders block is when you’re staring at a cluttered homepage for your company and stop being able to conceive of how to make it simpler. When you have a five click application that needs to be two. A database that is running too slow, but a faster structure simply eludes you. You stare at your screen, you’re willing to work, but there’s nothing you can do: you’ve got coder’s block.

Interestingly enough, the way I combat coder’s block is by writing, and the way I combat writer’s block is by coding. Despite their processes being so similar, their implementations live in different worlds and speak different languages. When I’ve been writing code, all of a sudden writing in my native tongue feels easier. When writing elegantly becomes too difficult, solving a purely technical problem that actually has a solution (debugging) feels like a breathe of fresh air.

And the point of all of this is…… crap, now I’ve got writer’s block, off to write some code!

Tell me your solutions to coders block on Hacker News or on Twitter because I sure need them today!

I apologize for every unnecessary second a programmer has spent in a meeting because of me 12 years ago

Yesterday, I officially became a programmer.

About 2 months ago, I got hired as a programmer after spending a year going from non-technical co-founder to functional coder. However, I realized on my first day that even after learning to code and being hired as a coder, I still didn't feel like a programmer. I didn't know what I was doing! Building things is so different than writing code it's ridiculous. It has more to do with knowing the tools, picking the right one, and then being creative to make that tool work best for you project, whether you know how to use it or not. I had the last part down, but I knew NOTHING of knowing and picking the right tool. I didn't even know how to use Git!

I found myself looking forward to morning meetings, where my knowledge of strategy, product management, sales, and marketing made me feel like I was contributing. I took over the company blog, social media accounts, anything to help me contribute to the company during the day while I frantically tried to fill the massive gaps in my programming knowledge at night. Slowly but surely, I got better.

Then, yesterday morning I was given the task of taking an unfinished iPad app, reading through the code, and finishing it myself. Nobody else had time. Terrified, I spent the first hour of the morning ploughing through the code, testing things, and figuring out the moving parts. And then something amazing happened: I totally knew what I needed to do!

Which of course is the exact moment my boss took to call our weekly "all hands on deck" meeting.

Now my boss is a programmer too, so he hates meetings and usually keeps them short. For some reason, this meeting went on for an hour and a half. I spent the entire time squirming, ACHING to get back to my computer to start writing code to finish my app. Each second of the meeting felt like an eternity. And then I realized why programmers hate meetings: programming is about flow. So much of building apps is about how everything flows together, and most of your time isn't spent actually writing. Once you're ready to start writing, it is GO time and anything that interrupts that kills productivity exponentially.

After the meeting was over, the first thing I did is email all the programmers from my startup and apologize for each and every second they spent in a meeting that was any longer than it had to be. Then I went about crushing me some code.

Hacker News Discussion

Follow the journey on Twitter

Quick Reminder: Entrepreneurs don't care about tax rates 12 years ago

From Mark Cuban:

“Entrepreneurs who create something out of nothing don’t care what tax rates are. Bill Gates didn’t monitor the marginal tax rate when he dropped out of Harvard and started Microsoft. I doubt that any great business or invention started with a discussion or even a consideration of what the current or projected income or capital gains tax was or would be. Entrepreneurs live to be entrepreneurs. Entrepreneurs live for the juice of having a vision and fighting to see it come true, thinking ‘mission accomplished’, and the scoreboard of the financial rewards. I have never had a discussion with anyone about starting a business that included tax rates. If anyone that wanted an investment from me made a point of discussing tax rates as an impact on their business, I wouldn’t invest in them - ever. Honestly, it doesn’t matter what our Presidential candidates and their economic advisors come up with – it’s meaningless. The cure to our economic problems is the Entrepreneurial Spirit of All Americans. Instead of bitching at each other, could one Presidential candidate please show even the least bit of leadership and character and stand up for and encourage the entrepreneurs in this country? Could our candidates stop yelling at each other, start looking at the American people, and encouraging the best of who we are? That person is the one I want to get behind. The best time for little guys to start a business is when the big guys are worrying about surviving in theirs. You don’t need to raise money. You need to be smart and be focused. It’s up to entrepreneurs to start businesses and create jobs. That is the cure to this country’s economic problems.”


Love at first sight: writing code and my dog Tater 12 years ago

Last week I wrote a post entitled "When does learning stop being so hard?" where I argued that the process of learning, for learning to code and learning to play music, becomes incrementally easier as you are increasingly able to create things you yourself appreciate. I got a lot of feedback, but one common theme stuck out to me: people who said that coding was something they loved from day 1. This was a separate point from what I was trying to say, but an important one: if learning becomes easier only after painstaking work on the basics, how do you decide what you should learn? And then the answer hit me: my dog Tater.

Growing up, I wanted a dog more than anything. I grew up in the middle of the city of Richmond, Virginia, but I went to a suburban private school and none of my friends from school lived in my neighborhood. I was lonely a lot of the time, and I thought a dog would solve that. Just hearing the phrase "a boy and his dog" still gets me like the first 5 minutes of "Up". However, my mother (smartly) assumed if we had a dog the responsibility for taking care of it would fall all on her, and she didn't think she wanted a dog. So as a kid, I never had one.

Then, in October of last year during the darkest time of my entire life, my friend Andy posted this picture on Facebook

The dog on the left had just had babies, been kicked out of her house in Brooklyn, NY, and was on the streets for three days before Andy took her in. She needed a home. With everything I was going through, I felt like I needed this dog and she needed me: I was headed to Brooklyn.

When I imagined having a dog, I usually imagined running with it on the trails by my house or playing with a ball in the park. The reality was this: a 45 pound abused, scared, and TOTALLY untrained mom/puppy Pit Bull thrown into a new environment with no warning. This was going to take a LOT of learning, on both our parts. It took my three weeks to house train her (thought it was done in 2, but it turns she was just pooping my in my roommates bed for a week), more than a month to get the basics of walking on a leash, and 3 months before I could teach her to lie down on command and not to jump on people. This wasn't what I imagined.

But I never, not for one second, considered quitting on Tater. In fact, it's only now that I look back on it from afar that I even realize that quitting was an option. Why? Because the first time I met Tater, she jumped up on me, knocked me over, licked my face (a lot), and I was in love. Head over heels. I love that dog so much it makes me happy just thinking about her. In my darkest hour she saved me and in hers I saved her. There's nothing better than that.

And I know this sounds ridiculous, but that's how I felt the first time I saw code being put into practice. It was the day before the launch of my startup (yes, I didn't see the code under the day before launch, I was young and stupid) and we were having a problem: sorting for bar specials based on the time of the special wasn't working. It HAD been working, but now it was broken. After an hour, nobody could find the bug, so they brought me over for a new set of eyes. They explained everything to me: this is the function, these are the variables, here's where we call it, here's it in action, here's where it's breaking. I asked some questions and determined: there was a spelling error. There HAD to be. I find you find things in places you've already looked (like your keys, or code errors) only when you become absolutely sure that's where they are. And to my delight: I was right!

And it. Was. AWESOME! HOLY SHIT THIS IS MAGIC! I love this so much I want to do it all day everyday!

And that's the only way you can be sure of what you should learn: love at first sight. There will also be things you will COME to love, but the things you love from day 1: do them. Do them until you become great, especially when becoming great is hard.

Follow me on Twitter or [comment on HN] to tell me how adorable Tater is

Why not dying works:

The one year anniversary of sleeping in the freezing cold without power or heat. In the middle of a crime scene.
12 years ago

One year ago today was the lowest point in my life. This isn't a sob story, so I'll try to explain it as succinctly as I can: but there's a lot. There's a lesson, I promise.

Exactly one year ago I was on a couch with my dog struggling to stay warm in the midst of a brutal and horribly timed cold front in Charlottesville, Virginia. We had no heat, no electricity, and perhaps worst of all I was sleeping in the middle of a crime scene for an attempted murder: blood on the walls, fingerprint soot everywhere, the works. Two weeks before this, my house had been robbed, and my two roommates and our two best friends held at gunpoint for about 5 minutes. Eventually one of my roommates was brutally beaten and shot by the robbers (he's ok). In the weeks to come, I would spend all of money covering the expenses for my two roommates who had been in the robbery, my un-shot roommate would be in two car accidents and have his car broken into, I would be in 2 car accidents (both not my fault), and the co-founder of my startup would be falsely accused of a truly reprehensible crime (exonerated).

That's right: my co-founder. In the middle of all of this, I was running a just-launched startup called The City Swig, on a mission to reinvent the nightlife deals model. We had launched 30 days before the shooting and were seeing awesome user growth, but we were already facing huge monetization and fundraising challenges BEFORE the shit hit the fan.

But we weren't going to die. I had to stay in Charlottesville, it took us 9 months to get this son of a bitch launched and I believed in it. The worst part was that I had to pretend everything was fine. My co-founder was going through his own problems, and our other coders were working for free on my vision. Any chink in the armor, and everything could come to a halt. So I stayed in that house for over a month and a half and worked 10 hour days at the University of Virginia Libraries. It. Sucked.

So you can imagine that when Paul Graham calls the Airbnb guys "cockroaches" for how resilient they were, I chuckle a little bit before reminding myself not to be such an insufferable asshole. Those guys went through a lot. I did too. But do you know what: that didn't help my startup, and it didn't help Airbnb. It revealed their resolve, but they were on totally the wrong track with no traction before Paul Graham told them to "go to your users". And they did. Paul Graham and Y Combinator gave them a shot, gave them direction that helped them get lucky, and let awesomeness take over from there. THAT is the story. Their resilience was to get THAT chance, but they were not successfully iterating and getting traction before that moment.

Think about this: what if Airbnb was as bad an idea as it seemed? The story would be the same story: just with a different ending. But if you're smart and have an idea that COULD work, if you don't die you'll buy enough time to figure it out. That's what it is. That's it. That's why YC focuses on smart and ideally resilient founders.

And so it was with The City Swig. We ultimately "failed" in a different way: Virginia's ABC Board unexpectedly shut down our plan to get Ramen Profitable after an Angel had helped us out with a house to code in for the Summer of 2012 (yes, we made it that long) and we decided to pivot. We're now working on something else based on what we learned about our users from The City Swig. But we still need to find some luck (yes, it's something you find) or someone to believe in us for us to get to the next level. Resilience alone doesn't cut it. You need it, but it's not sufficient.

You need to not die: not because not dying helps, but because it's more likely you'll get lucky or find someone to buy you the time you need to only need to get slightly less likely. Discouraged? Don't be. Try not dying for a year and half and you'll never look at yourself the same way again. Ever.

Follow me on Twitter Let me know how you try not to die on HN

How to get on the front page of Hacker News (in 7 lines of Python) 12 years ago

import togreatcontent
import datetime, isgoodtime
def frontPage (yourcontent):
    if isgoodtime == True:
        print "Wait until later"

Traceback (most recent call last): File "", line 1, in ImportError: No module named togreatcontent

Wait, there's no "content" module in Python? I thought this shit was magic?

Do we really need to hack Hacker News? The answer for founders launching their startups is yes, and Hacker News will respect your attempts to reach the front page and upvote your new venture. For individuals though? Why don't we get this out of the way and never speak of it again: post at a good time and post great, relevant content.

Hacker News is the little corner of the internet where legitimately interesting content rules the day. Where comments are helpful and interesting, despite an upswing in negative and myopic comments. Where the heroes who blazed the path for us new founders actually hang out and actively seek to help and give advice. I'm not sure all the "Get on the Front Page of Hacker News" posts really belong.

I've been on the front page twice: for my startup and on this very blog yesterday. But after I got there yesterday, I didn't instantly try to think about how I hacked my way on there. I just think the blog was interesting to some people. In fact, this post was inspired by this title last night not actually reaching the front page.

So let's keep the advice for getting there at this: post at a good time. 7:30EST, 10:30EST, 5:00 EST, or 8:00 EST and write, share, or better yet BUILD interesting content. That's it. Don't try to game it any other way.

And you know what? The front page will find you. Trust me. It will. That's what it's for. If it doesn't, unless it was for the launch of your startup, go back to the drawing board and write or find better shit.

follow me on twitter

Hacker News comments

When does learning stop being so hard? 12 years ago

As the non-technical co-founder of, I realized that no matter how hard I worked, when the product at it's core needed fixing or changing, there was nothing I could do to push the company forward. Sure I could go out and talk to more users, offer customer service, attempt to make sales leads, but ultimately when all of those things were relying on updates to the service, I was a founder who at his core could not help my own company.

So about 6 months ago I made a decision: I would never be a non-technical co-founder again. I was going to learn to code. I started building a simple website, doing lessons on Codecademy, and finally trying challenges on r/dailyprogrammer. I do this about 1-2 hours a day, more when I'm really into it.

1 problem: this shit is HARD! My programmer friends seem to love writing code and learning new coding techniques, and while I find the pursuit endlessly fascinating and occasionally rewarding, this beginning stage seemed mostly to just, well, suck. A little discouraged one day a few weeks ago, I finally wrote a simple game in Python that I felt was elegant and actually kind of fun. Then I realized why this had been so frustrating: I couldn't play interesting music yet.

When I was 10, my family got a piano from my Aunt in North Carolina that she didn't have room for anymore. I fell in love with it immediately. I had to learn. So my mother signed me up for lessons from someone who turned out to be just about the best teacher in the world (which luckily nobody knew at the time). And for 2 years, it sucked. Luckily, I don't quit things (basically ever) so I kept at it, but it was like pulling teeth.

Then one day, I finished learning a piece that I really loved. I actually liked this song. Holy shit! I could play something I really enjoyed! Then about a year later, I could learn things other people found impressive. Then I could learn any piece of music, given enough time. Then I learned the building blocks of writing songs. Then I wrote songs. Then I wrote songs I loved.

It was when I wrote songs I loved that it stopped being hard at all. I now spend hours, days pouring over Beatles song charts trying to understand the chord and melody choices they made and then putting them into my own songs. When I pick up a new instrument, most notably the guitar, I know the building blocks so intimately that learning how to play it isn't hard: it's fun. If you locked me in a room with a bunch of musical instruments for 3 days, it wouldn't be torture: it would be heaven.

And so it is with programming. Now that I can design basic websites and write basic code, learning new things is finally seeming mildly exciting. When I can actually build parts of the things I imagine, it will become fun. When I can build the whole thing, it will be awesome. When I can do it fast and at a high level, then I'll be the one drinking beer until 4 in the morning writing code instead of playing guitar.

Follow me on Twitter Comments on HN here

Note: this was written 6 months before it was posted. I've now come to a point where I can play things I enjoy playing, and coding is geting a lot more fun!

Beg HN: Stop Being So Condescending 12 years ago

I have a simple request: when you have the urge to post a comment like "oh, it's so quaint that you/people/the public thinks thing x, they're so short sighted and stupid not to see that it's y" pause and reconsider.

Presumably you're on Hacker News because you either want to build things that a lot of people will use and love or you're interested in people who do. Demeaning rather than attempting to understand then inform people who don't see the world the same way as you is antithetical to that cause.

So please stop. It makes me sad.

Feel free to tweet at me or comment on Hacker News if you think I'm being ridiculous and uninformed

(EDIT: this has been thrown off the front page of HN for whatever reason. I'm guessing the admins thought it was upvote bait or fluff, which I can understand. Probably the best possible result so that some people saw it to think about but then didn't clog up the front page, keeping more interesting content off)

My First Pivot 12 years ago

My name is Tommy Nicholas, and I am an entrepreneur.

While it’s impossible to say exactly when I became an entrepreneurs, my father likes to explain it by telling a story of the day my friend Pete and I went missing. We were five years and I was visiting him in Fairfax, Virginia during the holidays, when his mother decided to take a nap while watching us. She woke up to find out we were gone. For the next two hours they searched everywhere looking for us, only to receive a call from Pete’s Aunt Elenie, saying she had found us in the nearby strip mall parking lot.

His mother, of course, rushed over to pick us up, only to find us sitting on the ground with a pitcher of lemonade and a sign that said “lemonade: $1” (Pete was a remarkable speller for his age). When she asked us what we were doing, we said “we wanted to sell lemonade, but people just kept taking pictures of us, so we started charging $1 to take our picture. We made $11!”

It was my first company and my first successful pivot.

Follow me on Twitter @istommydrunk

What Color Shutting Down Teaches Us 12 years ago

"Wouldn't it be really cool if everyone did this?" is not the question you should ask yourself when building consumer facing applications. I'll leave it at that.

Codecademy Doesn't Fall Short: You Just Don't Understand What It Is 12 years ago

    Codecademy is fucking great. I've read too many criticisms of Codecademy, trying to explain why Codecademy isn't the most perfect tool for creating  coding masterminds capable of leaping tall single-page web apps in a single bound. That's not what it is: it's a tool, a starting point, and a great one at that. Before Codecademy, I was just a lost non-technical co-founder astounded by the magic my technical co-founders for []( were producing. Now, I understand the process behind what we're making and even contribute to debugging or logic problems. I can even write some decent code from time to time!

    However, what I can't do is look at a problem on and solve and implement it 100% on my own. I always need to ask at least one question to someone who knows better in order to get me over some barrier. Finishing the Codecademy courses on Javascript didn't, by itself, make me a functional Javascript hacker. OF COURSE NOT! It's not that easy! YOU THINK THIS IS A GAME???

    I am functionally able to create and design web and mobile pages now, but only because after spending 2 weeks trying to write my first page on my own, I paid my technical co-founder in beer for an entire night to walk me through all the problems I was having. Then he had to answer my emails every day for a week. Then once a week. Now once a month. I'm not too proud (now) to say I needed that. I needed to be that kid that annoyed me in middle by constantly asking questions that seemed stupid to me: every question seems stupidly easy when you already know the answer. And when it comes to non-HTML/CSS coding, I still have those questions. A lot of them.

    And this is where Codecademy, and in fact virtually all instructor-less education, will always "fall short": **there are too many variables involved in functionally learning how to do something to guess what the problems will be ahead of time**. I think this is where people get frustrated: I finished Codecademy, why am I not a sick programmer now? Sorry bro: there's a few more steps to go yet. Codecademy will ALWAYS be a supplemental or starter tool, one that necessitates interaction with other resources and, ideally, other mentors and teachers. **And this is a good thing:** because Codecademy is incredibly useful, and trying to be more than it is would diminish that usefulness. 

    I could have never started on this journey as frictionlessly as I did without Codecademy, and beyond that it's great for spending an hour every day learning or refreshing your knowledge when you otherwise have no reason to do so. Keep it up Codecademy, you guys are my everything! 

HN discussion [here]( 
Follow me on Twitter [@istommdrunk](

Major Social Networks I've Adopted and Why 12 years ago

I am desperate for feedback on why people feel they first adopted major social networks, so I wanted to get the ball rolling by posting my own experience. If you feel the urge to post your own, please do so here!

Name: Tommy Age: 24 Adoption Pattern: Mid-Adopter (just after early-adopters) Professional Biases: Startup Founder and successfully used social networks to promote my bands for years

Myspace: Notifications. Coming home from school everyday and seeing a new Myspace notification was like getting a phone call you knew was for you every day. However, unlike the phone call, it was entirely possible that it was a hot chick, or a new friend with something exciting to share. Notifications had me addicted to Myspace from day 1.

Facebook: Photo Tagging. I'll be honest: I use Facebook, the app, to look at pictures of my friends. Photo tagging took photo aggregation to a new level, allowing me to have hundreds of photos on my profile from all my photo-happy friends. On Myspace, those photos stayed on their profiles. On Facebook, they spread like viruses. The minute I saw photo tagging was the moment I knew I was done with Myspace forever.

Twitter: SMS posting. I'm torn between this and "a better RSS feed", but ultimately the ability to easily post mobile messages from my dumb-phone (before my iPhone days) had me, and I would posit millions of others, hooked. The ability for celebrities to have followings without having to follow back is what started Twitters widespread adoption, but its move into being a social network for the population at large was facilitated, in my experience, by the ability to reach out to the world at any time and at any place. Especially when I was bored. With the widespread adoption of smart-phones, this is no longer a unique feature, but at the time it was and that set Twitter apart.

Instagram: Toggle to share on Facebook and Twitter. If the iOS camera had toggle to share to Facebook and Twitter buttons, I never would have used Instagram. To this day I don't care about the Instagram social network, and for all the hype about hipsters and filters, Instagram is really just the best way to take pictures on your phone and share them to Facebook and Twitter.

Those that I didn't adopt, but do occasionally use.

FourSquare: Mayorships. Mayorships are a brilliant way to tie the entire FourSquare network together in a competition for ownership of the things people know and love. Checking in is a waste of time (albeit a good time waster) without mayorships, nobody cares about the points. It turns out, seeing where your friends are at any given time wasn't a compelling use case, but Mayorships (and now discovery) is.

Path: Design. Dave Morin is right: Path's competitors are SMS and Email. I use them for everything I could use Path for. However, I come back for the design. I love to look at it, I love to use it. If my 5 best friends were on Path, I'd use it all the time.

And finally, the most prominent one I tried and hated ...

Google+ - Circles don't matter. They never did. "I want to share something, but I'm 100% certain only a few people will care about it" is a rare an not compelling use case. Plus, we have SMS and Email for that, as Dave Morin points out. "Sharing, like in real life" is what REALLY kills me: who wants real life? Since when did we want the Internet to be like real life? Google+ was trying to be Path for a Facebook sized audience: and that was stupid. However, I think their strategy is actually not about this but providing a social layer for their other products. I think whether you share directly on Google+ or not is going to increasingly become immaterial to them. Only time will tell.

(This is a re-post edited from feedback I received. I really intend for this to initiate more responses: this is information I think we all take for granted but I feel it's extremely important to know why YOU adopted these networks)

A Plea to Facebook: Make a Way to Authorize Non-Spammer 3rd Parties to Send Messages 12 years ago

Facebook, I implore you, beg you, plead with you: we, 3rd party developers, need a way to send messages as our users.

For all the crap you've gotten over the last few months (or even years), there are still many of us who believe in your mission to provide the social layer on which great applications and services can be built. Not having to reinvent the social graph is the greatest gift you could have given us: we're now free to just built services of great value without having to worry about unproductive chicken and the egg problems.

However, there's just one problem: any service built on Facebook that requires or allows users to notify each other on Facebook, rather than in-app, requires that this be done as a wall post. And for good reasons! Messages are sacred, private messages between people, and spam would ruin that. Further, spam is much more likely to be properly dealt with when it is out in the open and public.

However, there are some incredibly worthwhile services being built where users NEED to be notified and will be happy when they are, but putting it on the wall feels weird and MORE spammy than sending a message and in-app notifications are insufficient. A service that posts on your wall looks like it's doing it to publicize its existence, but what if it would actually rather let you interact with the app privately, eschewing any benefits to the app for a better user experience?

I'll give you a great, real life example I'm working with: a social payment application where anyone can pay any of their Facebook friends for anything simply by choosing the friend and sending a payment. The friend is then notified that they have money waiting for them, and if they sign up on the network they receive the money and will receive only a notification on the network itself from then on.

However, that first message HAS to be posted on their public wall. We NEED them to know they have money waiting (have you ever had PayPal neglect to notify you and then lose the money? I have, and it blows) but we don't want even the barebones of money related information being posted publicly, even the fact that they money waiting for them. We're attempting to set this wall post to be viewable only by the person on who's wall it appears, but even that isn't possible.

Here's what I propose: a system for authenticating apps that are legitimately valuable and allowing them a more flexible Facebook Open Graph API. I submit it to the Hacker News community for comments and how they would like this work.

Follow me on twitter @istommydrunk