https://blog.charlieguo.com/Ghost 0.11Fri, 02 Nov 2018 07:02:00 GMT60Several weeks ago, I sent out an email to the Y Combinator internal mailing list. I use a read receipt tool for most of my emails, which pings me when and where an email is opened (assuming there's location data available). Within the first 24 hours, the email had been]]>https://blog.charlieguo.com/the-power-of-the-yc-email-list/95292d60-7c2d-433b-bd5e-2d4113c09a9bWed, 17 Dec 2014 18:32:38 GMT

Several weeks ago, I sent out an email to the Y Combinator internal mailing list. I use a read receipt tool for most of my emails, which pings me when and where an email is opened (assuming there's location data available). Within the first 24 hours, the email had been opened over 500 times. The long tail ended up being another 500 or so in the following week. I'm still getting an alert every now and again.

500 impressions in 24 hours! That might not seem like a huge amount, but considering these are all very intelligent founders who are generally willing to help, that's a lot. Certainly that's more quality impressions than I would expect to get out of posting a question to Facebook.

Just as impressive were the diverse set of locations that the email was being opened in. Obviously there were a lot of California cities and towns, but it very quickly expanded beyond that range. Within the United States, it reached Virginia, Washington, Illinois, New York, Hawaii, Michigan, Tennessee, Massachusetts, New Jersey, Oregon, Texas, Utah, Idaho, and Arizona.

Outside of the US, I saw opens from Canada, the United Kingdom, Israel, Portgual, India, France, Germany, Switzerland, Spain, Denmark, Korea, Hong Kong, the Phillippines, and Italy. Again, only within the first 24 hours.

And this was only those locations that I was able to get data on. For every open alert with a location attached, there were several more that weren't able to determine the user's location.

It’s hard to appreciate how truly diverse the YC network is. At this point, PG et al have funded over 500 companies, meaning the YC network now includes over 1,000 founders. Assuming a minimum of 50 companies per batch, that means YC is creating at least 200 new alumni every year. That might not seem like much, but it’s a really good starting point considering YC’s ambitions to become something more akin to a university than a corporation. Not to mention that Sam Altman appears to be working on ways to scale YC beyond its current carrying capacity of ~50 companies per batch. Recent evidence would indicate that he’s doing an okay job – the most recent YC batch was more than 80 companies. Assuming they got to 100 companies per batch, they would be inducting 400 new founders per year – definitely comparable with small (but high quality) liberal arts colleges in the US.

]]>We were walking around downtown Mountain View when Paul Graham (PG) gave us the news. “If this was a class in college, I’d be the professor warning you that you’re in danger of failing.”

We already had our suspicions, but he confirmed them. We were in YCombinator, and

We were walking around downtown Mountain View when Paul Graham (PG) gave us the news. “If this was a class in college, I’d be the professor warning you that you’re in danger of failing.”

We already had our suspicions, but he confirmed them. We were in YCombinator, and we were fucking up.

Let’s Rewind

Three months before that conversation, my cofounder Kevin and I were busily preparing for our YC interview. We applied with a programming education idea, with the tagline “Codecademy on steroids.” I had countless friends who were nearly finished with their CS degrees, and yet struggled to take their ideas from concept to finished product. I wanted to help them bridge that gap.

I had known Kevin since the start of college, but it wasn’t until our final year that we started working together. We were a solid team, a designer/developer combo. We had a plausible idea (or so we thought). So we applied to YC because, well, it seemed like the logical thing to do. After spending nearly two decades as a professional hoop-jumper, my choices were a) go to grad school, b) work at a big tech company, or c) attend a prestigious startup accelerator.

The Interview

Despite the fact that YC interviews are supposed to be grueling, we emerged from the interview room relatively unscathed. The partners (Garry, Kevin, Michael, and Geoff) questioned our business model and our ability to execute, but we had convincing answers. It wasn’t until our second interview that I understood why people called YC interviews grueling[1].

With a completely different set of partners (PG, Jessica, Trevor, and Robert), we had a completely different interview experience. We tanked. At one point, PG let out a long sigh and rubbed his forehead. “You’re halfway through your interview and I have no idea what your company does. This is not good.” I remember Jessica Livingston giving us a look that I could only interpret as total pity. We left dejected.

So you can imagine our shock when they told us we were in[2].

Impostor Syndrome

We were elated. Briefly. What should have been a very positive mindset quickly turned negative. For the first time in my life, I had impostor syndrome.

Impostor syndrome, if you’re unaware, is the belief that you do not deserve the success you have achieved or the position that you have reached. It’s the notion that, despite evidence to the contrary, you are just lucky, well-timed, or a convincing impostor. Amongst a cohort with more experience, confidence, and traction, I felt like a total fraud.

From the outside, it might have looked like I was crazy to feel this way. I graduated from Stanford, I had a CS degree, and I knew how to play the startup game[3]. But on the inside that couldn’t have been further from my reality. I was twenty-one, I had somehow gotten myself into YC, and I had absolutely no idea how to get a company off the ground.

On top of everything else, our mentors had just impressed upon us that our idea was stupid. So we pivoted.

FanHero

Looking back, we should have found a way to address the partners’ concerns. We should have found a way to use the code we’d written and the domain expertise we’d gained. Instead, we threw out all of our data, all of our work, and started over.

And I mean really started over. We researched Bitcoins, smart devices, 3D printing, biometrics, and a host of other industries. After several days of brainstorming, FanHero was born. We came up with the idea after discovering how little money most YouTube personalities make. Our thesis was that if you produced content that millions of people consumed on a regular basis, you should be able to make a living from your content[4].

Like many arrogant twenty-something recent grads, we assumed we could write a bit of software and disrupt an entire industry. We had no experience creating or maintaining an online following. And we had no YouTuber friends who we could get initial feedback from. From the outset, it was an uphill climb.

We still had faith, however. Faith that we just needed a critical mass of users. Faith that we just had to iterate a few times on the product. Faith that we would get a TechCrunch writeup, and it would solve all of our problems.

And then we “launched.”

Every YC company can have TechCrunch write them a launch article, if they want. Few decline, since it’s free launch press. In our case, it’s unclear if we made the right choice.

In the words of the reporter:

So anyway, there’s this company called FanHero. It’s all about helping those YouTube guys make money in, like, non-advertising ways. Giving the community ways to support them through commerce — you know, selling stuff. It’s like the classic merch model, like how you go to your favorite band’s show and you buy a t-shirt or a CD.

The guys behind FanHero are these Stanford CS undergrads Kevin and Charlie, who like, grew up on YouTube idolizing YouTubers. These guys don’t remember a time when the world’s biggest stars weren’t on it. They’re in Y Combinator now because that’s where all the cool kids go to learn about the Internet and monetizing and stuff.

We had much bigger problems than the piece, to be sure, but launching with an article that roundly mocked us was one of the final nails in the coffin. That’s when we received an email, informing us that we were being summoned for office hours with PG.

The Meeting

He was brutal, but he was honest. Our company was in awful shape. So with less than five weeks to Demo Day, we pivoted. Again.

We went back to PG, and he told us to stop worrying Demo Day. With the right idea, we’d be working on the company for the next five-plus years. It was foolish to sacrifice the quality of the company to optimize for the next five weeks. Instead, we should look for technologies that were interesting to us, as well as larger trends that we observed in the industry. To his credit, this is very, very good advice. When you’re a 21 year old trying to start a startup first thing out of college, though, it’s hard to internalize that advice.

To be honest, the last few weeks of the program are a bit of a blur. My morale plummeted, and my stress skyrocketed. I dreaded going to the weekly dinners. I did little else but eat, code, and sleep. I felt like everyone else was ready to raise millions, while we were desperately trying to find a product. There was no way we could compete with our batch mates on Demo Day.

A Way Out

Then the partners told us that we had the option to defer Demo Day, if we wanted. It wasn’t common, but other companies had done it. When they told us, I felt an incredible sense of relief. Postponing Demo Day was a no-brainer. We didn’t have an idea we believed in, and although we could have cobbled one together and raised some seed funding, we didn’t want to do that. I didn’t want to do that. Partly because it was disingenuous. Primarily because taking half a million dollars of other people’s money would have moved my stress level from unhealthy to crippling[5].

But skipping Demo Day didn’t fix our lack of conviction. The rapid-fire pivoting continued. Around this time, I started coming to terms with the fact that I was seriously unhappy. For as long as I’ve been interested in startups, I have never wanted to start a company for the sake of starting a company. I’ve always been adamant about this. Yet doing things "for the sake of starting a company" was where I found myself, desperate and scrambling for a plausible idea.

I don't know if this is true for other people, but as a flailing founder I desperately wanted to believe in the startup myth. The myth that success was just over the next ridge, that if we waited a bit longer, or had a slightly better idea, we would suddenly be riding a rocketship.

I hated doubting myself, but I've never been good at blind faith.

So I decided to leave.

I Left My Heart In San Francisco

Since then, I've taken a break from startups. I still love Silicon Valley, and I know I'll eventually end up back there, but in the meantime I'm having a lot of fun doing remote software consulting and exploring the world[6].

I don't regret my experiences in the slightest. Sure, I might have done things differently if I did them again, but I've more or less landed on my feet. I've taken a significantly different path than I could have predicted (which isn't a bad thing), and as cliched as it sounds, I've learned a ton, both about myself and about how startups work. The latter has helped friends who are running their own startups, and the former has helped me figure out what comes next.

P.P.S. I'm also working on tackling software projects that need to be done by more than one person. If you're interested in being part of a distributed team that works on a slew of different types of projects, hit me up.

[1] This is, if you’re wondering, pretty unusual for the YC application process. Most teams only do one ten-minute interview and then go home. The partners make a decision by the end of the day.

[2] After our interview, we had absolutely no idea whether we’d get it. So we went out and bought a bottle of champagne, and a bottle of whiskey. The champagne was for if we got in. The whiskey was for if we didn’t.

To this day, I remain convinced that our saving grace was a little-known fact that we demonstrated in the interview: when you bite into an apple-shaped plastic bottle of Martinelli’s apple juice, it sounds like you’re biting into a real apple. No, seriously, check it out.

[3] YC was not my first startup, or my first accelerator. During college I had started an ed-tech company, ClassOwl, which went on to raise nearly a million in seed funding. We went through StartX, but ultimately decided to finish our degrees instead of pursuing the startup dream.

[4] And it would appear that the market is proving this thesis correct, for now. Patreon is growing at a rapid clip, having raised a $15 million Series A. Even Google is getting wise, having finally added “donate” buttons to YouTube channels to let people monetize their fans.

[5] Not to mention we would have been on the hook for another 2-3 years. Changing your mind about being an entrepreneur isn’t taken too well, even if you return most of the money.

[6] So far, I've visited Japan, China, Thailand, Greece, Costa Rica, Nicaragua, and now Argentina. Not to mention half a dozen states back home. Humblebrag, I know.

]]>Last week I took part in a Code Day with a bunch of friends, where we pair-programmed Conway’s Game of Life from scratch multiple times over, with a different pair each time. Inspired by the Code Day, I wanted to share Stripe’s Capture The Flag (CTF) with the]]>https://blog.charlieguo.com/replicating-stripes-ctf-1/09e3aaef-cdb3-43dd-9215-cbd909bfd0d0Mon, 17 Nov 2014 18:15:51 GMT

Last week I took part in a Code Day with a bunch of friends, where we pair-programmed Conway’s Game of Life from scratch multiple times over, with a different pair each time. Inspired by the Code Day, I wanted to share Stripe’s Capture The Flag (CTF) with the group, so I decided to run my own instance of it.

A Bit of Background

In case you’re unfamiliar, CTF is a war-game created by Stripe, the payments processing company. They’ve created 3 at this point, but the first ran in early 2012, and was based around server-side exploits. The other two centered around web programming and distributed systems.

In the game, you’re given a password and instructed to ssh as level01 into whatever server is running the challenge. From there, you need to access the contents of /home/level02/.password, so that you can ssh as level02 and progress through the game. You’re given access to a folder containing a number of programs and their source, as well as a scratch directory in /tmp/. There are six levels in total, and they get progressively more difficult.

Creating The Machine

Fortunately, Stripe has made this extremely straightforward. They’ve created and shared downloadable CTF disk images, if you have your own server that you want to run it on. If you’re using AWS, however, it’s even easier.

Launch a new instance in the us-west-1 region (N. California), and in the first step, “Choose an Amazon Machine Image (AMI)”, search for “stripe ctf” in the “Community AMIs” section. There should be a 64-bit Ubuntu server. Select the AMI, and continue with the rest of the instance launch wizard (if you’re doing this for friends, as I was, a micro-sized instance will suffice).

Once you’ve launched the instance, use your key pair to ssh as ctf@ec2-xx-xx-xx-xxx.us-west-1.compute.amazonaws.com.

Initial Server Setup

You should now be ssh’ed in as ctf, an account with passwordless sudo. You’ll need to run the following commands to finish setting up the server.

sudo ~/bin/mount-chroot.sh

sudo ~/bin/update-passwords.sh --generate passwords.txt

sudo /etc/init.d/level05 start

The machine explains what each of these does, but it essentially mounts the chroot file systems, randomly generates passwords for each of the six levels, and starts the server/worker for level 5.

And that’s it! Check passwords.txt for the password for level 1, and players can start the game.

If you want to use a custom domain, or want help troubleshooting, read on. Otherwise, hats off to Stripe for making such an entertaining, educational war-game.

Using A Custom Domain

If you want to use a custom domain, like I did, it’s also fairly straightforward. Assuming you’ve purchased the domain outside of AWS, you’ll want to create an elastic IP for the server and then create an A record.

Navigate to “Network & Security” > “Elastic IPs” on the left side of the EC2 console. From there, allocate a new IP address, and associate it with the instance you just created.

Once you’ve associated the address, edit the host records for your domain (via whatever service you used to purchase the domain). Create an A record with name “@“ and value of your elastic IP.

Troubleshooting

If you have problems accessing level 2 (PHP exploits), check the security groups on your instance. The default security group when using the instance wizard opens port 22 (SSH) to 0.0.0.0 (anywhere), but there aren’t any rules for port 80 (HTTP). To fix this, open the inbound rule editor for the instance. Create a new rule with type HTTP, port 80, and source anywhere.

CTF 2 and CTF 3

The first CTF was extremely easy to replicate, but from what I’ve seen the next two are somewhat harder. I plan to try creating standalone versions of them too, eventually.

]]>While I wouldn't recommend it, it's possible to live and work without worrying about the world outside your front door. I will note, though, that we have a term for this: agoraphobia.

This is easier as a programmer, or a designer, or some other profession that lends itself to remote

]]>https://blog.charlieguo.com/how-to-live-in-san-francisco-and-never-leave-the-house/22236a08-8636-43b1-aceb-cc7b26e58383Thu, 07 Aug 2014 16:45:43 GMTWhile I wouldn't recommend it, it's possible to live and work without worrying about the world outside your front door. I will note, though, that we have a term for this: agoraphobia.

This is easier as a programmer, or a designer, or some other profession that lends itself to remote work.

Did I leave something out? Got another service to suggest? Find me on Twitter and let me know!

]]>The following is a message to my fellow Stanford students, both past and present. I love startups and, like Paul Graham, I think that we should continue to encourage entrepreneurship. However, I also think that Stanford students are often choosing to do startups for the wrong reasons.

How Do You

]]>https://blog.charlieguo.com/stanford-students-youre-doing-it-wrong/7d8e0ecd-f340-42a8-8df7-910b26d12f69Tue, 03 Jun 2014 17:02:00 GMTThe following is a message to my fellow Stanford students, both past and present. I love startups and, like Paul Graham, I think that we should continue to encourage entrepreneurship. However, I also think that Stanford students are often choosing to do startups for the wrong reasons.

How Do You Define "Startup"?

For the purposes of this piece, I'm going to define startup as a company that you're working on full-time. It is a company that you intend to grow as fast as humanly possible. It is something that you will likely (though not necessarily) take venture capital for. It is not a side project that you work on outside of class. It is not a small SaaS application that you run on five hours a week[1]. It is not a "lifestyle business."

Why Do You Want To Start A Company?

Let's do a thought experiment. Suppose you're a Stanford undergrad, either hoping or actively trying to start a company. I applaud your appetite for risk; Stanford has produced an impressive list of entrepreneurs[2]; a list that will, no doubt, continue to grow. Now, pick a convincing startup idea: a Pandora for traveling abroad, or a two-sided marketplace for gay marriages. Once you have your idea, ask yourself: "Why am I starting this company?"

Reasons People Start Companies

1) Money

This seems to be the most common reason I come across, especially among my peers. How much is a startup really, worth, though? Time for another thought experiment.

You decide to start a consumer internet company with one other founder. You each have an equal share of 50%. Your company turns out to be fairly successful, surviving the Series A Crunch and getting all the way to Series B. Because of the investments, you've been diluted to 15% (your co-founder still has another 15% so the founders own a total of 30%). After 5 years of toiling away, your company ends up getting acquired for $50M and you receive 15% of that, which is $7.5M[3]. Some of that acquisition is in cash, but most is in stock, via a 3-year earn-out. So after 3 years at --Google-- your acquirer (eight years total), you've earned $7.5M. With taxes, call it about $5M in your pocket[4]. After 9 years. And that's assuming that your company is successful. Even if you had a 1/100 chance of a $50M exit (which you probably don't), your expected value is $50,000. Is that worth all those years of sacrifice?

It has been said before but it bears repeating: don't do a startup for money. Find a way to leverage your Stanford degree if you're after money. Go be a banker. Or a consultant.

2) Glory

Although most might not admit it, this is also a fairly common reason. After all, who wouldn't want to be a household name like Bill Gates, Steve Jobs, or Mark Zuckerberg? Hell, I'd kill to be well known among only techies, a la Paul Graham, Marc Andreessen, and Jack Dorsey[5]. But think about our last thought experiment. If I had to guess, I'd say that you would have to exit at well above $50M to become a "big deal". Bonus points if you manage to become a media darling in the process.

As with money, there are more straightforward ways to acquire glory. (Many involve shameless, shameless self promotion.) None are guaranteed, but surely there are some with better odds than working heads down on your own startup.

3) Autonomy

I see this one often as well; "I want to be my own boss" and "I could never work for a big company" are common refrains. As with money and glory, I also want to challenge how much autonomy founders have. While you may have the luxury of determining your work hours, your big-picture autonomy is drastically decreased.

For starters, you do in fact have a boss. Your board[6]. They monitor your progress at regular intervals, and can fire you for poor performance. But even if you're keeping your board happy, you don't have the freedom to make bigger decisions. If doing a startup is akin to driving along a highway[7], there are many, many more possible exits if you don't take VC money. Being valued at $10M+ means you have to go big or go home.

The role of a founder involves massive amounts of responsibility. Much more than an engineering position at a big company. You're responsible for the livelihood of your employees, the returns on your investor money, and the overall health and well-being of your brainchild. Even at a day-to-day level, being a founder has a huge impact on your relationships. You often have to cancel plans with friends and family, and when you manage to find some time to relax, you feel guilty about not being in the trenches with the rest of your team.

A Good Reason To Start A Company

The best reason to start a company is that you are obsessed with solving a problem-- there is some pressing issue that you need to fix, or some product that you need to exist. Don't chase hot new technologies or perceived market opportunities (especially not as a 21-year-old newbie to the real-world market). The road to a successful startup is so long and hard that, without insane levels of conviction, most will fail. Don't start a company for the sake of starting a company-- start one because you honestly believe that you have to.

Admittedly, there is a another reason: to learn. The rate of learning at a startup is extraordinarily high, especially for a first-time founder. But it's often too easy to claim you're doing something "as a learning experience," when your true goal is fame and fortune. I've deluded myself with that line of reasoning in the past.

Some would argue that it's also fine to start a company if you have no "better" options[8]. While I can almost see the merit in that, I would still have to caution those in this position. There are quite a few benefits to doing a startup, but many of those can be had while working elsewhere. Joining a small, fast-growing company, for example, can teach you quite a lot about how to hire, how to manage, and how to find product-market fit. There are opportunities for learning and autonomy (inside and outside of work) with less risk/stress than being an early stage founder.

Why Stanford Specifically?

I love Stanford. I really do. But as a member of its startup culture, this is something that I've wanted to write about for a long time. Stanford's entrepreneurship culture focuses too much on the act of starting a company, and not the act of solving a problem.

Luckily, improvement is far from impossible. There are heaps of resources for students looking to get an idea off the ground, but barely any for students trying to evaluate an idea in the first place[9]. I have some ideas about how to help students evaluate potential ideas, and how to go about looking for ideas in the first place. I want to write more about this topic in the future, but for now a great piece to read is Paul Graham's "How To Get Startup Ideas".

I realize that I'm a bit cynical about the whole startup game; I'm sure that my own biases and experiences have a lot to do with that. Yes, startups do have their fun moments, especially when you're working with friends. However, undergrads should also be aware of the realities involved. Founding your own company is not all fun and games; there are no overnight successes and it's a big responsibility for which you need to be prepared.

Disclaimer: Although the bulk of my writing here talks about "Stanford students" collectively, I want to clarify that I primarily mean undergrads. There are many fantastic companies emerging from graduate research, driven by a core technology that solves an interesting problem.

[1]: Patrick McKenzie (aka patio11), an incredibly savvy software engineer and consultant, calls this a micro ISV (independent software vendor).
[2]: William Hewlett and David Packard of HP, Larry and Sergey of Google, Andy Grove of Intel, Jerry Yang of Yahoo!, Steve Ballmer of Microsoft, Michael Arrington of TechCrunch, Vinod Khosla of Sun Microsystems, and the founders of Instagram, WhatsApp, LinkedIn, IDEO, Netflix, SnapChat, and WhatsApp all have ties to Stanford. The institution does a damn good job of producing capable founders.
[3]: Not to mention any liquidation preferences that your investors have.
[4]: Yes, I realize that this is, for the vast majority of people, a truly life-changing amount of money. More than I ever dreamed of having as a child. More than my father ever dreamed of having. However, I'm assuming here that the ideal exit for someone starting (or funding) a venture-backed company is in the hundreds of millions. $5M just won't cut it at that scale. As I heard someone say recently, $5M is "rest of the country rich, Silicon Valley poor."
[5] I'd kill for it, but I wouldn't bet on it. List all of the "startup heroes" that you can. How many of them are not white men? I don't put much stock in the traditional king-making process.
[6]: Let me reiterate that I have a very narrow definition of startup here. Your side project or passive income stream is obviously not going to have a board. Your seed funded company may not have a board. If you intend to do startups as a career though, you are going to end up being responsible to board members.
[7]: Along the Autobahn in a McLaren F1.
[8]: Realistically though, you always have some reason for doing a startup over joining another company. If you don't know what it is, I would encourage you to first figure out what your priorities are before making that decision.
[9]: Partly because startup ideas are hard to evaluate in general (ahem, Snapchat).

]]>I was once sitting next to a friend who was learning to program, and the internet went down. She asked me if she could still compile her code even though there wasn't any internet. Now, to someone who knows how the internet works and how compilers work, this seems like]]>https://blog.charlieguo.com/network-dependency/cf2f1401-e9c5-480b-8faf-aacac859a790Mon, 19 May 2014 19:13:01 GMTI was once sitting next to a friend who was learning to program, and the internet went down. She asked me if she could still compile her code even though there wasn't any internet. Now, to someone who knows how the internet works and how compilers work, this seems like a pretty silly question. But I shuddered at the idea of a future where the answer could very well be "no, you can't compile unless you have an internet connection."

For the moment, programmers enjoy the luxury of having most of their tools work offline[1], though that's already for the "mainstream." Electronics companies are toying with the idea of "always on" consoles. Siri's natural language functionality does all of its heavy lifting "in the cloud". Smartphones and tablets in general seem pointless without access to a WiFi network or a data connection.

There is evidence, however, that developers may not be safe for much longer. Dev machines and IDEs are moving away from personal laptops and towards the internet[2]. Entire companies (read: startups) grind to a halt when GitHub goes down. And it's already obvious that the next wave of important technologies (cryptocurrencies, self-driving cars, drones, and the Internet of Things) is going to require constant or near-constant connectivity.

ISPs will only become more powerful as these new technologies cross the chasm[3] and are adopted by the mainstream. If you need the internet to send someone money, drive to work, or turn on your heater, those who control access to the internet end up with vast amounts of influence and leverage.

Which is why the back and forth over net neutrality is completely crazy. There has been plenty of discussion about this, but if you need a short refresher on net neutrality, see footnote[4].

If you think net neutrality is just a debate about whether Netflix should pay a little more for its bandwidth consumption, you're wrong. This is a debate about whether the Internet remains an open, level playing field. This is a debate about whether a handful of companies will be allowed to shape (or outright destroy) the next wave of technology companies. If it isn't clear, let me say it again: as a society, our Internet dependence is already massive, and it is only going to get bigger with time. We MUST ensure that everyone is an equal participant.

Last week the FCC voted to move forward on their set of proposed rules for regulating internet traffic. Before the final decision, there's a period of time for public commentary[5]. As it stands, however, the plan allows ISPs to charge for "guaranteed fast lane." It does ban ISPs from intentionally slowing down other traffic, but that's not nearly enough. A huge difference in performance is inevitable as ISPs spend a majority of their resources improving the "fast lane."

If, like me, you think it is important that the internet remains a level playing field, now is the time to do something. Speak up.

Most importantly, you can participate in the public comment process by submitting your comments to the FCC. Use this simplified form if you would like to type out a short comment, or use this separate form if you’d like to attach a file with a longer comment.

It's all too easy to become a "slacktivist" in this day and age. I've certainly been guilty of not fully participating in the political system in the past. But I like to remind myself of a quote from Edmund Burke:

"The only thing necessary for the triumph of evil is for good men to do nothing."

Thanks to Jonathan Goldsmith for reading drafts of this.

[1] Can you imagine vim or tail refusing to work unless you were connected to the internet? Neckbeard hell.

[3] "Crossing The Chasm", a fantastic book on the adoption of new products. If you're not familiar with it, it's where the term "Early Adopter" comes from.

[4] Net neutrality is the idea that all internet traffic should be treated equally. A megabyte is a megabyte is a megabyte. Makes sense, right? But some time ago, the FCC decided that companies like Comcast and Verizon transmitted information rather than "dumb" data, allowing them to moderate what flows through their system. The fear going forward is that the FCC will formally allow Comcast and Verizon to improve the speed of certain "information" while restricting the speed of others; that is to say, they'll make their own content faster, as well as content from companies like Netflix that have the money to pay them off, while throttling the speed of small startups and other entities that can't afford "premium" service. It's a nuanced issue, but many believe one solution would be for the FCC to classify ISPs as "utilities," essentially saying that they do indeed only transmit dumb data and cannot give certain traffic preferential treatment. Given the FCC's track record however, this seems highly unlikely, due to the outsize influence that ISP and Telco lobbies already have.

[5] Ultimately, we'll have to wait and see whether public sentiment is enough to move the FCC's opinions on this. It will be difficult, as public advocacy groups and ISP lobbies alike are waiting for the opportunity to file lawsuits against any FCC ruling. But we have to try.

]]>Recently I contacted a few freelancers off of the monthly Hacker News thread to get their opinions and advice on being a freelancer. This is a summary of their responses.

What sources do you use for clients at the moment, and what's been your most reliable source so far?

The

]]>https://blog.charlieguo.com/notes-on-freelancing/28113188-b134-47e9-af3f-74c9f6e3f8aeSat, 10 May 2014 18:05:00 GMTRecently I contacted a few freelancers off of the monthly Hacker News thread to get their opinions and advice on being a freelancer. This is a summary of their responses.

What sources do you use for clients at the moment, and what's been your most reliable source so far?

The range of potential sources for clients was fairly extensive, from referrals to LinkedIn to AngelList to myriad freelance developer sites. The top answer though, was referrals. Many freelancers stressed that it's important to do a great job for your first clients because they'll be the ones who refer you to future gigs. If you have a network that you can tap into, that's an invaluable resource as well. The next most common answer was the monthly HN thread, which is not surprising considering how I found these freelancers in the first place .

Any good horror stories from clients?

Most of the freelancers had actually managed to avoid horrible clients, but one story stood out in particular:

I had one guy who wanted me to build "a clone of Pinterest." He didn't really know what he wanted, kept changing his mind, and kept asking for more features, saying it was "part of the initial deal." The lesson is, write up a clear list of specifically-defined features beforehand, agree on milestones, and don't work with people who say "build me a clone of x." (Or anyone who wants to create a derivative of a social network and thinks it's going to make him the next Mark Zuckerberg.)

Do you work on independent projects or as part of a team for a set duration?

Most freelancers did both, which surprised me. Truth be told, when I first started asking questions I expected most freelancers to do independent projects; it was only after receiving a couple of responses from freelancers who only worked with teams that I explicitly asked them about it.

What is your current rate (if you don't mind my asking)?

[REDACTED]

Is your rate per hour, per day, or something else?

A slight majority charged at an hourly rate, but there were many who charged at a daily rate instead. Very few did fixed-price, mostly because the project scope is usually liable to change after development begins; a fixed price project isn't able to account for these changes. As one freelancer said:

My rule is only to offer flat rates if they are an extreme overestimate, or if you know precisely how long it will take.

Has your rate changed much in the last six months?

Nearly all freelancers answered with "no" or "gone up slightly."

Do you tend to negotiate your rate with clients?

This received a resounding no. In a nutshell:

Never negotiate your rates. Negotiate the scope of the project instead. Usually people who ask you to lower your prices are the worst type of clients.

How involved are clients during the process (e.g. do they have access to a GitHub repo, do you make sure to do weekly calls, etc.)?

Good clients will care about communication, and will usually get involved (especially if they are technical). Bad clients will only care that it gets done. However much you communicate, it's extremely important to manage client expectations properly.

What payment structure do you use (e.g. X% up front)?

The structure usually depended on the type of project/client:
- Small project, new client: X% up front, where X was some number between 25 and 50.
- Large project, new client: Payment was broken up based on milestones.
- Old client: Most were willing to be much more flexible if they were working with existing, trusted clients.

Do you begin work before payment is arranged?

No. Absolutely not. The vast majority said no, with the sole exception being for an existing, trusted client.

Always ask for something upfront, and don't feel guilty about it.

What tools do you use for invoicing and time tracking?

This received a variety of answers, including Toggl, Harvest, Xero, Microsoft Office, Google Drive, Teamwork.com, FreeAgent.com, and Paymo.biz. Don't get hung up on tools though; just pick one and start using it.

Do you have a standard contract that you use with clients?

Very few did, but most recognized that they should. Shake.com was recommended as a boilerplate contract generator, and this book was recommended if you want to fully understand your contracts.

What "gotchas" should I be aware of when using a contract prepared by a client and not by me?

Ensure that you have control of the relevant IP until payment is complete (and that you're giving away only relevant IP once the payment is made). Do not take on liability for anything after the project is finished. NDAs are fine. Avoid non-compete clauses, especially if it extends beyond the completion of the project.

Aside from just the source code, what else do you do for clients(e.g. unit testing, documentation, maintenance, etc)

Most do all of the above (though if a client has a smaller budget, there is room for negotiation here).

Are these things standard or do you negotiate an extra amount for them?

Ensure that everything you do is factored into the price.

How do you deal with requests for revisions or extra features?

With hourly contracts, revisions will simply cost extra. For milestone-based projects, revisions can be folded into the next milestone. For fixed price jobs, it's important to push back on revisions that are unreasonable in scope, otherwise you can easily end up doing twice as much work as you signed up for.

These last three questions were much more open ended than the rest, so rather than summarizing the answers, I decided to include some that I felt were particularly helpful.

What's something that you wish you knew when you started freelancing?

Charge more. The higher you charge, the better clients you get.

How to keep disciplined work habits.

If a project looks like it might be no fun, listen to your intuition and don't do it.

What's something that's burned you with this job in the past?

Beware of overbooking yourself, things always take longer than you think.

Not defining the scope of the job and letting it drag out forever.

Anything else that you think I should know, just getting started?

Web development is this stupidly overpaid industry. By that I mean the amount you get paid is disproportionate to how hard it is. The thing to understand is that market prices are determined by what people want, not how hard the work is. The latter is usually a predictor of the former, but when you have a field like web development whose demand has blown up so fast, it no longer is.

Have enough money to be able to last through the lean times. Be extremely anal with your book keeping. Have a good accountant and lawyer.

Getting started is always tough, so send out emails every day and network hard. You really just need one normal client a month to pay the rent, so I just keep reminding myself of that -- how hard can it be to just find one client in an entire month?

]]>Here are a few tricks that I've accumulated over the years to help improve relationships and convince others. I've tried most of them personally, and I've read up on the ones that I haven't. Message me if there are any good ones I've missed, or if these have worked for]]>https://blog.charlieguo.com/psych-hacks/be0cbba7-0302-40c9-8d25-c5350e7634b7Mon, 28 Apr 2014 15:53:02 GMTHere are a few tricks that I've accumulated over the years to help improve relationships and convince others. I've tried most of them personally, and I've read up on the ones that I haven't. Message me if there are any good ones I've missed, or if these have worked for you as well!

Enjoy silence.

Most people hate awkward silences during a conversation, but you can use them to your advantage. For example, when trying to make a sale, stop talking after making the initial pitch (e.g., listing prices). The more you talk, the more opportunities you give someone to say no. Additionally, when trying to get information out of others, stay silent if they give you just a partial answer. They're likely to continue talking to fill the silence, and you're likely to get the information you want.

Smile.

This sounds obvious, which is why it's often overlooked; but smiling, especially while maintaining eye contact, really helps create a good first impression. When you see acquaintances, turn it up a notch and greet them with enthusiasm. Think of your friends, and of people who are always happy to see you – don't you end up feeling happy to see them as well? This is something that I should do more often myself - after all, the best way to get people to be comfortable around you is to show them that you're genuinely happy to have them around.

Nod.

Ever wondered why the smile-and-nod always seems to work? Studies have shown that when people nod while listening to something, they're more likely to be in agreement. That makes sense- but how does it help you? Well, coupled with the fact that we tend to mirror someone else's body language, nodding while you're talking enables your listener to pick up on those physical cues. As they unconsciously nod along with you, they're more likely to end up convinced.

Be cool.

A friend once told me, "don't ever get mad at inanimate objects," which is sage wisdom, since we often forget that doing so just leaves us worse for wear. The same goes for interactions with people: When others are angry at you, the best tactic is to remain calm. Not only do they lose ground when they fail to provoke a response, but you come away as the reasonable party. Remaining calm also helps prevent a fight-or-flight response, leading to more logical decision-making on your part.

Know when to ask for favors.

This is a pretty famous one, originally attributed to Ben Franklin. As the story goes, Ben Franklin asked a rival to do him a favor (to lend him a rare book, in the original case), so as to improve their relationship. The reasoning is that once someone has done you a favor, they come to believe that they like you more- because why would they do a favor for a person that they hate? Cognitive dissonance in action. I haven't tested it yet, so if you don't like me, shoot me an email! I'd love to give it a try.

Go big or go home.

Speaking of asking for favors, it also helps to prime your target by first asking for something absurd. For example: if you need to borrow $50, first ask for $500. Not only does it create an anchoring effect, it reduces the chances of your being turned down the next time. People are less likely to turn you down twice, especially when the second request is much smaller than the first.

Keep some gum handy.

I don't chew gum enough to have tried this one, but apparently chewing gum when nervous helps calm you down. In fact, eating anything when nervous helps; chewing gum just happens to be the subtlest option with the fewest calories (provided that it's sugar-free gum, of course). Our brains have evolved to associate eating with a lack of danger, so chewing gum tricks us into thinking that we have nothing to worry about!

Superstar![1]

If you don't have any gum, take a 5-minute bathroom break to practice your power poses. Research has shown that striking poses associated with confidence and power actually makes you feel more confident and powerful. It might feel a bit silly at first, but I've found that it really does help. Possible stances include the "Superman" (hands on hips, chest out) and the "YMCA" (arms out, legs together, "Y" shape). Bonus application: when your alarm goes off, jump out of bed and do a power pose! It (usually) helps me avoid crawling back into bed.

Mirroring

Most mirroring happens unconsciously, when we're agreeing with or are attracted to someone[2]. However, as mentioned earlier, it's possible to use it intentionally. By echoing other people's behaviors, mannerisms, and body language while you're with them, you're more likely to gain their favor. Underplay this one, since copying them too much would just look creepy; pick up a couple of hand gestures or expressions and see how that changes the flow of conversation. I assume this effect stems from a feeling of validation (and a corresponding boost in self-esteem) that comes as you follow their lead.

Teach to learn.

I've been using this one for years, although I'm definitely not the first to have thought of it. If you really, truly want to solidify your knowledge of a topic, teach it to someone else. It forces your brain to consolidate its information on the subject, and makes it much easier to recall.

Be a (modified) echo.

Repeat back what other people say to you-- not verbatim, of course, but as a summary of their main points (possibly as a question). By engaging in reflective listening, other people feel that they have been truly heard, and are more comfortable talking to you. This is a staple technique for a lot of management and relationship books because it improves relationships and makes others more likely to listen to what you have to say. On top of that, a bit of reflective listening goes a long way in avoiding miscommunications.

[1] Bonus points if you got this reference.
[2] Protip: If you're on a date, and he/she is mirroring your position/body language, that is a Good Thing.