November 2020 newsletter
Published: 2020-11-30Word count: ~4694
This one is shorter than the last one. I didn't want to write a 12k+ word newsletter this time. Oh no.
- timtimestim
- And jeopardize the Integrity of the Hull
- Markdown madness
- Youtube-dl is back
- Kill the newsletter!
- Always own your platform
- No one is even trying
- Dumping ground
- Hey there!
timtimestim
Summary of changes:
- Started working on some projects out in the open, just with hidden links.
- Refactored the site to be complient to Commonmark, with a couple simple extensions.
- Moved all external links (sans YouTube videos) to archive.org links to combat linkrot.
- Some short stories: Raveyard and That Obelisk Thing.
- Made a todo page for the wiki.
- Made a checklists page for the wiki.
- Added word counts to the top of the newsletter posts.
Lengthy explanations:
This newsletter is being made in the open! I was inspired by the "Working with the garage door up" mentality, so I decided that I would have my process of making it put online, instead of presenting it as a fully finished project. If this works out well I'll probably start experimenting with more extreme open development like my fiction or blog writing.
The post is still "hidden" in the sense that it's not in the atom feed or in the newsletter index. You just sort of have to know that it's there, or read through the git repo or something.
(Note: Now the post is up like normal.)
One of the bigger changes to the site is actually something done under the hood: The build process. I transitioned from using pandoc
to cmark
for translating Markdown files. cmark
is the reference implementation for the commonmark specification, which is a (mostly) robust spec defining the original functionality of Markdown.
I had to overhall a lot of things, such as how footnotes are handled, how metadata is handled, and so on. I even have to make my own "extensions" in the form of awful sed commands to implement features I "needed" like page anchors and strikethroughs. The absolute hardest part was getting the page template to work with all the different kinds of pages I have on the site. It turned into quite the awk/sed/sh script just for that; but the script is easily parallelizeable now using xargs -P
, which gives a significant boost in build speed.
The result of all that refactoring is:
-
The build time went from about 3.5 seconds down to 0.4 seconds. This is huge for me, since one of my biggest pain points was compile times.
This build speed is with ~50 markdown pages totalling ~75k words, at the time of writing. That includes all the preprocessing, copying, and so on. That's a full build, and not any incremental build or something. It is with everything already in the automatic memory cache, though.
-
No reliance on
pandoc
, which I consider to be a "forbidden fruit" program. It's so convient, but you have to pay the price of a heafty Haskell runtime and all the other little complexities thatpandoc
specifically brings to the table. Moving over tocmark
conforms much more to my values, since it's programmed in C and I can easily extend it to output anything I want using the Abstract Syntax Tree. It's also absurdly faster and more simple to use. -
My templates are much easier to use now. There's a bit of a cost in complexity in how I handle it, but it's way more transparent to me now that I'm not relying on the
pandoc
black box to handle it.You might be interested to know that I'm using vanilla commonmark to embed metadata into my documents to process later. I took the idea directly from this stackoverflow comment, with a few changes. My metadata looks like:
[~title]:- "November 2020 Newsletter"
, where any reference link beginning with a~
at the top of the document is treated as metadata. -
I leveled up my
awk
andxargs
usage quite a bit in this process. This might or might not be a good thing, depending on how cynical you are about learning esoteric skills. -
I generally just feel more comfortable with my setup now. Until, of course, I get the itch to change a bunch of subtle things again ;)
In the interest of "working with the garage door up" even harder, I also set up a public jornal. Remember jornal? It's a program I made to record diary entries on the comand line.
In the site's build script I transform the orginal to Commonmark, which gets transformed into HTML. The conversion from original to Commonmark is actually just a few sed
commands, since I made the jornal
file format easy to parse with command line tools.
I've moved all external links to archive.org links, as you've probably already noticed. It'll be slower and more annoying for a lot of people, but this is the easiest way I know to combat link rot. I also make local backups of all the pages I link to, just in case.
Moving over all the links to archive.org makes a single point of failure for all the links, yes, but it's a single point of failure that I can trust much more than the hundreds of small points that are numerous enough to be impossible to manage. When archive.org shuts down, I can make an automation script to move to a different provider.
This is a huge load off my back, since before I was worried about linking anything. Even though I don't think archive.org can really stay alive for the next 100 years, I think this will at least buy me some more time while I try to think of a better solution.
I'm not linking to archive.org "backups" of videos, since they don't actually back up the video as far as I know. I still have local backups of the videos I link to, just in case. And also some pages don't like to be archived, so if you find something like that just ask me for my own local backup if you need it.
And jeopardize the Integrity of the Hull
And jeopardize the integrity of the hull
Markdown madness
-
Commonmark spec: https://spec.commonmark.org/0.29/
-
Github Flavored Markdown: https://github.github.com/gfm/
-
Blog post about going from markdown.pl to cmark: https://www.oilshell.org/blog/2018/02/14.html
-
the future of markdown: https://blog.codinghorror.com/the-future-of-markdown/
-
Humane markup languages: https://blog.codinghorror.com/is-html-a-humane-markup-language/
Youtube-dl is back
You can read github's obvious pandering update about the situation here.
Earlier in the month the CEO of github went into a fucking IRC channel and talked to people, which is an image I find hilarious: check it out here
Kill the newsletter!
This is an ironic one. Kill The Newsletter is a website that turns those Email newsletters into RSS feeds.
Luckily for everyone, this newsletter is delivered via an atom feed anyways! It's not total irony.
I use this website for a few newsletters that I like. I still don't know why people don't just use RSS/Atom feeds, but here we are.
Always own your platform
This remarkably cringy website talks about a topic that I think is important.
A lot of internet citizens spend many hours of effort making content for other websites. You might write a short story, or a relevant comment, or something funny, or whatever. You are making things that bring attention to a website that you don't own.
Sure, most of the time you're going to be renting the servers that a personal website is running on, but the problem isn't the servers it's who has control. I can do whatever I want within the rule of law. When you're making content for someone else, you have to follow their culture and their rules, which might conflict with the things you want to make.
Your website is going to be your own place. Your own little corner where you have absolute and total authority. You are the one who chooses the content, how it gets shown, even who it gets shown too. You can distance yourself from the miasma of garbage content that gets made at a speed faster than light. Your own little oasis.
If you care at all about what you have to say and make, than preserving it for the long term should be important. Remember Myspace? Remember all those things you posted on internet forums that are long gone? Picture websites shutting down, deleting vast swaths of stuff from everywhere. The internet around you is crumbling, do you really want to put your faith in that?
Also, it's a matter of self respect. Do you believe in your own creations enough to lay total claim to them?
I still make things for other websites, especially Reddit these days. Writing prompts and whatnot. But I put them on this site as well, as their "official" place of existing. Any older content that I don't want to share gets obsessively backed up for posterity's sake.
No one is even trying
Here's a thought provoking internet article: No One is Even Trying
I try to get a lot of stuff done in my life. I have high ambitions, and that means having a high standard of what "productive" means. What counts as "trying"? What doesn't?
This post is about people who get a lot of things done:
...take a look at Byrne Hobart. He’s published 5 days a week, every single week since he launched his newsletter. His last 5 posts are 1968, 2281, 3352, 2535 and 2586 words, so 12,722/week, times 52 weeks, is 661,544 words each year. But the really impressive thing is that he’s simultaneously writing for Coindesk, Medium and Palladium. No, there isn’t any overlap or self-plagiarization.
!!!
Isn't that crazy? How the hot holy hell do you do that?
If you can type 80 words per minute and write stream of consciousness, 11,200 words [A week] is just 20 minutes a day.
Oh, so it's easy? Good to know.
To be real, those kinds of numbers are kind of absurd. First you have to have the ability to type at 80 words per minute in the first place. If you're a nerd you probably can already do this, but remember that most people can't. Next you have to be able to think of things to say at 80 words per minute, which I can tell you from personal experience is very very very hard. Trust me on this, I've tried. Then you have to sustain that for 20 minutes a day every single day. It would get easier with time, sure, but it isn't as easy as you may think.
But... How do I put this? Bump it up to an hour a day and you only need to write at 26 words per minute. You might actually be able to come up with interesting things to say, at that pace. Although it might be difficult to sustain for an hour. I'm positive that I've been able to reach a pace like this on multiple occasions. You'd be surprised at how slow 26 words per minute actually is. Seriously, go into a typing test and try to type slowly enough for 26 WPM.
(I just tried typing as slowly as I could bearably do it, and it came out to 60 WPM. I would have to stop until the test was 3/4 the way through and begin typing to get to 26 -- which might simulate pausing to think of what to say next, now that I think about it)
I can imagine similar metrics. Draw 3 or so small pictures a day (or the equivalent of that for a larger project) and you'll have drawn over 1000 pictures in a year. I know for a fact that I could do something like this for my own album art if it were something I wanted to focus on. Can you imagine that? Over a thousand album arts in a year? Has anyone who's considered themselves to be an album artist done something like that? Does that mean they aren't trying?
Other metrics. Videos, music, blog posts, photography, programming. You could write 280 lines of code a day (hard, but not impossible) and by the end of the year you would have written over 100,000 lines of code. For reference, a competent indie game like Braid would come out to be about 100k lines of code if you made it from total scratch.
(You would have to refactor a lot of that code, which would slow you down. But refactoring still involves writing lines of code, or changing them. The count might say it's less than 100k, but you would have written over 100k lines total by the end of the year. And also videogames and other software have design problems that need to be figured out and yada yada yada. The real question is: are programmers even trying, when the industry average is only about 4k? Still, don't expect to make something as complicated as Braid in a year. Maybe two years if you're really booking it.)
You can waffle around all you want about how "lines of code is a terrible metric" or how "it's not about how much you write, it's about how good it is!" Sure. The blog post I'm talking about even mentions that Quentin Tarantino, one of the most beloved movie directors of all time, has made only 9 movies. Obviously he's trying; you don't get results that good without trying. Obviously working with a large legacy code base will make you less productive. Obviously a videogame has more problems than how many lines of code you write a day. Obviously quality is more important than quantity in a lot of cases.
And these would all be good excuses! Except that there's people out there who blow them out of the water. Someone writes only 5 poems in their life, all of them good. Another person writes 5000 poems with varying degrees of quality. Which one, do you think, will have written more good poems in the end? Unless you're saying that the second person would have a less than 0.1% success rate in making "good poems", the second one will obviously win.
Assuming you start at age 40 and die at age 80, you would only have to write a poem every few days to reach 5000. Doesn't sound that hard to do, compared to forcing yourself to go to work every day for 40 years before you can retire.
The programmer who writes the equivalent of 100k lines of code will make more programs than one who doesn't. The more programs they make the better they will be at programming. There's gonna be a lot of stinkers in there, but the gems will shine bright as the fucking sun, I should say.
You can probably guess my position on this topic. I think that the vast majority of people are not doing as much as they could. That isn't to say that people are lazy, or that they are worse off, or anything like that. I mean in the raw sense of production.
I'm not concerned about the person who does something as a hobby just to unwind, nor about people who're still looking for that "right thing". This is about people who know exactly what they want and aren't doing enough to work towards it. If you're a person who wants to be in the top 0.1% of creatives in X field, you would be well advised to, you know, work on a lot of things in that domain. You have to excel to excel.
I consider myself to be one of those types of people. I'm not even close to the top 0.1% in any of the things I care about, but I am trying to be. I want to be the kind of author that people talk about for generations. I want to be the kind of programmer that makes foundational software that defines people's usage of computers. I want to make things that are truly amazing, not just good. This is basically a pathological need, one that I've had since my early childhood. The pathological need to be extraordinary.
Considering that I'm self-described as someone with high ambitions, the real question is: Am I even trying?
Well... I don't have exact numbers, since this isn't something that I keep track of too closely, but I think I'm doing okay? Not great, but decent.
I have a lot of thoughts about this topic. Like I said, I agree very hard that the path to being great is paved in tiles of how much you actually do. Sans genetics. I'm a pretty hard judge of myself when it comes to this. I'll try to keep it objective, but just know that this is all self-reported estimates.
My vast focus these days is writing. Getting a rough estimate of all the things I've written since November of 2019 is hard. It's scattered all over my hard drive and in different websites and hand written on paper and bleh. Some of it might be considered "not real" writing, since I'm not trying to improve with a lot of it.
Still, I think the number is somewhere around 360,000 words. Maybe more if I'm being generous. That's a little less than 1000 words a day, the recommended daily intake of words prescribed to "normal" authors. A lot of this writing is non-fiction stuff, but a good portion is also fiction, and nearly all the fiction is short stories.
So by following the normal advice of "write 1000 words a day" I would have written more this year than I already have. I don't know the numbers of how many authors actually follow that advice, mind you, but I know that I can probably do better.
Interestingly, most of that writing is concentrated in short bursts. I tend to write the bulk of my words in bursts, instead of writing a consistent amount every day. Like what I'm doing right now, writing this entire section the day before the newsletter is supposed to come out. I wonder if I can improve on my "trying" self-score with a concerted effort to build a daily habit along with the short bursts...
Anyways. This is pretty eye opening. I honestly thought I was doing more than that. Does 360k words a year count as "trying"? It's way more than a lot of people who call themselves writers write, which is good for my ego. But for someone who says they want to be the top 0.1%? I'm hardly even there. I could literally double the amount of work I get done just by reprioritizing a couple things and building a habit of writing an extra 30 or so minutes a day. The fact that I haven't done this points to the "not even trying" front. Like, you wouldn't do work like this and expect to be remembered as one of the greatest of all time; maybe a well-selling contemporary author, but not one of the greats.
As for programming, oh god programming. I've hardly done more than 5k lines of code over the last 365 days, I'd wager. Maybe more if I'm being generous, but that would have to be some really crazy generosity. The real number might actually be lower, I'm not sure.
To be fair -- and I hesitate to make excuses -- I've only just started caring about programming in a concrete way like 6 or so months ago. And my priorities are in my website and writing work more than this. But... No, that's not an excuse. I can do better here, too. Way better.
With my two passions, writing and programming, the only conclusion I can come to is that I'm in the "you're doing okay, but could be better" range. The range that says, "Are you even trying? Ehh... I guess?"
Again. I know that I write more than a lot of other writers. That's not the point I'm trying to make. And I am proud of the things I've done so far. I'm not needlessly beating myself up; it's not beating yourself up when you acknowledge your accomplishments as well as your failures in the same breath. I just have higher standards than this, and I want to do better.
As for programming? Yeah. I'll beat myself up on that one no problem. I've got a lot of work to do before I'm anywhere near proud of my programming output. Ouch.
The question of, "Are you even trying?" is not answered in absolute terms. It's something you have to decide for yourself, depending on your own goals. Then, if you want, you can apply that same standard to other people, and see if they are "trying" at things you consider to be important.
Or maybe this is all bullshit and I'm still looking for a reason to beat myself up. I can imagine a situation where someone focuses too much on production and not enough on quality and makes a lot less "good" stuff than if they slowed down and focused more. If I were to write 5k words a day I would get nearly 2 million words written by the end of the year; but all of the times I've written 5k words a day I always started going loopy at around day 5 and my writing became repetitive and boring.
Quantity isn't everything. Within reason, however, it's still a good predictor of how much someone is trying to be good at what they do.
Dumping ground
Here I'll be dumping various links without a lot of context. Hopefully by the time the newsletter is released I'll have most of these links factored into their own sections.
- Parsing perl = impossible beacuse halting problem: http://ebiquity.umbc.edu/blogger/2008/01/28/parsing-perl-considered-undecidable/
-
Interesting fuzzer: https://lcamtuf.coredump.cx/afl/
Shame corner: This link has been excluded from archive.org. For shame, jackasses. What do you even accomplish with that? Is it a power move?
-
Address sanitizer: https://clang.llvm.org/docs/AddressSanitizer.html
- A personal API: https://blog.webb.page/2019/a-personal-api
- Horrfying disease: https://theconversation.com/a-viral-infection-of-the-mind-the-curious-case-of-encephalitis-lethargica-660
- Vem (not vim) editor: https://www.vem-editor.org/
- Unix filenames are awful: https://dwheeler.com/essays/fixing-unix-linux-filenames.html
- The most expensive one byte mistake: https://queue.acm.org/detail.cfm?id=2010365
- (read more into this later) nb - bookmark/archiving tool: https://xwmx.github.io/nb/
- Wordgrinder: http://cowlark.com/wordgrinder/
- Word perfect for DOS insanity: http://www.columbia.edu/%7Eem36/wpdos/
- HOT DOG linux ("No unicode suppport by design"): https://hotdoglinux.com/
- Writing and releasing a book: http://journal.stuffwithstuff.com/2014/04/22/zero-to-95688-how-i-wrote-game-programming-patterns/
- Another from the same guy, more recent: http://journal.stuffwithstuff.com/2014/11/20/how-my-book-launch-went/
- Dont break the chain: https://lifehacker.com/jerry-seinfelds-productivity-secret-281626
- mapscii.me: https://github.com/rastapasta/mapscii (use
telnet mapscii.me
to run it on the command line.) (Be warned, one of the selling points is "100% pure JavaScript! 😎" which might not actually be a joke.)
- The craft of text editing: https://www.finseth.com/craft/index.html
- Data structures for text sequences: https://www.cs.unm.edu/~crowley/papers/sds/sds.html
- Build your own text editor (kilo): https://viewsourcecode.org/snaptoken/kilo/index.html
tar
(1) is crazy: https://linuxhint.com/create_extract_tar_gz_ubuntu/
- Actually using
ed
: https://sanctum.geek.nz/arabesque/actually-using-ed/ - GNU
ed
manual: https://www.gnu.org/software/ed/manual/ed_manual.html
-
How I program C video: https://www.youtube.com/watch?v=443UNeGrFoM
-
Advice for writing small C programs video: https://www.youtube.com/watch?v=eAhWIO1Ra6M
-
PRNG rand() bring your own random number generator: https://nullprogram.com/blog/2017/09/21/
- Minimalist C libraries: https://nullprogram.com/blog/2018/06/10/
- ANSI C fantasy name generator: https://github.com/skeeto/fantasyname
- Writing a self hosting C compiler: https://www.sigbus.info/how-i-wrote-a-self-hosting-c-compiler-in-40-days
- microsoft_craziness.h: https://pastebin.com/3YvWQa5c
- Why neovim is better than vim: https://geoff.greer.fm/2015/01/15/why-neovim-is-better-than-vim/
- Profiling with valgrind: https://geoff.greer.fm/2012/01/23/making-programs-faster-profiling/
- Sign your software releases: https://geoff.greer.fm/2014/03/20/sign-your-releases/
-
Turning off syntax highlighting
I actually have a much more extreme approach where I have all my highlighting turned off by default. Either it's the Hipster Effect (a phrase I just now coined) and the oddity of doing something makes me try harder, or it actually helps me focus on my work. Give it a try for a day or so if you're a programmer.
Also, the link formatting is all over the place with this post, since I've been refactoring the links to point to archive.org. Sorry about that.
-
Zettelkasten: An interesting note taking setup.
I think this note taking method is really interesting. I might incorporate it into some of the things I do later. I've had various thoughts about making something similar within the wiki
-
Command line tools can be massively parallelized if you're a little clever about it
I actually used this type of thinking when working on the most recent update to the build script for this site. It is much much faster now, and should scale to much higher page counts until I have to find yet another solution. But using techniques like this should still buy me some time.
- Escape from Machinima part 1 and part 2 is an interesting look into that vintage youtube scam channel, Machinima
- Parse html with regex. He comes.
-
One of the most impressive displays of programming optimization I've seen in a while: Beating Up on Qsort. Pretty technical, but a great read regardless. Fits in well with my rant about GNU
yes
.Also see: timsort
- A human spoken language that is totally formal and non-ambiguous: lojban
-
An interesting explanation of why being a teenager and child is horrible: angst
I agree with a lot of the stuff said here. But you have to remember that I was a strange kid and school wasn't the best environment for me. Still, being a kid sucked and being an adult is better.
-
I guess you can write a shell in C if you want?
-
...Or a self hosting C compiler?
- Software on the internet must be actively maintained: internet software decay
-
Microsoft Word sucks
-
A glorious enormous rant about how horrible PHP is: PHP is a fractal of bad design
-
Summary: Corrupt a C compiler in such a way that no human could ever tell you corrupted it. Useful for things like, you know, keylogging or the like.
This kind of attack has been known since at least 1984. Now imagine how likely it is that there isn't something like it going on in your computer right now. Would a powerful government be willing to pass up that kind of opportunity? Would some other malicious hacker be willing to pass up the kind of payday that would arise out of selling it to a powerful government? Paranoia is always fun, yay.
- An interesting look into the phenomenon of learning a word and suddenly seeing it everywhere, and what that implies towards things like missed opportunities: Synthesis
-
A cool public domain doom clone written in pure C: anarch
WARNING: There's some really blunt radical shit in this repo. The guy who made this sounds a bit... Extremist? And not totally in the good way, either. I'm endorsing, specifically, the fact that it's public domain, written with longevity in mind, and has a beautiful platform layer that I'm totally going to steal some day. Look and see for yourself, this guy seems a little unhinged.
- And finally, here's some cool Dr. Seuss art.