GithubHelp home page GithubHelp logo

swyxio / swyxdotio Goto Github PK

View Code? Open in Web Editor NEW
329.0 15.0 44.0 318 MB

This is the repo for swyx's blog - Blog content is created in github issues, then posted on swyx.io as blog pages! Comment/watch to follow along my blog within GitHub

Home Page: https://swyx.io

License: MIT License

JavaScript 26.08% Svelte 70.06% CSS 2.73% HTML 1.14%
jamstack netlify static-site svelte sveltekit tailwindcss

swyxdotio's Introduction

swyx's personal site

swyx's personal site, using:

  • SvelteKit
  • Tailwind 3 + Tailwind Typography
  • Netlify
  • GitHub Issues as CMS

If you want to make a site based on this, see https://github.com/swyxio/swyxkit for a cleaner starter template

Live URL

See https://swyx.io

swyxdotio's People

Contributors

ahmadawais avatar balazssagi avatar billylevin avatar blackkspydo avatar bryanbraun avatar datadeer avatar dtinth avatar eps1lon avatar ghostdevv avatar iamandrewluca avatar iaurg avatar jamietanna avatar jcsrb avatar jinksi avatar karlhorky avatar lambdajack avatar leovoon avatar lpmi-13 avatar mahdimajidzadeh avatar manuelbieh avatar matiasverdier avatar meleu avatar scribblerockerz avatar sreetamdas avatar swyxio avatar theianjones avatar wgao19 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swyxdotio's Issues

Betwixt Reason and Result


title: Betwixt Reason and Result
slug: betwixt-reason-and-result
category: essay
tags: ['Advice']
date: 2019-06-29

I'm writing to you from a cheap hostel in downtown Toronto (Hostelling International, highly recommend for solo travel, I have stayed in SF, LA, NY, PHL, TO, NZ and more I probably forget) where a cute anecdote just happened that illustrates an important principle.

This hostel has a dive bar in the basement. If you're the social drinking type it's pretty cool, except tonight they have a really bad band playing. Like some dude wailing away on the mic trying to be all metal, but halfheartedly. His band is doing something, but unfortunately his mic is tuned up so high you can't hear them. It's loud and it's bad. This would be fine, except... in the study area where I am typing this, where all the young kids are busy working on their laptops and such... this hostel has also chosen to put the bar's music on blast on the wall TV.

It's my second evening here. It was the same deal last night too. Clearly nobody here is enjoying the "music". They tolerate it. Most of us have headphones in. One girl even has her fingers in her ears as she reads a magazine. I tolerate it too, for hours.

Eventually I have enough, ask around if anyone minds, get a chair, stand on it to reach up to the TV, and turn it off.

Blissful silence.

Then: smiles, thumbs up, and one girl even says "oh thank god". And we get back to our activities, this time sans faux-metal caterwauling.

Now: I don't know if I was allowed to do that. The TV was hostel property. Someone clearly turned it on and left it on for a reason. But at the same time it was clear nobody actually in the study area was enjoying it, and I even asked before I did it. And after I did it, everybody was visibly happier. It took 30 seconds for the result of hours of slight improvement in quality of life.

Making the change you want to see in the world

This is a small, meaningless anecdote, and I'm not holding myself out to be some paragon of independent thought, but I find it a nice microcosm of many similar, far more high stakes situations in real life. Why didn't anyone do what I did? Was it because there was no explicit permission? Was it that everyone at the hostel was transitory? Was it a normative issue; nobody else is doing anything about it, so I shouldn't?

I think these are good academic questions, but the wrong ones as far as personal philosophy is concerned. It doesn't matter what others thought. It matters that I was personally being inconvenienced by this thing, and that I could take a simple action to address it. So I did. The fact that it was a reversible action (a la Collison and Bezos) also made it easier to ask for forgiveness rather than permission.

I often say that I don't take my own advice anywhere near as much as I should, and this is especially true here. I have had a lot of conditioning to accept things as they are and to work within the system. My life has definitely suffered because I failed to question defaults. Even among my peers I'm a relative deviant and outlier, but even I know that I don't push the envelope anywhere close to what I have seen smarter and bolder friends do. To be clear, I'm not talking about doing anything immoral or illegal or just plain rude, I'm just saying we could all do a little better for ourselves and for our environment by exploring that vast gray area between the status quo and the clearly not allowed.

The Importance of Being Unreasonable

Everyone should know the George Bernard Shaw quote:

“The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.”

A little gendered, but you get the drift. In fact my objection to it has more to do with the negative connotations of "unreasonable" - that you cannot be reasoned with, and generally that you can be an ass to someone calmly trying to tell you why you can't do a thing. I am not OK with that.

Framing is important to me, so I looked around for a more positive framing for this idea. I like this phrasing by George Mack:

4/ High Agency is a sense that the story given to you by other people about what you can/cannot do is just that - a story. And that you have control over the story. A High Agency person looks to bend reality to their will. They either find a way, or they make a way.

5/ Low agency person acepts the story that is given to them. They never question it. They are passive. They outsource all of their decision making to other people.

Of course, this is a cartoonish dichotomy of people between "supermen" and "sheep". But it can be a useful mental model ("all models are wrong, but some are useful"). I recommend George's whole twitter thread for even more perspectives on agency. In particular, Paul Graham describes this quality as the difference between being Relentlessly Resourceful and "hapless", which is a nicely positive framing of this.

Ultimately, though, I still come back to this idea of "unreasonable", but from a more literal perspective. Here's Steve Jobs and the Janitor story:

Steve used to give employees a little speech when they were promoted to Vice President at Apple… Lashinsky calls it the “Difference Between the Janitor and the Vice President.” Jobs tells the VP that if the garbage in his office is not being emptied regularly for some reason, he would ask the janitor what the problem is. The janitor could reasonably respond by saying, “Well, the lock on the door was changed, and I couldn’t get a key.” It’s an irritation for Jobs, but it’s an understandable excuse for why the janitor couldn’t do his job. As a janitor, he’s allowed to have excuses. “When you’re the janitor, reasons matter,” Jobs tells newly minted VPs, according to Lashinsky. “Somewhere between the janitor and the CEO, reasons stop mattering,” says Jobs, adding, that Rubicon is “crossed when you become a VP.”

To be "unreasonable" is to literally not have reasons factor in to your process for not getting things done. The buck stops with you, figure it out. This is the principal-agent problem: when you were merely an agent, as long as you "did your job", you were fine. Ironically the process of becoming "high agency" makes you into more of a principal than an agent. You may find this comical but all good senior leadership lives on being able to delegate execution.

Bad leadership can be "unreasonable" too; an unprincipled "do whatever it takes" attitude often leads to strategy churn, cutting corners and sometimes even jail.

The vast gray area

Now, I instinctively dislike a pure results-driven approach: after all, shouldn't we be focusing on Systems over Goals and obsess over process over outcomes? How to reconcile the desire to be "reasonable" vs ruthlessly getting results by any means necessary?

I will argue that "high agency" can occupy the liminal space between the two. Take another look at the graphic from George Mack's tweet:

https://pbs.twimg.com/media/DtMZnBrWsAA97f6.jpg

Was the person allowed to build that raft? Unclear, but probably yes. Would it help save his life? Unclear, but at least he has a shot. Would 99% of people have just sat around waiting for help to arrive or things to improve? Absolutely.

The status quo is usually overly conservative. It has the benefit of being tried and tested and allowed, but it is slow to adapt to changing rules, and frankly not enough alternatives are usually tested before everyone settled on this status quo. I liken this to the local vs global optima concept in Mathematics and Machine Learning: we know what we have right now works, but we don't know if there's something better unless we go look. Too few people do.

What prevents us from exploring the space of possibilities? There are many reasons, but I think our reasonableness is a big one. A reasonably smart person like you or I can reason our way out of doing anything. That's good for academic and socratic debate, but bad for actually taking any action. And of course, there's the trump card: "If something better could've been done, it would already have been done". This is remarkably lazy thinking and characteristic of reasonable people.

The popular joke that comes to mind in this genre is the Economist refusing to believe there can be $20 on the ground because if it did it would already have been picked up.. It enforces a false dichotomy that either the market is totally efficient and the $20 doesn't exist, or the $20 exists and the market never efficient. But both can be true. Someone's got to be first to pick up the $20.

YOU can be that first person to do something. And you should.

i18n date

Hey, trying out your new site and I notice that because my locale isn't set to the US, the date jumps formatting from static site to "hydrated"
from Sep 15, 2019 to 15 Sep 2019

Ensembles vs Committees


title: Ensembles vs Committees
slug: ensembles-vs-committees
description: A useful dichotomy for team dynamics.
subtitle: A useful dichotomy for team dynamics.
category: essay
tags: ['Principles']
begun: 2018-11-24
date: 2019-10-26

Some groups wear down each other's rough edges; other groups form a gestalt combination of strengths.

I call these Committee vs Ensemble dynamics.

What sets them apart?

Is one always good and the other always bad?

Definitions

Committees are great for "risk reduction": covering blind spots, getting buy-in from stakeholders. But they also risk culling originality and velocity. So upside risk is traded for lower downside risk. Committees produce the intersection of what all members agree on.

"Lows" preside: You hear words like "Low hanging fruit" a lot, you target work to the Lowest Common Denominator to avoid offending anyone, everyone is working at Low intensity.

Ensembles are great for creative energy: "yes, and" reinforcement, maximizing unique talents. But they also risk inconsistency, failure/outright bad ideas, and groupthink. So both upside and downside risk are higher. Ensembles produce the union of all member output.

"Highs" preside: The team feels High energy, everyone is running at high utilization of their capacity and of their resources, and high emotions present, sometimes resulting in huge and problematic fights.

If it isn't clear: I am trying to be neutral here but I do have a bias toward Ensembles. I also recognize that just as you should pick the right tool for the job (caveat: see In Defense of Hammers), you should form the right group for the job.

You don't make Saturday Night Live by Committee. Nor should you make law by Ensemble.

How to spot a Committee?

Everyone has a veto. Opinions become checklists, routines, TPS reports. The status quo, and path of least resistance, is inaction, which often happens and goes by without acknowledgement. The group keeps growing because the qualification for membership is "having a stake".

To combat this: Set deadlines, participation requirements, default Ulysses pact actions.

How to spot an Ensemble?

(Almost) No veto. Everyone is trying to one-up each other in their own way. The status quo is friendly competition or people dropping out because they can't commit. Bad ideas get out into the wild and fail/backfire.

To combat this: Benevolent dictator, whose power is kept in check by the freedom of participants to walk away.

originally https://twitter.com/swyx/status/1066486842495782912

Donating $10k to FreeCodeCamp


title: Donating $10k to FreeCodeCamp
slug: donating-to-freecodecamp
description: I benefited from FreeCodeCamp and would like to give back
category: essay
tags: ['Reflections', 'Tech']
date: 2019-10-20

Why I don't usually donate

I'm not a big donor to nonprofit organizations. I spent some early years seeing how they work from the inside and came away with a deep distaste for their general lack of accountability. Often it is spent on fundraising and personal perks. Nonprofits do not have a monopoly on doing good; for-profits not only create jobs, pay taxes and fill a need for customers, but also have market forces (imperfectly) driving them to stay efficient.

I'm frankly just not a big donor, period. 2-3 disastrous financial decisions from me and my parents during college years left my family around $500k in debt at peak. I'm the primary earner now that both are involuntarily retired. pretty much every thing i have saved in the 10 years since is going towards paying that shit down.

But I also care a lot about impact - is my dollar going to someone that really needs it - and the relationship I have to the cause.

Why donate to FCC

On these two counts, FreeCodeCamp comes up tops. Quincy and team have proven themselves to do a lot with very little. But recent outages have forced Quincy to draw attention to their $300k budget. To be clear, they also get a lot of free services from companies. But they could definitely use more cash. Quincy is also very scrupulous around how he does fundraising - no ads, no nags - which I strongly identify with and want to reward.

I also care a lot about keeping quality coding education free. When I decided to explore learning to code, I wasn't sure if I was cut out for it. So I kept my day job, and just did something on freecodecamp every day for 6 months. It was a struggle, but completing FCC was what gave me the confidence that this was actually something I could do and was worth quitting my job and investing actual money in. My story isn't even special - at least I had a job to keep me going. Others have less.

I will also mention that I tried to give back to FCC through volunteering my time and code. I built the Redux example for their new course. But it was slow going and I didnt find it all that interesting to work on, if I'm being honest. I reckon my money goes further than my personal time here.

Why I want to donate now

I got a $20k raise this year thanks to Sarah fighting for me (I took a sizable pay cut in coming to Netlify, but also my "market value" likely has risen in the past year). In line with Effective Altruism, I have been looking for effective ways to spread this good fortune. I sent some money to ConcatenateConf, but I also had plenty of bad ideas - sponsoring people to JAMstackconf, buying Eggheadio memberships for random people. Doing this kind of thing triggers the economist in me. It is a fair question whether concentrated charity to a lucky few is more effective than diffused charity to a general cause.

Supporting FCC isn't just about the learning platform. It's also the publication and the Youtube Channel. This has a massive audience in India:

https://pbs.twimg.com/media/EE7M1kIWkAIhGV6?format=jpg&name=medium

and Nigeria:

https://pbs.twimg.com/media/Dz1l9SaWkAEx7wz?format=jpg&name=4096x4096

while of course also helping people in the US. Mostly I also like the idea that the students don't just get random oneoff gifts, they have to work to realize the maximum potential of FreeCodeCamp.

By allocating $10k to FreeCodeCamp I'm effectively treating FCC as a bootcamp with deferred payment. For reference, I paid $17k to go to Full Stack Academy. They had stronger in person tuition, and also got me my first job, so it feels about right. I also like the idea that FCC just needs to produce 30 of me a year, out of a pipeline of millions (google says 350k students/month), to meet its annual budget.

DONATE HERE

https://pbs.twimg.com/media/EHaeZOIWkAE9lRP?format=jpg&name=medium

CFP Advice


title: CFP Advice
slug: cfp-advice
category: essay
tags: [Advice, Tech, Careers]
date: 2020-01-18
description: Some thoughts on writing your first few CFPs

I'll assume you know what a CFP is and want to get one accepted (so I dont have to justify the value of learning in public) and are just here for my advice.

Table of Contents

Who Am I to Advise You?

I'm not a veteran, world class speaker. I don't maintain any widely used library or framework. I don't work at a FAANG. I started my first dev job in Jan 2018. My first meetup talk was in Dec 2017. My first conference talk was in Aug 2018. In the year-and-a-half since then I have spoken at 20+ events from ~250 person local community conferences to ~4k person bigger ones, internationally from the UK to Sweden to India and two JSConfs in Singapore and Hawaii.

I don't say this to flex, merely to establish what I've done and also what I've not yet done (e.g. been a keynote speaker or emcee or be invited to some more "prestigious" conferences like React Conf, Abstract, StrangeLoop, Deconstruct, Smashing, or An Event Apart). I know I'm solidly B or C list. I'm starting to get conf invites, which give me more freedom from the CFP process, but I mostly still have to go through it. If you're a beginner, maybe that makes my advice more relatable to you. Maybe not. Your call, I can't change who I am.

Watch a lot of talks

Speaking and CFPs and the world of conferences have their own special language. And like any language, you learn best by immersion.

My YouTube Watch List is 400+ videos long. When I have lunch or am bored, I pull up a video and watch a talk. Most conferences directly copy + paste titles and talk abstracts into the videos, so start paying attention to those, since you're about to start writing them.

(It also trains the YouTube algorithm to start recommending talks rather than entertainment)

You can find great talks at Sara Viera's Awesome Talks site.

Speak at a Meetup

If you haven't spoken at a meetup yet, I strongly recommend you do so a couple times before you speak at a conference. This is your first best trial run to get your speaking nerves out of the way, iron out the presentation technologies you want to use and also to trial your content on people who aren't your dog. On the flip side, meetup organizers are generally always looking for speakers, because meetup attendees are a shy, lazy bunch :) so you will be doing them a favor. Some meetup organizers like GitNation actively use meetups to seed future conference speakers.

Pick a Conference

Once you know the conference, you roughly know the audience. First time speakers often have a goal to speak, but forget that as a speaker, you're there to serve the audience and the goals of the conference organizers. So the better you understand the conference and the audience, the higher your odds.

You can find conferences via community listings:

If you're new to conferences, "the game" can be rather opaque, so here are some basic, general facts (each conf will have exceptions!):

  • Conference organizers want to sell tickets, have a great content mix, and sell next year's tickets, in roughly that order. Speaker selection is a major part of how these goals are achieved.
  • Fortunately, you don't have to put butts in seats. Organizers will invite more famous speakers to do that. This is important: don't do what they do. Not yet. They're playing a different game, and the exact specifics of the talk/abstract matters less. You haven't earned that yet.
  • Your job is therefore to be a part of their content mix. This mix will be determined by the target audience of the conference. The more established the conference is, the more important good mix is a priority since ticket sales are assured.
  • Community conferences are often framework or language focused. For example, JSConf takes a VERY wide variety of topics - you don't even have to use JS or program for the web. It will always have room for the embedded JS talk or the creative coding talk or the other creative coding talk or the other other creative coding talk.
  • Company sponsored conferences are often around a certain architecture, even if you don't use the particular company. For example, Netlify (where I work) sponsors JAMstackConf and invites speakers who don't necessarily use or talk about Netlify. Scope is a little narrower and more "vertical" than "horizontal" if that makes sense to you.
  • A conference's speaker slots are limited. A rule of thumb is 8-12 speakers per day, per track (you can get more lightning talk speakers at the cost of some full talk speakers). So a 3 day single track conference has a max of 36 talks. The applicant pool for a conference ranges from an average 200 to something like 800-1200 for a JSConf. (some conferences are invite-only). So your odds go down or up depending on these variables. A rejection doesn't sting as much once you see how incredibly selective it is. It's basically as nondeterministic as applying for colleges.
  • However since we already established the importance of mix, there are subgames to be played here. Even if 70% of CFP applicants use React, JSConf doesn't want to suddenly have 70% of talks be about React. So CFPs get put in buckets, whether explicitly or subconsciously. React CFPs will be compared on their merits with other React CFPs. And there will be some less competitive categories. Again, this may not be an explicit policy, but it happens regardless. Because "good mix" - in the subjective view of reviewers - is so important.
  • Most conferences (again, with clear exceptions) will take big names over unknowns per domain. For example, if both Sarah Drasner and I were to submit a CFP on Vue or Design or SVG animations, they would be stupid not to take her over me. However if this happened in every single talk, there would never be any new faces on stage, no pipeline for the next generation of speakers. Given equal levels of unknown, employers also get taken into account. This is why "blind" CFP review is important for some level of equity, serendipity, and renewal. In my experience, most CFP's are NOT blind. Mainly because putting butts in seats is more important for most conferences.

So as a first time speaker, your best opportunities are to apply to multi-track, multi-day conferences that have committed to a "blind" CFP review process, around a framework or language or architecture you know well, trading off topics you know vs their relative competitiveness.

You should also especially seek out conferences that put out high quality videos of every talk. This has two purposes. Part of your first talk's job is to be a calling card for your next talk. Secondly, you can tell the exact nature and tone of previous talks that have been accepted for that specific conference.

Pick a Topic

Given you now know your target audience, there are two things to sort out before you really even start writing your title or abstract.

First, you have to find a topic. This is, at its simplest, finding the intersection between the things you're very interested in and the things that everyone else is interested in. The simple reason for this disparity in interest is that you're gonna be spending a bunch more time on this topic than the audience is, but you still need an audience to show up (and, more to the point, for CFP reviewers to rate you highly).

This intersection might either seem daunting or too broad to be useful.

  • If you find it daunting: you don't need to have a ton of production experience in the topic to give a talk on it. You don't need to be the creator of the framework or library. You don't need to understand its internals. As long as you've probably spent more time on your particular topic than your audience, they'll have something to learn from you. To some extent, you can even "mortgage your future" a bit - propose a talk on something you want to learn, before you've learned it, and use the talk acceptance as an artificial deadline. I don't recommend always doing this, but I've seen it work well :)
  • If you find it too broad to be useful: understand that in aggregate, the interests of large groups of people are very predictable. They always want to know what the future holds. They always want a comprehensive introduction to something popular. They always want real life "war stories" of things they'll probably have to do in future, from people who've successfully been through it. Developers always want easy ways to add design touches without being a designer. Vice versa designers. If you need ideas, play buzzword bingo. Accessibility, Automation, AI, Design Systems, No Code, GraphQL, Serverless, Service Discovery, Infrastructure as Code. Everyone has the same insecurities and in a way you are there to tap into, and satisfy, their insecurities. The base insecurity is Fear of Missing Out. Everything else is a derivative of that. More to the point, conferences with a similar target audience will likely have the same mix (and, more often than is probably healthy, the same speakers!). Conference organizers look to other conferences for inspiration, and so should you. (To be EXTRA CLEAR here: this is only if you need it - it is perfectly fine to do a talk about nonhyped technologies that aren't buzzwords too. But humans do like buzzwords. 🤷🏽‍♂️)

A reliable way of gauging the interest of others is to look at community watering holes. What topics keep coming up on Hacker News, Twitter, or Reddit? You can niche down from megacommunities to industry ones - for web development this would be sites like Dev.to, CSS Tricks, and Smashing Magazine. What are the most active github repos? What are megatrends on package downloads? What are framework and library core team members putting out? What are company leaders (whether it is ones you work at or just notable ones in the news) doing that is interesting? But be aware that sometimes people don't know what they want until they see it.

You can also gauge relative interest and your own interest by creating more. As I noted recently - "Blog more. See which blogposts get abnormal traction." Twitter, HN and Reddit are wonderful feedback mechanisms to gauge interest. The MVP of a talk is a blogpost. If you aren't a great writer, that's fine, you can also create demos. Diana Smith has made a career of CSS art and I've never read a blogpost of hers. You bet your ass she'll be accepted to speak anywhere (I'm actually pretty sure she has spoken, I just can't find it right now). Your YouTube watch history and GitHub timeline are also great indicators of revealed interests.

A special note on nontechnical talks: I love them. Advice on Career Management, Impostor Syndrome, Salary Negotiation, Working Remote, Learning in Public? They are great, and last longer than any technology you choose. Conferences should have more of them. They don't. I haven't had much luck with the few that I've submitted. The reality is that the ultimate customers of conferences are the bosses of the people attending conferences. They want to see some "I can use this at work" return on investment on sending their employees. Most bosses find sending people to technically-heavy conferences easier to justify, hence there is more demand for technical talks. Less cynically, the timeframes for measuring and getting return on investment (1-2yrs) dictate what you invest in.

If you work at a mission-driven company, for example a non profit or a government entity or school system or museum, definitely see how you can incorporate your social impact into your talk. Developers are always looking for more inspiration on how their tech reaches out to the "real world", because most of us spend all day working on SaaS apps and marketing pages :)

Pick a Genre

Once you know your topic, there are several different "genre"s of talk, that will dictate your CFP title and abstract. Of course, you can choose not to stick to a genre, or to subvert a well known genre, but within the confines of a CFP it can often be easier to just stay inside a genre. I don't have a full list of genres, since I haven't been collecting them, so here is a nonexhaustive list:

  • The War Story: This is a great first talk genre for someone with some work experience. You simply tell a story of something you went through at work, including setbacks, lessons learned, and ESPECIALLY any quantitative benefits gained. You don't have to be the world expert in anything except your specific situation. It usually helps if you work somewhere notable like AirBnb but a lesser known name is fine if you advertise the interesting elements of the story like Millie Macdonald did.
  • Library/Framework/Product Launch: Conference organizers like to be at the start of something big. To do this genre of talk well, you have to tackle an important problem, and sell the idea that you have developed a good solution for it. You don't have to have made it yet, tho of course it helps. Examples: Dan Abramov, Ryan Dahl
  • How to X: How to do Error Handling in GraphQL. How to do Input Masking in Vue. How to make Static Sites Dynamic. How to Be a Web A/V Artist. 14 Ways to Bounce a Ball. You get the gist!
  • Introduction to X: This is easy Meetup fodder, but is more difficult to get traction at conferences, usually because conference organizers don't want to be perceived as having talks which could just as easily have been on the docs or on README instead. So a good Introduction to X talk will also have to be creatively framed and titled. One of these I've seen recently is Louisa Barret's Intro to Color Theory, except it wasn't named that. It was titled The Teenage Mutant Ninja Turtle Guide to Color Theory. You can even add a single word like A Whirlwind Introduction To TypeScript. See how this works?
  • What's New in X: Straight survey of what's new. This is also often framed as "State of X". You often have to be rather established to do this kind of talk, like Mark Erikson or Ben Ilegbodu, or Sarah Drasner or Evan You. But even if you're not super established, you can also bring data like Sacha Greif or just straight up explain things entertainingly like Tara Manicsic.
  • Fundamentals: This is a GREAT genre for beginners (not that it is exclusive to beginners). CS Fundamentals like Algorithms, Data Structures, State Machines, and Coroutines are always loved because they reinterpret boring, dry things that everyone "should" know, in a more familiar, up to date context. But I name this genre more broadly because you can also think of other fundamentals to teach, like the JS Event Loop, Visual Design or Game Programming Techniques.
  • Live Coding: This is an intimidating genre to many, because a mistake can derail a talk without a satisfying conclusion. However, the "live wire act" fascinates audiences (same reason we enjoy watching circus performers doing death defying stunts we are totally aware have been extremely well rehearsed, but there is still a risk of catastrophy). Being able to watch working code in formation over time gives extreme confidence in the tool or language or concept being demonstrated. Two less appreciated benefits are the familiarity of IDE as presentation tool and the natural guard against rushing (first time speakers, like me, make the mistake of talking too fast to hide nervousness and risk losing audiences). My best talk is a livecode talk and I think interest in this genre is on the rise. SmashingConf is now organizing 100% livecode conferences, and React Live is also 100% live code.
  • Heresy Talks: Definitely not for the faint of heart. To do a Heresy talk, you have to go to a conference where >80% of people love Technology X and tell them why Technology X isn’t good enough (yet) or question the tropes fans tell to oversell it. See Corey Quinn's Heresy in the Church of Docker or Robert Zhu's The Case Against GraphQL (bit left field, but “Everything you’ve learned (about X) is wrong”). The pro is, attention is guaranteed with all your slandering. The con is, you better be confident in your claims or be prepared to be torn apart.
  • Intersection Talks: This is definitely downstream of picking your topic, but usually people with interests in X and interests in Y are underserved with talks about X + Y. There are an infinite number of topic intersections, too many to name, but just talk about the obvious tips and tricks and notes that come to mind when you consider intersections.
  • The Perf Talk: This is a great genre for speed demons. Pick a common usecase, start of with a very inefficient, very high number, and whittle it down with trick after trick. Here are examples from Jake and Surma and Sasha Aickin.

Pick a Title

Your title is twice as important as your abstract. CFP reviewers will look at both your title and your abstract. Conference attendees mostly only look at your title. Especially in multi-track conferences, most conferences only have room to print out your talk title, and that will often be the deciding factor between whether your talk has crickets or is standing-room-only (I know this from experience).

But no pressure: you can still tweak titles after getting accepted.

To the extent that your genre dictates your title, just go with that. (I'll put all genre title examples above in the Genre section)

If you can come up with a memorable name that encapsulates your core pitch, like Never Write Another HoC, do that. If your talk is good, its title will be quoted back to you with surprising frequency, so make it something you can live with.

Examples:

Getting creative and eyecatching is helpful. Remember that CFP reviewers will mostly be scanning through hundreds of CFPs, usually in a Google sheet or table. Short titles stand out. Special buzzword keywords stand out. Again, scan through old published conference schedules to get an idea of what works.

If none of the above fit, don't push it. Just take the most boring, practical title you can do that touches on the main technologies you'll be demonstrating. Sometimes plain and simple is best!

Examples:

  • to be completed

Write an Abstract

With your genre and title chosen, your abstract will practically write itself. You sketch an outline of the talk you want to do. If it helps, you can try to bullet point out all the things you want to do in your talk, then group and sort your points, and then use that as brainstorm fodder for your abstract. Don't give away the whole talk, but show just enough to pique interest.

Most conferences only ask for abstracts, but some will leave room for more context from you on why you are the best person to present this topic (it's usually optional, but USE IT!!!).

The first paragraph of your abstract is most important, since it is what will be printed and on the YouTube description. Most abstracts are just one paragraph. Of that paragraph, the first sentence draws the attention. The last sentence seals the deal. As with all writing, Gary Provost's timeless advice on writing applies:

This sentence has five words. Here are five more words. Five-word sentences are fine. But several together become monotonous. Listen to what is happening. The writing is getting boring. The sound of it drones. It’s like a stuck record. The ear demands some variety. Now listen. I vary the sentence length, and I create music. Music. The writing sings. It has a pleasant rhythm, a lilt, a harmony. I use short sentences. And I use sentences of medium length. And sometimes, when I am certain the reader is rested, I will engage him with a sentence of considerable length, a sentence that burns with energy and builds with all the impetus of a crescendo, the roll of the drums, the crash of the cymbals–sounds that say listen to this, it is important.

Do that, for your talk. Use less words if you can. Most of my abstracts are under 100 words.

Abstracts are great places to stick eyecatching datapoints. Did you know TypeScript is at 65% adoption of JavaScript users? or that 51% of developers use VSCode? Or that "we recently refactored 100K lines of JavaScript to TypeScript"? Or that I slashed my webpack build times by 20% with this one weird trick? We are suckers for numbers.

Most abstract submissions allow markdown for emphasis and simple styling. Use it. Sparingly.

Just like your talk title, you'll rarely be held exactly to it. Nobody is watching your talk holding you to your abstract at knifepoint. You reserve the right to change things, hopefully not too drastically or too last minute. You won't use this right often, but its there if you need it.

Run your abstract by a few developer friends, with no context. If they don't get it, that's a problem. You likely have a better idea of what your talk is than you've actually written down. Rip it up, try again. Be more obvious, less abstract. Appeal to what people will get out of your talk rather than the specifics of how to get there (which is the reason why people should come to your talk!).

Building a CFP Process

Ok, so you've written one CFP. Congrats! You're not done.

You can see this 12 Minute Video of How I Write CFPs explaining my process below

As you've probably heard, due to the selectivity and randomness, CFP submission is a numbers game. So it's more important that you build a sustainable CFP process than have any particular CFP get accepted. You'll be submitting between 2-5 CFP's per conference, and there are probably dozens of conferences each year that you are a good fit for.

So to avoid accidentally becoming a full time CFP writer, you'll just want to have a bank of topics and title and abstract samples that you can reuse. I tend to run with 5-10 of these, of varying readiness to present (remember, you dont have to be a world expert in some of these topics to talk about it). Tweak each submission to the conference's target audience as appropriate, like you would a cover letter in a mass job search. In a way, you're kind of looking for a job, a very short term gig.

Get a good photo, use the same photo everywhere. People recognize faces faster than names.

Write a short bio, you'll be asked for it over and over again. Don't write down your life story, just a simple statement of what you do, what you identify as and what you're generally interested in. As your speaking career grows you'll want to have a short, medium, and long bio on your site for organizers to just copy paste without asking.

As you start getting acceptances and recorded talks, keep a list of your best talks. You'll be asked for those in future CFPs. Make them easily discoverable and sharable, and people will start inviting you without CFP.

Example CFPs and Peer Review

Of course I have already given my advice that you should watch a bunch of talks and pay attention to titles and descriptions. But it really helps to have some example accepted CFPs so I will list what I have here:

People who have said they don't mind reviewing first timer CFPs:

Other Advice

Peggy Rayzis:

It's CFP season! Here's the abstract template I use for crafting effective proposals:

  1. State the problem
  2. State your solution
  3. What the audience will learn from your talk (optional: how you plan to teach it)

3-5 sentences max.

I read hundreds of proposals for GraphQL Summit. For the first pass, I spend <30 seconds on each one.

Get to the point quickly. Otherwise, you risk losing my attention, which usually is a rejection.

Phil Nash - how to find CFPs

Next Steps & Recommended Reads

Phew, that was a long ass post. Hope it helps! Ping me if you get accepted, I will be cheering for you :)

I'm of course not the only source of advice on this stage. Here are other advice pieces I have come across:

I will also be following up this post with my thoughts on speaking advice - giving the actual talk!

10,000 Loose fans


title: 10,000 Loose Fans
slug: 10000-loose-fans
category: essay
tags: [Reflections, Advice, Learn in Public, Twitter]
date: 2019-08-18
image: '/assets/swyxtwitteranalytics.png'
keywords: ['twitter']

I broke past 10,000 Twitter followers on Saturday. Obviously this is a completely arbitrary milestone and pretty minor in the hierarchy of needs. I'm not celebrating.

A person that -only- values follower count is playing the game Twitter wants you to play, as Eugene Wei would say, mining the currency they monetize for social status. I don't think I know how to play this game well, although I clearly do it better than some.

But Twitter is an important social network in Tech and in both my social and work circles. I thought I would take this milestone to do some retrospective for those of you who have opted in to follow along my journey (thank you!) and my future self.

This won't be a full retrospective; I first signed up for Twitter 9 years ago, but only started actively using it 2 years ago and things have changed a lot since my early days. More on my Twitter Rules of Engagement in a future post.

What 10,000 Followers Looks Like: By Numbers

First, some numbers.

SocialBlade tracks me gaining between 600-900 followers a month. I follow on average 35 accounts a month (I only occasionally prune silent accounts). I tweet about 40 times a day (including replies; low 16, high 121 in the past fortnight).

Here's my Twitter Analytics halfway through August 2019:

./swyxtwitteranalytics.png

It's better to get an idea of a full month, so looking at July:

  • Impressions: 3m
  • Mentions: 2,118
  • New Follows: 828
  • Profile visits: 16.7k
  • Tweets: 884
  • Engagement: ~1.4%
  • Link clicks/day: 335
  • RT's/day: 53
  • Likes/day: 473
  • Replies/day: 50

The Top Follower slot is usually taken by a bot, noticeable by sheer amounts of hashtags, but sometimes I get cool people like John Maeda and, even rarer, companies like Heroku.

My top Tweets are usually memes like this or parodies like this or technical stuff like this. Basically I don't have much of a pattern apart from something vaguely technical although I did have one recent notable exception outside my usual beat, which were literally just pictures of Singapore.

What 10,000 Followers Looks Like: By People

Numbers can be bought. Numbers can be gamed by shoveling low quality popcorn down people's throads. Numbers can be gained be channeling outrage and signaling social values. Numbers can arise by doing deep, fundamental work and by you simply posting updates on work that people rely on.

For better or worse, I don't do any of that. I value anecdotally experienced engagement from people I respect. This doesn't mean they have to follow me at all. It just matters that I have the ability and the credibility to reach out to someone when I need to and I pass the "Is this rando worth my time" test. (How to make it worth their time? Learn in Public.)

I wasn't planning for this but I recently felt this sheer awe in a recent tweet. I was thinking through a modal interaction I'd implemented before and see all over:

modaltweet.png

I simply tweeted that because it was something I was working through and didn't know. To this day I don't know what kind of response any individual tweet will get.

Here are the kind of people that replied:

  • Chris Coyier (needs no intro)
  • Steve Schoger (Design God)
  • Ryan Florence (router and modal king)
  • 3 Former Facebook Employees (FB first implemented that in Snowlift)

and many more with comments and alternative names and approaches, even tutorials on how to do it.

As awesome as that is, Twitter DM's are even more valuable. That is a level of intimacy on par with and sometimes higher than having someone's number to text back and forth. I got my current job through a Twitter DM, and continue to get an enquiry around once a month. Other backchannel conversations and the rare group DM are also very valuable. (Twitter DMs are inferior to other group chat solutions like text and Whatsapp in every way but one: they're native to the platform.)

This is the kind of thing I'm on Twitter for. A hive mind of people with way more knowledge and abilities than I will ever have, that can help me and that I can hopefully help someday.

Twitter is AMP for thoughts

The bitesize and free nature of Twitter belies its importance. If the number one feature of a social network is the people already on it, then Twitter has that on lock as far as developers are concerned (arguably GitHub is more valuable despite only being acquired for $7b!). I challenge you to find a single conference where speakers don't mention their twitter handles. I challenge you to find any other social network mentioned.

Yet business founders, even of technical businesses, regularly advise that email is more valuable. I believe they're right for certain types of content, like email marketing and long essays like this one you're reading right now.

But Twitter has value in its constraint. By limiting every tweet to 280 characters, they force some clarity and economy and in turn make the infinite-scroll-feed more valuable and palatable. (By the way: there are very easy hacks to get disproportionate attention for your tweets I should probably write about someday. But it definitely doesn't involve a million hashtags.) Fail to encapsulate important nuance and face wrath from the mob.

By "selling out" to Twitter's requirements, you help add value to Twitter, and Twitter in turn gets you the distribution you want to other people, and by their interaction, adds value to you. Your Twitter followers are fans of yours, but only loosely. Their fanhood is (implicitly) conditional upon and improved by you following The Format and your reward for behaving is getting more notice faster.

Twitter is AMP for thoughts. Like the real AMP, it is a deal with the devil to do things that are probably good for you anyway.

Loose Fans and What I'm Doing About It

Kevin Kelly famously wrote about how far you can go with 1000 True Fans. It's about "true" fandom, but also about how you can make a living serving the long tail, which is very true.

However it is not true for Twitter. You grow in Twitter by participating in tribes, and eventually (maybe) leading and growing your own, the bigger the better.

Twitter followers are "loose" fans. They haven't paid for anything from you, they haven't opted in for "your whole self" or pictures of what you had for Sunday brunch, they have simply opted to follow you to improve their main feed or keep tabs on something you're doing that is relevant to their interests. (There are also ways to modify this, via lists and muting, that I should write about in future.) It's very hard to call them to action mainly because you'll never be sure if they even see it. Them's the shakes.

Many aren't even really "fans". They may be there just to try to prove they're smarter than you or to endlessly nag or stalk you. This is especially obvious at higher follower counts. This is part of why I don't relish the thought of 10xing followers, because although it will probably open up more opportunities, it will take away a lot of what I enjoy about my current Twitter experience.

The two ways I am dealing with this now are by starting to put work into my email list for this blog you are reading, and also by making plans for my own Twitter client. I intend this to be a lifelong project.

Uncaught TypeError in home page: Cannot read property 'html' of undefined

There is an this error Uncaught TypeError: Cannot read property 'html' of undefined on the home page of swyx.io and it stopped the rest of the code from working, including routing.

I tried to dig into the source code but I cannot see why it's happening. It is probably coming from this line. Maybe it is something related to how Svelte updates state?

Anyway, thanks for your posts and regular sharing on Twitter. Good luck with your talk at the jsconf!

URL popups on links disrupt the flow of text with screen readers

In the body of your blog posts, each link has a popup that displays the URL of the link when the pointer is over the link text. But in the current implementation, these URLs are always read by screen readers, disrupting the flow of the text. I can reproduce this with the Narrator and NVDA screen readers on Windows.

I think the reaon this is happening is that the URL popups are always technically visible; they just have a size of zero when the mouse isn't hovering over the link. I suggest that each popup should have a CSS display property of "none" when it's not supposed to be visible.

Canonical URLs don't have trailing slash

Hey there swyx! I'm currently doing some spelunking on my own site to make some changes to my SEO strategy based on a course from Monica Lent called SEO for devs... one of the activities she recommended was doing a self-audit of SEO strategy using an SEO extension from Detailed.

To make a long story short, I went and checked your site to see how you structure the title tag for your individual pages (because your site is very much a gold standard), and when I inspected it with the Detailed extension, I noticed that Canonical URLs for your site don't end in trailing slashes, but when I visit your site, each page does have one. I'm not an expert (far from it), but according to the SEO extension's checks, it's something you might want to look at:

image

From a quick search of your source code, it looks like you could update the svelte code that renders canonical links in your pages here to address it: https://github.com/sw-yx/swyxdotio/blob/master/src/routes/article/Article.svelte#L19

I hope that makes sense - just trying to pay forward what I'm learning! Have a great day!

The Many Jobs of JS Build Tools


title: The Many Jobs of JS Build Tools
subtitle: For new JS developers
description: A discussion of why JS developers use build tools like Webpack and what we do with them, for new JS developers.
slug: jobs-of-js-build-tools
category: essay
tags: ['Tech', 'JavaScript']
started: 2019-12-22
date: 2020-01-06

Essay status: mostly baked, sat on this for about 3 weeks and got some amount of peer review

One of my regrets in my recent SE Daily interview was my rather poor, panicked description of "Why Webpack" and "Why Gatsby". Jeff, the host, doesn't do much frontend coverage, whereas I have lived and breathed this stuff for the past 2+ years.

It felt rather like that phenomenon of how "Fish have no word for Water" - Water just is. Having to justify the existence of Water from first principles called on explanation muscles I rarely use. And then when I checked Webpack's Why Webpack docs, I felt it focused mostly on modules and didn't spend enough time on the other important jobs that build tools provide for us.

I'd like another shot at explaining this.

Table of Contents

Build Tools are Optional

The first thing to acknowledge is that build tools (which imply having a "build step" before deploying code, instead of directly being able to go from source code to deploy) aren't technically required.

JavaScript is meant to be an interpreted language - write some in a <script> tag or in browser console, and it runs. No mandatory compile step unlike some other languages. So, then, to put a build step - that kinda looks like a compile step - in front of it evidently takes something away from that benefit.

Some people I greatly admire, like Luke and Brian, write their apps entirely without a build step. The universal result of doing this is lightning fast deploy times.

Only Scripts

I wasn't around for much of this history, but as best as I can tell, build tools came to JavaScript primarily because we wanted a sane way to reuse code.

For almost 20 years since creation in 1995, reusable JavaScript code looked something like this:

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="magnific-popup/jquery.magnific-popup.js"></script>

Variables are scoped to each file, so in order to make a script that depended on another script, you had to throw them on the global window object:

window.MyScript = /* etc */

and then the subsequent script would access that magic global on the window:

var MyScriptCore = window.MyScript
console.log(MyScriptCore())

This is all kinds of bad - causing a namespace pollution problem, and requiring scripts to be loaded in the exact right order or face inscrutable undefined is not a function errors. What we really wanted was modules, rather than scripts.

I will not dwell further on the importance of modules - refer to Why Webpack and Why Would I Use a Webpack? if you need more convincing.

Task Runners

Relying on script CDNs introduced security and latency costs, so the alternative was to download the code and glue them together in the right way to create one (or more) custom JS bundles entirely within your control and hosted on your infrastructure. To gloss over a huge amount of development in the space (that I don't know much about), "task runners" arose to automate this process for you - Grunt, Gulp, Broccoli.

But something else also happened at the same time - server-side JavaScript became a thing.

Multiple Targets, Multiple Assets: the rise of Bundlers

Since introduction in 2009, Node paved the way for Server-side JavaScript, with npm becoming the de facto package manager for Node packages, but eventually all JavaScript. Developers naturally want to reuse code across Node and the browser, and this caused a rather unfortunate rift in the community between different module specifications CommonJS (from the Node camp) and AMD (from the browser people).

The job of task runners quickly expanded to help developers build to these different build targets, which is where "task runners" eventually gave way to "bundlers" like Browserify and Webpack

Important caveats: Fred Schott notes that this account may overattribute causality - but it isn't disputed that Browserify and Webpack were necessary enablers of "universal" or "isomorphic" JavaScript. Also, the chronology overlaps a lot - Mike Sherov notes that bundlers atop like RequireJS and Closure Compiler predated some task runners like Grunt and Gulp.

We realized that the act of concatenating scripts requires building a dependency graph and managing any namespace conflicts via static analysis. Where "task runners" mostly stopped at concatenating files per your explicit instructions, bundlers can use ASTs to statically analyze imports, ensure everything is initialized in the right order, and produce a minimal number of bundles for optimized loading.

To facilitate static analysis of dependency graphs, Webpack pioneered the import syntax, which has since been standardized into ESModules (here's Lin Clark on ESModules) and begun healing the divide between the various module specifications.

Incidentally, the job of task runners were also chipped away as package managers, primarily npm but also bower, built in simple and effective scripting to their CLI's. The similarity and overlapping responsibilities caused much confusion but hopefully I have given a good accounting here.

Today, Webpack is in wide use for apps and metaframeworks (tools that bundle other tools to lessen the pain of configuration) like create-react-app, Next.js and Gatsby. Rollup is in second place and is widely used for building libraries as opposed to apps, partially for historical reasons but its hard reliance on ES Modules lets it build smaller bundles at the cost of some incompatibility. Parcel is the newest kid on the block (launched Dec 2017), aiming for a batteries-included approach with parallelizable, origin-agnostic graph crawling.

Writing web apps often involves coordinating non-JS assets, like images and css files. It's often better to co-locate related assets with their associated code, than to have to manage them in separate folders. Webpack made it a norm to simply import Image from './image.png' and import 'style.css' inside of a JavaScript file to include these for bundling. Yes, you're "importing" non-JS assets into a JavaScript file, and this is Webpack magic made possible by its loaders.

A final, notable outcome of JavaScript being run both on the server and client is the rise of Server-side Rendering that "hydrate" into Clientside Apps - variously known as "Isomorphic apps" or, simply, "SSR". Next.js and other Metaframeworks take advantage of this for speed, SEO, and a unified JavaScript framework based approach to writing sites and apps (and all the shades of gray between the two).

Multiple Targets, Multiple Languages: the rise of Transpilers and Compile-to-JS

The other thing about clientside JavaScript is the incremental rollout of new language features. ES6 was released in 2015, a -huge- update that comprised over a decade of work and argument on the language. It made JavaScript a lot more tolerable to write serious apps in.

On one hand, people wanted to use this syntax right away (or even before release), but they were handcuffed by the fact that they would have to wait for the various JavaScript engines to implement them, and then for the individual browser updates to roll out to billions of users. That would take forever.

So Traceur and eventually Babel arose to allow people to write modern JavaScript, but that would "transpile" (compile from JavaScript to JavaScript) that code to the lowest common denominator understandable by all the engines the developer chooses to target. Similarly for new APIs (as opposed to new syntax, which Babel handles), you need to polyfill them with tools like core-js.

You technically could run these transpilations on their own, but more often than not you were including them somewhere in the plugin chain of your bundler for the creation of your final output JavaScript.

One issue that divided the community for a long time was whether you should transpile only your code or whether you should transpile all code including your code's dependencies and so on. With the former, you risked your app ugly-crashing if the dependencies weren't transpiled to your target browsers (hurting developer experience). The inverse was also a problem - if your dependencies preemptively transpiled to browsers you didn't really care about, their code was also a lot bigger than you actually needed (hurting user experience).

With the latter, you took your fate in your own hands - at the cost of much longer build times. IMO the consensus has recently shifted to the latter, but with passionate disagreement - more reading here. A final important note on JS compatibility - With the advent of evergreen browsers and the undying nature of legacy browsers, it is now common to use the module/nomodule pattern and build twice (one bundle for each group of browser targets, to ensure optimal size for evergreen browsers -and- maximum compatibility for legacy browsers).

Other non-standardized additions to JavaScript gained popularity as well. React added JSX as a way of keeping the HTML-like authoring experience of writing components inside JavaScript files. Ractive, Vue and Svelte adopted Single File Components that lean on bundlers to compile to JS, CSS, and sometimes HTML. Babel-Macros put metaprogramming and compile-time execution inside of Babel.

By the way - If you're gonna be writing make-believe JavaScript and compiling to JavaScript anyway, why keep writing JavaScript? CoffeeScript led the way to adding a Ruby-like developer experience, eventually supplanted by ES6. TypeScript and Flow added static type annotations and inference atop existing JavaScript syntax. ReasonML, Purescript, Elm and ClojureScript abandoned that familiarity in favor of stronger typing and more functional paradigms. Of these Compile-to-JS breeds, TypeScript currently polls highest at ~60% adoption in recent surveys.

Again - you can compile-to-JS all of these independently, but more likely than not you're also going to want to tie this work to a step in your overall bundler workflow.

Production Optimizations

The other job of task runners and eventually bundler plugins, apart from all this module, target, and language related work, is all production optimizations that were usually stuck on to the build pipeline. (Not core to bundling, but usually coupled with it) Here is a nonexhaustive list of optimizations in rough order of importance:

As you can see, enough of these are critical to modern web apps that build tools often become critically important for most teams and framework communities.

Developer Experience

Secondary to Production Optimizations (which impact end users), modern bundlers also offer niceties for Developer Experience (which end users don't see):

  • Automatic Dependency Collection - Old school Task Runners and even Google Closure Compiler require you to manually declare all dependencies upfront. Bundlers like Webpack automatically build and infer your dependency graph based on what is imported and exported.
  • Dev Server - for Single Page Apps and JAMstack apps, there is no running Node server to run locally, so the bundler boots one up for local testing.
  • Hot Module Replacement - reduces the feedback loop of code changes by swapping out modules while an app is running, without a full reload. Reliant on having a running Dev Server. A higher level of hot reloading preserves the state of components while changing them, not just modules - this is an active area of development in React and a first class citizen in Elm. (See Addendum for more details)
  • Source Maps - production code isn't human readable after all the production optimizations - bundlers can map source to production code, and browsers can request and display errors pointing to the original source if given a sourcemap. Useful both in production and in development.
  • Bundle Analyzer/Visualizer plugin - the modern app uses too many modules to manually account for. Visualization and analysis can help identify the biggest points to work on first. Formidable Labs makes a nice Dashboard for this.

Metaframeworks - reducing Many Jobs to One

Specifically for frontend developers using frameworks, all of the above can be a lot to setup just to say "Hello World" with best practices. It is natural to want to subsume these build tools under a single abstraction to form a new starting point. Dan Abramov, with inspiration from Ember CLI, led the way on this in React with create-react-app (this was the subject of my second ever talk).

In particular, Server-side Rendering is a pain point and of critical importance for performance while using a front-end framework, leading to Gatsby and Next.js (React), Gridsome and Nuxt.js (Vue), and Scully (Angular).

Even stepping outside the frontend web developer role, there is a case for abstracting over build tools, as with TSDX which helps write TypeScript libraries.

Conclusion - The Pandora's Box

A small and passionate part of the webdev community is working very hard to make build tools more optional than they are today. Given that modules are the primary/original reason for the rise of build tools, and have since been standardized in ECMAScript, each runtime is working on making them usable without a build tool. ES Modules arrived in browsers in 2017, and Node.js unflagged them in Nov 2019 (putting them on track for widespread use in Node 14 in 2020). Pika and Rollup are banking especially hard on the universal, ESM-enabled future.

However, legacy browsers still exist, and legacy, battletested code is still in wide use. I'm also not sure how transitive dependencies are handled (the import map proposal may help! but... how would you build your import maps?). But the overriding issue for the "no-build-tools" future is that the bar has been raised so much higher than just "we want modules in JavaScript", as the rest of this blogpost has painted. We still want asset management, static types, prerendering, image optimization, and whatever else we take for granted in modern web apps. So despite the progress in ESM-everywhere, I don't see a clear path toward it materially impacting JavaScript in the near term.

Here's V8's advice:

With modules, it becomes possible to develop websites without using bundlers such as webpack, Rollup, or Parcel. It’s fine to use native JS modules directly in the following scenarios:

  • during local development
  • in production for small web apps with less than 100 modules in total and with a relatively shallow dependency tree (i.e. a maximum depth less than 5)

Addy Osmani put it like this:

Imo module bundlers will be necessary for prod builds for a good while yet. In a few years, ES modules perf + modulepreload + H2 Push + Cache Digests might give us a compelling story, but it's a long road ahead. Modules for dev/authoring format may take off in short term.

Build Tools in JavaScript are a Pandora's Box. We opened them, and from what little I can see, they are here to stay. Hopefully this has been a good intro to what jobs they perform in JavaScript.

Related Reads

Other reads I recommend on this topic:

Thanks

Thanks to Sean Larkin, Mark Erikson, Robin Wieruch and Joe Previte for reviewing early drafts of this!

Addendum on Hot Reloading

I don't have much experience in the details of HMR. These are notes from Mark Erikson:

  • Module reloading: recompile, push new code to client, allow app to do something
  • "Plain" client reloading: just reimport and use affected modules. For React, this is mostly just reimport and re-render.
  • "Clever" reloading: attempting to preserve state in the component tree, but this requires much more complex work. React-Hot-Loader works by using Babel to insert http://module.hot.accept() and "proxy components" around every component it can identify, and moving the state up into the proxy component, but this is fragile. That's why the new "Fast Refresh" capability is actually half-built into React itself, with bundler-specific use of the APIs.

His full explanation of Webpack vs React's Hot reloading is on his blog..

potato

# This is a TOML document.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # Indentation (tabs and/or spaces) is allowed but not required
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]

100% CPU load in Safari after hovering external link

After hovering an external link the cpu load is 100% in Safari. I tested Chrome and Firefox. They both do not show the same behavior. Attached is a timeline snippet from Safari.

Bildschirmfoto 2020-01-29 um 11 28 42

Unfortunately no source code information is available in the Frames section.

Safari version is 13.0.5 on macOS Catalina.

"Failed to Fetch" After Signing Up for Newsletter

What I Did

I visited https://www.swyx.io/prettier-eslint-react/. When I finished scrolling to the bottom of the article, I wanted to sign up for the newsletter so I typed my email and hit enter.

What Happened

After I hit enter, a message that says TypeError: Failed to Fetch appeared, right below "Join 2,000+ developers getting updates" and above "Thank you for signing up".

I re-loaded the page and entered my email again, and the issue did not show up that time.

(I wanted to attach a screenshot of the webpage but doing that through Github's UI is difficult for someone that doesn't have a mouse [read: lack of accessibility]. Let me know if the description above is not sufficient and you want me to host the screenshot in some external website).

System Information

  • Browser Version: Google Chrome version 91.0.4472.114 (Official Build) (32-bit)
  • Operating System: Windows 8.1 Pro
  • PC System Type: 32-bit operating system, x64-based processor
  • I have an intermittent internet connection that randomly fluctuates between a reasonably fast speed (500+ MB per second) to a slow, might-as-well-be-offline speed (1KB per second), so perhaps that played a role.
  • I use my phone as a hotspot (ie, I use my phone's WiFi from my desktop computer) to browse the internet, not sure if that matters.

Steps to Reproduce the Issue

In my browser, with my operating system, I was able to reproduce the issue by doing the following:

  1. Visit the article's webpage (https://www.swyx.io/prettier-eslint-react/)
  2. Open DevTools
  3. Throttle the network, so it's "offline"
  4. Scroll down to the newsletter email input
  5. Click the email input, type a valid email address, hit enter. The TypeError message should appear then.

Alternatively, you could:

  1. Visit the article (https://www.swyx.io/prettier-eslint-react/)
  2. Turn off your WiFi (or, you know, whatever provides you internet access)
  3. Scroll down to the newsletter email input
  4. Click the email input, type a valid email address, hit enter. The TypeError message should appear then.

Side Effects?

I also got the same "Important: confirm your subscription" email three times, but I don't know if it's related to this issue.


If the TypeError message is there on purpose or if I misinterpreted something, let me know and I'll close this issue ASAP. :D

contact info

Hi Shawn, sorry but is there any way to contact you privately? I don't see any contact form (or email) on your website.

Cheers,

Branding Bundles


title: Branding Bundles
slug: branding-bundles
subtitle: Effective Marketing of Incremental Progress
description: The best way to communicate a group of benefits is to slap a label on it.
category: essay
tags: ['Marketing']
date: 2020-02-16

Preface on Glitches

I'm always on the lookout for "Glitches in the Matrix" - breakages in how you think the world works. Eric Weinstein calls it Truman Show Breaks. A less attuned person might brush it off as a random fluke, but very often it demonstrates serious flaws in your mental model of how the world works, particularly the gap between what people say and what they actually end up doing.

For example, many people brushed off the upsets of Toyota vs GM, Intel vs Cyrix, HP vs DEC as fluke after fluke of management missteps, but it took Clay Christensen to reframe these as management acting as they "should" (great recent discussion on the Exponent podcast). Other glitches? I don't have a list but the famous stripper scene in The Big Short is another. John Backus also points to the 2000s warez scene as a break in typical human behavior models.

I guess I should do a bigger blogpost on Glitches in future but that's the general idea.

CSS4

I experienced a "Glitch in the Matrix" this week when I saw that Jen Simmons was now advocating for CSS4. This just 2 years after swearing up and down on her channel that there would never ever be a CSS4. And all of a sudden it seems like the Who's Who of CSS are mostly aligned on having a CSS4.

Oh, of course, those of us in the know will nod and wink that there won't really be a CSS4, because independent modules are a thing. However, to the wider world, it will just seem like a weird about-face, but they'll get over it.

I think CSS4 is a great idea and especially applaud anyone who can change their minds for the greater good.

Get Out Of Your Head

I think the lesson here is that living standards don't work for the late majority. Nobody other than your in-crowd is keeping up on the intricacies and progress of every little spec, because they have better things to do. It's great for the people who work on the spec, but a complete mess when it comes to "casuals".

PPK framed it most convincingly for me as segmenting users between the engaged "head", interested "torso", and super long "tail" - although I find Ilya's original framing phrased with a little more humility.

I liken this effect to doing updates at standups and at company allhands.

  • At a standup, everyone there cares and has the context to know about every little bump and victory in what you're working on.
  • At an all-hands, nobody has time for your little problems. They just want to know when you're done and what the high level takeaways are.

If you care about impact rather than preaching to your own choir, you should care about getting best practices out of your "head" and into the "torso" and "tail".

What are Branding Bundles?

Branding bundles communicate readiness for broader adoption. They give some thematic coherence to a bunch of smaller features that, on their own, may not have as much impact. Perhaps equally importantly, they give a single hook for "torso" and "tail" people to learn up, prioritize, and check off the list.

This behavior of "checking boxes" might evoke some derision from "head" people, the people who know how much more there is to go. But it helps to define an acceptable upper bound in the investment needed from the business, and helps developers to build business cases based on success stories from earlier adopters (again, based on the same branding bundle).

In web development we try really hard to not break the web. However this not-breaking of things runs directly into the other maxim of "if it ain't broken, don't fix it". So when we make a commitment to incremental, non-breaking change, it can be hard to communicate the business value of implementing the results of those changes. Even in the "head", it can feel like things are always in flux. Branding Bundles help create a feeling of forward momentum for everyone.

You don't have to contribute to the letter soup of acronyms and buzzwords to create a bundle. The React 15->16 rewrite was backward compatible, so technically did not warrant a major version bump, but because there was a semver bump I guarantee masses of engineering teams invested in the upgrade. On a smaller scale, I was recently able to make the case for upgrading a library we had, by noting that we were on v2 and the library was currently at v9. People want to keep up with the Joneses.

Side note: This may sound silly, but a logo can be very important to branding bundles. People slap that on their slides and sites, and accordingly it creates social proof. Give your bundle a nice logo if you want it to go far.

Other Branding Bundles

CSS3 itself was a fairly successful branding bundle.

PWAs are a little vaguer bundle, with a "baseline" and an "exemplary" standard. But the marketing is working.

JAMstack is intended in that vein too. I frame it as, yes, a return to static sites, but also the confluence of 5 trends: Git Centric Workflow, Build Tools, next generation SSGs, the API economy (third party APIs), and Serverless (and 1st party APIs). (There's a deeper discussion here, and a lot of buts dependent on context, but I'm not going to go into that here)

I think we can also study Branding Bundles in other aspects of life as well. I think FICO score is a nice bundle of financial health metrics, even if easily gamed. Intel Inside was one of the most successful bundles of all time. You could view SOC2 and HIPAA compliance as a regulatorily imposed branding bundle. Companies like Stripe run their own Partner Programs that give some assurance that acceptable standards have been met.

Book Poll 2019


title: Book Poll 2019
slug: book-poll-2019
category: essay
tags: [Books, Reflections]
date: 2019-09-02

I've been feeling like I've skewed too much on empty calories recently. So I ran this poll:

Number of books you’ve read in the past year (fiction and non fiction):

Of 962 respondents, 25% didn't read any books, 35% read 1-3, 24% read 4-9, 16% were > 10.

I'm a 1-3 kind of guy and would love to up it. Many folks obliged with their goodreads lists:

Near Term Book Shopping List:

  • Algorithms to Live By
  • HPMOR
  • After On
  • Why We Sleep
  • Nudge

BHAGs


title: BHAGs
subtitle: On having Big Hairy Audacious Goals
slug: bhags
category: essay
tags: [Ideas, Goals]
date: 2019-12-11

Recently, I asked tweeple:

Need some inspiration. What is your Big, Hairy, Audacious Goal?

And people kindly indulged:

  • "Make 5 millionaires" (Joel Hooks)
  • "build my own house" (Wei Gao)
  • "Have my code executed a trillion times" (Mike Sherov)
  • "A coding school by day, a dance floor by night" (Dan)
  • "I want to be on the TC39 committee" (Laurie)
  • "Low-code, visually-developed, robust AI-powered app development tools." (David K.)

There were also people who didn't like BHAGs:

What BHAGs mean to me

For the uninitiated, BHAGs (I pronounce them "Bee-Hags") were coined by Jim Collins in Built to Last. Click thru for the concept in his own words. In a sense this is original sin - yet another management obsession borne out of ignoring selection bias for the sake of success porn.

However I choose to view BHAGs as something broader than a management goalsetting exercise. You don't have to run a company to have a BHAG, and plenty of companies are run successfully without one. You don't even have to have a BHAG. But having one helps put your current goals in context.

For a brief period, being "mission driven" was in vogue in Silicon Valley. BHAGs occupy the same mental space as having a mission, in my mind, except that they are bigger, hairier, audacious-er, and more specific.

BHAGs are a reaction against incrementalism. In a world of neverending trivial pursuit of low hanging fruit, they are a breath of mountain air. BHAGs aren't SMART - they're SMT, at best.

I think it's important, but not essential, to have some specificity to the goal. There ought to be some point at which it is over, no matter how ridiculously far out it may seem. That way, you might get some closure on it, and savor the feeling of a Job Well Done. But you can also track progress, and work backwards on the math to get to where you want to go (see BHAGs and Systems below).

Audacious (and Worthy)

The Audaciousness component of a BHAG is inspiring. Ideally your goal should be so audacious as to evoke laughter as to how ridiculous it is. There's a few ways to get there - doing something for the first time, or doing some big thing in a really short amount of time.

How laughable would it be if someone got up on stage and said this:

I think we should save 100,000 lives.

And then they followed it up with:

And I think we should do that by June 14, 2006--18 months from today.

It's ridiculous! There's no plan involved! How do you measure multicausal impacts of things that don't happen?

But it's memorable. Worthwhile. Directionally correct.

Impacting lots of people is often more impressive than just impacting yourself - but don't do it for others (you'll never make them happy forever), keep true to what you really want.

There's some relationship with Audacity and Reasonableness, in the George Bernard Shaw sense of the word. An absurdly reasonable person can reason away not only everything currently wrong with the world, but also all our expectations of what we can do with the future. It takes some amount of unreasonable audacity to imply: "our own reasonable expectations are wrong, and we can do better".

Also implied is that this goal should be worthwhile in some way. You could set out to build the Universe's Biggest Ball of Yarn or to set the Guiness World Record for Underwater Basket Weaving, but nobody's going to be very inspired by that.

But, tell people you want to make Humans a Multi-Planetary Species or to own the Jets or to run a two hour marathonor to make a city lose 1 million pounds of fat or to eliminate Polio, people will laugh, and then they do a very curious thing.

They start trying to help. They tell their friends who can help. They volunteer ideas. They check in on you. They celebrate your progress with no jealousy, mourn setbacks with empathy.

That's something you don't get with incrementalism. When you're working on the 35th Uber for X, nobody really cares. If you're lucky, they actively try to take you down or tell you why it won't work. There's a reason: it's zero sum.

When you work on something audacious and worthy, you're doing no one (or very few people) are doing anyway - you present no threat. In fact, like breaking the Bannister barrier, you're proving it can be done, giving people an expanded sense of their own human capability.

By going for Audacity, you bring Hope.

Hairiness

I think the understated part of a BHAG is actually the "Hairiness" aspect. A "hairy" problem isn't easy - there are a lot of devils in details, tons of miniproblems within the bigger problem. Right in JFK's "Moon Speech", he directly acknowledges all this hair:

we shall send to the moon, 240,000 miles away from the control station in Houston, a giant rocket more than 300 feet tall, the length of this football field, made of new metal alloys, some of which have not yet been invented, capable of standing heat and stresses several times more than have ever been experienced, fitted together with a precision better than the finest watch, carrying all the equipment needed for propulsion, guidance, control, communications, food and survival, on an untried mission, to an unknown celestial body, and then return it safely to earth, re-entering the atmosphere at speeds of over 25,000 miles per hour, causing heat about half that of the temperature of the sun--almost as hot as it is here today--and do all this, and do it right, and do it first before this decade is out

The Audacity is almost made more worthwhile (or ridiculous) by all that hair. If our goal was to set out to solve those hairy things by themselves, sure, that's fine, but making a better alloy for a sake of it isn't particularly exciting. But if this alloy helps enable moon flight, then you can suddenly get much smarter people working on the exact same thing.

BHAGs and Systems

Aren't Systems supposed to matter more than Goals? If you set a ridiculous goal and have no plan to reach it, that's a wish.

I guess I'd just mildly point out that systems and goals aren't mutually exclusive. If systems help you move further and more consistently, goals at least help you set direction. It's kinda ridiculous to argue that either have zero importance. Hairy goals help establish little checkpoints and goalposts for building the systems to get there.

Example BHAGs

Just a list of nice things I see from people I know:

clash of slugs - learn in public article is missing

Wait, this essay looked a bit different last time I was reading it.
It references itself as Prior Art...
And what does New York have to do with it?

Learn in Public is inaccessible at swyx.io. Links lead to Learn in Public NYC

image
image

I'm not sure if I know the solution but I feel I have an idea.
I've looked a bit around ssg source and ssg.config.js.
The article and the talk report have the same slugs in frontmatter. And ssg finds by slug.
Should these guys be in the same index array if they're in different post category directories?

Eponymous Laws


title: Eponymous Laws
slug: eponymous-laws
description: Interesting Two Word ideas with names of people on them
category: essay
tags: ['Principles']
begun: 2019-01-22
date: 2020-01-27
author: swyx

I keep an eye out of interesting "laws" that have names attached to them. They are a special case of Two Word Ideas, where a neat trick has been achieved by cramming an idea or meaning into a name and a law. Usually this also means there is a broader story or richer intellectual history worth diving into.

Sometimes they are just plain funny, sometimes they are so true it hurts.

Table of Contents

Software

  • Zawinski's Law: Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.
  • Polanyi's Paradox - "We can know more than we can tell"
    • applicable in AI - we find it hard to describe common sense
    • design - clients that don't know what they want but definitely don't want what you show them
    • related to Moravec's Paradox: "It's easy to give computers adult level intelligence, but hard to give them child level perception and motor skills."
      • "To Err is Human; To Really Foul Things Up Requires a Computer" - Bill Vaughan
  • Postel's Law aka Robustness principle: "be conservative in what you do, liberal in what you accept"
  • Parkinson's Law is well known, but has several interesting corollaries: the Stock-Sanford Corollary states that "If you wait until the last minute, it only takes a minute to do."
  • Cargill's Law: “The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”
  • Hyrum's Law: "With a sufficient number of users of an API, it does not matter what you promise in the contract - all observable behaviors of your system will be depended on by somebody." - Even bugs will be relied on!.
    • Relevant XKCD
    • example - Python Ordered Dicts!
    • https://shoptalkshow.com/407/
      • ~28 mins in: window.event was a nonstandard api but every browser except firefox implemented it. Then firefox implemented it, and JIRA broke.
      • 30 mins in: JS Objects aren't supposed to have stable order. But every browser basically implemented them with stable order. Now browser that wants to do a performance optimization wants to use unstable order, but cannot, because apps now rely on it
  • Law of Demeter - a given object should assume as little as possible about anything else - its neighbors and subcomponents
    • how to square this against "be liberal in what you accept, conservative in what you output"?
    • what happens to Unix Philosophy when you defensively code everything?

Some people combine laws:

More lists:

Hardware

  • Moore's Law vs Wright's Law: each percent increase in cumulative production in a given industry results in a fixed percentage improvement in production efficiency
  • Dennard Scaling: as transistors get smaller, their power density stays constant, so that the power use stays in proportion with area; both voltage and current scale (downward) with length
  • Wirth's Law - this is a special case of Jevons paradox: software is getting slower more rapidly than hardware is becoming faster
    • Spolsky wrote a great counterargument to this on Bloatware
  • Amdahl's law: the theoretical speedup in latency of the execution of a task at fixed workload that can be expected of a system whose resources are improved (the "mythical man month" law). another statement - you can never make a system faster than its slowest part.

Business of Tech

  • Commoditize your complements - Gwern, Spolsky
  • Rules for how Networks Scale (from pmarca)
    • O(N): Sarnoff's Law - the value of a broadcast network increases in direct proportion with the number of users
    • O(N^2): Metcalfe's Law - email is p2p - value is number of connections between two nodes
    • O(2^N): Reed's Law - no of groups and subgroups inside the network - what people do inside social networks and games

Socio-Psychological

  • The Gell-Mann amnesia effect: you ascribe credibility to news on which you are not an expert, despite knowing how badly reported the news can be on things you ARE an expert. The ultimate troll, given that the name of Gell-Mann was given by Crichton to demonstrate this exact phenomena.
  • Poe's Law - sufficiently advanced satire is indistinguishable from extremism
    • "Without a winking smiley or other blatant display of humor, it is utterly impossible to parody a Creationist in such a way that someone won't mistake for the genuine article."
  • Shirky Principle: Institutions will try to preserve the problem to which they are the solution
  • Cromwell's Rule - the use of prior probabilities of 1 ("the event will definitely occur") or 0 ("the event will definitely not occur") should be avoided, except when applied to statements that are logically true or false, such as 2+2 equaling 4 or 5.
    • "I beseech you, in the bowels of Christ, think it possible that you may be mistaken."
  • Chesterton's Fence - you should never take down a fence before knowing why it was put up
  • Ebbinghaus Effect - mathematical model of how we forget - aka forgetting curve
  • Ringelmann effect - work less when group is larger
  • Stigler's Law - no scientific discovery is named after its original discoverer. Maximum meta!
    • Mark Twain: ""It takes a thousand men to invent a telegraph, or a steam engine, or a phonograph, or a photograph, or a telephone or any other important thing — and the last man gets the credit and we forget the others. He added his little mite — that is all he did. These object lessons should teach us that ninety-nine parts of all things that proceed from the intellect are plagiarisms, pure and simple; and the lesson ought to make us modest. But nothing can do that."
  • Berkson's Paradox - positive correlations become negative because of filters that trade factors off.
  • 1% Rule - 90% of the participants of a community only view content, 9% of the participants edit content, and 1% of the participants actively create new content.
  • Goodhart's Law - “When a measure becomes a target, it ceases to be a good measure.”
  • Joseph effects and Noah effects
    • https://www.perell.com/blog/news-in-the-age-of-abundance
    • "Joseph effects – seven fat years here, seven lean years there – occurred when markets were evolving gradually and continuously. Noah effects were cataclysms – the Flood, or the week of September 11 2001, when the New York Stock Exchange closed for five days and dropped 7.5 per cent on re-opening.”

Related (for future blogposts)

Swyx Faves: Software Engineering Daily


title: "Swyx Faves: Software Engineering Daily"
slug: faves-se-daily
category: essay
tags: ['Faves', 'Podcasts']
date: 2019-11-11

"How to become a 10x engineer: listen to @software_daily everyday." - Amjad Masad

I am an intense fan of Jeff Meyerson and Erika Hokanson's SE Daily. I even guest hosted once 😅.

SE Daily is a tech infovore's wet dream. It is a general podcast on software engineering, but a few things set it apart:

  • It is an hour long, daily Q&A podcast
  • It covers everything from data eng to crypto to container stuff to React to GDPR to devops to IPOs
  • Guests are extremely senior: recent guests include billionaires (Ben Horowitz), hot CEOs (Alexandr Wang, Vlad Magdalin, Ellen Chisa), senior ex FB engs (Nick Shrock, Pete Hunt)
  • In recent 12-18 months, Jeff has started adding lengthy intros setting context for the interview, which helps situate people unfamiliar with the domain. This briefing is already worth more than the price of admission ($0).
  • Jeff himself displays a high degree of engagement and research in his questions
  • Jeff has a policy of starting generally (often the first question is a point-blank "What is _______"?) and then going into specifics over the hour, with the design that the first third or so is more relevant to generalists, who may then jump off to the next thing

A non exhaustive list of their greatest hits:

While SEDaily has primarily been a podcast, there is also a Slack community (I'm not active), a news site, a mobile app, and some meetups. I think more could be done here to build community.

I was recently surprised to learn that Jeff doesn't view SE Daily as something that will last forever. It felt like the intense commitment needed to run a daily in depth podcast isn't something you bet on halfway. But Jeff is absolutely hedging (c.f. his indiehackers and changelog interviews). Having been through some life trauma myself, I can't blame him.

Good Enough


title: Good Enough
subtitle: The Importance of Satisficing over Maximizing
slug: good-enough
category: essay
tags: ['Principles']
date: 2020-02-21
description: In general, you move faster and feel a lot less stress once you realize - You don't need "the best", you just need "good enough".

The other day, I twote:

In general, you move faster and feel a lot less stress once you realize:

You don't need "the best", you just need "good enough".
Looking for:

"the best"

  • obsessing over benchmarks
  • caring what influencers think
  • keeping up with new releases

"good enough"

  • what YOU need done
  • what YOU know well
  • what YOU enjoy

The more reversible the decision, the faster you should move.

This was borne out of answering yet another beginner question on /r/Reactjs on what was the best library, the best course, the best framework.

The problem with being a beginner is you don't even know that these are bad questions.

So I think we all could do a better job of framing engineering and life as satisficing rather than maximizing operations.

The Problem with Seeking "The Best"

We spend a lot of time seeking "The Best" of something:

  • schools
  • job/salary
  • home
  • city
  • partner
  • framework

Happiness: Seeking the best only to find you have ended up with the second best is a recipe for disappointment. You end up comparing long feature checklists looking for the most amount of green. Most of which you don't need. Even picking something, anything, gives you anxiety because you fear missing out.

Cooperation: It transforms the world into a zero-sum finite game rather than a positive-sum infinite game.

Efficiency: It is also ridiculously inefficient. The corollary of the Pareto principle is that the last 20% of something is the most expensive - and that's what you have to sweat if you must seek "the best" all the time. It's fine to seek the best - just know that you're going to incur a cost for disproportionately less absolute (though relative) gain.

Agency: By the way, people game "best-seekers" all the time, by defining for you what "best" is. Who wants to be Mayor on Foursquare? Who can compete to get the most subscribers on YouTube? Which wait-service staff will be Employee of the Month? Games to give fake status to people who live in the system, by people who profit off the system. If you seek "good enough", you reclaim your own agency.

"Good Enough" is, well, good enough.

Note to reader: An older framing of this same idea was presented in In Defense of Hammers

Cool Facts about Cuttlefish


title: Cool Facts about Cuttlefish
slug: cuttlefish
date: 2019-01-15
category: essay
tags: ['cuttlefish', 'Rants']
description: This was just a short rant I prepared for Netlify's Allhands where we were asked to give a short lightning talk on any topic we wished. I picked cuttles. I actually saw one in real life diving in Fiji once!

Weird

Cuttlefish aren't even fish. They just tricked us.

There are 3 major species of Cephalopod: Squid, Octopuses, and Cuttlefish. 2 out of 3 have emojis: 🦑🐙. This is an injustice because Cuttlefish are way cooler than the other two.

Cuttlefish have W-shaped pupils. https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Cuttlefish_eye.jpg/500px-Cuttlefish_eye.jpg which stretch more than 180 degrees so they can see in front and behind at the same time.

Cuttlefish float like submarines, using a cuttlebone. Cuttlebones have both gas-filled forward chambers and water-filled rear chambers. So cuttlefish can change their own density.

Reproduction

Male cuttlefish compete for female cuttlefish attention by size. There are 5-10 males for every female so this is a big fight. Large males will block access to smaller males. Fortunately, cuttlefish can camouflage. Females have a mottled pattern while Males have a striped pattern. So a small male can get past a large male by changing its colors to look like a female.
(Source)

Also cuttlefish mate by mushing their faces together. https://cuttlefishsepiida.weebly.com/uploads/1/7/9/9/17998945/5564017.jpg?376
The male uses a special tentacle to put sperm in a special part of the female's mouth to keep until she is ready to lay her eggs.

Colors

Cuttlefish are color blind (they only have a single photoreceptor), but yet they can camouflage. In the dark. (Source)

It makes sense if you have a brain the size of a cuttlefish! (The largest of any invertebrates, naturally)
image

Cuttlefish are much better color changers than chameleons. In fact they can change colors so fast they can shimmer and hypnotize their preyhttps://media.giphy.com/media/8D4NaGxz45j32/giphy.gif

Sepia is named for the reddish-brown ink of Cuttlefish (the common cuttlefish's Scientific name is Sepia officinalis). They can eject it in two ways - the normal smoke screen to hide itself, but also they can wrap the ink in mucous to create a shadow duplicate roughly the size of itself, called a "pseudomorph", to act as a decoy.

Blood

Cuttlefish have green-blue blood, because they have hemocyanin instead of hemoglobin. (Source)

Cuttlefish have three hearts. ❤️❤️❤️.

Variants

There are 120 different species of cuttlefish.

The flamboyant cuttlefish can't swim or float, because its cuttlebone is too small. It just walks on the seafloor. It also doesn't bother camouflaging itself. It is just fabulous. (also its venomous)

https://i.pinimg.com/originals/15/cf/9a/15cf9ac4dbe220ae451ff4051b0022c3.jpg
https://4.bp.blogspot.com/-G0QpdxT0ZWE/VHUTaCzme8I/AAAAAAAAIyk/boB8mmF0vYY/s1600/FlamboyantCuttlefish.jpg

content ideas

in defense of intelligent design

edit: i forgot what this even was about

Friendcatchers


title: Friendcatchers
slug: friendcatchers
subtitle: Win Friends Online While You Sleep
category: essay
tags: ['Advice', 'Principles']
date: 2020-02-03
description: Patrick McKenzie's simple concept for making friends on the Internet.

A "Friendcatcher" is something you offer for free, that helps you catch friends in your sleep.

Because it is passive, it is an asset. Just like a Dreamcatcher can be hung over your bed once and catches bad dreams for you through the night, a "Friendcatcher" (one word, not hyphenated) catches friends for you for the rest of your career.

The concept comes from Patrick McKenzie, who in turn says it came from his mom. As loud and well known as he is, this concept doesn't seem widely known, and that is a pity. I first heard of it at Microconf, and it's unintentionally informed my most successful online projects so far.

Friendcatching for Dummies

In the words of Patrick's mom:

Patrick, you should learn to cook. Don't learn to cook because you want to eat food - learn to cook because if you learn to cook you will have an excuse for the rest of your life to bring people over to your house.

No one who knows how to cook will ever lack for friends.

Patrick's mom wasn't talking about content strategy, or customer research, but she might as well have been.

In my notes from his talk:

Platform Before Product.

Build the things that will allow you to engage an audience and improve it over time. Included in this: Friendcatchers.
Friendcatchers are small, contained lists, essays or apps that solve resonant (emotional, relevant), tractable, underserved problems.

The ideal Friendcatcher is (thanks to Christian Genco and the Microconf video):

  • Tractable: Solvable within the blogpost, guide, cheatsheet, or mini-app form factor you have picked.
  • Resonant: People say "F*** yeah this is what I need!" when they see your thing. Pay attention to pain.
  • Underserved: 101 guides are overdone. Do the 201 guide. Cover intersections of technologies.

Basically: "Fill holes in the Internet".

What a Friendcatcher does for you

(This is swyx talking) A Friendcatcher performs these functions:

  • Solves someone's problem. Some indications:
    • Reader's Google journey stops at you.
    • Reader repeatedly returns to refer to your thing.
    • Reader tells you.
  • Establishes your expertise and association with the problem
  • Makes the reader look smart/funny/informed when they share your thing
    • It is "Retweetable" - doesn't contain miscellaneous/unrelated junk, is timeless
  • Gives the reader a benefit, which you can cash in on in future
  • Does its job without your involvement after creation

"Learn in Public" Friendcatchers

A "Learn in Public" Friendcatcher also invites readers to ask about things you don't answer, and to correct things you got wrong. This is open source, collaborative knowledge.

In terms of Learning Gears, Friendcatchers are produced by Connectors, not Explorers. You know something others don't, and build the resources that Explorers will find that serve as landmarks and maps for their journey.

Creating a good Friendcatcher is great, because it is something you can pour resources into continually refining and making better, and continues working even if you step away. This makes a lot more mileage out of your daily efforts than other forms of content, for example things that are news related or a less ambitious talk.

Examples of Friendcatchers

Includes some of mine. Note I wasn't consciously going for "friendcatchers"

Sources

Adverse Status Updates and Trust


title: Adverse Status Updates and Trust
slug: adverse-status-updates-trust
category: essay
tags: [Reflections, Principles]
date: 2019-09-23

I noticed an asymmetry between adverse status updates and trust that I figured it would be worth a quick comment on.

I think it's fair to say we provide status updates for two big reasons: build trust, and to enable coordination. (If done synchronously, it's like a mutex, but async updates have maybe ~80% of the value)

When providing adverse status updates, there is an incentive to filter out small issues. E.g. in a team update scenario, if you had a small setback that you expect to get resolved right away (or even one that has already been resolved), you might feel like it isn't worth reporting and so skip over it. If you have a tight schedule, or are rushing through traffic, you might not tell your partner that you might be late because it might turn out to be nothing and you might still make it (and you don't want to stress them out). A small outage of a few minutes may not be worth messing up a pristine status page. "You can skip the small things, as long as you report the big things".

This is well intentioned, but probably a bad idea, because trust works the opposite way.

Trust works from a basis of proof points. Obviously, the more proof points that you are trustworthy, the better. But there is another dynamic - size of proof points. And it works cumulatively. The thinking goes: if they won't report this small thing, how much do I trust them about bigger things?

Answer: zero.

When you say nothing is going on, people stop believing you. Absence of evidence isn't evidence of absence and all that.

Obviously this isn't fair to the reporter, who has made a mental commitment to definitely report the big things. But the reporter has the benefit of full knowledge of the sum total of their actions. The other party doesn't. They have a million things going on, and they disproportionately remember the bad stuff when they interact with you. They don't know everything you do, but they do see when you miss the little things.

And it's not so little to them.

Singapore H1B1 Tips (2018-2024)


title: Singapore H1B1 Tips
slug: h1b1
category: essay
tags: ['Reflections']
date: 2018-08-01

much of the original piece below is outdated. this is my remaining 2023 updates for fellow singaporeans.

May 2024 edit: Prices to pay are now here - everything went up with inflation. payment is now done via VFS Cash or Debit (To pay your nonimmigrant visa (NIV) application fee in Cash/NETS payment at VFS branch( VFS Global,79 Anson Road, 15-02, Singapore 079906), this deposit slip and Virtual Account Number must be used before the expiration date, as noted above.) or Electronic Fund Transfer (Log on to your Singapore bank account and enter the following beneficiary details in your online banking form to complete your EFT in Singapore dollars (SGD). (DO NOT PAY IN US Dollars) - Beneficiary Name: VFS Singapore - Beneficiary Bank: DBS - Account Number: Your 19-digit Receipt Number- Amount: xxx.00 SGD (Singapore dollars Only).) . I just went for Electronic Fund Transfer but it took an extra 24 hours for me because changing a phone number and adding a new payee on my bank took 12 hrs each. Once money is wired it takes an extra business day + 3pm for the UStraveldocs system to register that the MRV receipt has been paid so that it proceeds to allow you to schedule an interview.

You should also take note of the https://portal.ustraveldocs.com/appointmentconfirmation

https://ceac.state.gov/ceac/ appointment website as the primary rate limiter of how quickly you can get your interview, because the appointments are usually 2-3 weeks out (unless you get lucky and snag a cancelled slot, or get granted an emergency appointment for ESTA denial reasons) and you can get your LCA/B1 visa approved in that time if you have stuff lined up well.

If you have problem scheduling for an appointment, you may call our customer service helpline at 3158-5400 or email [email protected] for assistance.

For O1 visas you just need your receipt number - which you get a few days after your lawyer mails the petition in). If you still have your DS-160 application ID and want to fill it again you can just supply your old ID and it will import previous settings.

image

Past 2024 I am no longer likely to continue updating this post for H1B1s, so please seek out other singaporeans who carry the torch, or please write an updated cleaned up version of this post and add it to my comments:

also if you're REALLY in a rush you can travel to a different country to get your embassy appointment - i havent done this personally but yes singapore's embassy wait is usually 2-3 weeks and there are countries with 1-2 days. check this list https://www.sherrodsportsvisas.com/us-visa-interview to see which allow third country nationals. Ones known to work: Barbados, London, Lisbon, various Canada offices

image

sidenote: passport renewal

here is a question i wanted to submit to /r/asksingapore but couldnt because reddit is broken.

How exactly to expedite a Singapore passport renewal with ICA?

Hi folks! just asking for more information than provided in the last thread on this from 2023, and (as far as I can tell) the outdated stuff from 2022.

I'm in a situation where I really need to very urgently travel to the US with my new visa for my work in the next 2 weeks, and they are refusing to stamp my visa because my current passport "has water damage" (I can quibble with it bc they have accepted this level of "damage" before, but ultimately I have to make them happy). So I need to renew my passport as soon as humanly possible in the system.

The standard ICA guide says "around one to two weeks" for the new passport - that is far too slow and completely crisis mode for my business. I know its my responsibility for getting myself into this situation but given we're here I'm just asking what I can do.

I know that the expediting is based on showing evidence of urgent business travel, which I can do. So am just posting to see what the community has got for specific questions:

  1. Has anyone managed to get an expedited passport renewal in the past year? What was the end to end timing like? Some people here say 2hrs, some say 2 days. What is the length from first applying to renew the passport (online? in person?) to receiving new passport?
  2. to get the expedited process, should I:
    a. apply online first, then show up in person and beg some officer,
    b. no need to apply online, just show up in person and apply and beg,
    c. apply online, email ICA_APPLES_Administrator, and hope they approve without showing up in person?

Lastly, any other advice you'd like to share with fellow Singaporeans that need to go thru this process as fast as possible? THANK YOU so much!

update from swyx

so the answer is this is the strict process:

  1. report damaged passport online (1 day wait they mention isnt strictly needed)
  2. have proof of urgent travel need. often with booked plane tickets, or with me, conference speaking invite letter. they grant expedited passport based on T-2 or -3 days to the travel need
  3. go to ICA, fill out PAPER application that they hand you. will need passport size photo - which you can get from a shop near ICA for $6 (they can give u the address or ofc you find one yourself)
  4. based on my travle need. i got a 4 day promise of passport - went into ICA monday, did all the above, then they promised i get it friday. lets see.

stick around to listen to the other pple in the ICA queue and understand that EVERYONE has seen this misleading "2hr turnaround expedited passport process" post and is asking for it. its misleading. they are swamped and we are lucky that they assign according to need.


original 2018-2020 text below - MOST OF THIS IS OUDATED NOW BUT IM JUST KEEPING IT AROUND WITH SOME 2024 COMMENTARY FOR THOSE DESPERATE FOR INFO.

Aug 2019 edit: I don't know the exact date I wrote this but it was originally on /r/sg about 1yr ago. Please also read this blogpost from /u/omakaselife! https://medium.com/@Ashleylim/navigating-the-h1b1-visa-process-4c8e459c4b96 for 2019 tips

April 2020 edit: added some screenshots to assist future readers and reformatted for more readability

May 2022 edit: the Singpost payment process has been deprecated, see https://ashleylim.medium.com/navigating-the-h1b1-visa-process-4c8e459c4b96 for the updated one

Hello. I noticed this thread and realized theres not much content on here relating to the H1B1. I have done it 2 times and am about to get my 3rd (2024: 4 times). I am not a lawyer, I'm just a fellow Singaporean who has had a few jobs in the US. So I may not have all the answers but just wanted to put up a post in case pple have questions on the process and maybe others who know more can chip in.

pre 2020 Application Tips

  • First your lawyers will need to petition for an LCA for you (local condition of application). Depending on lawyer this can take between 2 weeks to 2 months. Once you have it you can get your DS160 (2024 UPDATE: I believe you can actually parallel track this LCA and the DS160 - just make sure you definitely have your LCA approved by the time of your embassy appointment)
  • Once you have your DS160 filled out (it looks intimidating but can be finished in 1-2hrs) - google the link to make the DS160. you will get a reference number that looks like AA00A16T01
old pre 2022 payment process that was very sketchy but is now fully electronic

Image from iOS

  • Once you have DS160 and your MRV paid (and wait for 1 day for your payment to hit their system), you book your US embassy appointment here: https://portal.ustraveldocs.com/
old pre 2022 bug that was very frustrating but is now gone
  • IMPORTANT: at the bottom of the main booking form they ask u for a Petitioner's name, receipt number, start date and expiration date. this is an oudated field that is no longer in use, so fill in whatever for name/start/expiration date. for receipt number it ONLY accepts a "dummy receipt number" that is "ABC0000000000". this is straight up what the support center will say. if you try to fill in what is a COMMON SENSE thing which is the MRV receipt number you will get an error saying "Petition Receipt Number: Format is incorrect. Please enter the receipt number without dashes (-)". Which is not even making sense. i fucking lost 4 days to this piece of shit because i forgot what i did last time. i hope this helps someone else because i kena this before and this time around i kena again. mfw.

image

  • only THEN will you need to enter in the MRV receipt number for USD 190 -
    its the long autogenerated number (starting with 8 at the time of posting, eg 85019872042295) that you get from receipt. You have to give it ~1 day since you paid before it is recognized in the system or else you get an error: No valid record can be found for the entered receipt number. Please validate that your receipt number is correct and that you have paid the correct amount for the visa which you are applying for. Here is the screen where you enter in the receipt number you paid for.

image

Other questions

some things that have mattered to me:

  • What education do you need? I have a masters and bachelor's from the US. cant speak to any other educational background
  • Do I need a Big Law Firm? No. my first time i was with a big company which hired a big law firm to do things for me. my other two times were very much "DIY".
  • Do I need a Big Company sponsor? No. I worked in a 20 person, 2 yr old startup in the US and they got an LCA for me while I got a lawyer for about 2.5k through upwork which i paid for. it is a myth that you need to be an established company to sponsor a h1b1.
  • Do I need a shit ton of paperwork? No. if you are working with a big firm that outsources this stuff to a law company they typically have you prepare a whooole bunch of supporting documents to have in original and duplicate before you show up to the embassy. this is of course nice to have but i have never once needed it in an interview. so it really is not the end of the world if you dont have it
  • Should I use the "Drop Box option"?
    • in 2019 choosing the supposedly faster "drop box" option delayed my processing by a week because they rejected me from the drop box without stating a reason and asked me to come in for an interview after.
    • in 2022 it worked for me. 05/23 i got a waiver confirmation and i was in the country by 05/31.
    • (update) in 2024 it failed hard. they rejected me from drop box due to water damage on passport, a requirement they waived in person, and the next interview available was a month later.
  • How long does it take? Maybe about 3-4 weeks. 1 week if you are super lucky. Schedule those interviews early if you want to leave asap!! availabilities can be two weeks out. and then it takes them a week or so to mail ur passport to the phillipines and then back to you. meanwhile you'll know if its been approved so you can go ahead and firm up your travel dates by then.
  • What about the pay/cost of living? (not strictly h1b1 related) paying US taxes and social security and all that really cuts into the salary. I'm in new york so theres state and city tax too. the number may look higher than what ur getting elsewhere but the taxes come accordingly. do your math.

My Favorite Podcasts


title: My Favorite Podcasts
slug: fave-podcasts
category: essay
tags: ['Faves', 'Podcasts']
description: 250 Podcasts I enjoy listening to
date: 2020-02-02

I recently switched from iPhone to Android (Edit from the future: post here!) and had to port my podcast subscriptions from Overcast. I figured I would categorize and post commentary here for those who may be interested.

You are welcome to ping me for detailed thoughts on each of these, I didnt have time to write them down.

2024 Edit: see my 2021 and 2020 updates! and 2022 and 2023 and The Big 2024 Bankruptcy and reset. If you are reading this in 2024 and just want the current hotness, read that one.

Table of Contents

Awesome Back Catalog

Evergreen Podcasts that are still worth going back through for (including Seasonal/Dead podcasts). This is a high compliment from me, although other categories also include podcasts I also LOVE.

  • Dolly Parton's America (rss, url) - I never grew up with Dolly and this fills a hole. One-season run.
  • A Very Fatal Murder (rss) - HILARIOUS ads. One-season run.
  • Common Sense with Dan Carlin (rss, url) - seems dormant but good to get a Carlin political rant.
  • The Last Days of August (rss, url) - One-season run.
  • Office Hours with Spencer Rascoff (rss, url) CEO interviewing CEOs is the BEST. Seems dormant right now and he's no longer at Zillow.
  • S-Town (rss, url) - the original podcast revival
  • American Innovations (rss, url) - great history re-enactments
  • Inside Star Wars (rss, url) - One-season run.
  • Pessimists Archive Podcast (rss, url) - people shit on tech since the dawn of time.
  • Ear Hustle (rss, url) - great stories from prison
  • Tribe of Mentors (rss, url)
  • Untold Stories (rss, url)
  • Acquired (rss, url) probably the highest quality recent Tech History podcast I have ever come across
  • Soundtracking with Edith Bowman (rss, url) - A-list celebs/directors talk about the sound behind their movies usually right after they come out
  • Decrypted (rss, url) - dead now, but aki ito and brad stone were really great
  • Dan Carlin's Hardcore History (rss, url) - very infrequent but good history
  • Beyond the Screenplay (rss, url)
  • Mostly Nitpicking (rss, url) - Nando is great at nitpicking pop culture
  • Swindled (rss, url)
  • The Reductress Minute (rss, url) - dead, but hilarious
  • Behind The Tech with Kevin Scott (rss, url) - Microsoft CTO interviewing his heroes, with Christina Warren
  • The Missing Cryptoqueen (rss, url) - One-season run.
  • Philosophy Bites (rss, url)
  • The After On Podcast (rss, url) - great futurism from a fascinating author. dead now
  • Business Wars (rss, url) - replays of great business rivalries
  • Internet History Podcast (rss, url) - LOVE tech history. dead noe.
  • Homecoming (rss, url) - One-season run.

Storytelling

Sometimes you just want a good story.

  • Partners (rss, url) - Hrishi Hirway's new thing
  • This American Life (rss, url)
  • Cautionary Tales (rss, url)
  • 99% Invisible (rss, url)
  • Radiolab (rss, url)
  • Revisionist History (rss, url)
  • Against the Rules with Michael Lewis (rss, url)
  • The Moth (rss, url) - probably the only podcast that has ever made me cry.

Tech

Technical podcasts by people who code

Tech: Webdev/JS

  • Thunder Nerds (rss, url)
  • Modern Web (rss, url)
  • JAMstack Radio (rss, url)
  • The EmberMap Podcast (rss, url)
  • Smashing Podcast (rss, url)
  • SitePen (rss, url)
  • React Podcast (rss, url)
  • React Podcast (old) (rss, url)
  • Syntax - Tasty Web Development Treats (rss, url) - probably at the top of the game in this category
  • Toolsday (rss)
  • Full Stack Radio (rss, url) - everything adam wathan does is gold
  • ShopTalk Show (rss, url)
  • Programming by MGechev (rss, url) - still pretty new, but very high quality algorithms stuff
  • The Undefined Podcast (rss, url)
  • Ladybug Podcast (rss, url)
  • That's my JAMstack (rss, url)
  • JS Party (rss, url)
  • The Diff: A Podcast from Facebook Open Source (rss, url)
  • The Babel Podcast (rss, url)
  • Chats with Kent C. Dodds (rss, url)
  • 3 Minutes with Kent (rss, url)
  • CodePen Radio (rss, url) - love learning about codepen from codepen
  • Front End Happy Hour (rss, url) - drinks format is amazing
  • Fish and Scripts (rss, url)

Tech: Cloud

  • Screaming in the Cloud (rss, url) - corey teaches me a ton about aws
  • Serverless Chats (rss, url) - really good
  • Arrested DevOps (rss, url) - i am newer to this but i like matty
  • The New Stack Makers (rss, url) - oddball but occasionally good guests
  • Google Cloud Platform Podcast (rss, url) - from gcp folk - just nice to keep tabs

Tech: AI/ML

  • The TWIML AI Podcast (formerly This Week in Machine Learning & Artificial Intelligence) (rss, url)
  • Not So Standard Deviations (rss, url)
  • Autonocast (rss, url) - really good insiders podcast on autonomous driving
  • Data Engineering Podcast (rss, url)

Tech: Design

Tech: General

  • Hanselminutes - Fresh Talk and Tech for Developers (rss, url)
  • The Bike Shed (rss, url)
  • The freeCodeCamp Podcast (rss, url) - I'm on here!
  • Function with Anil Dash (rss, url)
  • Darknet Diaries (rss, url)
  • Software Engineering Daily (rss, url) - I'm on here! also previously wrote a whole piece on it
  • The Changelog (rss, url)
  • On The Metal (rss, url)
  • Talk Python To Me - Python conversations for passionate developers (rss, url)
  • Acquired (rss, url) - ALLTIME GREAT podcast
  • Under the Radar (rss, url)
  • Software Engineering Radio - The Podcast for Professional Software Developers (rss, url)
  • The Laravel Snippet (rss, url)
  • BookBytes (rss, url)
  • Soft Skills Engineering (rss, url)
  • React Native Radio (rss, url)
  • Giant Robots Smashing Into Other Giant Robots (rss, url) - winner: best name
  • GraphQL Radio (rss, url)
  • egghead.io developer chats (rss, url) - I'm on here
  • devMode.fm (rss, url)
  • The Python Podcast.init (rss, url)
  • Coding Blocks (rss, url)
  • DevRel Radio (rss, url)

Tech: No Code

  • The Visual Developers Podcast (rss, url)
  • BuiltOnAir (rss, url)

News

Stuff happens, people react and report. I keep in touch with Finance stuff due to my background. I try not to spend too much time in News, but its nice to have a convenient place to get the lowdown on things.

News: General

  • The Daily (rss, url)
  • Axios Pro Rata (rss, url) - dan primack is a little overrated but gets good access.
  • Stay Tuned with Preet (rss, url) - preet is amazing and should someday run for office.
  • The Intelligence (rss, url)
  • The Diplomat | Asia Geopolitics (rss, url) - i dont know why these people are so interested in asia geopolitics lol but its great to tap into their world every now and then

News: Tech

  • Exponent (rss, url) - Ben Thompson and James Allworth talk through Stratechery stuff.
  • AWS Morning Brief (rss, url)
  • AWS Podcast (rss, url)
  • Techmeme Ride Home (rss, url)
  • The Indicator from Planet Money (rss, url)
  • 16 Minutes News by a16z (rss, url)
  • Editor's Picks from The Economist (rss, url)
  • The Information's 411 (rss, url)
  • Pivot (rss, url)
  • Above Avalon (rss, url) - all about Apple
  • The WIRED Podcast (rss, url) - Vergecast but british
  • The Vergecast (rss, url) - I enjoy the "no bullshit" tech industry chats

News: Finance

  • What Goes Up (rss, url) - another chummy panel, no BS podcast
  • Slate Money (rss, url) - I have loved Felix Salmon from his days at Reuters.
  • WSJ Heard On the Street (rss)
  • FT Alphachat (rss, url)
  • Odd Lots (rss, url) - Joe Wiesenthal is just the right mix of no bullshit finance guy but also nice and surprisingly good at singing. Tracy Alloway keeps him in check.
  • Money Talks from Economist Radio (rss, url)
  • Snacks Daily (rss, url) - for noobs but high energy and good to see what they see
  • The Journal. (rss, url)
  • Exchanges at Goldman Sachs (rss, url)
  • Behind the Markets Podcast (rss, url)

Founder Chats

A lot of podcasts are interviewing founders which is a mix of business and tech. So I split them out here.

VCs

  • The Twenty Minute VC: Venture Capital | Startup Funding | The Pitch (rss, url)
  • a16z Podcast (rss, url)
  • Venture Stories (rss, url)
  • Greymatter (rss, url)
  • Y Combinator (rss, url)
  • Evolving for the Next Billion by GGV Capital (rss, url)
  • Analyse Asia with Bernard Leong (rss, url)

Founder Interview

  • How I Built This with Guy Raz (rss, url)
  • 7-Figure Small with Brian Clark (rss, url)
  • Below the Line with James Beshara (rss, url)
  • Startup School Radio (rss, url)
  • Invest Like the Best (rss, url) - surprisingly good investor/founder guests.
  • Level Up Your Course Podcast with Janelle Allen: Create Online Courses that Change Lives (rss, url)
  • How to Start a Startup (rss, url)
  • Masters of Scale with Reid Hoffman (rss, url) - weirdly overproduced podcast from Reid remixing his former founder interviews
  • Entrepreneurial Thought Leaders (rss, url)
  • The SaaS Podcast - SaaS, Startups, Growth Hacking & Entrepreneurship (rss, url)
  • Masters in Business (rss, url)
  • The 6 Figure Developer Podcast (rss, url)
  • Scale or Die (rss, url)
  • Product Hunt Radio (rss, url)
  • Well Made (rss, url)
  • Escape Velocity - with Dan Martell (rss, url)
  • Subscribed Podcast (rss, url)
  • Side Hustle School (rss, url)
  • Mixergy - Startup Stories with 1000+ entrepreneurs and businesses (rss, url) - andrew warner presses his guests on details
  • Business of Software Podcast (rss, url)
  • The Indie Hackers Podcast (rss, url)
  • This Week in Startups - Audio (rss, url) - Jason is arrogant but earns it
  • Wharton FinTech Podcast (rss, url)
  • Double Your Freelancing Podcast (rss, url)
  • The Official Saastr Podcast: SaaS | Founders | Investors (rss, url)
  • Without Fail (rss, url)
  • UI Breakfast: UI/UX Design and Product Strategy (rss, url)
  • Intercom on Customer Engagement (rss, url)
  • The Tropical MBA Podcast - Entrepreneurship, Travel, and Lifestyle (rss, url)
  • China Tech Talk (rss, url)

Founder Couple

A little more unstructured, but telling the story as it happens

  • The Startup Chat with Steli and Hiten (rss, url)
  • To Be Continuous (rss, url) - Paul Biggar of Darklang, Edith Harbaugh of LaunchDarkly
  • Startups For the Rest of Us (rss, url) - Rob Walling
  • The Forbes Interview (rss, url)
  • Building Infinite Red (rss, url)
  • Inside Intercom Podcast (rss, url)
  • Out of Beta (rss, url)
  • Rework (rss, url)
  • The Art of Product (rss, url)
  • Bootstrapped Web (rss, url)
  • Build Your SaaS – bootstrap in 2020 (rss, url)

Misc Topics

Stuff that didnt fit anywhere else :)

  • The Psychology Podcast (rss, url) - general academic psychology
  • Psychology of Video Games Podcast (rss, url) - games are applied psychology
  • The Happiness Lab with Dr. Laurie Santos (rss, url) - positive psychology
  • Babbage from Economist Radio (rss, url)
  • Steal the Show with Michael Port (rss, url) - speaking by professional speakers
  • Get Together (rss, url)
  • Intelligence Squared (rss, url)
  • The Meb Faber Show (rss, url)
  • The Science of Social Media (rss, url)
  • More Than Hashtags (rss, url)
  • Akimbo: A Podcast from Seth Godin (rss, url)
  • The TED Interview (rss, url)
  • TED Talks Daily (rss, url)
  • Artificial Intelligence (AI Podcast) with Lex Fridman (rss, url) - has become more of a generalist podcast recently, but gets the top of the field
  • Freakonomics Radio (rss, url)
  • seanwes podcast (rss, url)
  • Mike's Notes (rss, url)
  • TED Radio Hour (rss, url)
  • Data Skeptic (rss, url)
  • The Economist Asks (rss, url)
  • Naval (rss, url)
  • Linear Digressions (rss, url)
  • The Knowledge Project with Shane Parrish (rss, url)
  • Intelligence Squared U.S. Debates (rss, url)
  • Conversations with Tyler (rss, url)
  • The Portal (rss, url)
  • Talking Points (rss, url)
  • Lingthusiasm - A podcast that's enthusiastic about linguistics (rss, url)
  • EconTalk (rss, url)
  • The History Chicks (rss, url)
  • The Art of Manliness (rss, url)
  • Your Undivided Attention (rss, url)
  • Simplify (rss, url)

Fun

  • Wait Wait... Don't Tell Me! (rss, url) - Peter Sagal is amazing
  • Ask Me Another (rss, url) - i love Ophira
  • The Weekly Planet (rss, url) - aussie's shit talking is the best
  • Change My View (rss, url)
  • The Good Place: The Podcast (rss, url)
  • Office Ladies (rss, url)
  • Friday Night Comedy from BBC Radio 4 (rss, url)
  • The West Wing Weekly (rss, url) - ended now. but still amazing
  • Harry Potter and the Sacred Text (rss, url)
  • CLUBLIFE (rss, url)
  • Eelke Kleijn | DAYS like NIGHTS Radio (rss, url)
  • Popcast (rss, url)
  • Coffee Break Spanish (rss, url)
  • The Jordan Harbinger Show (rss, url)
  • The Soundtrack Show (rss, url)
  • x72D7;熊有话说 (rss, url)
  • Waveform: The MKBHD Podcast (rss, url)
  • Lights Camera Barstool (rss, url)
  • Travel Genius (rss, url)
  • The Modern Mann (rss, url)
  • Pop Culture Happy Hour (rss, url)
  • LeVar Burton Reads (rss, url)
  • Tell Me Something I Don't Know (rss, url)
  • So, Here's My Story... (rss, url)
  • Song Exploder (rss, url)
  • Switched on Pop (rss, url)
  • The Hamilcast: A Hamilton Podcast (rss, url)
  • Twenty Thousand Hertz (rss, url)
  • Tiny Desk Concerts - Audio (rss, url)

To Skim

High volume things that are occasionally good but I really skim

  • The Talk Show With John Gruber (rss, url) - i hate the rambling but ben thompson swings by every now and then
  • The Tim Ferriss Show (rss, url) - it's Tim.
  • Channel 9 (rss, url) - a glimpse into microsoft-land
  • BxJS Weekly (rss, url) - decent js coverage from someone who has way too much time doing this :)
  • The Moment with Brian Koppelman (rss, url) - celebs, writers
  • All Songs Considered (rss, url) - occasionally boring but sometimes really good
  • The Joe Rogan Experience (rss, url) - celebs
  • Whiskey Ginger w/ Andrew Santino (rss, url) - celebs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.