Roland Writes

Quote: Ira Glass on taste

May 2nd

2 min read

“Nobody tells this to people who are beginners, I wish someone told me. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. A lot of people never get past this phase, they quit. Most people I know who do interesting, creative work went through years of this. We know our work doesn’t have this special thing that we want it to have. We all go through this. And if you are just starting out or you are still in this phase, you gotta know its normal and the most important thing you can do is do a lot of work. Put yourself on a deadline so that every week you will finish one story. It is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions. And I took longer to figure out how to do this than anyone I’ve ever met. It’s gonna take awhile. It’s normal to take awhile. You’ve just gotta fight your way through.” - Ira Glass

PredictIt season is upon us: the story of how I doubled my money betting on the 2020 election, and exploring the potential for round 2 in 2024

December 17th, 2023

8 min read

The homepage of PredictIt.org
A fool and his money are soon parted.

Primary season for the 2024 Presidential Election begins in a few weeks—starting with New Hampshire and Iowa.

While the official start of the 2024 election cycle means many things for many people, in one corner of the world/internet, it means it's time to make some money.

In 2020 I caught wind of a new and legal way to bet on US politics: PredictIt.org It is a site the allows you to place limited bets on political events, using a clever, market-based system based on buying “shares” of outcomes. I discovered the site in the weeks before the 2020 Biden vs. Trump election and, after comparing the markets on the site to popular polling data, it seemed that many of the people betting on the site had virtually no respect for polling data whatsoever.

Specifically, the site seemed flooded with Trump voters who, thanks to the surprise of the 2016 election, felt that the polls were underestimating Trump once again. While believing that the polling data was underestimating Trump again was not crazy, the extent to which these market-setting bettors believed the polls were off, based on the bets they were placing on the site, was batshit.

Looking at the pricing on the site, across the board, these Trumpsters were implying a margin of error ~2 standard deviations away from standard margins of error for polling. In short, they were betting that the margin of error for the 2020 election polls would not just be larger, but significantly larger than it was in 2016.

It seemed like an easy opportunity to make some cash—so easy, I thought there had to be a catch. But while the site does take a fee on winnings, and there is a max limit on each individual bet ($850, last time I checked), I calculated that I could make a virtually risk-free ~30% return on any money I put into the site. While 30% return is not exactly hitting the lottery, it is an incredible rate of return for a single event, and would absolutely fast-track the growth of my young portfolio.

As it turned out, I was selling myself short. I actually went on to make over 100% return on the ~$7,000 I placed on bets across the site, ending with ~$14,000 total. How? I was able to make way more money than I originally thought because of the unique mail-in ballot situation.

If you remember the night of the 2020 election, it started out looking really good for Trump, but this was only because the mail-in ballots were the last to come in, and the mail-in ballots skewed significantly Democrat. Of course, the pundits calling the election on TV pointed out this fact every 5 seconds, but evidently this was still not enough to prevent the bettors of PredictIt from losing their cool.

As the first wave of votes came in, giving Trump early leads in most states (as expected), the markets on PredictIt went wild, and the cost of buying shares in a Biden victory in many states became even cheaper than they already were. Watching this panic unfold in real time—both via group chats with friends and family, and the actual markets on PredictIt—I knew that if I played my cards right and rolled my winnings from the first states to call the election into the states that had not yet called a winner, I could make way more money than I had originally thought possible. It was going to be a long night. My roommates in my cramped Pacific Beach apartment thought I was crazy as I made myself another pot of coffee at 8pm and strapped in.

My strategy remained conservative, based purely on polling data, and with no guess work involved. I only bet on Biden to win in states that were not closely contested, and, even then, as a baseline margin of safety, I assumed a massive 8% margin of error in the polls that skewed entirely in Trump’s direction.

When the dust settled the next morning—despite, if memory serves, the election still being ongoing thanks to the slowness of Arizona and chaos in Georgia—every single bet I had placed had paid off. It was hard to believe I had made so much easy money in such a short period of time, based on such a boring strategy. But it felt great. Outside of this, I had never been a gambler, but I now totally understood the gambler’s high. There is something about noticing an opportunity, actually taking the risk to act on it, and then having it pay off that makes you feel valid and alive.

Buzzing from victory and a fat pay day, I naturally wondered if I could repeatedly make money like this on PredictIt, even outside of a major election. In short, the answer seems to be no. I occasionally check back in on the site, and while there are definitely some tempting markets, there is no widespread, systemically lopsided stuff going on like there was during election week in 2020.

I’m assuming the reason for this is simple: outside of the major elections, the core of chronic PredictIt bettors is made up of people who are generally more highly-educated and statistically aware—nerdy, political, Nate Silver-y types. But once the major election cycle gets going, hordes of inexperienced “normies” show up to the site—with their dubious grasp of probability theory and wacko conspiracy theories in tow—and this is where the money is. It’s very much a seasonal movement. Waiting for election season as a PredictIt regular is like being a shop owner in a ski resort in the fall: just counting down the days until the out-of-towners show up with their money.

Unlike sports gambling, where you’re betting against odds makers who may be better at math than you, on sites like PredictIt you’re betting against someone else. “You don’t have to be smarter than [an odds maker],” says Derek Phillips, a 38-year-old creative writing PhD dropout who for several years made his living exclusively from PredictIt and earned some $140,000 in 2016 (presidential election years offer the biggest prizes; midterms are more of a little bump). “You have to be smarter than somebody who believes that Trump is going to win the election that he already lost.”

- quote from an article by Courtney Rubin in Fast Company

It feels necessary to pause here and say that I do care about America and what happens in this country politically, and when it comes to the fragmentation of our country, the rise of conspiracy theories, and the general/concerning trend toward authoritarianism, the current state of things makes me feel extremely concerned and sad. Despite this, I am not some pessimistic, red-pilled type. I am a voter, and outside of the current PredictIt/betting context that I’m writing this article in, I have a political self who does not think nor care about the money/betting side of politics that PredictIt enables.

I have also thought about whether it is wrong to essentially take money from people who show up to a website to effectively place bets on their deranged political theories. The verdict is in: I don't care. If anything, it's good for them—few things are more sobering and educational than losing money due to your beliefs. I actually rank losing money trying to beat the stock market as a teenager as one of my most fortunate and formative developments. It taught me a ton about how irrational the emotions that take hold of you can make you when your wallet is on the line, and undoubtedly saved me from a lot of pain down the road (for example, I was able to skip and ignore the crypto craze that seemed to claim many young men’s souls during the pandemic).

The point is, as I sit here waiting for election season to start, I like to think of the privilege to place bets on PredictIt as a small reward/consolation for sitting through and participating in the misery of American politics in general. In the coming weeks, I, like everyone else, will be paying increasingly more attention to politics and the election. In tandem, I will also be paying more attention to what’s going on on PredictIt. If I notice any opportunities like the one I saw in 2020, I’ll post about them here. However, as a baseline, I’m not going to get my hopes up and will assume that the easy-money days are over. But we’ll see.

God bless America.

Quote: thinking inside the box

December 16th, 2023

1 min read

"When we first started the band, we wanted to have a formula,” he says. “It’s like, ‘This is what we do, and we’re not gonna try and go outside the box too much. We’re gonna explore the box we’re in. I’ve always been a big fan of that. I used to be in bands where was like, ‘Man, we’ve gotta think outside the box!’ And all I’m thinking is: ‘You guys don’t even know.’ Music should never be just for the sake of being experimental. Before you even start, you have to know what you’re experimenting with first.”

- Mark Speer, lead guitarist of Khruangbin

In praise of boring backend tech

December 10th, 2023

6 min read

For awhile now I've had the goal of making a Django Rest Framework boilerplate starter that I could quickly spin up to use as a backend, and pair with my React frontends, for various SaaS ideas. I wanted to be able to just run a few commands and have a fully featured backend that is easy to manage, easy to iterate on, secure, and built on boring, mature, battle-tested technology that makes security and maintenance a breeze.

Django, the python-powered web framework for "perfectionists with deadlines," is famous for meeting all of these production-ready requirements in an efficient and painless way, while also providing the option to override and customize any feature you need. The out-of-the-box admin UI is also a game-changer.

For these reasons, I've noticed a lot of prolific and actually successful indie developers also using mature frameworks like Django or Rails for their backends in order to quickly ship their SaaS MVPs ideas, taking them from idea to (truly) production-ready application in 2-3 weeks of relatively easy/gentle coding, instead of 2-3 months of manically hacking together whatever the NodeJS runtime backend-stack-du-jour happens to be. These coders often sacrifice multiple weekends writing custom code and queries for really basic functionalities that mature backend frameworks have built-in. And, even if they've found ways to cut down their dev time by using boilerplates etc., they're kidding themselves if they are actually convinced that what they've written as a single, indie dev is a) secure by professional standards and b) not going to be a huge timesuck/much more difficult to maintain as months go by and their massive dependency tree of npm packages inevitably leads to breakage.

If not already obvious, I'm in the camp that believes backends should be boring. I think the hype cycle of online web dev communities and twitter routinely brainswashes many young junior/intermediate developers into thinking they always need to be using the latest, shiny, bleeding-edge backend tooling, when in reality, for 95% of startups, you really don't need (or want) anything more than an old-school REST API. I also think this is what most legit, actually productive older developers already know, there's just a visibility bias where we are never going to hear much from these people because they aren't hanging out on tech twitter, gushing over how they added GraphQL and a NoSQL DB to their to-do app; they're shipping their projects and then getting on with their lives.

And an aside for the performance junkies: the boring reality is that the vast majority of opportunities most apps have to meaningfully increase their speed/performance for users (insofar as it relates to the backend) does not have to do with the benchmark speeds of different languages and frameworks; it has to do with caching—yet another thing that mature frameworks all have built-in defaults for. I'm happy for you that the response time and throughput of your async Node.js backend beats my monolithic, synchronous Django backend out of the gate, but if we're being honest, most endpoints are cache-able, at least to some extent, so I can just add a couple lines of code, and now I'm back on top again. That is until you burn at least a few hours (which really add up over time) of your life figuring out how to add Redis to your go-to Node.js backend library of the month, and then we're practically tied.

You're just naturally not going to find a lot of hype-y web influencer content in your tech feeds surrounding old frameworks like Rails and Django. This isn't because they're "dying," there's just nothing new to sell or push with these frameworks because they've already "made it." There's not a deluge of new content for Twitter thread bois (👇🧵) to put out on mature frameworks because these frameworks have already solved every generic problem there is when it comes to backend web app development, including, but not limited to:

  • Authentication
  • Database models/ORM
  • Backend administration (Django's built-in admin UI 🙌)
  • Permissions
  • CRUD endpoints defaults
  • Throttling & pagination
  • Robust error handling and debugging
  • Background tasks & task scheduling

The fact that you get these features by default is not something to be bored by, it's something to jump around and rejoice over. As developers, we already have to spend tons of time staying current on trends in both tooling and tech in general. I'm going to take any opportunity I can get to use reliable technologies that save me time—without sacrificing quality—so I can focus my bandwidth elsewhere. Life is too short. And, unless your startup is in the 3% of new startups that really do have a foundational need for cutting-edge speed or realtime features, using mature frameworks for SaaS MVP backends is simply the right move from both a technical and businesses standpoint—assuming you're actually serious about things like security, scalability, and developing additional features quickly.

Anyway, I finally made my Django backend starter, and I haven't been this excited to code and build things in a long time (by the way, I’ll be sharing much of what I build on this blog going forward, so feel free to subscribe to receive new post updates if you’re curious). I'm solidly in the React camp for frontends, but I'm burnt out on keeping up with cutting-edge backend technologies to maintain my full-stack status just because young, impressionable developers and first-time SaaS founders think that they need them. It's okay if you like playing around with cutting-edge tech as a hobby, especially if you're new to development and excited and soaking it all up like a sponge, but at this point I'd rather put my time towards my life outside of programming than keep burning the midnight oil, reinventing the wheel every time I want to make a new project. I recommend more people do the same.

And if you're daunted by the prospect of learning a new programming language in order to use more mature backend frameworks, don't be; if you're reading this, there's a good chance that if you took just 1/10th of the time that you spend troubleshooting cutting-edge tech and put it toward learning the basics (all you need) of a new language, you'd be cruising in no time. You would enjoy the learning process, too—learning the basics of mature frameworks is a breath of fresh air if you've spent the last several years fighting in the trenches of the trendy.

P.S. I want to, but I'm not going to open source my new Django Rest starter that I've mentioned above for security reasons, even though it's not exactly the most complex piece of software in the world. However, if you want to talk Django or want any help, feel free to reach out to me on twitter—and don't forget to subscribe to this blog for more tech rants and project updates.