[~title]:- "Tim's Jornal" ## 2020-11-06 **05:03:04** Welcome to my own public [jornal](/c/jornal.html). Yes it's really spelt that way. [Most recent entry](#newest). **05:04:39** This page will be a "dumping ground". Little notes I take, or updates on projects I'm doing, or whatever. It doesn't really matter. There will be no spelling or grammar correction or anything even resembling cohesion. **05:05:44** You can view the original (not converted to HTML/Markdown) [here](/w/jornal-original.txt). You can view the HTML [here](/w/jornal.html) and the converted Markdown [here](/w/jornal.txt). **05:29:43** This started because I've been transitioning into "working with the garage door up" so to speek. I've been using `jornal` for almost a month to record my own private notes. I decided that I wanted a public jornal instead, and now we're here. **05:31:25** The `jornal` program was made in an afternoon, and yet it's already seen pretty extensive use by me. I'm probably the only person in the entire world who is actually going to use this program to any reasonable extent, and I'm _totally_ okay with that. It works exactly the way I want it to work and is absurdly simple. Even programming it in ANSI C "feels" nice, since I can rely on it being stable and not sway with the winds of web technologies or some shit. **05:32:20** It only took a couple `sed` commands to convert the jornal into a valid Commonmark file, too. I sort of wish I made the entries start with a specific character, instead of just starting with a number, but I can't really change that now, can it? **05:33:28** Well, I _could_ change it, but `jornal` is already in 1.0, and that means I've basically "frozen" the design of the file format. I value keeping its stability and consistancy far _far_ more than I value changing a little hangup like that. **05:36:52** Interestingly, I have to kind of write this using commonmark markup, now. My first jornal (the private one) didn't really have a consistant markup. Now it does. **07:13:18** Here's a random list of things I want to learn about computer science: Understand time complexity (What is big O notation?), actual definitions of various programming lanague paradimes (function vs delarative vs imperative), solidify boolean logic chops (NAND AND XOR and so on), how file systems work, how compression and uncompression works (zip and DEFLATE), data structures (linked lists, binary trees, hash tables, regular trees, and so on), how to navigate various data structures and how to manipulate them, sorting algorithems, how to spell "algorithm", how are floating point numbers represented in memory (IEEE floats), concurrency (how do I even begin with this one?), what even _is_ a database, implement my own malloc(), brush up on linear algebra (I heard a lot of good things about "Linear Algebra Done Right" by Sheldon Axler), figure out what discrete math is, and cry. **07:15:16** My other passion is writing. There's less of a "heres a list of things" for writing than there is for programming. I want to practice specific things like getting better at editing and shit, but mostly it boils down to: Try to write better than I did the day before. If I can improve at a consistant rate, even if it's a slow one, than I will be pretty great at writing in like 20 years. **16:48:43** Back from work! It's the weekend. Yay. (I had a bug in the build script that I left right before leaving for work, and I've been thinking about it all day. Like a scratch I couldn't itch. This entry is to make sure that my solution that I couldn't get out of my head actually works) **16:48:56** it works! **18:54:31** So I added a rubber duck debugger to [tutils](/c/tutils.html). I stole the ideal nearly wholesale from the CS50 course on Harvard's online classes. I don't actually take those classes (obviously), but I was browsing the subreddit when I came across the idea of having a "chat bot" that only just said "quack" at anything you said. Kind of like that classic doctor/psychiatrist program from whatever story that was. Actually I think that psychiatrist program is in Emacs? Hmm... Anyways, I wanted to make it and it took like 10 minutes to do with C. Yay! **18:56:41** I'm feeling reluctant to make another releasse, since it's kind of tedious and I'm tired and want to go to bed. Maybe I can add that to the todo list: Make a tutil script to package tarballs for timtimestim software releases ## 2020-11-07 **03:23:22** Waking up early is better. I have discovered a truly marvelous proof of this that the margins of this jornal are too small to fit. **03:25:17** just found `telnet mapscii.me` which is amazing, hilarious, and possibly the most absurd thing I've seen this morning. **04:11:01** I'm not sure how to use the 'perf' tool on linux. It seems useful, but trying the obvious things like `perf ` doesn't do jack shit. And `perf --help` doesn't help anything either. What do I do? Why can't I just get performance? Ugh **04:24:43** did you know there's a sorting algorithm called "tim sort"? Me meither! **04:26:46** When I add something to my jornal the timtimestim website repo gets changes to the original jornal file, the markdown file, the html output, the markdown as it appears on the website, the stats page markdown, the stats page markdown as it appears on the website, and the stats page html. Wow. **09:30:42** I'm getting annoyed with `nvi`. I switched a few months ago from `vim` to `nvi` since `vim` was giving me random lag spikes and other random shit. `nvi` on the other hand was a lot more lean, had all the features I used anyways (it's not hard to learn how to press `bdw` instead of `diw`, or how to use marks to delete a section instead of visual selection; in fact, I prefer the spartan nature of it), and most importantly didn't give me lag spikes while I was writing, breaking my flow. So far so good. The problem is that `nvi` is _really_ old, like 1997 old. And it hasn't gotten a lot of updates for... jesus, since 2014. That usually isn't a problem, but there's a few annoying bugs. For instance, when I'm editing a shell script I can't run the script directly if I have the file open in `nvi`, since it "locks" the file for execution; I have to do an insane `cp file /tmp/file.tmp ; /tmp/file.tmp` to run it instead. The other one that really is grinding my gears is how the `autosave` option doesn't work if I try to `:e filename`, but _does_ work if I use CTRL-^ to swap between files. Super strange stuff, man. **09:34:37** I knew that I was eventually going to have to switch off of `nvi` for something more maintainable. The implementation for `nvi` is gross, its build system alone being nearly incomprehensable to me. But not being able to change it (because it's so insane and I can't get a grip on the code base) is really starting to cause issues. So I think I'm going to have to take a few days/a week (or let's be honest, probably longer than that) to fork `neatvi` and add my own things I need. Trying out `neatvi`, there's a few things I want: incremental search, tab completion on the `ex` command line for files, an automatically updating ruler (with command mode, collumn, and line number at least) for the status bar, and so on. **09:42:46** The moral is that I'm probably going to be moving over much sooner than I thought. I thought I could handle `nvi`'s excentricities until at least the next Debian Stable, but it's becomming too much for me to handle on my own. **09:44:45** If you're curious, I wrote a bit about `neatvi` [here](/n/2020-09.html#litcave). Maybe, I can contribute my changes upstream if they align with the maintainer's values; I would have to make a github account for that though, and I really don't like github. Email the patches perhaps? **11:40:16** What if I wrote a blog post that took 10k+ words to argue about the "I'm here to chew ass and kick bubble gum, and I'm all out of bubblegum" joke. The problem is that "I'm all out of bubblegum" part, which could also be said to be "I'm all out of ass". I don't know which one is funnier, being out of ass because you already chewed all of it, or implying that you've finally kicked all of the bubblegum and it's finally time to chew ass. This might sound pedantic and crazy, but it's a topic i've considered on and off since my age was in the single digits. **12:27:57** I might want to implement nvi style undo aswell. So that you can "undo the undo" so to speek **12:40:12** poking around at neatvi more, I think I noticed somethign weird. Using cw to change a word and then repeating it with the . command is _really_ slow in comparison to any other vi implementation I've tried. I can actually see the cursor moving to type the things, and if I hold down the . command to repeate it constantly it lags the fuck out of the program. There's other similar things to this. Very weird. Also the screen stays pasted into the terminal window even when you exit, which might actually be nicer than other terminal editors out there, now that I think aout it. Either way, a fork will have to do some optimizations to fix whatever insane innefieceny is happening to actually let me _see_ the repetition of a simple cw command repeated with `.`. **12:44:35** Yeah, even busybox vi can handle me holding down the . key in the same situation without any lag whatsoever. So weird. Are the other `vi` clones doing an optimization where they don't render until the command it completed, while neatvi is implementing it's functions by actually _rendering_ everything? I guess we'll get my answer once I do some looking into the code. **12:49:39** Fuck it. I should just use `ed` **12:55:08** That was supposed to be funny, but I had a phase for like 2 days where all I wanted to do was use `ed`. Once I actually tried to use it for anything even remotly non-trivial I realized my mistake. The big problem with `ed` is getting context for your code; it's really annoying to type `-10,+10p` every time you want to see what's going on around you. It did make me better at handling `ex` while using `vi`, though, which was a good side effect of that adventure. **13:01:15** It rubs the regex on its skin **14:42:28** trying to install cmake so I can try to build a "nvi2" thing I found on github and the package size os _25.8 MB_ on the debian repos. What the fucking fuck. What is it even doing that it takes that much space? Am I installing a god damned web engine? **14:46:28** I should just have a personal rule to never build a piece of software that takes more effort than running `make` in the directory of the repo. Fucking hell ## 2020-11-08 **04:33:49** Happy Sunday and all that. I had a dream about having a dream about going on a "bithday dream". To untangle that, I basically was lucid, but I was under the impression that it was my birthday (it isn't) and that this was a "birthday dream" so I should just sit back and enjoy it. If you ever wonder if I do the things I do on purpose, I will just direct people to this dream instead; my mind just works like this automatically. **04:50:33** In my little quest to check out text editors, I just built `kakoune`. The Good: All I had to do was call `make`. The Bad: It took _over three minutes_ to build. I know this thing is programmed in C++, but _my god_. How do you have something like that and think that it's acceptable? Three minutes to build a text editor? I know my computer isn't the hottest thing in town, it can't even run terraria (I tried once and it neary fried my cpu), but this is insane. **05:51:34** I realized that I already have a ton of small utility programs in a different directory on my file system. So I'm moving some of those over to tutils now. **11:50:50** Cool! I made a lot of new scripts for the tutils thing. A timer, a clipboard manager, qr code generator, an a front end for ledger(1). Pretty awesome :D **11:56:54** Jeez, it's only noon? I feel like I've been up all day already. But I've been pretty busy, and gotten a lot done, so I makes sense that I'd feel a little worn out. I still want to get the "qrelease" program made for tutils before I check out for the day. The program being an easy way to package a git source directory for release on timtimestim, making a tar.gz and subtracting the .git directory and shit like that. Might even make it remove the .gitignore's **12:05:38** Does the length of my day feel relative to how much stuff I've gotten done? They say time flies when you have fun, and I agree to an extent, but my days feel fuller when I actually _fill_ them with things **12:39:09** Theres a part of me that wants to make my own text editor. Like a brand new kind of editor, kind of like what kakoune is. And to do that I'm going to have to try out basically every text editor I can, and not just in a small way, but in a large way. Like use ed(1) for a month, and then kakoune for a month, and shit like that. Actually _try_ to use these editors, and then note all the things that are good about them and all the little things I like or dislike. That would be one hell of a task. **14:07:18** Should I include the git repo inside of a release? Hmm... I'm going to guess "no". I don't see a lot of other people doing it, like those suckless guys. I guess it would take up a lot of space on the server? I guess it's more of a "frozen in time" think, that will let other people use the repo too. **14:07:41** Oh! It's probably for other people to use their own version control systems! That makes sense **14:23:47** So... I just make the qrelease thing for tutils using only ed(1). The biggest problem, I think, is the lack of auto indenting. It will be a huge pain. **15:08:22** There seems to be a weird bug with GNU ed where using the wq command causes errors in some cases. Like when I'm writing a git commit message it errored out one time, not not all the time. And when I was using `r !cat ~/path/to/file | vipe` to edit a buffer with ed and then append it to the _current_ ed, it didn't work if I did wq, but did work if I first did w and then q. And yes, I really did do a recursive ed. You kind of have to do some crazy shell stuff to get this thing to work well. **15:24:09** What if there was a series of posts where I "reviewed" a ton of different editors. Except I actually tried to use for my day to day work for an extended period of time (a month? Longer?). A (hopelessly incomplete) list would be: ed, vi/vim/vis/elvis/etc, kakoune, nano, jed, joe, moe, sam, emacs, vscode (honestly not sure if my shitty laptop can handle this one), fukin' gedit (?), sublime text, and so on. Best part is that I can just record my thoughts on the editors _as I'm using them_ inside this very jornal. I like the idea, and honestly it's a good excuse to do research on other editors in preparation for when I eventually embark on making my own. **15:33:12** Lame. `ed` can't do the `sed` thing where the separaator for the s/re/replacement/ is different if the char after the s is different. I have to escape every / even when working with links and shit **15:38:58** There's an impulse to keep the reviews "pure". Like, I _could_ write a bunch of extensions for something like emacs to make it behave like a different editor, but then I wouldn't be broadening my horizons with editors. Keeping it pure forces me to adjust to a new thing instead of adjusting the new thing to me. **15:45:56** It's been 44 days since I restarted my computer last. It's got its flaws, but Linux can really handle some weird stuff if you need it to. **16:57:25** The computer has been restarter. I repeat, the computer has been restarted. **18:05:32** The safest way to save in ed is to do w and _then_ q. The wq combo seems to be really buggy for some reason. **18:07:33** Since I use the `o` program from tutils to open all my text files, I can easily change my EDITOR env variable and change what editor I open things with. This is an unexpected benefit of getting into the habit of opening things like `o filename` instead of `vim filename` or `nvi filename` or `ed filename`. Out of all of the programs I made, I never expected `o` to be so useful for so many different things. **18:09:05** The real test of ed comes tomorrow, where I try to use to to work on a large refactoring effort I'm undertaking for [ikna](/c/ikna.html). It'll be slower and more arudous, probably, but I'm interested to see how it preforms. Even though I used it before and gave up nearly immedetly for the sweet embrase of vi. We'll have to see. **18:12:10** What would a "super ed" look like? You made a text editor in the spirit of ed with it's weird standard input stuff, but actually decent. Super ed... sed... Shit. **18:29:36** The problem with editors like `nano` and `mg` are that going back a character uses the CTRL-b keystroke, and that just so happens to be the keystroke used for `tmux`, which I also use. So I have to press CTRL-b twice to move back once in these editors. That'll be something to consider once I move away from trying to master ed **18:30:46** ed saves things very quickly. Just having to write "w" instead of putting the colon in front of it is actually really nice, after using vi clones. The obsessive saver in me approves **18:38:01** An ed-like editor that, instead of "just" stdin inputs, it also does fzf-like things in small interactive windows. Like you could do a fzf to filter out lines or some shit. **19:09:54** There's a program called "indent" that might be able to help the auto-indent problem with ed. Or some other code formatter. Just use `e !indent ... %` where `...` is the actual formatting. Or `clang-format` might work too. **19:10:02** Whatever. It's time for bed. `night ## 2020-11-09 **04:13:22** Are those ants in your pants or are you happy to see me? **04:28:47** Yesterday must have been more exausting than I realized. I woke up at my normal 3-something AM only to feel so lethargic that I layed in my bed staring at a small patch of moonlight on my wall. **04:30:33** I wanted to write a little thing for /r/twosentencehorror on Reddit, but I didn't have enough "post karma" to put something on there. Fucking stupid; I thought I was done with the "you're not pupular enough to be here" shit from 4th grade. So here it is, the two sentence horror story: _You've kept me here so long. Isn't one sentence enough?_ Fuck internet culture. **04:31:14** Just post everything on my website anyways. It'll scratch the same itch as putting it on reddit. **04:42:22** Anyways, I'm working on [ikna](/c/ikna.html) today. I'm trying to make it into a general purpose library for making spaced repetition flash card programs, so I have to make a few weird design decisions. The basic idea is that you have a log file that you give to it, and it'll give you an array of "cards" that you can than manipulate; except the cards are only IDs, and you're expected to gather the contents of them from the information in the array (it's an array of structures, if you're curious). That's fine and good, but it feels weird to me. This array is going to have to be dynamic, obviously. But I'm also going to have to handle appending things to their log file, and since I'm not going to force people to send in `FILE *pointers` (I'm using char strings with buffer sizes, _not_ null terminated byte strings) I probably need a "log append" thing too, where you give a function an array of ikna_log_entry structs and it gives you a string that you can then append to your log file, wherever you keep it. Furthermore, I have to edit the log file parser and format to handle cards in increments of seconds, instead of just days; and a bunch of other small constraints that feel kind of paralyzing. **04:50:35** Should the function return an error code? I refuse to crash someone else's program just because something went wrong, so that means I'm going to have to tell them somehow what's going on. **05:00:39** There's also the issue of getting the ID of the current card for review. That's a complex issue that can be solved in many ways, one of which being in the log file parser. But another way to do it might be in a seperate function like `ikna_get_current_card()` where you give it a card array from the log file, except this one is more general and can be reused in other situations. It _would_ probably be slower, though. Especially if you have like a million cards. But... I think that might be the way to go. **05:13:49** Using ed is unsustainable. I just cant do it. **05:13:52** :( **05:17:35** Oh sweet mana of heaven, nvi how I missed you **06:55:25** Ugh. No useful progress today. My brain is fried and I can't really focus on the problems I'm trying to solve. ## 2020-11-10 **05:17:13** If I ever have a child I'm going to name them Death Ray. That way all the other kids will know not to bully them. **05:20:33** I was _sick_. That's why I was lethargic and unmotivated and bleh yesterday. Not COVID levels of sick, but enough to make me sleep for nearly 12 hours last night. My morning has been cut short, but I needed the sleep. But now my sleep schedule might be warped. I don't wake up to an alaram, but even then I usually wake up at around 3:30 AM, but waking up at 5 might set me forward an hour or so. Worth it; I feel so much better now. **06:22:01** Programming is weird. You feel comfortable with one thing, and then you try to do something else and you're like a fish out of water. Like I got comfortable using C to make programs, and now that I'm trying to make an API for the first time suddenly it's like I have no idea what to do. I could go around and read a bunch of books and web pages about API design, but that isn't... Most of those books and web pages will suck. I'm not an expert in any field, but I've gotten enough experience in many different things to be able to look back and say that 80% of the shit I've read about them has been trash garbage. The best learning I do is when I try to use something in the real world; make a real world C program instead of doing a buch of exercises, write a book instead of just sitting there thinking about writing a book, start a website instead of reading about website design and web hosting. My strategy with making the ikna API is to take the few ideas that I've read about that I feel are good (single header file library, allow people to do complicated things if they want, try not to force them into a certain program design, etc) and than just throw it out into the world and wait for feedback. **07:24:02** Sturgeon's Law: 90% of everything is crap. **07:29:07** Didn't get a ton done this morning, but I'm feeling a lot better than yesterday. Yesterday I was just toally lethargic and felt like I couldn't solve any programming problem or do anything even remotly creative. In heindseight it's surprising that I got anything done at all. This morning was about the same amount of progress, but with the intent of recovery from yesterday instead of forcing myself to work. ## 2020-11-11 **02:46:29** The bitter cold digs into your exposed skin, your smoky breath fogs up your glasses, your frostbitten hand burns as it wipes away the layer of snow to read the inscription: _lol yur mum gay_ **04:25:36** Off by one errors suck. **05:30:59** One of the problems with single header libraries is that the implementation is mixed up with the definitions. If you wanted to hide functionality in a normal library you just don't declare that function/variable/whatever in the header file. But a single header file is different, since you still need the internal functionality. The stb libraries suggest that you use a double underscore after the namespace for private things (like `ikna__private`). I don't like this because searching for normal functions with `/ikna_` will give you the private functions. Also it uses a double underscore, which is reserved by the compiler. My own solution is to put a "p" at the end, like `iknap_private`. That way it's easier to search for them and the intent is more clear. **05:55:47** Designing good functions is hard. I've gone through like 5 iterations of a simple char search function already. **06:41:07** Short circut evaluation just costed me like 30 minutes of debugging. I was checking for the length of a buffer using `&&` _after_ I checked for something else, and valgrind was telling me I was crazy. **06:52:34** And I leave this morning off to a segmentation fault! Yay! :D ## 2020-11-12 **02:57:11** A mortition sells fans on the side; he calls it "Air your grievences" **03:58:14** I've reconsidered how I want to handle ikna. Originally I wanted to make a library for others to make their own spaced repetition flash card programs. This, I've come to realize, is probably not a great idea. Nobody would want to use the file formats and ideas I come up with, since they will want to roll their own solutions. What's more is I would be making a bunch of helper functions and structs and shit that would be useful elsewhere outside of a library about flash cards. Instead I'm going to make a general utility library (header-only, obviously) and make ikna into it's own standalone thing. I won't need to worry about making a good flash card library that I will only use once, and I'll also be able to "trial by fire" test my general utility library instead! It's a win-win for code reuse and useful effort. **04:35:38** I'm calling the header-only utility thing "fj", since that's like the easiest thing to type on a normal keyboard. **06:26:53** Void pointers - A review: AAAAAAAAAAAAAAAAAAAAAAAAAAA **07:24:14** I'm making a dynamic array for fj. It's heavily inspired (might be say it's stolen, it's so close) by the "stb_arr" setup in the stb header libraries. I'm doing my own implementation of it, but the general idea was his. Basically I make a struct with the array's capacity and length, and then the memory after that is the actual contents of the array. Use a bit of black magic with void pointers and you can get a lot done with that convience. Probably the most insane thing I've done with memory management so far; if feels really good to actually have something this weird working. **07:27:08** I wanted to make a string type for fj, but I thought that I might as well make a generic dynamic array instead. It would still be a `char *` with a size and capacity (and probably ended with a NUL to interoperate with the other string stuff in C), but it's not _hard coded_ to only work with `char *`. **07:28:40** Anyways, go check out "Advice on writing small C programs" in [this month's newsletter](/n/2020-11.html). It's the video that inspired me to make my own utility library and implement my own version of a stb-style dynamic array. I'm not linking it here because I don't want to have to manage the link in more than one place. Sue me. **07:30:34** But that's it for me this morning. Like a super hero taking off his tight pants I have to pretend to be a normal member of society for a while. Do not fear, citizen, I shall return with more quips and anecdotes. ## 2020-11-13 **04:06:53** Why are keyboard keys called keys? They don't unlock anything... **05:30:37** oh my god c macros are so fucking jank **06:51:40** God damn macro not calling the function why why why why **07:10:18** AAAAAA!!!!!!!!! I FIXED IT!! THE DYNAMIC ARRAY GROWS MOTHERFUCKER! TELL ME SOMETHING I DONT KNOW! :O **07:11:24** To be more precise: I made it so that the array can grow when you call fj_asetlen(). It was a problem with my macros; a hidden gotcha with how I set up my ternary if's in one of them. ## 2020-11-14 **05:26:52** I have found the One True Programming Language. You will all C **05:27:23** Happy saturday everyone! **05:54:57** Reading stdin into a string buffer in memory is really annoying. You can't use fseek() to see how long it is, and even if you could you couldn't use rewind() to go back and actually fread() it into the buffer. Instead you have to dynamically resize an array to get the thing in a single pass. Luckly I spent the last few days making a dynamically resizing array. **09:57:37** My will to be insane **11:41:55** I wonder if this jornal counts as a "putting your money where your mouth is" situation. I probably wouldnt have made this if I didn't already have the jornal program made. I guess the phrase would also be "eating your own dog food". **11:43:11** In ikna, the card id's are all in sequential order starting from 1. That means that I can store everything about the cards in an array, and get the index just by subtracting 1. A poor man's hash table. **14:00:36** Sometimes /r/writingprompts actually give you a good prompt. I just rapidly wrote a short 900 word story about summoning an undead pirate rave because a guy removed some letters from a sign to make "raveyar" from "graveyard". Good times **15:16:11** Awesome. The ikna log file parser is working up to the point where it was before! **15:18:05** And it's pretty fast. I think it's faster than it was before, since I now preload the entire log file into memory instead of using getch(). It uses the same method (two passes, the first one marking the lines that contain the most recent "event" for each card id and the second doing a "full" parse on it), but it feels a lot faster than before. Maybe some weird memory prefetcher thing going on? I don't really know. **18:10:19** Another small issue I have with `nvi` is that doing case insensitive searches also applies to regex substituations. And also if you search for something IN CAPS it still searches for it in both cases. Kind of weird, but I really like case insensitive searches (mostly for writing, since if I'm searching for a word I don't really know if it was at the start of a sentence or not). **18:25:53** I guess I finally have enough reddit karma to make my own subreddit. As to why I would ever want to do something so stupid: There's a weird rule on r/writingprompts that you can only link to your own personal subreddit and not your own personal website. I have to have a subreddit being an intermediary between r/writingprompts and my site. Yay! Pointless restrictions! (This is predicated on the fact that nobody wants to discuss the things I make anyways, the vast majority of the time). **19:24:37** Well. That issue about the case inssensative search not changing when using CAPS was just me useing the wrong option switch. Whoops ## 2020-11-15 **05:09:42** "Do you even lift brah?" Says the dudebro as he tries to lift the brah of God. **05:57:56** Huh. Did you know that `vi` can display the context of lines that match a search with something like `g/search/z.5`? That's... Actually crazy. Such an old program and I still learn new useful things about it. **06:01:33** Even better is something like `g/search/z=10` which will mark the matches better for you. I don't know if that's a nvi extension or not, but it _is_ really cool. **06:02:43** I can imagine a lot of uses for something like this. Set a mark to your current location, do a search for a function that is defined somewhere else in the file (and all the things that use that function) and then use the mark to go back to where you were editing. I guess you could do the same thing with a normal search, but this one has _style_. **08:50:22** I was agonizing over why my program was showing 4000+ allocs under valgrind. After looking at it with `strace` I found it was because the `mktime()` function on the standard library. _Apperently_ it allocates memory every fucking time you call the function. Seriously. It just so happens that this is total bullshit, and now I have to either allocate memory for every fucking card in a ikna deck (of which you can have _tens of thousands of_), or find some other way to do it. I store the times in the god damn ISO 8601 date format, so it should be possible to... sort them? I guess? The point is that I need to get the difference between two different times and find out which one is more recent, and I need to do this at least once per card every time you launch the program. Maybe write a comparison function that takes two tm structs and compares them; since I only really need to compare on the granularity of a day and nothing more. Maybe make a string out of both of them (allocated on the fucking stack or preallocated statically or something that isn't calling malloc() every time) and lezigraphically compare them with strcmp(), since ISO 8601 dates can be sorted easily that way. **08:51:55** This is why I don't like trusting things other people have made. There _has_ to be a way to make the mktime() function work without allocating memory every time you call it. There _has_ to be. Fucking absurd. **10:05:48** The easier thing would be to just make my own year month day struct and convert it to the libc shit when I need to normalize the date (like when incrementing a card's due date by X days) **11:11:22** Okay! I made my own little date struct and some functions to simply compare them to see if they're the same date or above or below. Yada yada yada. How much faster is it? Just about 75% faster, by my measurement. Yeah. Seriously. Turns out that calling malloc() and free() (under my nose. I didn't know it was happening until I really investigated valgrind's output and narrowed it down) is really really really really slow when you do it constantly. Who wulda thunk it? Now I'm only using mktime() to normalize dates, which happens far less often than loading a card from the log file into memory. **15:13:52** I'm testing if using `vipe` with `jornal` will work or not. The command I'm using is `echo '' | vipe | jornal`. **15:15:52** Huh. It worked. I probably won't use it like that, but it's nice to know that it works at all. Weirdly enough you have to pipe something into `vipe` for it to do anything... **15:18:48** And now tutils has an `nvipe` command that calls `vipe` in place. Yay **15:27:07** test **15:27:38** Note to self: You cannot use `printf 'test' | jornal` and expect to have more things to type ## 2020-11-16 **05:42:13** Ima smack that ASCII **05:50:11** I'm starting to notice a sort of pattern. I work extremely hard on the weekends then sleep in and relax on monday morning before work. (Today is monday morning, by the way). "Sleeping in" for me means waking up at 5 AM instead of 3 AM, and not jumping immedellty into working on whatever thing I'm obsessed about at the moment (currently it's working on ikna). Instead I read some blog posts that I've queued up and relax most of the morning. It's nice. **05:53:36** Huh. The `[` key looks a lot like the `P` key when using a variable width font. Writing something like `[oool` looks like `pool` in that situation. I found this out because I was typying something into the search bar on duckduckgo and hit the `[` key instead of `p`. **06:58:28** Super lazy morning this morning. Oddly enough I don't feel guilty about it. **18:54:27** I'm trying to figure out how to get a random number generator to work in fj.h. The reason for this is because the rand() and srand() stuff in libc is... Well, after the fiasco with the mktime() stuff from yesterday I just don't trust it to be implemented the way I want. rand() isn't specified with any particular algorithm by the standard, and I've heard horror stories about the things libc devs do with this thing. So I'm going to implement my own rand for fj. The problem is that I have no idea how to do that; it's way _way_ out of my experties in computer science. The best I've got is [this post](https://nullprogram.com/blog/2017/09/21/) that says to use something called `xoshiro356**`, which is an algorithm in the public domain for generatoring random numbers. That's probably the one I'll try to implement into fj, since I don't really want to think too hard about it. I don't know the best way to generate a seed value, though. There's some weird stuff out there like reading from `/dev/urandom` and shit like that. Even if I just copy-pasted the algorithm into fj (with translating the data to ANSI C stuff, since ANSI C doesn't have stdint.h) I still wouldn't know how it works _at all_. But I guess I know _less_ about how rand() is implemented on any other matchine's libc, so it's better on that front at least. Random numbers, man. So weird. **19:14:07** Hmm. I think I want to find a way to get fixed-width sizes with ANSI C. In fj, most likly. I have found myself wanting to use something explicit like u64 or s32 ever since I switched to ANSI. This is a pain point that fj can solve for me, if I'm willing to put in the effort. For now, I can just use stdint.h as a crutch (since most compilers and libc's support it even on ANSI C). Also, probably going to use `i32` instead of `s32`. `s32` is more explicit as "signed", but I think i32 is more readable to people who know what "int" means. ## 2020-11-17 **03:18:51** "Where's your seal of appproval?" "The polar bear ate it." **03:24:50** My shit says that Im connected to the internet, but I can't load anything that requires it. But my phone is fine, so its a problem with my laptop. Ugh **03:28:53** restarting didn't work either... **03:29:14** I guess connecting to the internet is too much to ask today. Great **03:31:55** Okay! I think I got it working now. Fukin hell **03:32:18** Now I got to reset all my tmux sessions. **04:01:19** My vpn was blocking my internet because I was out of funds on it... **04:08:14** In the meantime I got fixed width ints working on fj. The problem I tried to solve is that fj (and all my other C code) is in ANSI C/c89, which doesn't have stdint.h defined. Even still, most systems will have stdint.h in the system headers, which makes using it in a c89 code base possible most of the time. I still didn't like relying on it, though. What I ended up doing was using limits.h and `#if` preprocessor magic to test for an _exact_ setup with the limits of ints. I tested for the most common one for 64bit operating systems and then just typedef'd them; like setting `signed char` to be `u8`. The trick is that if any of the sizes are wrong, I use `#else` to fall back on stdint.h on machines that I didn't predict. That way most compiles will be fully c89 compatable, but the code will still work as expected on machines that are strange and full of madness. **04:08:37** I admit. It's a pretty jank solution, but it's one that works the best for how concise it is. **04:34:28** You would think after all this time programming I would have learned how to read for the numbers I actually wanted to see. Seriously. **05:10:59** I'm conflicted on the names for the fixed width types in fj. Should it be single characters like `i8` and `u32` or longer names like `int8` and `uint32`? My original impulse weas to make it the single characters, but all the other names in fj are longer names like `uint` or `ulong`, and this would make it more consistant... **05:11:54** Fuck it. I like how the short names look better. **06:33:29** Using kind of a dirty hack to keep track of new cards seperatly from regular cards. The idea is that I need to record how many reviews you've done with new cards versus regular cards in a particular day, and they need to be recorded seperatly. The previous solution was to have an `ikna.lock` file that has all this information in it. I didn't like that solution, so I moved on to trying to implement it within the log file itself. So any card action that is 'c' is "regular card correct" and any card action that is 'v' is "new card correct". IT's kinda jank, but it'll work. **07:29:34** Aweszome. ikna now no longer requires the lock file. I just added a new field to the record just for keeping track of what the current card is, which seems excessive but... Whatever. It's the simplest thing to do, adn nobody cares about the log file format but me anyways. The most recent review is just the most recent "relevant" entry in the log file (answering correct on a card). Good things are happening over at Ikna Refactor Inc. **19:09:57** good night ## 2020-11-18 **04:23:41** Today marks day one of my 11 day long vacation from work! :O **06:03:21** If you stare long enough at the abyss it'll be considered rude in some cultures. **12:19:26** I use the "isoivka" (I think that's how it's spelt...) font. But I'm not sure it's the font I want to use for years. It's way better than dejavu sans mono, _for sure_, but something about it just doesn't appeal to me. I don't know. **12:32:17** Well the "proggy clean" font is ugly as sin, or doesn't work on my terminal emulator... Trying it in xfce4-terminal seems to make it look a lot nicer, actually. So it is my terminal, or setup, or something. Hmmm... Whatever. iosevka (I looked up how it was spelt) still looks better, I think. **12:37:21** Honestly, the worst part of st(1) (my terminal emulator) is configuring the font. It's so opaque and I always feel like I'm fucking it up somehow. Especially when I try something like this and find that I can't get a normal font to work when it works automatically on an emulator like xfce4-terminal. **12:48:23** The problem with the iosevka font is that the l and 1 characters are kind of hard to distinguish, and it's... buggy? For some reason the fixed width version (the one that I use) sometimes renders weird, espeically with itlics. That might also be an issue with `st`, but whatever it is it's really weird. Maybe I shouldn't use the fixed width verion? That might cause it, honestly. But I was under the impression when I installed it that the fixed width version was the only version that didn't have those aful ligatures shit. I don't want that. **12:55:03** The reason I chose isoevka is that it's _execelent_ in all other forms. It's one of the few programming fonts I found that actually puts a line throught the 0 instead of a stupid ass dot. I vastly prefer the dash. Honestly, I'm basically looking for an open source consolas, since consolas is the font that I remember the most fondly while I was learning to program using Game Maker 7 back on my windows days. Actually, just ~~pirating~~ legally aquiring a consolas font package might be the best way to go... **13:52:07** The inconsolata fucked the st terminal even more. Now it looks like I'm using a `t e r m i n a l` with c r a z y s p a c i n g. It's awful. From what I can tell this is a problem with inconsolata. Ugh **13:52:33** This is why you don't try to change your setup, even if it's a little annoying. Because it reveals the fragility of every little piece of software you rely on. **13:55:02** j o r n a l **13:55:42** And of course it works on xfce4-terminal without any trouble **14:06:38** Actually, iosevka has an enormous amount of custiomization options, including a "consolas-like" option. That... Might be something to try out. But looking at their github they're in a beta testing phase for a large major version release, and I don't want to have to lock myself into that... **14:07:25** But it wouldn't hurt to try. **14:15:59** So the difference between iosevka normal and iosevka consolas is that the consolas version has a differen't looking `g`, has a lower underscore `_` and has a one `1` with a line under it. Huh. **14:16:49** Oh, and the asterik on the consolas version is bolder **14:17:42** Honestly, I kind of prefer the look of the regular iosevka. The underscore not going to the very bottom of the glyph block is really nice. **14:25:49** This has been "stick with what tools you know for fucks sake" episode 204. I'm your host, Tim. **16:00:26** So I asked a friend what text editor I should try next, since I'm researching editors for the inevitable day that I make my own, and he chose `kakoune`. yayyyyyy. I get I get to try it out, huh? **16:00:35** This is going to be a pain in the ass. **16:01:11** A pain in the ass in the sense that vi and vim stuff are burned into my hands, and adjusting is going to take a bit of annoyance **16:09:29** Why isn't there an option to wrap lines on the screen? What a fucking joke of a program. **16:12:51** Found something like `:addhl global wrap` but of course I get an undebugable error saying "no parent in path" or some useless shit. **16:14:28** OOOOO of course! I needed to put a slash at the end of `window/`. How could I be so foolish **16:16:39** I'm being unfair. vim and vi are just as confusing and stupid when you start them as well. Just... My god man. **16:19:07** I have a 1.2 MiB file and it took `kak` almost 3 _seconds_ to load while the file was in cache. That's pretty crazy. (But it _is_ a 1.2 MiB file, which is pretty weird) **16:43:44** Okay. So kakoune has this really annoying popup thing that's _right_ under the cursor while you're typing. It tries to give you suggestions about what to write depending on the words and shit that are in the file you're editing. That would be nice, except I can't find a way to turn it off. Not for lack of trying, mind you. Fucking hell. The _default_ should be no annoying popus that change with every single word I write! How is that not obvious? Do you really type so slowly that the constant changing box under your cursor is actually useful? What? **16:49:36** Rage growing. I can't connect to their shitty IRC server to get answers either. What the fuck. **16:58:57** how could you possibly be so clueless with your design and documentation that you can't even tell me how to disable something? I thought one of your "design goals" was discoverability? Fuck it. I'll live with the annoying pop up for now and try to actually learn how to use the editor, maybe it'll give me some fucking clues. Fuck **17:02:13** And before you're all like "bah you didn't even try" _fuck off_. I looked at the _source code_ to see what option stopped it, and couldn't find anything useful (mostly because I don't know how to read C++). I looked at every instence of the word "complete" and "suggest" in their insipid "documentation" and tabbed through every one of their awful options when tou press `:`. I didn't read all the tooltips, mind you, but I _shouldn't have to when I've already gone through so much effort_. ONE FILE with easily searchable keywords. ONE. And I could have grep'd for it in an instant and been DONE. Unless, somehow, you've decided that this "feature" isn't able to be disabled? If that's the case than I think this little excursion into kakoune is over. **17:08:28** That was fast. I'm probably just a grumpy guy that doesn't want to change, but my god that experience was horrible. Sorry kakoune team, but you need to figure out your documentation or something before I dare touch your bullshit editor again. **17:08:52** Not that the kakoune team owes me anything anyways. I'm just being intitled. **17:29:58** Alright. Trying out neovim instead. I used to use regualr vim before switching to `nvi` since vim was laggy for some reason, but nvi is also really awful in a lot of unique ways. With some testing I realized that neovim probablby isn't laggy, and since I can customize it to disable syntag highlighting and all that shit, it'll work the best out of the three options I think. **17:32:20** Editing mutiple files without having to save them... oh how I missed you. **19:29:28** I just ran `fortune`: _"You will remember something that you should not have forgotten."_ Ominous. With that, it's time for bed. Thanks one and all for listening to my rants ## 2020-11-19 **03:26:30** And jepordize the integrity of the hull. **03:53:19** I had a dream about racing Obama's ninja school class in an obsticle course full of lava and a cave of mysterious crystals. **06:15:04** I decided to change the fixed-width ints in fj from `i32` to `s32` since it's more consistant with the unsigned `u32` things. So `s8` would be a signed 8 bit int while `u8` would be unisgned 8 bit. ## 2020-11-20 **07:03:02** You can tell by the way I use my walk I'm a walking walk, no time to walk. ## 2020-11-21 **04:40:43** Chemisty is in trouble; there's a mole in our ranks! **09:23:07** In a frightening turn of events, suddenly ikna is making a lot of progress. The basic fundemental changes have been made in the most important bit -- the log file -- and now I can copy over a lot of old code from the older version. **10:18:26** Sometimes I think I'm a pretty smart guy. Other times I send the wrong string to a function and spend the next 30 minutes debugging the resulting segmentation fault. **17:20:54** I don't have much to say. I'm just working on my various stuffs. A very large very secret project, and ikna/fj. I'm enjoying my vacation! :D **19:01:37** goodnight ## 2020-11-22 **06:00:10** I have a button in my room that say's "POLICE SIREN" on it. I press it and it makes a police siren sound. Thank you for coming to my TED Talk **13:13:58** I wonder if, some day, my .jornal file will become so large that it takes more than a small small fraction of a second to process... How large would that even need to be? **13:26:50** So... I just crashed my computer trying to paste 2 billion lines of text into my jornal to test how it works. Had to do the ol' hold the power button say, I think we'll be okay with the jornal working even if it gets to hundreds of thousands of lines long. I was able to test it with a 100k line long file and it took aabt 0.011 seconds to process. Jornal doesn't really do anything that complicated, its craziest loop is putting the most recent date value into an array. **13:33:31** Red Line is a great movie. Damn. **13:55:26** You don't ever really see software with long names like in books. "The Card Review Application" VS "Anki", pick one. You can have books with one word names, but the issue is even crazier in software. **18:14:01** Today was kind of a lazy weekend in the middle of a long 2+ week vacation. This has been an amazing way to relax while I recover from the stress of work and whatnot. I'm still working on a large project, but it's one that is more relaxing than demanding. ## 2020-11-23 **03:57:58** In a world without paper ink is useless. **14:07:11** Today was "buy everything day". I bought new socks, new underwear, gas, oil, christmas presents, and twenty tons of bubble wrap. The bubble wrap is a lie. Sorry for lying. **18:44:31** Decided to slowly start converting all the links on the site to point to archive.org instead of their homes. This is a preventative measure against link rot, one that I hope will buy me a few years. I also have local backups of all the things I link to for the inevitable day that archive.org combusts. **18:45:36** I've got the [2020-09 newsletter](/n/2020-09.html) done so far. My plan in the future is to link to archive.org _by default_ when I add a link, so I won't have to do this tedious copy-paste thing through all my pages. **18:46:56** At least I condenced most of my links into the newsletter, instead of going crazy with them. My first idea to stop link rot was to just not have external links in the first place. That worked for a bit, but I realized that I wanted links, so I did the newsletter, but that was still going to rot, so now I'm trying to do this while making local backups of all the pages and code and videos and shit. **18:47:51** I should probably start using the Commonmark markup for reference links instead of having them inline. The long archive.org links are kind of ugly to read in plaintext. ## 2020-11-24 **05:33:46** "The political sandle-" -- "You mean scandle?" -- "I know what I said, Bob." **05:35:53** Math is so cool. You can just add or subtract any number you want and nobody can get angry at you about it. **13:34:13** Let's make an "add free" calculator with no `+` button on it but full of advertisements. It's not false advertising, it's just people being unattentive! **14:51:56** I've got basically the entire "move all external links to archive.org" thing done. I didn't move videos from youtube because those aren't backed up. But I've got a better feeling about link rot on the site now, at least :D **17:31:08** A guy named Norman who isn't normal. What a concept. **17:34:35** The number of open tabs on my browser is too damn high. **17:35:06** I should get the tabs to pay rent. Instead _I_ have to pay rent in the form of RAM. ## 2020-11-25 **05:08:44** The electrician was wired, and grounding techniques weren't working. **16:28:24** Insanity pig goes oink ## 2020-11-26 **13:41:05** Thanksgiving? More like pleasehelpme. **13:42:19** I finished my \[large secret project here\]. At least a large section of it. It only took 9 or so days to crank it out! Now my fingers hurt from typing so much. My keyboard got quite the workout. I guess thats the price to be payed when you work with text so much. **13:48:50** If you were to divide the mass of the earth by the size of YO MAMMA the resulting number would be less than one. ## 2020-11-27 **05:57:32** What if the J in Jungle is actually pronounced like the Y in Yes? Yungle. **06:09:40** yornal **06:18:26** So last month I got a weight set, and I've been doing squats and shit with it. Normal "I want to be healthier" bs. I was in a situation the other day where I had to do a normal squat without the added weight, and I was shocked at how easy it was. It's almost like exercise makes you stronger or something. I'm so fucking stupid sometimes. I was all like "Wow that was way easier than it normall is! Oh right." **08:47:15** Ladies and lads, today's show involves a programmer putting his code inside a loop it wasn't supposed to go into and spending 20 minutes debugging the resulting segmentation fault. What _will_ he think of next? **14:54:06** Watching people program is really satisfying, especially if they aren't terrible. Nice way to relax. **16:49:58** If the internet went out for everyone in the world, how long would it take people to realize that it wasn't just a problem with their router or something? Probably not too long if the phone lines and satellites are still in tact. ## 2020-11-28 **08:18:42** The day is already gone and I'm going with it. **08:18:55** What does that even mean? Wasn't even a joke. Wtf **08:19:48** I've been thinking about how dogs are so nice. They've been bread to be companions to people over a very long time. It's a good example of the power of genetic engineering. **10:23:11** If I had more time I would have written a shorter letter -- nice quote where I'm not sure where it came from **14:57:12** none pizza left beef is like my favorite thing **17:57:07** A Story Where Everyone Is Cursed To Write Every Word Starting With A Capital Letter ## 2020-11-29 **11:28:43** It's high noon and I just realized I haven't written anything in my jornal. Uhh... Insert joke here **11:29:43** I've finished writing out the 2020-11 newsletter. It goes out tomorrow. Some interesting links in there, I think. The markdown formatting for reference links is really useful when you're dealing with the stupid long archive.org links. **11:32:07** That heart attack moment when you realize that your laptop's battery is at 20% **11:32:58** To extend the life of my laptop's battery, I try to keep it from overcharging as much as possible. One time I cought it when it was at 8%. **11:34:53** Most computer software can be compared to YO MAMMA: fat and bloated. **16:36:53** ayy lmao **18:06:10** My vacation ends today. Please mourn my loss, since I've gone too numb to mourn it myself. ## 2020-11-30 **03:20:39** Watcha gonna do with all that bumb, all that bumsegmentation fault **04:25:28** Ugh. I'm trying to find a good random number generator for fj.h and it's all so confusing. Fucking hell man. **04:34:12** `fj_rand_seed_damnit()` is offically my favorite thing. Call it unprofessional if you want, but fuck you I program what I want. **04:39:42** Okay okay. I'll call it `fj_rand_init()` or something instead. Jeez **05:18:16** Okay! I've got a random number generator based off PCG up and working. Probably not prefect (actually, I _know_ the way I'm seeding it isn't perfect), but it's good enough from me eyeballing it. **05:19:49** Really simple implementation. You simply calle `fj_rand_init()` with no arguments and then you can get a random 32 bit unsigned int with `fj_rand()` with no arguments. You only have to init the thing once, since it keeps a global state. There's also functions in there where you can make seperate RNGs if you need to, like if you're doing something with multiple threads. **05:21:33** Oh yeah. If you're wondering, all you have to do is something like `fj_rand() % 10` to generate a number between 0 and 9. Isn't the modulous amazing? **05:23:56** The generator only really starts to show preformance penalty once you're doing about a million generations at once. ## 2020-12-01 **03:24:03** Me: "Wow I'm gonna get so much done when I get home!" Migraine: "Allow me to introduce myself." **03:24:33** The moral of the story: Don't be unlucky. **03:24:58** Although I'm sure that migraine was caused by me going back to work after the vacation. Legit made me sick with stress. **03:25:07** :D Isn't modern life wonderful? **03:25:42** "You're so privlaged! You have a stable job!" Yeah thanks. **04:08:09** Oh yeah. Happy December you mad lads. **16:53:12** Just got my new "Darn Tough" socks in the mail today, which were supposed to be an early christmas present to myself. I sort of hate how they feel right now (they remind me of the texture of "liniticular pictures" which is my #1 least favorite texture) but that might just be because they're new. I'll try them for a while longer, or I'll give them to someone else for chirstmas. These things were pretty fuckin expensive; like 20$ per sock. I got three pairs. **16:54:47** Also they're kinda tight? They might just be "well fitted" to be honest and I've been using wrongly sized socks for the last few years, but... Well, give it a try. They're worth an extended test, for sure. **16:56:34** I got them because I'm slowly trying to replace the important stuff in my life -- stuff I use enought to cause it to break -- with higher quality versions that I won't have to replace for a while. Like getting a better water bottle made of stainless steel or IEM earbuds. My socks have been wearing thin for the last year or more, and it was time to replace them with something nicer. The verdict is still out on whether they're actually nicer or not. **17:33:06** Having worn the socks for... about 30 minutes, I now love how they feel. It was just being unused to them. The padding on the bottom is actually really nice, and they feel pretty decent in shoes too. Cool. ## 2020-12-02 **03:44:34** Fart joke **06:58:07** I'm tearing my hear out trying to find this awful bug. Trying to stop ikna from picking the same card twice in a row, and now for some reason it'll just randomly pick a bogus card, or no card at all! Ughhhhhh **17:58:52** `wc2` in tutils is coming along nicely. It is basically like `wc` except it reports other interesting facts like the afterage length of a line or the longest line. Fun. Just finished up getting it to take a list of files as arguments and count the totals of the files. **19:02:43** It's stupid that the standard C library doesn't have a way to check if a file is a directory or not. Or a way to make directories. Fukin' stupid. Oh well, that's why I'm making fj.h, so that I can have a standard way for _me_ to do this stuff that I can port to another system when I need to. Also, did you know that ftell() returns a `long` and not something unsigned? Yeah. Weird, right? I hate the standard library. ## 2020-12-03 **05:30:09** Jokes on you this time **18:04:08** Playing some super mario world for nostalgia's sake. I have a huge smile on my face. I was going to say that I'm surprised my shitty laptop can run an SNES emulator, but I reminded myself I was running SMW rom hacks on my 2010 laptop back in the day. I had to configure some stupid ass retroarch thing to get it working, but whatever. This game is really nice. Maybe I'll play some SMW rom hacks when I beat this one. That might be a good way to relax at the end of the day. **18:22:46** For context: When I was younger I was pretty involved in Super Mario World ROM hacking (using stuff like Lunar Magic). I was really into the glitches and difficult shit you could do with SMW, so I'm intimently familar with this game's engine. Playing it again is crazy nostalgic for me. The reason I want to try some ROM hacks is because I want to experience some of the things I didn't when I was a kid, since I mostly tinkered with the engine and made unfinished levels and watched videos; I hardly ever actually _played_ other peopel's hacks. **18:31:31** Get fucked Morton Koopa **18:51:06** Okay. So the rom hack I tried lagged on my emulator. Ugh. Maybe I can try snes9x? I remember that working well on older (shitty) hardware... How could people make good emulators so long ago, but now I can't run them on a system that's at least twice as powerful? Fucking stupid, that's why. **18:54:25** ...And snes9x preforms perfectly. Of course. Proprietary software for the win! ## 2020-12-04 **03:43:30** Programming is the act of hating everything until something works. **05:28:37** `-bash: fuck: command not found` **05:29:34** Actually, I'm pretty sure there's a program called "the fuck" that's just `fuck` on the command line **08:01:41** An snes/nes emulator called "pnes" **14:39:06** Coming home from work early is a great feeling. Almost as good as not going in the first place. Time for some Super Mario World nostalgia. **15:00:07** Lemmy got fukin rekt. **15:03:31** I really just got a game over in SMW. I should be ashamed. **15:11:22** Lemmy down for the count. **18:51:23** Storming Roy's castle while listening to "Not Roy" by DemonTomatoDave. This is peak 2010 Tim right here. ## 2020-12-05 **05:55:57** Happy weekend **06:00:40** Sometimes, when nobody is watching, I do a single jumping jack just to feel cool. **08:39:09** I don't know why some parts of SMW are lagging so bad. Can my emulator really not keep up with it, even though my CPU is plenty powerful enough to run it according to the official required specs? Fuck software **08:56:43** In other news: my new socks haven't burst into flames yet, which is a good sign for their longivity. **08:58:09** I've started on the [FiO](/w/fio.html) part of the wiki this morning. I can already tell it's going to be one of the largest pages on the site; I have _so much_ to say on the topic. This is something that I've wanted to write for a while, but never got the courage to do. I've finally said fuck it and started. It's my website, I'll do what I want. **16:40:01** I'm debating with myself and going back and forth. When programming I almost always use unsigned ints. But now that I've been exposed to more programming, I'm wondering if I should actually be using signed ints instead. There's a lot of arguments for both sides of the table, and also the argument that most of my stuff is made with uints in mind. Would the price of moving be worth it? The biggest issue I have with uints is the problem of subtracting 1 from 0 and getting a crazy large 4 billion number. It's a problem because it's sometimes hard or impossible to tests for a bad input easily, like when passing an argument to a function you can't always test to see if someone put in an erronious -1 that will cause the function to fail silently. **16:43:38** I'm also not sure if I want to focus more on using fixed width types (like u32 or s64) or the built in types that might be different sizes (like int or long). It seems to make sense that you'd want to be as unambiguous as possible with fixed width types, but that might not actually be forward compatable once you start moving to different kinds of systems in the far future. People using "int" back in 1990 probably expected it to be 16 bits large, but now that it's 32 (and sometimes 64!) on some systems is either a nasty surprise, or totally irrelevent. If I'm coding for the future, than setting fixed widths might convey my intent better than the regular types. But the regular types might be able to survive a nasty change better, since they're more flexable. **16:45:26** With the signed/unsigned thing, there's also the issue that signed over/underflow is undefined behavior in C. This isn't always an issue, and I can use unsigned for things that require overflow (like random number generators), but it's still a wrinkle. In fact, this is mostly the reason that I started using unisgned everywhere. **16:46:02** The question is how much will I regret switching to signed versus how much I will regret staying with unisgned. **16:46:21** I don't know. **16:48:23** There's also a part of me that just wants to use "int" for everything and stop thinking about it. Except for things that specifically _need_ fixed widths. There's a certain appeal to that, except that I'll have to, at least implicitly, rely on the idea that ints are usually 32 bits large, which kind of ruins the effect... **16:50:22** The thing is that I'm a solo programmer for the most part. These dicissions only affect me and the libraries and things I write for myself. If I was working on some team or contributing to an open source project, I would just adopt the conventions of the code around me. **16:52:21** "Just try it both! You can write a program in signed ints and one in unsigned ints and compare the experience!" That's a great idea, except that the utility library I'm working on, fj.h, is something that I intend to use long term for a lot of things, and I would rather keep its versions consitant between projects if I can. If I have one verion with unisgned stuff and another with signed, than that's just going to generate confusion. But, also, I don't know how else to test this... **16:54:42** A lot of programmers I respect default to signed ints unless nessacary. There's a lot of strange issues with comparing signed ints to unisigned, for one. And another I think most people consider signed to be "normal" since we _expect_ 0 - 1 to equal -1 and not 4.3 billion. That's why I've started to worry that my decision to go with unisgned ints most of the time might of actually been bad. I'm not so sure I can be confident in that decision now. **16:58:34** But this is nearly entierly a "programmer" problem and not an "end user" problem. Most of the time the user of the software won't give a shit what sign I use in my ints. Except in really specific cases where someone is inputting a number that I represent with uints, but that case is something I already account for and I give it the appropriate amount of paranoia that all user input usually gets. **17:01:09** And, sometimes, I just like uints better? They feel more... explicit to me. If that makes any sense. **17:02:11** With function arguments, if I take a 32bit unsigned int, but I want to check and make sure that there's no negative numbers given to the argument, I can represent the argument as a signed 64 bit int and do the check that way. Then... Type cast it into unsigned if its good? I guess? **17:14:16** Hmm. Imagine I'm using something as an iterator index. It feels strange to me to use a signed int by default just because I use signed ints everywhere (and due to the weird comparison rules between signed ints and unsigned, I basically have to choose one or the other, especially for comparisons). That's taking the amount of space that variable can represent and dividing it by half, which feels wasteful to me. It might be worth it, though, because of the other benefits of signed vars... Hmm... **17:23:13** Okay. I think I've come to a decision. I'll stick with unsigned ints with the intent of being more careful and educated about the pitfalls that might occur. Thanks for coming to my crisis of fate. ## 2020-12-06 **07:41:08** "Nay" said the horse **16:15:18** Hating myself because I haven't gone out to get my car's check engine light checked out this weekend even though I intended to. Not really something to hate yourself over, but that's the way my brain works. The combination of yesterday being too distracting, today me being in a generally bad mood, and an overarching hate of car things have led me to procrastinate this even harder, making a compounding effect of self-loathing. Bleh. **16:28:34** Seriously. YouTube is like poison to me. Gotta stay clean from that shit man **16:30:45** Part of the reason I got so "distracted" (as I put it) this weekend is because I watched an inordanate amount of youtube from a letsplayer that I liked back when I was younger. I have a long history of being addicted to youtube, and so I limit my exposure to it as much as I can, but I slipped this weekend. I'm not blaming someone else for my problem, I'm simply noticing that I've regressed for a couple days. Youtube is not the whole problem with this weekend, but it was part of it. **18:47:10** Experimenting with a rubricated design to the colors on the site. I think it looks nice, even though the links kind of look like they've been deleted because they're red. ## 2020-12-07 **06:24:29** Clouds? More like cotton candy. I'll be here all week. **17:33:09** Open source tts software _sucks ass_. Like, _wow_. ## 2020-12-08 **04:04:18** I do everything I want! Why do I feel like I do nothing? -White Marshmallow (from Marshmallow People by filmcow) **17:08:00** I've been signed up for cryonics for almost 2 years now. Wow. ## 2020-12-09 **17:31:56** I'm _tired_. **17:33:21** What I mean is: I got new tires for my car. My old tires, as I was told, were thin. When they looked in one of them a rock or sensor was ratteling around in it and tore it up from the inside out. So now I have new tires. They were expensive. Fuck cars. And not in the sexy way either. ## 2020-12-10 **06:33:19** I'm really enjoying working on the FiO wiki page. Its scope is increasing at a rapid rate, and I think I might have to push it out to different pages some day, but it's also really satisfying to finally get these thoughts into a concrete form. **17:34:07** Doing the math, if I write 300k words a year until my expected death (at 80 years old) I'll have written just over 17 million words by the end of my life. That... is an interesting thing to think about. Really drive home the point that there's a finite amount of things I can do with my life, unless I find some solution to the immortality problem. ## 2020-12-11 **04:39:21** Long walks in in the moonlight of really early morning are like a drug. I need to go on more walks. **07:29:32** Got a lot of writing and research done today! I always feel better on days I get a lot of stuff done. It's actually really weird how much of my mood is determined by how proud I am of the work I've done in the morning. Maybe I should write a blog post about it? ## 2020-12-12 **11:50:24** Oh yeah! I've got a jornal. This morning was weird. I go to bed at around 7:30 PM most days, since I like to wake up extremely early (like 3:00 AM early). So last night I wake up and look at my clock and see that it's saying it's 11:00. I hear people walking around in my house, which basically confirms to my deeply-tired brain that I had somehow slept 15 hours straight and was still tired. So I forced myself to get ready for the day, because I wasn't going to have an empty day just because I was exausted. And then little problems started adding up: I looked outside my room and nobody was walking around, my computer said that it was Friday, and generally things felt kind of _strange_. That's because I had woken up at 11 _PM_ the same day I went to sleep, and since I was so delirious at this turn of events, I couldn't figure it out before it was beaten over my head. **15:09:48** Imagine all the possible minds that can exist in the universe; not just the kind of minds that are human-like, or even carbom based. Now imagine all the possible things that these minds can care about -- their "values". And now realize how crazy it is that you care about the specific things you care about. The use of values are what humans make of them, there's no intrinsic reason for one value over another, since the possibility space is so large to begin with. Go forth into the night and do what you love. **17:01:57** Another great quote from `fortune`: Don't let your mind wander -- it's too little to be let out alone. **17:02:45** Chicken noodle soup is the lifeblood **17:16:59** Honestly, it's mostly the broth that's the best part. ## 2020-12-13 **14:27:33** My investments are going well :D Index funds are the fundiess ## 2020-12-14 **05:35:12** Last night I watched a movie with some friends online. It was really fun. ## 2020-12-15 **05:12:34** One of my favorite emoji combinations is having an alien head standing on a single leg. It looks so stupid, but it's so funny ## 2020-12-16 **04:09:50** I've been trying to think of a good tagline for the fio wiki page. The working title was "Friendship is Optimal: Just another day in paradise" but I didn't like that once, since it didn't have enough punch. Last night I came up with "Friendship is Optimal: Satisfaction guaranteed" which sounds way better. **04:19:49** I had a dream last night where I was in a competition with a giant chicken. I think I won, and was rewarded with a strange ticket machine that was able to send me back in time. The giant chicken sent me to Chuck E Cheese where there was some weird cult ritual thing happening where all the workers turned off the lights and stalked the remaining customers through the hallways. Luckly for me I seduced the worker that was following me and we immedetly had a weird bear-child child on the spot. It was at this time I decided to _nope_ the fuck out of that situation, on which I find the giant chicken directing me to a car and with a new mission. A totaltarian government is spying on its citizens 1984 style, and there's drones and shit that reinforce order. If I caused too much disruption purple drones would decend from the sky, which happened a couple times, but I escaped every time. Eventually I made it to a military bunker and stole one of their experimential full-body armor suits. My mission from the chicken was simple: kill them all. Using the full body armor suit I doused the entire bunker and all the people in it with gasoline and lit a match. I burst out of the bunker and defeated (read: slaughtered) everyone and everything in my path. The suit could also turn into a car, so I drove out of there by teathering the car to the back of a fast bus that pulled me along. At that point I woke up. **04:22:37** More wisdom from `fortune`: Your step will soil many countries. **04:24:07** God damn it's cold today **04:25:03** Really it's the wind that makes it so cold. I can go for long walks and shit in like 10 degree (F) weather, but as soon as the wind starts up it cuts through me like a professional chef's knife through a hotdog **04:32:07** It's that time of the year where I have some sick time still left at my job, and the times get reset at the beginning of the next year, so I just sort of leave when I get sick of being there and go home early. That's what I did yesterday and it was _glorious_. I wish we always had 6 hour work days. Well, I _really_ wish that we had universial basic income, but 6 hour work days would be a better start? 6 hour work days plus only working 3-4 days a week sounds like it would solve a lot of my issues with holding a "full time" job. **05:18:03** When talking about the consent that CelestAI needs in the FiO universe, it seems correct to quote the Geneva Conventions. I chose a punchy line: The taking of hostages is prohibited. **18:43:16** I've been wondering if my decision to have different "namespaces" for the timtimestim website was actually a good decision. Like having /w/ for the wiki, instead of just having it all in a single flat directory. I'm not really sure... I couldn't have a page like `https://www.timtimestim.com/jornal.html` and have that be this public jornal and also the landing page for the jornal software in general... But at the same time it doesn't really matter? I mean, I can do redirects to better urls if it ends up being something I don't like... But that's kind of dirty too. It's not that bad to have your things seperated via directory, to be honest. If I happent o privlage the /w/ directory more than others, than that's just the way my website works. What I'm really worried about is that the idea of having a single "slug" for the url is looking more and more appealing to me the more I use sites like gwern.net and qntm.org; but I'm also confident in my decision I made when doing the [major refactoring](/b/refactor.html) to have the namespaces, since that affords me a greater degree of freedom in some senses. I'm just envious of how good and awesome these sites are, and a part of me thinks that being more like them would make my own site better. That's not good reasoning for going through the insane effort needed to refactor the entire site again. In the absolute worst case I can just start using the flat directory and pretending that the old links are in the flat directory too. ## 2020-12-17 **04:36:39** Long walks are nice, but in the winter they're really cold and I have to more or less power walk through them **05:37:22** Sometimes you find a video with pure joy in it. Today's video is "cat planet" from raocow ## 2020-12-18 **05:22:44** I had a dream where my socks got a hole in them and I was very upset **07:31:37** I think the colors on my laptop's monitors are wrong... The desktop screenshot in the workflows page on the wiki looks different from what it looks like on my actual monitor. Checking it on my phone, all gruvbox themes look different when compared to my phone and my laptop, which means that either my phone or my laptop is wrong, and I'm more inclind to think it's the laptop. **07:31:42** I fucking hate computers. ## 2020-12-19 **09:12:03** Oh yea. Happy weekend! **10:36:10** Exercise feels nice. Ironically, the amount of energy I spend just make me feel more energized later. **10:37:44** It's really satisfying to see how my website is growing, too. It's starting to feel like a "real" website. I wonder what it will feel like with a decade of work put into it. Makes me excited to see where it goes. **10:38:25** Honestly? I'm in a pretty good mood right now. Exercise endorphins or something. Not to invalidate my good mood, of course, but more as a reminder that exercise == good feelings. ## 2020-12-20 **09:26:52** I forgot to mention that I fixed the rss feed shit the other day. [Here's](/b/feeds2.html) the link to that post talking about it. **09:33:05** I have just learned about [puppy ipsum](https://web.archive.org/web/20201220143201/https://www.loremipsums.nl/lorem-ipsum-origineel/puppy-ipsum/) which is perhaps the best thing ever. **12:43:29** Well, it's official. The fio page is now the longest page on the website, even surpassing this jornal. I find it interesting to think about the long term, though; the jornal will always eventually win out in the "longest page" contest, since other pages will eventually stop getting content added to them while the jornal can only grow in size. Over a long enough period, the jornal will win. **13:20:40** In the beginning God looked the other way and made YO MAMMA. **13:24:55** The whole community is worried about YO MAMMA; this is the third sink hole this week. **16:20:59** What would it be like if I refactored the site to have a flat directory structure? I know I talked about this in the jornal before, but now I'm actually kind of wanting to make it a flat structure. `https://www.timtimestim.com/cc0.html` might just be better. **16:23:00** The problem with the namespace structure is that I don't have a place just to dump things, since URLs are suppposed to be permanant. If I have a single video I want to put on my site, I don't have a good place to put it unless I make my own /v/ namespace just for that video... But with a flat directory I can add anything I want and make my own structure out of the chaos depending on what I need in the moment **17:42:39** The devil went down to Georgia and immedetly ran away because the drivers there are fucking crazy ## 2020-12-22 **06:02:19** You've head of Howl's Moving Castle, now get ready for Howl's Stationary Condo! **06:02:54** Brought to you by the makers of: My Really Loud Neighbor Totoro, Spirited Away to College With Unmanagable Debt, and Kiki's Delivery Service vs Amazon. ## 2020-12-24 **07:12:03** It's Christmas break time. That means I get a whole _four days_ of time off. Yay **07:35:48** I've gotta mess with the CSS of timtimestim some more to make the h3 sections more obiously a sub section. I've already some some of it, but I think I can change the color or something? Or put an underline under the higher level sections? Hmm....... ## 2020-12-25 **02:21:59** Happy jesus day you mad lads **14:53:18** Jesus, I'm finally at the point in the fio page where I'm actually talking about the real _meat_ of the issues and benefits of Equestria. Good thing it only needed 19k words of context to build up to... ha ha ha... ## 2020-12-26 **05:20:14** Got a weighted blanket for jesus day. I think I might be autistic or something, because I slept for 12 hours and I still feel like I'm floating. Is that normal with a weighted blanket? Help! **11:45:42** My dog slipped on the stairs. She's fine, but she's getting so old :( I don't want to have to say goodbye **12:23:19** You know how you can change the .html extension to .txt on this site to view anything in its plaintext markup? I wonder what it would be like to also have a .pdf extension on top of that, for people who want pdfs. The probelms with this are numerous: nobody cares about have pdfs of every page on a website, it would take 20 years to compile the site using normal html2pdf tools, and it would take up even more space on my web server. But it would also be cool, since it's yet another redundent way to display the same information on my site. Probably not going to do it tho. **12:27:28** So it wouldn't take as long as I thought it would to build, but pandoc continues to be awful and bugged out when trying to build the pdfs. And now all motivation to do anything with it has exploded. I still want to get into typography some day and try making cool pdfs, but they're probably not going to be made from markdown. Maybe roff or TeX or something similar. **12:27:35** So many things to do... **16:36:29** I wish I didn't have to die. There's so many things I want to do with my life, and simply not enough time to do even 10% of them to the degree that I want. Sometimes the unfairness really hits me. **16:46:54** I've already mentioned that I'm signed up for cryonics, which basically means getting my body and brain frozen when I medically die so the future can revive me when the tech is right, but I can't honestly put a super high probability on that actually working. I'm also doing a bunch of exercise and healthier eating and vitamins to try and extend my lifespan as long as possible. If I can stay alive and by some miricle a safe technolocial singularity comes along, I'll be alive to see it and possibly become immortal (or at least unaging) from it. But that's a very low chance as well. The world around me is fucked, and only a small fraction of people seem to actually care about their own lives anough to do anything significant in the ways of solving the death problem. I'm doing what I can, but my chances of living for longer than 80 years are crazy low. They're so low that I desperetly try to reassure myself when I get all depressed about it. But sometimes the meloncholy gets to be too much and I have to take a hard look at the fact that I'm probably not going to make it, even though my chances are better than the average person because of the precautions I've taken. I was simply born too early to really hope that the singularity will happen in my small small lifetime; GPT-3 is a good sign that progress is being made on the singularity, but everyone else seems to be dragging their feet on the obvious fact that the scaling hypothesis was right. And when someone gets the bright idea of dropping a paultry 100 million dollars on scaling a military AI, the entire human race gets extinct. The possible futures where I actually live to be older than 80 years of subjective lifetime is absurdly narrow, compared to all the possible futures where I just... dont. It's not fair. I don't want to live in a universe this unfair. Why can't I just not worry about death? Why do people around me go to funerals and cry when their dogs and parents die but turn around and totally accept their own deaths? We should be fighting this thing with everything we've got, but we don't. Hell, _I_ don't; I fight death is a lot more effor than the average person, but you don't see me despertly researching how to make a friendly AGI or how to stop biological aging or anything like that. I could do a lot more, but I feel the despair as sharply as anyone else does: We're _fucked_. When humanity finally solves the death problem, everyone alive right now probably won't even be explicitly remembered beyond the mass mourning of the losses of pre-immortal Earth. They're say "I feel so bad for all those people who didn't make it", but nobody will say, "I'm so sad that Tim from timtimtestim didn't make it." **16:48:27** The only reason I don't go insane when thinking like this is because I've given myself a much better chance. Not a great chance, not even a comforting chance, but a chance nontheless. I can fool myself into thinking that I'm going to make it, when in reality I'm beyond terrified at the thought of not existing for longer than 60 more years. **16:48:41** I hate this reality. I hate it so much. ## 2020-12-27 **06:27:04** Good morning everyone. Still feeling a bit angsty, but I'm more functional now. **11:53:38** I keep thinking about "knowledge management" systems like the zettelkasten and orgmode and all those other crazy things. When I was about 16 years old I used Workflowy religiously and that seemed to be useful, for example. This website is sort of turning into something like that. Where the jornal is a dumping ground. I'm wondering if I should set up the jornal so that I can reference specific entries. That might be cool. **11:55:50** This website is meant to be the sum of my life's work, so having rough drafts and shit on here is also important. Knowing what my thought process is on certain things is also important. I can put tags on the jornal like "@tag" and use `grep` to grep for the entries with those (or maybe even have a specific program meant to search for things in the jornal, so that it'll print the date as well as the time, since the date isn't printed on a line-by-line basis...) **11:56:19** I think the basic thing to do would be to make more notes in the jornal more often, so that I have a better record of what I've been doing. **11:56:48** Not that I read the jornal that often anyways, but if I want to remember what I was thinking about a certain project I can do a keyword search for it or something. **11:58:43** I've only been using this jornal for about 2 months and it's already over 15k words long. Huh **12:00:56** Really, jornal is one of the most unexpectedly useful programs I've made. Considering that it was created in an evening and is absurdly simply programming wise, I think it's been a slam dunk. I know that nobody else really uses it, but for personal use I'm pretty happy with it. I would have changed some things now that I've used it for a while. **12:02:41** My keyboard is satisfying to type on. Even after all these years. A loud clicky keyboard feels like "productivity" to me. **12:03:52** I guess the big question to ask would be: what would I expect to get out of a knowledge mamagement system like zettelkasten? What is it that I'm missing right now that I think it can provide me? Besides a fun distraction, of course. **12:07:23** It's not a thing that I need some place to collect links and bookmarks, since I already have that in spades with my newsletter. Remember that I back up all the links I link to on timtimestim locally, just in case. And if I see something on my site that I want to look for, I can easily search for the link on my hard drive. **12:08:39** I don't really need a place to put notes down quickly, since I have that with the jornal already. In fact, jornal is perhaps the most simplistic and tim-centered way of thinking about taking quick notes that you can possibly imagine. I can even make silly tags for greps if I really need to organize something beyond simple regex searches for keywords like "jornal" **12:10:17** A task manager? Eh... I never liked task managers. They always stress me out. I make todo lists quite often, since it's easy to forget some of the things I want to do with a project, but that's my limit before I start to feel overwhelmed. My style of making things is sparatic by design. I don't think I really need to be any _more_ organized than I am. **12:12:49** My wiki already takes care of crafting long term technical knowledge, the blog takes care of date-specific knowledge... **12:14:08** I guess I want to do it because I feel like I'm missing out on something? Like trying something out will ensure that I don't actually want to use it. Except I've already tried out things like task managers and zettelkasten note taking and they all failed to hold my interest long enough to become super useful. So I _already_ know the answer, and yet I still feel reluctant to accept it. **12:14:38** Is there something that I'm missing? Am I missing some obvious way to make timtimestim more useful to me, and my subconcious brain is tryingn to figure it out? **12:16:52** I've been reading about some task managers/note taking things, and `nb` is a 12967 line long _bash script_ that does a ton of shit. The entierty of ikna, my custom SRS program written in C, is only about 2k lines if you add all of it together, and that's in C. What the fucking fuck is this thing doing that takes that much bash? **12:25:57** Oh yea. And I'm totally okay with having my stuff on my site be in different subdirectories. I keep going back and forth on this, which means it probably isn't something that really matters that much. I always waffle about things that don't matter that much. **12:41:09** You can convert an html file to plaintext using `lynx -dump`! Sounds useful for making audiobooks out of web pages. Especially if I can find a regex that cleans it up enough **17:51:55** Poked around with Reaper (the digital audio workstation) with my musically inclined friend. I only know a little bit about how to make music, but it was fun. I even inspired him to crank out a little song because of my own inepitude at music production **19:30:25** My friend is talking about how horrible music software is and how it's convinced him that he should focus more on acustic preformances because it's so bad. I can't say I really blame him. ## 2020-12-28 **04:20:47** Well, christmas vacation is over. The US doesn't have nearly enough manditory vacation days ugh. I shoudl have this whole week off until new years, but instead I only get Jan 1st off. I hate work. There's not even any business in the sector I work in since everyone else is actually enjoying their fucking vacations. Full time employement will be one of those things that people of the far future look back on and cringe at; like how we cringe at dumping feces in the road in major cities. **04:36:32** Seriously. I'm not built to survive in a 40 hour per week environment with nothing interesting happening. My only salvation is listening to interesting things with my earbuds, and some people don't even have that! AAAAAAAAAAAAAAAAA **05:20:05** I just had chicken noodle soup for breakfast. Fuck you I can do what I want. It is cold this morning, so it actually was pretty nice. **05:20:30** The weighted blanket continues to be awesome. Less impressive than the first day, but still pretty intense. **05:28:32** Waking up the morning after a hard workout and doing that big stretch with your sore muscles is one of the most pure feelings of satisfaction you can achieve. **06:21:40** I need to start writing out the newsletter before the 30th. With great reluctance I'll hold off on writing the fio page and get that finished with the couple remaining days I've got left in the month/year. Last month of 2020, huh... **07:10:29** I got a lot of writing done this morning. I feel good about that, since I'm usually less productive on mondays. Write a lot for the december 2020 newsletter as well as a lot of stuff for the fio wiki page. I feel good about the progress I've made today :D ## 2020-12-29 **04:23:16** Nasty headache last night. It's crazy how much my headaches line up with stress. Eg. Going to work after holiday break **07:06:46** This morning was mostly aggergating and archiving links for the december newsletter. I'm going to see if I can work on it tonight as well, if I have the energy after work. I wrote some small essays about some of the things in there, but I don't think this newsletter is going to be as long as some of the other ones. Not really a big deal, considering the kind of work I've done otherwise on the fio thing. **07:07:01** Why does my right armpit sweat more than the left? The world may never know **07:07:44** I enjoy my mechanical keyboard. It's reliable. I like things that are reliable. Trust is a hard thing for me to do, but I can do it with this keyboard at least. **07:07:57** On this episode of: Tim talks about his keyboard **07:08:48** Honestly, it's only because it's the main interfact for my work on programming and writing. I wouldn't talk about it so often if it wasn't so obvious and important in my life. I don't talk about my car nearly as often, in comparison. **07:09:10** Also it sounds nice to type on, and I've had it for 6+ years, which contributes to this micro obesssion. **17:29:37** My internet isn't working for some reason. This is the second time in a week. It's not my router or anything like that, since my phone and other devices work... It has to be something to do with my laptop. But I haven't updated anything with the drivers on this machine! It's Debian fukin' Stable, for fucks sake. I remember something similar happening a while back, but the problem fixed itself. I have to do a full reboot to fix the thing (I tried resetting everything, even systemd) and it still didn't work. Doing a full reboot requires me closing my tmux stuff that I've accumulated, which is like the worst part of tmux. I need to get that plugin that saves tmux sessions up and running so I don't have to keep my laptop on for months on end. **18:28:09** I have silly dreams of making my own lightweight markup language like markdown. I don't totally like markdown, and having something made totally by me feels "nicer" somehow. Even if it's similar to markdown, there's things I want to try to do with it. **18:41:14** I mean, I already have weird ass extensions to commonmark already, with a ad-hoc cheaty template system. I'm trying to force markdown into a system that it doesn't fit; why not just make my own thing that does exactly what I want and expect it to? ## 2020-12-30 **02:43:08** I still like the idea of a custom markup language, even after sleeping on it, but Markdown is still pretty decent for most things. Especially with the simple extentions I have on it. And it's more common, meaning more people in the future will understand it. **02:44:19** I disagree with the people who say, "Just use HTML!" since HTML is way too complicated to parse in plaintext while reading. Markdown was made to be read in plaintext, which is really important for me since I want my writings to exist for as long as possible, and the best way to do that is have them be readable in plaintext. **02:44:51** I'm going to just keep using Markdown for the time being. It makes the most sense from where I'm standing. **03:53:30** I was a fool. I thought December ended on the 30th, but it's actually the 31st. Whomp whomp **05:21:55** I wish internet forums were still a popular thing. I know there's some out there that are still active, but I miss the asthetic. Everything is on reddit and other social media shit now :( **05:22:19** Even forum software is interesting. Especially the ones that have lasted for over a decade. **05:22:39** I wonder if you could tell a story using forum software. Like make a fake forum with fake users and all that jazz. Could be interesting. **05:25:25** I suppose other people would be nostalgic for image boards like 4chan the same way I'm nostalgic for the class "internet forum" style. **05:25:35** It just depends on what you grew up with. **05:26:21** I saw an image of 2006 youtube yesterday and almost cried because the nostalgia was so strong. I spent so much of my life looking at that UI. Why do we constatnly have to change UIs on the internet? I hate it :( **05:29:29** The asthetic of the pages made by stuff like Vbulletin and MyBB and all that kind of similar shit. Man... I wonder if I can edit my website to look like that asthetic, at least a little. I'll need a lot more images on the site, but still. I would _love_ to have that kind of thing as my website. **05:30:20** www.timtimestim.com is my own thing. If I put in the effort I could totally make it look like it came from 2007 internet for the rest of time. Just the thought of that makes me smile. **17:15:30** pizza **19:02:56** Tomorrmow morning: Make the toc and follow the checklist for the newsletter! ## 2020-12-31 **06:20:47** Jesus that was tedious. I've decided to make some utility scrips to help with making rss entries and the like, but it took a bit of setting up, since I don't already have base-level utility scripts. At least I don't have to do it again. but it took way longer than it really should have **06:21:06** Still, I'm happy that it's done. I've been looking to do something similar for months now **06:25:15** And just like that the december 2020 newsletter is done! :D **06:26:06** Strange to think that this will be the last day of my life to say that the year is 2020 and have that be true. I have this feeling every year, like I'm throwing away some irreplacable oppurtunity. **06:28:23** Also, error: I said I started this website in september but it was feb. For some reason my brain said "the second month of the year is sep" and didn't care that it was wrong **07:00:20** The problem with reading through Homestuck is that you gotta do it on a desktop computer to get the authentic experience. But most of the things I read on on my phone or in audiobook form on my earbuds. Also it's really long **07:01:01** I still want to experience homestuck at least once in my life. I don't actually know a lot of what happens in the story. By some miricalous feat I've kept myself blind to it all this time. **15:34:17** I just had the most insane issue. Apperently grep was seeing one of my file names as a binary thing. So I had to track it down. Really messed up the `c` script from tutils. **15:53:59** From homestuck "Sometimes you feel like you are trapped in this room. Stuck, if you will, in a sense which possibly borders on the titular." This thing is after my own heart **15:56:35** Oh shit homestuck has interactive things. Right **16:05:26** Homestuck has a link to a google images result, and a lot of the images have homestuck stuff in them. Cute **16:13:17** The default state of a house is to be dark **16:22:23** Okay. On homestuck-82 (that's the new numbering scheme I'm coming up with to talk about a specific page) I got _chills_ from the soft piano and the wind and the animation with the title. Knowing that this is the beginning of a long crazy adventure added to the effect. Also, the humor has been on point so far. I approve **16:45:18** homestuck-117 I can't fucking believe that we're going to be learning about actual data structures in this thing. Is this for real? Did an alternate reality version of myself write this shit? **16:50:03** homestuck-128 It's genius too. For people who can't easily reason about the abstract functions, they can instead imagine Egbert dodging cakes as they're launched across the room. This is how real computer science needs to be tought **16:57:11** homestuck-145 Wait wait. Is this happening for real of in a sort of game simulation? Nobody's freaking out the way they normally would, but this would is already a little quirky... **17:42:17** homestuck-228 yet more data structures. Also a new character: purple chick **17:48:45** homestuck-247 and thats the end of ACT 1, apperently. This is funny and original, and is after my own heart. Hell yea **17:58:51** homestuck-253 aww.... I wonder how much not having flash player is going to ruin things. I guess I can watch a video recording, but jeez that sucks. **18:08:09** God damn it. I tried to get this "ruffle" extension to work to emulate flash but it doesn't work either. Fuck **18:08:21** I want to get flash to work damn it! At least for this! **18:09:33** What kind of fucking shitty flash emulator can't emulate a flash from fucking 2009? I get that it's in beta, but is it really _this_ beta? **18:26:32** homestuck-253 HA HA HA HA!!!! DON'T UNDERESTIMATE A NERD WITH 10+ YEARS EXPERIENCE FORCING SOFTWARE TO WORK!! I had to use Pale Moon, download and symlink flashplayer to `/usr/lib/mozilla/plugins/libflashplayer.so`, and generally sacrifice my soul, but it _fukin works_! So I guess palemoon will be the browser I use to read this thing. The most insecure browser I can use... Jesus. I think I'll be okay as long as I don't try anything silly. Maybe. I _am_ running flash... God help me. **18:40:08** homestuck-253 Okay, yeah. The flash version of this page is way better. Also palemoon looks like an old browser, which adds to the 2009 effect. Such nostalgia with the laggy flash. Even now after all this time it chugs! \*Whistful sigh\* **18:55:32** homestuch-272 I love this gamefaq thing. Very nice touch **19:15:50** homestuck-319 Another new character (cool dude) and a new data structure to learn. Things are happening in this story. **19:35:33** homestuck-326 I have now just read through the entierty of Sweet Bro and Hella Jeff. I'm a changed man. **19:35:53** homestuck-326 Seriously. What the fuck was that. Why was there so much effort put into it? ????????????? **19:43:53** homestuck-348 This hash map's hash function is _horrible_. I love it **20:06:39** homestuck-400 yeah this thing needs to be experienced with flash **20:20:52** homestuck-431 okay... so some quest is starting I guess? And the things are real? I'm sort of confused, but I think that's the point **20:36:54** Sugar. That's what I need to stay up until new years **20:37:08** Candy it is! Candy and more homestuck! **20:44:20** This is the price of getting into the habit of going to bed at 7 fucking o' clock: new years feels like I'm 8 years old trying to stay up with the grown ups. **20:50:40** homestuck-481 Oh my god the pogo ride is the funniest shit I've ever seen. Either that or i'm loopy from the sugar. I love a running joke. **20:54:37** homestuck-489 And now he's carrying the pogo ride. Yes. In seriousness, this is not what I expected from this story; it's an interesting concept. **20:57:44** homestuck-500 DONT MOVE OR THE POGO GETS IT **21:23:56** homestuck-589 So the trick of Dave's modus is coming up with synonyms for the things he wants to fit. Huh **21:33:38** homestuck-635 pogo hammer. of course **21:58:19** homestuck-721 okay this WV guy is bona-fied crazy **22:11:28** homestuck-759 End of ACT 2. Damn. Damn okay, so the plot it thickening. Alright **22:20:54** homestuck-773 New character, Jade. Has a "memory" item system, which is actually one of those card guessing games like you'de see in the minigames in New Super Mario Bros for the DS. **22:22:19** homestuck-775 She did it! The running joke gets the payoff! She did the weird request at the beginning! Also, I think this will be the last major main character? It made a pretty big deal about there being four of them a while back. **23:33:07** homestuck-880 Jesus finally wrapped up John's rooftop battle **23:59:55** This is it. The end of the year. Goodbye, 2020... ## 2021-01-01 **00:00:31** ...And hello 2021. Doesn't really roll off the tongue (or keyboard) as well, does it? Ah well. **05:36:29** homestuck-967 And now john gets the array modus. Seems kinda boring, but he _did_ find it in the "boring room", so that makes sense. Maybe. Maybe the author just didn't like thinking about stacks and queues **05:39:00** homestuck-970 Wait, nevermind. I forgot John Egbert is an idiot. Just use the array thing without combining them! (Learning about how datastructures combine, this late into the game? okay man) **06:18:00** homestuck-1068 "Wrinklefucker". I love it when someone isn't afraid to swear in their fucking art if they want to. This wouldn't have happened if this was being posted on youtube/facebook/whatever in ~~2020~~ 2021. Whoops I'm ranting about owning your own website again. **06:21:44** homestuck-1072 look at him using an Iphone. Look at it an realize that this was kind of a new thing to be putting into artisstic works at the time. It's taken a while for smartphones to make their way into the subconcious of society enough for them to be normal in stuff. Homestuck breaking new ground. Either that or I'm overalayzing. **06:41:04** homestuck-1099 "throbbing beef truncheon" **07:07:13** homestuck-1152 Alright end of ACT 3! The plot thickens. This webcomic (if it can really be called that. Multimedia creative work? Hypertext story? Flash player fucker?) is _good_. **08:14:10** homestuck-1356 That intermission was... I guess it was unique? Wasn't exactly what I was hoping for, though. I mean, I was here to read homestuck, ya know? I guess it's being integrated into the plot, so I guess it's still important, but man these cliffhangers. **08:33:27** homestuck-1358 Okay. Laggy flash aside, that was kind of cool to have an interactive thing. I got lost though. Hope nothing there is too important... **09:37:08** homestuck-1459 God fucking damn it. Just get the green box. You don't need to string me along like an abusive ex! **11:02:17** homestuck-1556 AAAAAAHHH WHATS IN THE BOX **11:28:21** I wish I could use palemoon all the time, but it's too insecure. I don't want to get space AIDS from visiting a website I wasn't supposed to. **12:32:15** homestuck-1624 Things keep being added into the pot. I hope this isn't a "LOST" situation where nothing actually gets explained... **12:51:36** homestuck-1643 Yep! Confused. I think there's some weird time travel shit going down. Time travel. Oh man **12:52:23** homestuck-1643 Sudden jump in art quality tho **12:53:53** homestuck-1646 yep it's time travel. I'll be over here, going insane **12:56:17** homestuck-1651 "davesprite" **13:19:19** homestuck-1668 Oh cool the end of year one. Also I'm confused at waht's happening, but that's not a new feeling to me any more. I've become numb to the confusion. Molded by it. **13:22:12** homestuck-1668 So the thing in the green box (god help me if I ever actually learn what it is) is a powerful weapon? **14:53:01** homestuck-1674 Okay the 1 year review infodump. This explained a lot of things I missed, like how the trolls were actually supposed to be real players and the status of Rose's dream self shenanigans. A lot is still confusing, but I think I have a better hold on the plot now. Note to self: If you ever attempt something like this in the future, make it more understandable. **14:56:54** homestuck-1682 "playfully self-deprecating yet weirdly self-aggrandizing manner" is basically my entire aesthetic. Also meta humor. Did I come back from the future to write this shit or something? Is Andrew Hussie my spirit animal? What's going on. **16:06:07** homestuck-1739 Fear No Anvil get **16:22:17** homestuck-1813 I like how them getting new clothes is a visual way to show their growth **18:02:32** homestuck-1931 end of ACT 4. I have reuinited with my loving wife and daughter twice. _Twice_. **18:14:03** homestuck-1939 I'm getting alarminingly good at reading GC's horrible writing patterns. Brains are weird, man **18:19:51** homestuck-1940 day 413. Best looking animation so far. The amount of work put into this whole project is astounding, especially considering that I'm not even 1/4 of the way through, if you're counting by page count (and some pages take way longer than others). **18:24:21** homestuck-1940 Also the music is really good. **18:25:51** homestuck-1941 Oh so that's the real end of ACT 4. Okay. **18:28:53** homestuck-1946 So is Jade like legit dead or is it her dream body or her robot or...? **18:31:47** homestuck-1953 Well played. Way to make getting the green box a phyrric victory. ## 2021-01-02 **05:39:12** mornin' **05:39:27** homestuck-1972 holy shit they fucking stuffed her **06:11:28** homestuck-1988 End of ACT 5 with a big ol' summary. Clearned some things up, but I think I followed along better than I did from the last summary. **06:36:06** homestuck-2004 Alright, we're getting into the troll's lives now. "Hivebent" **07:19:33** homestuck-2038 Okay... We've got a jump to a much later section with a password field telling me to go back. Oh god are we going to start doing non-linear jumping? Please help me. **08:02:23** homestuck-2049 I'm stopping my binge for right now. I'm got a hunger to do some actual productivew work, and in my experience ignoring that hunger is a bad move. Maybe I'll only last an hour, maybe it'll be longer. But I'm taking a break either way. **12:13:22** You know, I'm pretty lucky to be writing during a time in history where literacy is so common. **17:29:21** :33 > homestuck-2055 \* Tim mightily laughes at the mighty roleplay bullshit going on. \* **18:06:48** homestuck-2091 Oh my god he uses `vii` instead of `vi`. Also, unix terminal. Also what? ## 2021-01-03 **05:46:17** sunday rolls around and reminds me that work comes back tomorrow. It makes me want to cry **05:46:39** homestuck-2145 to many troll characters. How the hell am I supposed to remember all of them? **06:02:19** homestuck-2164 oh look Tavros is allergic to cats like I am. Thats relatable. **07:46:31** homestuck-2178 taking another break to do some writing and stuff. Having a short attention span is normally seen as a deficit, but if it pushes you to be productive when there's a 8000 page long web comic to read right in front of you, maybe it isn't so bad? **07:47:11** Also: That wasn't a hot take. It was the opposite of a hot take. A sour take. A shiitake, if you will. **08:46:06** God damn it I hate gimp. Also my laptop screen doesn't have well calibrated colors, so everything looks brighter than it really should (either that or my phone has colors that are too dark instead). **11:09:50** I **11:10:36** Whoops. I'm trying to install debian on my dorment desktop computer, and it's saying that it's going to take 3+ hours to download all the shit. What the fucking fuck. My internet isn't that bad... **11:19:41** God I fucking hate computers **13:07:03** I've given up on trying to get the damn thing to work. Something about by motherboard or the phase of the moon is making it cranky, and I simply don't have the energy to care. New rule: I'm only going to use one personal computer-esque system at a time, so that I don't have to deal with the fucking process of installing a linux operating system that often. Fuck everything about computers. Seriously. Fuck everything. ## 2021-01-04 **05:31:04** Damn it, I slept in until 5. Why is that happening so often? Ugh. **07:08:28** I forgot to mention that I edited the style of the website yesterday. I'm going for that vintage web1.0/2007 style. Even with it being a bit of a mess right now, I'm already loving how it looks. I set the font to be `serif` instead of `sans-serif` since that's the font I remember being more common during that time. I tried to get a border image going, but couldn't figure ouit the syntax, so I went with the normal-for-the-time blue border instead. I even got a crinkled paper background for the content, which helps sell the effect. The logo also looks pretty nice, if you're judging it from that style of web page. **07:09:16** The website is finally, after almost a year, looking like _my_ website, instead of just _a_ website. **21:01:37** I had a massive headache so I had to leave work early. I took a long nap, so now I'm staying up later because there's no way I'm going to make it to sleep with how rested I feel right now. I'm going to have to make up the time I'm missing sometime later in the week, which means staying an hour later like 3 days. Everything fucking sucks today, but I at least got some cool website design done. The bullet point now has a blue ball graphic that looks like it was rendered as badly as possible on purpose (I was inspired by the "object" graphic on old gamemaker). ## 2021-01-05 **07:24:09** Got some writing done this morning, which always feels good. This fio thing seems like it's going to go on forever. Just more and more to say with every section. **17:56:22** Doing some morbid calculations: According to the average for my age and sex, I'll be dead at about april 17 2073. Lovely. **18:59:23** I made a thing for tutils to calculate the time from now to a specific date. Yay! I made it so I can count how many days I have left to live. Oh no! **19:10:44** And now I've got the countdown in my statusbar. 19094 days, 9 hours, 49 mins, and 20 something seconds left. Huh. ## 2021-01-06 **02:56:03** Oooookay. just... Oh my god. What. GPT-3 images, and they're actually really interesting. If I didn't know better I would say that there was some real creativity behind some of these images... **02:57:59** I think it's about time I started given more credence to the idea of being entertained by transformer models. Maybe I should subscribe to AI-dungeon for a month and see what's going on there **02:58:37** Previously I ignored AI-dungeon because I didn't think it could hold my interest that much, but its payed model is based off GPT-3, so maybe I can get something going there. **03:00:56** Gotta say, though. This is pretty scary to see happen in real life. I wouldn't have predicted functionality like this for at least a couple years. It's always "a couple years off", and now that it's a thing that exists I'm spooked. **03:22:21** oh jeez **03:22:33** Trying out AI-dungeon dragon model: **03:23:12** "> You grow amazing beard" "You grow a beard that would make the manliest of men weep at your majestic facial hair. You live off your beard for the next year and survive off the kindness of others." (After I became immedetly homeless) **03:29:04** So my first GPT-3 adventure on AI-dungeon: I became homeless, grew an amazing beard, got admeration from all for my amazing beard, lived to be old with my amazing beard, until one day I dunked my amazing beard into a vat of oil I kept under the bed and lit it on fire to stop the voices in my head. Is this real life. **03:31:03** I'll try one of their pre-made things. Probably the fantasy one. **03:33:11** ...I threw my staff down in anger, got turned into a manatee, and died within the first two prompts. ## 2021-01-07 **05:31:51** Slightly updated the font on my terminal to be the "slab" version, which gives it some serifs. My new favorite thing recently is serif fonts, so I guess that's what's happening right now. Serifs just look nicer, honestly. **06:57:47** I gotta say, having that death clock at the top of my screen is a little strange. It's only about 93 days from being under 19000 days left... I'll probably get used to it with time, but for right now it's putting some things in perspective. ## 2021-01-08 **01:44:22** I mentioned yesterday that I got the serif font setup for my terminal emulator, right? Well, I also got the same fot working on the i3bar and i3 windows as well. I realized that I've been using deja-vu sans mono on the bar and windows, and that's a font that I don't actually like that much. Took a bit to get used to the new font, but now it's good. I also changed the colors in my terminal emulator so that the background is pure black and the foreground is pure white; I wanted to try it out after a friend recommended it to me, and I think I like it so far. **01:45:01** Oh yeah, and I woke up at like 12 AM today. Can't go back to sleep, so this is my life now. **01:47:49** Added a little :D face to my i3status command because it's the little things in life that make me smile. It almost looks like it's smiling for the death clock to the right of it, but I swear that there's a divider between the two things! **01:53:55** Whoops. Had the wrong color changed in my config. Overrode the red color instead of the foreground color. **02:01:08** Okay yeah, now that I fixed the fg color it's suddenly a lot brighter. **02:57:09** Damn it. Moving over my dotfiles to tutils right now, and I just accidently overwrote nearly 8 months of bash history with a single stupid mistake. Fuck. **02:57:21** That history was _useful_ too. God damn it. **02:57:45** And it had it backed up in a git file, but I hadn't updated that repo for months. Shit. **03:44:10** Ha! I saved the bash_history! I just needed to run `history -w` while in an old tmux instance that still had the history in memory :D **06:06:25** The original tutils tar.gz file was too large because it had binaries in it. So I set up qrelease to take into account the .gitignore file, which was way easier than you might have thought. There's an option in gnu tar to use an ignore file, just like gitignore. **06:33:07** Okay, the new tutils is up! **06:33:16** With spelling errors in the readmes... ## 2021-01-09 **04:47:23** I tried out the lynx browser, but I still can't get myself to care enough. I'll have to be switching between both firefox and lynx on a regular basis myself, so I might as well just use firefox. And also, lynx sucks ass. There's some crazy weird design decisions in there, like putting the config file into a place it doesn't belong. Why **06:40:01** Wrote a nice prompt about a genie being overly specific [here](/f/wish.html). It was nice. It's been too long since I wrote fiction, focusing on the fio thing so hard for the last month or so. **07:31:50** I guess this week is turning into "configure everything" week. I've done stuff with termux on my phone, for the website, for my statusline, and now I'm editing the colors on my i3 config. I'm not sure if this is a bad thing or not... I don't want to waste too much time with it, but at the same time changing everything into a black and white theme is kind of fun. **07:32:49** As long as it doesn't turn into a habit or anything like that, I think I can tolerate it for right now. **07:48:09** Okay. I hated that new theme I tried to make. I guess I'm sticking with the defaults? Cool. **13:15:16** That writing prompt I wrote has gotten three replies! One of them was telling me that I messed up in one of my descriptions (I did), and the other two were praise. It's got like, 80 upvotes now. I think it's my most upvoted story so far on the r/writingprompts subreddit. :) **15:43:48** Okay. I went back to the black and white theme I was trying out. I want to use something a little unique to myself, and this one seems to be kind of cool. It might be a bit visually overwhelming with the contrast and stuff, but I'll give it a fair try. **15:44:09** Also, the genie post got to 100 upvotes :D ## 2021-01-10 **05:50:32** I did my ikna flash cards for the first time since mid november. I don't even remember why I stopped, to be honest **07:57:35** Using "why me" as a placeholder string when doing printf debugging **08:04:44** Ha ha! It works! I just had a stupid copy-paste error in an if statement! **08:05:54** If you're curious, I'm making progress on ikna again. I just fixed the bug that made me go "ugh" so hard that I moved to working on other things for 2 months. It was just a silly little thing with an if statement that never proc'd under a different condition. **08:23:23** Actually, more like one month. Not two **08:44:09** You know, this black and white i3 theme is working pretty well now that I've used it for a bit. It helps that I set firefox to the dark theme. I think I like it. **10:24:40** I'm doing my monthly money review, since I'm trying to do the early retirement thing where I invest in index funds and shit. And I'm still feeling a bit... weird about having my money just sit somewhere where I'm nothing _nothing_, and yet I'm getting more of it. I don't know. It feels like a scam? Like I should be paranoid about it? Maybe I'm still not used to the idea. **15:10:17** Awesome. Got the genie story coming at'cha hot. This thing got like 150 upvotes, with is like 3 times my previous highest. A lot of people seemed to like this one, and I liked writing it. **15:15:40** Like, 150 upvotes is like dunbar's number of people who pressed the button to say, "You did good!" **15:39:24** homestuck-2189 oooo that's pretty. The blues and purples. Yes. Also reading some more homestuck, since it's the end of the weekend and you can't tell me what to do. **15:44:37** homestuck-2193 Wow dead, really? Like a ghost? Huh **15:51:42** homestuck-2202 a litle bit of fun with highlighting text to read it since it's white. I have a weird habit of highlighting the text I'm reading on web pages anyways, so this is my time to shine. **16:04:37** homestuck-2219 Oh yes the strife portfolio. I didn't forget, but it looks like the author did ;) **16:54:59** homestuck-2221 on the nose class disparity roleplay because of the color of alien troll's blood, where one of them is blind and the other is distrubingly forward and on the nose, is not what I expected to read today, even given the fact that I knew I was getting into homestuck **17:13:55** homestuck-2224 Okay so this guy obviously has some sort of taboo fetish about blood color class order or something like that **17:19:04** homestuck-2227 ...yep **17:54:05** homestuck-2262 the magic cueball joke makes a return, this time with more seriousness **17:54:59** homestuck: Also I learned that people were actually able to submit actions when this thing was going on. That's kind of cool. Also tells me that a lot of the crazy shit that happens in the beginning might have been crowdsourced (although curation and execution of crazy shit is obviously the important skill here) **18:24:04** homestuck-2265 honestly if a magic 8 ball tole me it was going to explode in my face I would probably flip the fuck out. Like getting a fortune cookie that just says "seven days" and nothing else. **18:33:45** homestuck-2280 guy with a hard-on for unbalanced status games based on blood color is my new favorite thing. **18:37:52** homestuck-2288 Let's think about this for a moment. The guy puts the ghost into a robot pre-programmed with feelings for him. Does that mean he created a second brain (the chip on her heart) or something? Or is it some sort of reinforcement thing? Do trolls even have brains? This raises so many questions. **18:39:35** homestuck-2293 2.3k pages in and we have our first kiss. Between a strongman troll thing with a sissy fetish and a robot ghost frog troll thing. **18:40:48** homestuck-2295 oh my god a shipping wall what the fuck. I feel like I have to comment on every other fucking pannel with this shit what is even happening I can't follow all these characters but I'm still intrigued wtf **18:43:28** homestuck-2296 OOOOOHHHHH The colors of their chat text is the color of their blood, except for the Karkat guy who is being anon about it **18:51:55** homestuck-2300 I can't believe this fucking story made me care about the color of a troll kid's blood. It's red, if you're curious. Fuck **19:02:36** homestuck-2323 That's it for tonight I think. Crazy shit man. I wonder if there's a practical limit to the amount of complexity you can add to a story before it becomes impossible to salvage. I am very interested in finding out how this throws down. ## 2021-01-11 **15:05:43** Left work early to go get my physical. I'm a healthy boy, according to my doctor. ## 2021-01-12 **07:01:47** I've got the delete and undelete things working on ikna. They can even take more than one argument now. This implementation is more simple and small than the old one, and it does more things. It doesn't even freak out when you try to delete something that has already been deleted. **07:07:16** I'm also really enjoying this new colorscheme (or lack of a colorscheme, I guess). The black and white thing I've got going on. It feels a lot more simple and clean. Especially with having my terminal emulator with pure black background and pure white text color, instead of the gruvbox thing. Still got my acid green cursor though. Can't go without my acid greed cursor. I'll be putting a screenshot onto the workflows page in a bit. **17:13:18** I'm working on a story for a r/writingprompts compo. I don't think I can say what the story is about, since the voting is done with anonymous authors. I don't want to get disqualified. But I think my idea is pretty good :P **17:38:03** I want to make a program called "ayylamo". I don't know what it'll do, but I'll figure that out later. It needs to be super useful, so I maximize the amount of people who have to say it. **19:36:16** Oh my god fuck this. Why is it so hard to disable stupid features in vim/neovim? I don't want your fucking helpful auto comments or "smart" indents. I DONT WANT IT. Why won't you let me turn it off?? FDSFDJSALFKSDA **19:36:25** I'm going to bed. Fuck all ya'll **19:41:32** OH I DID IT AAAAAAA! Why is it so damn hard to disable? **19:41:57** for those curious, I used `:autocmd BufReadPre,BufNewFile * let b:did_ftplugin = 1` in my vimrc to disable all the trash garbade plugins. **19:46:18** Jesus it's such a relief. Now it's time for bed for real. No more stupid auto comments. No more "clever" auto indentation. Just normal, stock, `vi` autoindent. Blessed be this day. ## 2021-01-13 **04:37:47** Jeez. Some of the rules for operator presidence in C are really strange. **04:56:00** Cool. I love fixing bugs that are only a single line. **17:45:26** I'm moving over to using c99. I could still use c89, but I miss too many nice things from c99 to really justify it. There's enough compiler support for c99 anyways. The original reasoning for moving over to c89 was that it was easier to compile, but if I need to do a bunch of weird work arounds for things that I could easily do in c99, I might as well use c99. I'm not decided yet if I still want to code using things like declare everywhere or not, but I'm leaning towards yes. **19:08:34** Thank god for strongly typed languages. There were some variables that every function in the `ikna` program used as arguments -- basically keeping global state -- so I decided to just make them glboal variables. After removing all the arguments from those functions, all I had to do was fix the compile errors and the thing compiled to work exactly the same as it did before. This is the true power of static type checking, and why dynamic languages won't ever be as useful for large projects. I wouldn't otherwise be confident in the correctness of my program otherwise. **19:09:14** Also decided I was going to use c99 feaures like declare anywhere and `//` comments. Fuck the police. Also they're more convient and clear, so fuck the police. **19:09:24** I'm going to bed. Good night. ## 2021-01-14 **04:59:52** `(',')` looks like a face. **05:46:24** Dude fuck everything about operator presidence. New rule: parens EVERYWEHRE ## 2021-01-15 **02:44:38** Good morning yall. I've been up for about 40 or so minutes working on ikna. My desire for programming seems to come in waves of "none" to "I want to do this all day" **02:45:11** Made `fj_assert()` output a lot nicer, with function name and the actual assertion that failed, instead of just the file and line number. Thanks c99! **06:13:00** You know, I've made like 3 csv parsers now. Each one better than the last. This is great practice, and a surprisingly nice indicator of my progress. **06:55:47** Ugh. There's so many edge cases in CSVs. I try to fix one of them and another pops up. vomit **06:56:56** I guess for this one I need to keep an alternating boolean to keep track of if a quoted string is part of an escape sequence or the end of the field... I guess that won't be too hard. **06:57:06** Famous last words. **06:57:37** But I'm done for the morning. Made some good progress. But I'm hungry, and got somem exercise to do, and also have to go to work. Peace out yo **18:23:58** Wow. Alternating boolean for the win. Huh ## 2021-01-16 **04:27:25** Watched Pulp Fiction for the first time last night. It's... weird. It's a weird movie, but it kept me captivated for two and a half hours, so I guess it's good? Seems like one of those things you have to think on for a while. **05:59:19** idea: text editor called `6`, since `vi` is 6 in roman numerals. **11:14:30** I still feel weird about using so many strange extensions for my markdown shit in timtimestim. The urge to make my own markup language is rising again, and I'm not sure if I want to quash it or not. It seems like a pretty fun project, and it will have a profound effect on my other life's work: writing. It would have to compile into markdown or something similarly universal, so that you could use tools like pandoc to make pdfs and shit, but that's way longer term. Hmm **18:12:23** The year is 2021. You can go EAST and WEST. You are in a room with a DOOR. What do you do? **18:12:36** > Watch youtube instead of doing work. ## 2021-01-17 **05:47:52** Alright! I submitted my thing for the "Simply 15M" competition on r/writingprompts. At least the first round of it. I think it turned out really good! Probably one of the most polished short stories I've written so far. **12:22:33** Okay! I've got nearly the whole re-write of ikna working now. It's time to get the ikna study shit working too. Hell ya **14:36:12** I was doing benchmarks on a non-release build. of ikna. The release build (with `-O2` optimization) is twice as fast, if you're curious. **16:14:06** Fun fact: A deck of 100k cards takes up about 11 MiB of data. Huh. **17:22:44** Okay. That's enough programming for today. I need to figure out a bug in the "choose the next card when the id is 0" thing in the log parser. Bascially it needs to be able to pull cards from the new cards pool, but also needs to _not_ pull from that pool when at the max new cards. Basically it needs to pull from both the review cards and the new cards pool, but it has to be able to do so individually for either pool, without being disabled if either doesn't work. Yeah. ## 2021-01-18 **03:23:13** Cool! I fixed the bug to my satisfaction. Turns out that I just stop the reviews at max reviews. I might want to change that, but for now we're fine. **04:37:23** You know, refactoring is kind of satisfying. Not the "rewrite everything" refactoring I've been doing, but the "change some significant internal thing" refactoring. It's really nice, actually. **05:11:41** Oh the joys of being confused at your program only to realize that you're just being silly **05:54:50** Things I once thought were magic are becoming not so. I can edit the terminal. Fear me. **05:56:29** I felt the same way about dynamic memory management. And before even that I felt the same way about pointers. I sort of feel the same way about network stuff right now. Maybe one day I'll try to do something related to networks. **05:58:32** Oh yeah, and I decided that I'm going to make my own markup format. It'll be called "ayylmao", and the file extension will be ".ayy". Because it's funny :D **05:58:50** But I'm going to work on that _after_ I'm done with, at least, this version of ikna. **07:07:19** AAAAAAAAAAA! The ikna study thing works! Yes! The rewrite wasn't a waste of time! It works! **07:07:28** Besides that segfault. But AAAAAAAAAAAA! **18:24:24** I'm working on a draft of what `ayylmao`'s markup language might look like. The goal of it is going to be to maximize plaintext readability beyond anything else. Since the most readable plaintext it the kind you write without any crazy markup (the one that is most "natural") that means that ayylmao should allow for that kind of thing. So its going to have a strict parser with actual error reporting, and one of the rules is going to be forcing the lines to be 72 characters long **18:25:08** But! The remaining 8 characters at the end of each line can be whitespace, which can be used to hint to the parser what you want that line to do. Like a trailing two spaces might tell the line that everything in it is escaped and don't apply any formatting. **18:26:07** Remember, I'm optimizng for readability, and so forcing a strict folding policy along with whitespace markup to tell you when to escape things helps maximize that. Especially when you can inforce certain rules using error checking (unline markdown, which can't report errors). **18:26:36** The draft document already looks better than markdown in my opinion. **18:27:47** The challenge is parsing, which is why you need the trailing whitespace. This thing still needs to be converted to stuff like HTML, so it needs to simulate the look of freeform plaintext while allowing for "behind the scenes" stuff. **18:30:38** In other news, apperently I can just call system() to launch the editor for the ikna study "edit this card" button. Huh. That's surprisingly simple, all things considered. I thought I was going to have to make something for the platform layer. ## 2021-01-20 **05:22:00** An actual comment I wrote: "The horror of this code will resonate through history" **05:47:41** Ugh. Fuck fork() and everything associated with it. I just want to launch my program without blocking, people! ## 2021-01-21 **05:23:55** Reading "elcomics". Not nearly as haunting as something like Junji Ito, but still interesting. I liked the ninteno one the most ## 2021-01-22 **17:26:01** Dear diary: Today I wrote about ASS ## 2021-01-23 **08:27:10** The fio writeup is over 30k words now. Holy fuck **12:17:03** Well, the "hell" section of the fio wiki page got pretty intense... I think I made my point, though. Maybe **14:12:42** Ha ha! I finally broke 100 WPM on 10fastfingers! I've gone to this site for years, and never gotten over 100 before, and now I have! 101, baby **14:12:55** 99.61% accuracy, too **14:14:36** Oh yeah, and I just finished watching every single Jon-Era Gamegrumps video in order. It's still kind of sad how Jon just left the show so suddenly. I wish they would have finished Sonic '06 at least. **14:15:02** But there was some funny stuff in there. Really nice 600 or so videos to get me through some slow parts of my days **17:57:45** I'm reading a psychology book and just read the line, "Everyone knows someone who's an extreme introvert" and something tells me that's not how extreme introverts actually work. ## 2021-01-24 **06:24:01** Finally got the new favicon! It's so ugly and beautiful **06:30:46** I like the smiley face :D ## 2021-01-25 **06:19:53** On the r/writingprompts subreddit there's a tag for "prompt inspired" things. Basically you can take any prompt that's already been made and make your own top level post for it. This might actually be the best thing, since there's no time limit (your prompt respose won't be drowned under all the others) and you'll have your own top level post that focuses the attention on you. If you want to write the highest quality prompt possible, maybe this is the best way to do it... I'll certantly be giving it a try. I don't find myself liking how much I need to rush other prompts when I reply in the comments. **07:00:24** ## 2021-01-27 **07:31:16** Writing thigns by hand means that I don't go on my laptop as much in the mornings. So that means less jornal entries. **07:31:18** weird ## 2021-01-28 **00:44:41** I WON THE HEAT IN THE FIRST ROUND! :))))))) **00:45:00** That's right, I somehow naturally woke up 4 hours into sleeping because of hype. I'm such a nerd **00:45:48** Oh man. I know I worked hard on it, but I was so worried about being overconfident **00:50:57** So.... I made it to round two. Hell yea. **01:08:20** I went all out with my story. With my current skills I don't actually know how I could have made it better besides just nit picking on shitty things. ## 2021-01-29 **04:56:59** Huh. So the "every body" story actually had grammar issues I didn't see. Wow. I guess I was so close to the story that I didn't notice them? Fuck me. Grammar is hard, man. **17:37:00** What would it be like to write in English, but with the sentence structure of japanese? **19:07:59** Fucking hell. I can't stand the repressive rules of sites like reddit. What even is "birgading"? What a fucking mess. This is why I have my own website. Own your platform. Fuck. **19:08:29** Of course that makes the problem of writingprompts, which need to be posted to reddit first for the attention. So my writing has to be curbed to fit into that reddit mold. Ugh **19:08:50** But to get anyone to look at my shit I've got to put it where people can see it. **19:08:54** I hate the internet ## 2021-01-30 **08:31:15** FUCKING HELL. I think my expensive earbuds are failig on me. Faster than the cheep shit fails on me. I HATE IT **08:31:21** Seriously I hate technology so much. **08:31:27** Fuck everything **08:31:37** The right earbud just stopped working **08:31:45** I don't think it's the wire either, it's the actual bud. **08:31:48** fuck this **08:31:51** fuck all of this **08:31:52** fuck **18:05:25** My god damn hand is cramping up writing up this newsletter for tomorrow **18:05:34** Good thing I have the cure: Alchohol! ## 2021-01-31 **08:59:03** You know, I'm surprised that I haven't yet read The Elements of Style. It's not even that long, all things considered. **13:56:17** Jesus. This computer has been on for 4 weeks and 4 days. Damn **15:05:33** Oh wow okay. The elements of style is really dense. **15:05:42** like a bowl of oatmeal **15:05:52** I don't know what all of these grammar terms are ## 2021-02-01 **03:33:09** happy 1st year of timtimtestim! One year ago today I made the first blog post to the site **03:36:39** I had a dream last night that the only way to earn my father's approval and to become a man in his eyes was to play a mario videogame **03:38:32** It's so fucking cold here. I hate it **03:38:38** I don't want to be cold **03:38:53** And I don't want to deal with getting a new pair of earbuds either. **03:39:31** And I don't want to go to work today **03:52:23** wttr.in is kind of cool **05:46:52** Finished with the rough draft of the second round 15M entry. This prompt was a bit harder to come up with a good idea for, but I think I've got something that will work. And the actual execution of the story is pretty decent by my standards too. Just gotta do editing now ## 2021-02-02 **05:02:27** Poked around with `calibre` a little bit. Why is the program 100 MiB? Because fuck you that's why :D **05:07:45** But seriously, I think it'll be useful for making some epubs out of the various html and pdf and txt books that I've got downloaded. As long as I get a nice epub reader on my phone, I can build up a habit of reading while on the shitter or something **18:48:28** Alright! I've got my i3 scratchpad set up so that it's automatically in the right size and position. Took a lot of fiddling, and it's very dependent on my current setup, but I have the things in place for it now. If I need to adjust it for a new computer, it'll be a one time thing. I even changed the font size in `st` so that it was the way I wanted by default, instead of having to lower the size twice with the CTRL+SHIFT+PG_DOWN combination (seriously that's how I got the rigt size); I had to look in the `st` source code to see how much the size of lowered every time I did the combination, and then compare them side by side. But I got it working now. **18:49:24** I even got the useless title bar removed form the scratchpad window. Since I use `tmux` inside the window, it only showed a tilde `~`. This gave me some more room, and makes it look cleaner. **18:51:13** I know that my setup is really strange in i3 land, since I don't actually use the tiling functionality in i3 that often, but the tabbing + scratchpad + tmux thing continues to be my favorite computer setup that I've ever used. I've gotten it a little more polished now, which I hope will pay dividends down the line. **18:55:22** I read the entire i3 usergide, by the way. There's some weird decisions that I personally wouldn't have made (especially with dependancies and the markup for the config file), but since i3 has made it explicit that they're not adding any new unnessacary features, and the fact that sway is a good fork for wayland, I feel comfortable sticking with i3 in the much further long term for my usage. I admit that I've wondered about switching to something like dwm for it, since that's a lot more simple, but I don't actually know if I'm going to be using X11 in the super long term or not. And i3 has some advanced functionality that I find really useful in niche situations. And I already have a good setup with it. ## 2021-02-03 **04:55:36** Today's the day that I try to finish the writing prompt response for the competition. This story was a bit harder to write than the first one, so I'm less confident in it. But I still think I've done a good job. **06:08:14** Aaaand submitted! Now all I have is to wait for the results. I'm less confident in this story than the first, but I think it turned out pretty decent. This was a hard prompt to get going. **07:29:48** This r/wallstreetbets thing is insane. **07:30:32** I'm thinking of getting some GME shares just to feel like I'm part of history. Not enough to cause any disruption to my life or other investments, just enough to be like "I was there" in a crotichy old man voice when I'm an old man. **18:12:52** Got a tmux status line that has better time format now. Yay. Slowly solidifying my setup ## 2021-02-04 **07:24:34** Writing is going well. Took a nice walk this morning. Also doing some exercise felt good. Playing around with the Termux API today. I'm slowly but surly moving my stuff over to termux. I'm looking into using termux-notification mixed with cron jobs to take over my calendar stuff. I only use my clandar to give me notifications at specific times on my phone, which could be taken care of better with a more simple setup if I can manage it. I'll look into it today. ## 2021-02-05 **05:22:28** The "mandus" speech from Amnesia: A Machine For Pigs is perhaps the best despair monologue I've ever heard preformed. It's just so damn good ## 2021-02-06 **11:23:55** I went on a jog this morning. This is the first time since about October 2020 that I did. I've been recovering from a tendonitis injury in my ankle that's been stubborn. It's recovered enough this morning that I finally decided to go on a jog. The final straw that made me decide to test my luck with the ankle was a book I've been reading called "Two arms and a head" by Clayton Atreus, a brutal unflinching description of what it's like to become parapheligic in the prime of your life. I'm pretty sure he kills himself in the end. It's not a fiction story, either. Anyways, his descriptions of not being able to move or feel his legs impacted me really hard, and I felt a desperate need to go on a jog, so I did. It was super cold out (like -1 degrees F windchill cold), but I didn't care. The rush from finally being able to run was immense, even though I couldn't go as far as I was before; my lungs just weren't up to the standards that I had for them in October, but my legs were strong from my weight lifiting that I picked up in the intermin. Seriously, I feel nearly normal, like I'm finally doing something good. Running. ## 2021-02-07 **06:16:07** I had a dream where I was on an amazing crazy dangerous rollercoaster that would go into frequent free-fall and reattach to floating pieces of track every so often. There were things to interact with, like bars and ladders you had to cut through to make it. It was a ton of fun, honestly. **12:09:04** "indominable funk" **14:38:53** God I hate operating systems **15:45:38** Cool. I've got some more progress in the ikna study thing. My fingers are fucking fozen and I can hardly type, though. Why is is so cold here? Who's idea was this? ## 2021-02-08 **07:16:14** Dear jornal. Today I moved fj_arr's implementation into a c99 way that doesn't rely on undefined behavior. Yay! :D **07:17:15** It came out as a drop-in replacement for the previous implementation, so no nasty refactorings **07:17:23** And it seems to work just as intended **20:54:33** I got a headache at work today. It seems to happen every fucking monday now. Ugh. So I took a long 5 hour nap, and now I'm "awake". Bleh **22:05:45** Reading a friend's writing. It's so insteresting to read how others talk about their tools for creative works. And not just surface level things, but super in-depth niche stuff. I like the in-depth stuff. Scratched that itch ## 2021-02-09 **00:28:13** I just love adding random :D faces to things. It's such a fun face **02:10:42** Hell yeah making some good progress with ikna while I can't sleep. Got most of the media stuff done, with a few nasties to fix here and there. **02:12:02** I've decided I'm going to use `scdoc` to make the man page for ikna. It conforms to my values more than other implementations, and is still readable in plaintext, which is super important. **02:43:11** Man. `scdoc` is actually really nice. Way better than writing raw roff, which is something I wouldn't wish on anyone. Of course I'm going to be pre-compiling the scd file into a man page, so that there isn't a dependancy on `scdoc`. I'll just have both the .1 file and the .scd file in a docs directory, so that you can read it in plaintext if you want. **03:34:16** Coldest walk of my life wtf **04:45:47** `mman -T html` can convert a man page to html! I can have my man pages in html :O **05:26:45** I'm going to do something unconventional with the ikna man page. Basically, it's going to be more of an "ikna manual" instead of the normal "reference page" that most man pages are. Instead of directing someone to a website they won't visit or (shudder) using GNU info or equivlent, I'll just have all the revelent info in the man page. So it'll have a table of contents (gasp!) and rationale and background and maybe even history on ikna. It'll have some very verbose usage examples, because man pages almost always lack good examples. It's going to be the "user manual", except it'll be locaed in the man page instead of some external source. And since it'll be written in plaintext (scdoc), it'll be readable even outside of the man page. And of course I can convert roff to html and other shit if I need to. **05:27:41** This is a super unconventional way to do man pages, but I think it'll be the best for longivity reasons. There's reason why people do it the ways they do, but sometimes you gotta go against the grain, man. **07:58:33** I really appreciate the simple beauity of scdoc. It gives me that "strong" vibe that a lot of software doesn't have. **07:59:02** It just does that one thing, and that's all it needs to do. Beautiful. **17:46:04** My hands so so dry that typing is painful. oooooo **17:51:21** You can use `(void)argc` to get rid of the "unused variable" warning in main when you aren't using it. **18:51:03** getopt() is weird. And so is skeeto's header only implementation of it. **18:52:29** if `-f` is an optional argument, and you send something like `-f arg`, it doesn't set the `-f` option to `arg`, and instead sets it to 0. _But_, if you use it like `-farg` it will set the `-f` option to `arg` like you'd expect. BUT if `-f` is a _required_ option, it can take both forms just fine. **18:54:01** Now, because this was inconsistant and stupid, I thought it was a bug. But looking into the offical man page for getopt(3), it turns out that this is _totally the expected behavior_. I tested it out with some utilities (specifically awk), and lo-and-behold it worked exactly in this buggy way. And did you know that getopt can also take multiple of the same argument? So `curl -s -s -s -s www.example.com` is totally valid. **18:54:24** What a weird interface. But it's totally what is expected, so whatever? ## 2021-02-10 **06:18:11** My entry to the 15M round 2 is... not that great. It's not as good as my first one, sadly. I don't think I'm going to make it to round two. The entry is just too... pedestrian. Fucking hell. **06:18:56** Yeah the story isn't great. Fuck **06:29:00** Actually, I think this is the first time I have ever felt _shame_ for the quality of my work. What a weird feeling. **06:34:11** On the bright side, I've got a PI story uploaded to the writingprompts sub. I feel gross about my competition entry though. I should temper my expectations accordingly. **17:06:27** I'm in the market for a new phone. I'm thinking of getting a FairPhone, since I don't want to have to replace my phone for a while and I want to install a new OS onto it. **17:46:13** Oh. Fairphone isn't sold in the US. This is a weird feeling. I think this is the first product I've wanted that I can't buy because it isn't available in my country. Usually everything is available in the US. **17:51:22** God damn it. I guess I'm going to have to refurbish a used phone or something instead. **17:55:44** Ok. So the fairphone can't work in the US because of some "band issues" where it can't connect to the right networks. WHY isn't this just a fucking standard worldwide? WHY don't the fairphone people want to sell to the largest fucking phone market? It's just incompetence all the way down, even when I want to give you money. Fuckin hell **18:02:42** Okay, so this says that there's a good chance that it would still work in the US. But it isn't supported. **18:05:35** Whatever. Not going to deal with this shit. I'll just order a used phone that is also easily repairable. **18:06:01** And is made for us markets ## 2021-02-11 **04:39:36** Actual comment that was in the ikna source code: `// @TODO: What the fuck?` **07:12:45** Okay! I got a lot of stuff done today. I'm pushing ikna v0.9 to be finished, and I just finished with a lot of grunt work, getting little nasty things and ill-fix-it-later's ironed out. Now I'm at the point where I can actually start using the new ikna again! :D **18:20:09** Just wrote a wicked cool new man page for jornal. Hell ya. I'm working on a bit of a robustness pass on jornal, fixing some documentation, making it work without using malloc()/realloc(), and just generally making the code nicer. This is one of the most important programs that I use, even though it's so tiny, so I want to polish it up a bit. **18:21:00** It's really crazy to me how much I use this program, all things considered. It's really sweet. I don't even expect anyone else to use it, honestly; I just want it to be polished as possible for my own feeling of satisfaction while using it. **18:21:46** Using jornal to write about updating jornal... You know that the world "journal" looks weird to me now, right? **18:23:39** I almost always use jornal outside of its ability to do command line arguments like echo. This entry has been done differently just to remind myself that its a thing that this program can do. **18:44:04** test **18:44:29** There might be some weird 'test' things going on while I mess with jornal. Thought I might as well keep them here for fun **18:58:21** So it looks like fseek() isn't going to work for jornal's use case. I can't destroy the file while I'm working on it, and the only other way to do that would be to append, which can't fseek back to a different part of the file for writing. I could also write to a temp file, but fuck that noise. I'll statically allocate a large buffer and fall back to malloc() if it's needed. **19:00:11** Oh well. I'll poke at it later. My priority tomorrow morning is ikna ikna ikna. I'm so _close_ to my next milestone with ikna ## 2021-02-12 **05:07:41** Today doesn't even feel real. I woke up late (for me at least), but it doesn't feel like I slept at all **05:49:54** So, of course, ikna is being buggy. But that's what testing is for. **05:50:16** Just through asserts around everywhere lololo **06:34:40** You ever look at a function and say "oh god what was I thinking"? That's what I'm doing right now. No wonder this thing doesn't work **06:34:47** Premature optimization. Gross **18:09:33** I have an off by one error, but I don't know where it is. Cooooode **18:35:32** I think I found it! ## 2021-02-13 **09:18:53** Oh my god ikna is a thing. It's doing the thing! I can study with it and it doesn't suck ass! **09:19:07** Some errors and strange things need to be fixed, but it's coming together :D **10:53:14** uhhh... This is going to be hard to explain, so bear with me here. I'm doing some work on the log file parser for ikna. There's a global variable that's used _everywhere_ called the "cards" array, which is just a struct with each card's metadata in it. Simple stuff. Now, the log parser naturally edits this array quite a bit. Now, obviously I'm always under the assumption that this array is _global_, so when I call `normalize_status()` (which edits the cards array) inside of the log parser (something I haven't done before), it doesn't work. BUT! And this is the crazy part: the card array still worked everywhere else in the program! It only didn't work in the instance I called it inside of the log parser function. I know, right? So it turns out that I had a local variable declared that overwrote the cards array inside of the log function, and removing fixed the issue. But the thing that confuses me the most is HOW THE FUCK WAS MY PROGRAM WORKING BEFORE??? Did the local cards array inside the log parser automatically get promoted to the global variable after the function ended? Is this a compiler bug? WHAT. Nothing, *nothing*, should have been working. It just shouldn't have been possible. I don't even know what to call this. What. what what. **10:59:38** My brain is fried right now. A good time to have some lunch. Programming is fucking weird. **18:54:57** Drunk and writing the RATIONALE section of the ikna man page on a saturday night. This is the life. But it's also almos time for bed zzzzz **19:29:27** In the middle of writing the "core" thing ## 2021-02-14 **01:20:09** I lost the round 2 of th 15M compo. :( you can read my postmorten and the story itself at [this link](/f/day.html). **02:39:20** There's a weird bug when your deck is set up to have less max review cards per day than new cards per day. Some part of that just refuses to update some values: The HUD on the study script doesn't update, the next card getter doesn't work correctly, and I bet some other bullshit happens. **08:33:31** Fucking bugs, man **16:20:54** I'm getting pissed at this bug **16:20:58** What the fuck ## 2021-02-15 **06:49:49** Okay so I *think* I've fixed that bug I was talking about yesterday. All it took was two hours of focus, writing down a bunch of shit on paper, crying, and pacing around my room. But I think it works now. **06:55:09** No. The problem isn't fixed **06:55:12** fuck this ## 2021-02-16 **03:38:21** God damn heisenbug is what this is. **04:04:08** Me right now: "This seems like it should work... I've said that before a hundred times with this problem already." **04:10:45** Okay... I think it's actually working now. The main problem, probably, was a faulty card scheduler + incorrect assumptions about how I was counting how many cards were left. I'm still skectical about it actually working, since this problem has taken me over 3 *days* of work to "solve", so I'm going to watch this like a fucking hawk for a while. Still, the appearance of correctness is a little comforting. **11:29:30** I'm not at work right now because the snow was too bad to drive in. I've had the day off. Going to try and work on jornal a bit because it's fun **11:29:56** test test **11:47:39** This is a test of the input buffer **11:57:16** This is a test of the malloc() backup for when you somehow overflow the statically allocated input buffer **11:58:22** Seriously. The input buffer is set to be 1 MiB, which is enough to hold about 200 *thousand* words written in ASCII. If you overflow it you're going to have a bad time. **12:01:58** Weird bug, hold on while I cry. **12:02:43** This is the test with valgrind in place. I should mention that I made the buffer intentionally short so that I could test the functionality. In reality it will almost never be used. **12:02:57** I thinks its goods! **12:04:23** Another test with valgrind just in case **12:17:30** test **12:17:53** Okay! It does the thing. I'll use this for a while and make a release when I feel like it. Whoo **13:22:05** 48 days of uptime on this computer. Wow **13:22:11** That's a lot of uptime **13:22:20** test **13:22:33** test **14:50:22** Well, I just wrote like 40 lines of code without testing any of it. Let's see how bad I fucked it. **14:55:59** So it's fucked. But I can hopefully fix it ## 2021-02-18 **05:22:17** Huh. There's a macro in `inttypes.h` in c99 that's there to help you print the fixed width ints from `stdint.h`. Basically since `printf` can't specify the exact size of the print, and the fixed width ints can be described using any implementation detail, you can't really know in advance if you're using the right format. So isntead there's a *supremely* ugly set of macros that look something like: `printf("Number is %" PRIu32 "\n", u32_value);' that handles that for you. It's ugly, but it works. Printf problems were one of the reasons I was tenative about using exclisivly fixed width ints for percission instead of the normal int values. I wonder if I can make an fj thing to make it look nicer **05:22:42** `FJu32` `FJd32`. Those don't look any better... **05:30:35** I need a function like `fj_print` that and `fj_sprint` for formatting strings. Because this `PRIu32` shit is ugly and hard to follow. Maybe have the format string just be `%u %d` and so on and have it as a wrapper around printf; I could use `sizeof()`, since I've almost always going to be using fixed width, so you know which one I'm going to need to print. Ugh. ## 2021-02-19 **03:44:41** Idea: A comic made out of ascii art. **03:46:13** Hear me out. You can position the text wherever you want, `house` of leaves style, and generally communicate some interesting themes through the way the text is layed out. And since the text is rather dense, you can actually use it as more of a picture book that's more interesting to read. **05:13:35** Shit. My little test ASCII comic now has interesting characters. Oh no. This isn't the idea I planned on doing! Oh no! **05:14:26** Protip: in vim you can use `set: cc=73` to have a column drawn right on the line you can't pass (if your comic is 72 characters wide. Why wouldn't it be 72? It could fit in an email that way!) **07:16:13** Started working on a massive reworking of fj/ikna to stop using null terminated strings and instead char pointer + length strings. I really hate null terminated strings. ## 2021-02-23 **05:04:55** news flash: you can use `printf("%.*s", length, string_ptr);` to printf a string with a certain length, and it doesn't have to be null termintated! **05:04:57** woah **05:05:05** also haven't written in this jornal for a few days I think **05:05:09** or just yesterday **05:05:12** feels like a few days **05:05:14** lolololo **17:02:41** god fucking damn shitty wifi card crashing on me all the time **17:02:44** fuck this laptop **17:02:50** I can't connect to the internet **17:02:52** like at all **17:03:09** This thing has been on for 55 days tho **17:03:17** which is a new record for this pos **17:03:18** fuck **17:03:21** I hate computers **17:03:37** What really grinds my gears is that I have to restart my tmux server from scratch **17:03:45** 55 days of building up sessions and windows gone **17:03:46** fuck ## 2021-02-24 **05:39:43** Adding a ton of utility functions to fj.h. Basically a bunch of standard library stuff like isspace(), but where I can trust that the implementation isn't insane. Also a bunch of "convert string to X kind of number" functions like atoi() atof() and unsigned values. All the names are different and more verbose, obviously, but they basically work the same **05:46:20** I love/hate these little roundabout journeys that you take while programming. I needed an atof() equivlant for fj.h, so I had to finally bite the bullet and add the isdigit() and friends equivlants, which took a bit of refactoring and other research, only to finally implement the atof() thing. Only to finally use it in that one spot. **05:46:40** All because I wanted to move over to using length-prefixed strings instead of null terminated **05:47:07** But it'll be worth it. I have found I hate null terminated strings, although I do have to use them from time to time anyways. ## 2021-02-25 **03:53:11** Oh shit GME went crazy yesterday. Is there a chance? I've got some stake in this, enough to be excited. I don't know exactly what's going on, but theres *something* happening. You don't see big players making these kinds of moves unless there's something to do them for **03:53:57** Also, jornal is cool. I'm so glad I made this program. So weird that this is one of the best programs I've made for personal use, and it's so tiny. Nobody else is ever really going to use this thing either. It's my own little paradise :P ## 2021-02-27 **09:14:22** Damn. Last week I got like nothing done. It feels good to do things. I've been too distracted by the Gamestock stuff **15:10:19** Did you know that `6*9+6+9` is equal to `69`? Neither did I. My whole life is different now ## 2021-02-28 **08:56:02** Finished writing the feb 2021 newsletter! The most writing I got done all week. I've gotten like nothing done this whole week. Or, at least, I've gotten way less done than I usually do. In fact this whole month has been kind of down-low, now that I think about it **08:56:24** Oh well. There's only really the future to worry about, with the wise lessons of the past. Or some other yoda sounding shit ;p **18:17:54** Well im drunk and just wrote out the most hateful thing I could in the /b/evil.html part of the site. Gonna be part of a dual blog post where i praise and mock the internet. I wrote the evil section first since it's way easier to write and i've been thinking about it for a while now. And it came out deliciously hateful and mean spirited, just like I wanted. yay. **18:18:49** The other end of the dual post is going to be "epic". Get it, Evil vs. Epic? Two four letter words that start with E. Like "The internet is Evil (with a capital E)" and "The internet is Epic (with a capital E)". Yeah! **18:22:25** The rant came out to be about 1500 words, which actually fits the whole theme quite well. The Epic post will be bombastic and larger than life, just like the internet, while the Evil post will be curt and hateful, just like the worst parts of the internet. Epic will have a table of contents and other silly formatting things, while Evil is just straight text with some paragraph breaks. Yeah. That's the dichotomity I'm looking for. **18:23:15** Typing is fun. This keybaord is nice. I know that i talk about that a lot, but anytime I want to type something just because it feels nice I immedetly reach for talking about how nice it is to type on this thing. I've had this keyboard for nearly 9 years now, and it still works great. Thank you keyboard. You're a good friend. :D **18:23:31** Wow, I really am drunk. Thanking my keyboard. Oh well. Thanks keyboard! :D ## 2021-03-01 **04:51:06** You know, I've never actually had a hangover before. Maybe once? I don't really know. I'm kind of a lightweight, so I don't actually need a lot of alchohol to feel drunk, so maybe I just never drink enough to feel that way. Not that I'm complaining, mind you ;) ## 2021-03-02 **07:30:31** Started writing out the Epic side of the dual blog post thing. It's super bombastic and fun to write :D **07:31:16** Although this was the second attempt, since the first was too dry. I like this tone better. It's been too long since I went full Wacky Tim on some writing. Like putting on an old form-fitting pair of shoes. Familar, is what I'm saying. ## 2021-03-03 **05:33:22** Oh man this post is so much fun to write :D **05:33:28** (the Epic post btw) ## 2021-03-05 **04:56:20** I can't believe I'm actually writing out rap lyrics. I can't believe they're actually kinda good. You aren't going to see them right now, but maybe some day. Really it's just a fun word exercize to see how many nested rhymes I can make **04:56:52** And this gamestop shit keeps getting more and more absurd. If I actually retire from investing into a meme stock... Jesus. ## 2021-03-06 **07:16:19** I'm not going to use Reddit or YouTube this weekend. For the record, the moment I made the promise to myself I felt a wave of releaf so strong that I nearly collapsed. Jesus I hate the internet sometimes. ## 2021-03-07 **15:44:49** Slowly. Very very slowly making my way through the "1001 albums you should listen to before you die" collection. I'm going in batches of about 100 albums each. **15:46:25** One of my long term projects is curating a list of the 100 best songs in the world (to me), so I'm trying to distill all those songs in all those albums into this list, which already has a bunch of other music on it. It's starting to get to be a harder job now that I've got more music I've listened to, since now I have to remove lesser songs from the list to add betters. But over time the 100 list will get better and better, full of music that brings me genuine joy to listen to. **15:55:34** Synching the new music dunp to my phone is a nightmare though. A nightmare of waiting and sync conflicts even though I have the folder set up to be "recieve only"... Syncthing is so useful, but sometimes man... **15:57:22** Seriously why does it take so fucking long. Besides the fact that i's 17 GiB of data transfering over a network. But still! **15:57:53** Not to mention the fact that it's nigh-impossible to actually access an android file system on a linux device. I tried. I *have* to use syncthing to get shit onto my phone. **15:58:18** I'm sure there's some shit I could do. But I gave up trying to be reasonable a long time ago. Now all I can do is complain into my jornal **15:58:32** Oh my beautiful jornal. You're always there for me. Except when you're not. **15:58:53** Still one of my favorite programs I've ever made. I'm still shocked at how much use I've gotten out of this thing. **15:59:02** That program being jornal, not syncthing **15:59:34** Syncthing is like a burning banana pile. It might smell okay, but it's still a burning banana pile **16:01:44** This is a good time to do some of my housecleaning actually **18:40:18** Okay it transfered! Nice. **18:42:21** I gotta say, going this whole weekend without using reddit or youtube or any of that awful internet shit has been *amazing*. It was hard at first with my constant impulse to check reddit, but after a while it stopped being that bad and I suddenly found myself able to concentrate on other tasks with much more ease. I'm honestly shocked at how much the boredom of not having those easy distractions drove me to read more. I think I might want to make a habit out of this idea, as a sort of "brain reset". And proably use these soul-draining sites less as well, just out of curtesy for Future Tim's mental health. ## 2021-03-08 **05:35:54** Went on a really nice walk this morning. The moon looked like a giant toenail **07:31:13** My gamestop investment has trippled in value already. I would be so fucking happy if this thing squeezes and I actually retire off such an insane situation. Yeeeee ## 2021-03-10 **04:37:03** Fiddiling around with ebook things for a bit this morning. Time to get down to business and write funnies :P **06:38:45** Yeah alright got some good progress done in writing. Maybe not a whole lot, but a decent amount ## 2021-03-11 **06:30:59** Slowly converting fj and ikna into using only length prefixed strings. The biggest challenge coming up is to make my own printf-style thing for fj, since I dislike printf quite a bit and I want one that's made to work with length prefixed strings instead. **06:33:24** My printf will probably be a LOT simpler than ordinary printf. I'm going to need some sort of markup for things like leading/trailing zeroes and the precision of floats. The benefit is that I'll know exactly what kind of things I can do with the print, instead of being confused by printf all the time. Like having control over the pointer printing representation. **06:35:26** The reason I want to do this this way is 1) It'll be a good exercise 2) I'm trying to move away from the standard library where I can with fj 3) I'm trying to use only length-prefixed strings, and the next biggest herdal to that is the (s)printf family of functions, which aren't made to be very nice to my plight. 4) I dislike how printf does things. **06:36:33** Of course, I'm not going to get away from the standard library completly. I'll need things like memcpy() for intrinsics and whatnot, but that's besides the point. I want fj to be like a drop-in "this is Tim's dev environment" thing. ## 2021-03-12 **05:22:44** I'm going to lean on the standard library printf stuff for fj_print for the time being. Want to get *something* working **05:49:24** Dude fuck printf **05:51:17** I'm going to probably implement this as a callback. I'm going to need to make it so that I can call the internal "print to buffer" function multiple times to work through a format string, so that I won't need to allocate memory inside of the functions. I'll be ugly, but it'll be the best option I think. **06:59:21** Absolutly fucking nothing done this morning. Floundering around in confusion trying to do too much at once. Bleh ## 2021-03-13 **07:34:29** Callbacks in C are weird **09:10:45** Okay okay okay. I understand the limitations of C now. My initial plan was to have something work like `%i` for all sizes of ints, but that might not work due to how va_args works. I could probably do some shady casts, but that would be cumbersome. I might actually have the best bet using something like `%i32` instead. **09:12:15** va_args takes the size of the type passed to it and gets that many bytes. If I have a u32 argument sent to the variatic function and I tell va_args to read a u64, it's reading 32 more bits than the actual thing, causing undefined behavior at worst and a huge security problem at best. **09:14:14** So I guess the `u8` `u16` `u32` `u64` styles are what I'm gonna have to do. This will be less convient, but not THAT bad. The point is to have an easier time using the built in fj types like i32 inside of printf like functions. Generally making the whole print formatting experience cohesive with the fj environment I'm setting up. **09:14:23** still annoying tho **09:15:34** But yeah. This is kind of a major deficencincy in C, huh? I get why it's this way, but damn it's confusing. If only there was an easy way to say "is this variable X type?". **09:16:28** I even thought about testing the variatic arguments for certain sizes, but that won't work either because of default argument promotion rules. And also the chicken-and-egg problem of trying to get the size of the argument without actually reading the argument. **12:52:41** Analyzing the http logs for timtimestim. This place gets like no visiters at all. It's literally just bots, me, and a couple of my friends. Wow. **13:15:00** NOTE: going to need to move u32 and the likes to uint for ikna **14:06:04** And unsigned->singed **14:15:20** Fuck it. Moving over to signed ints and built in c types for most things. Too much trouble the other way around. It was a nice try but whatever **14:18:20** C is just built around `int` way too much to fight. It's unfortunate, but whatever **14:18:23** whatever **14:18:27** wwwwwwwwwwwwwwwwwwwwwwww **15:24:01** It's official. I have found reason to use goto. The raptor is here. What do I do **17:53:13** Okay! I've got some good stuff working with the fj_print() family. I have %% escape, %u unsigned int, and %s string (which takes a length)! And I've got it working using an internal buffer with fixed length. Going good so far. Still got more complex things to do like leading zeroes and floats and the whole `%{i leading=2}` type syntax for extra details. I think I got the worst of it out of the way, which were the parts where I didn't understand the C standard enough. **18:34:55** "inane" is a cool word to use. I should use it more often ## 2021-03-14 **06:19:17** Spent like 2 hours trying to get a config working on tmux **06:23:13** The issue was this: When i'm in (n)vim I can't use two side-by-side tmux panes with two separate instances of vim. I mean, I *could*, but the problem is that I can't view the same file in those different panes due to how file locking works. So instead I used vim's `:vs` command to have a vertial split, but now I need yet another shortcut (`ctrl-w ctrl-w`) to switch back and forth. While in tmux I have `ctrl-b ctrl-o` to switch between panes. I only ever use these things side-by-side, and I don't have much more tiling than that. But I had to mentally switch between the C-W C-W vim shortcut and the C-b C-o tmux depending on what I was doing, and it was a minor annoyance every time **06:25:09** So what I finally (finally!) figured out was how to make tmux alternate the tmux panes when there was more than one in the window, or otherwise send a `ctrl-w ctrl-w` to the running application if there was only one pane. So now I can use `ctrl-b ctrl-o` and it works based on what I'm contextually doing, even if there's a pane with a single vim instance and a pane with something else! **06:25:48** There's a side effect where I can use the shortcut on a non-vim program like bash, and it'll recieve whatever that program does with two ctrl-w's. But that's hardly even an issue, to be honest. **06:26:03** It was annoying, but I think this will help with my workflow a bit **09:49:24** Alright. I've got signed and unsigned ints working with mostly the same code! (in the fj_print stuff) **09:54:58** What should be the default for bool printing? `0 vs 1`, `True vs False`, `true vs false`, `TRUE vs FALSE`, `T vs F`, or `t vs f`? **09:55:53** It hardly makes sense to have a bool printer for `0 vs 1` when I can just use %i **09:57:02** I think I'll go with `True vs False`, since I can have an upper and lower argument to make it fully upper or lower, and a single ch argument for the T/F/t/f stuff. **10:05:27** ...And boolean is done! That was quick :P **10:33:20** Got pointers out of the way now. Although they just print to decimals instead of hex like most pointer printeres. I don't have a hex thing yet. Maybe later **12:19:51** I'm cheating a little and using snprintf to convert floating points to strings. This is because floating points to strings is a hard problem I don't care about working on right now. I'll probably have to read a lot about it and ugh. No thank you **13:42:11** Me: "Why isn't this doing anything!!!??" Also me: "Used `${b}` instead of `%{b}`" **13:54:51** Reached over 1k lines on fj **14:44:26** Okay. So the `{}` is too much of a massiv pain in the farking ass when dealing with the % key in vim. Time for a new markup. Our choices are: `%[b upper]` and `%(b upper)` **14:46:50** I think im going with `[]`. Less confusing looking when inside a function **14:51:56** Oh my god you can use something like `{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}` as valid C. New decoration incomming :P **16:35:09** And putting {} scopes on switch statments **16:38:40** Alright! I've got basic flags working! These are just "enable this thing" flags, withoiut any values. Something like `%[b lower single-char]` will now produce a boolean with either `t` or `f` as the output! Now to get flags with values, like `width=2` and `pad=0`. **16:39:05** I've been at this thing all day. Wow. I've probably written over 300 lines of code today, all of it stuff I've never really done before. **16:40:14** I'm so glad i'm finally doing this functionality though. There's a certain set of things that I always marked as "too hard" for programming. Learning C was one of them, making my own printf (with better syntax) was another. But now that I'm getting to the point where I'm actually doing it, it's less mystic to me now :P **16:40:21** I guess that's how skills improve, huh? ## 2021-03-15 **06:53:21** Got argument flags like `%[i width=2]` working! And a setup that will make them relativly easy to add. At least, the parsing works now. The actuall padding behavior is still a bit strange, but that'll be fixed with time. I'm basically at the point where I can start indiscriminetly adding flags though! The infrestructure is here! :D **16:52:31** Todo: use sizeof(s) in FJ_SARG (cast to int?), consider renaming FJ_SARG to something even smaller like FJ_S, reverse the string in fj_string_from_unsigned without internal buffer. ## 2021-03-17 **18:17:21** OKAY! I know I haven't done a jornal in a while, but that's because I've been hyper focused on the [fml thing](/b/fml.html), which is an idea I had on monday and obsessevly executed on until I finished it a few days later. Jeez. I couldn't focus on anything else. I even posted it on reddit (the /r/c_programming sub). We'll see if it gets any attention or not **18:21:20** nuklear.h looks cool. A single header GUI library. ## 2021-03-18 **02:06:04** Damn it I should have put a date on the fml article **04:39:42** I'm not checking reddit during my morning, which means that I'm sitting here in anticipation to see if I got any replies or not on my blog post posts on the c_programming subreddit. I know I got a comment complaining about me swearing because it was "edgy" (fuk u) from last night before I went to bed, and a reply to that one saying that it fit the tone of the post. But now I have no idea **04:41:34** I've been making promises to myself and building a habit of not going on reddit/youtube/internet bullshit during my mornings. I wake up super early so that I can get things done that I care about, and that gets frequently curtailed by mindless rectangle gazing. So for the last nearly 2 weeks I've restrained myself from doing so, even in situations like this where I'm super curious, and i've been more productive than ever. It's really... liberating to not use the internet. **04:41:44** Also aligns with the thing I've been doing where I don't do time-wasting internet stuff during the weekends, which I've done for 2 weeks now too **04:42:40** It's been reprogramming how I think about a lot of things. **04:42:52** Maybe I'll write a blog post about it some day. Maybe not tho **05:05:09** got the pad= argument for fj_print **06:36:10** fixed some issues with the fml article. used '32' instead of 'int' inside an example va_arg call **19:23:28** They like the post! the reddit post I made got like 130 upvotes and even reddit gold :O. There's like 20 comments along the lines of "wow this is so funny" and the like. They like me, they really like me! ## 2021-03-19 **18:45:34** Im drunk and WHY does memcmp do lexographical comparison??? Why is it like that stupid strcmp thing that need == 0 to actually get a comparison??? FDSKFJSDKLAFJKDLAS **18:46:08** I forgot that I have a function for this already in fj. fj_strings_are_equal(). because of course I do. ## 2021-03-20 **03:53:08** So I like to go on walks. Long walks around my neighborhood, but really early in the morning (since I wake up so early). Like, 2:30 AM kind of thing. So it's pitch black out and the sky has stars and whatnot. On my walk this morning I saw a *shooting star*! A legit one and not just a helicopter or a plane. I think it might have been the first shooting start I've ever seen and conformed as a shooting star (there have been occasions where I thought I saw one, but didn't get a good enough look to confirm). It was magical. I made a wish on it. Really great start to this weekend. **07:14:40** ugh moving files around suckssssss **07:45:47** Fuck me I hate computers. I was moving around some files, and broke some symlink, and had to WASTE nearly an hour fixing everything. Fuck this man **07:46:26** This is why I shouldn't mess with things on my system unless I have to. Don't try to make it nice. Treat it like a fragile lowest-common-demoninator appliance. **07:46:31** because it is **07:58:46** What a fucking nightmare. I'm trying to get a better interface for gdb, since gdb sucks. I tried codeblocks which can't act as a standalone debugger. Now I'm trying this terminal application 'cgdb', but it isn't in the debian repos, so now I have to install it from source and be reminded of all the awful build shit that these projects always use. But I got it working after installing libreadline-dev, because of course I needed to do that, and now I get to try and out only to probably realize that it sucks ass. yay **08:46:20** Okay! I think this program might work. that's certanly a shock to me. Surprisingly configurable, although all I did was turn off syntax highlighting ;) **08:46:43** cgdb. Let's hope you hold up, you were a *massive* pain to get installed **11:46:13** Remapped tmux's prefix key to ctrl-space and it's already 10 times nicer to use. Ctrl-b is fucking awful and i could feel myself getting tendonitus from it **12:43:05** Having an actual easily accesable debugger might be a game changer for me ## 2021-03-21 **05:00:31** my dog is getting worse **05:00:34** she is old **05:00:44** i dont like how this is looking **05:00:47** :( **07:21:58** Having a debugger that's actually convient to use is a game changer. Much less printf debugging now. Most of the time you want to figure out what value a variable is in the middle of a function, and now that's way way easier to do with cgdb. **07:23:09** ...still hard to focus with my dog in a bad shape. My family doesn't want to admit it, but she's getting old and this problem is "inoperable" according to the vet. There's only one path this leads down, and it's probably not a miraculous recovery **07:23:18** I hate this feeling **13:01:13** Actual comment in my source code: The inner loop new_card() doesn't get called with the final field. Some day we will all burn when the sun expands to engulf the Earth. **13:01:48** This is why I write funny comments. In the middle of the misasma of a large refactoring and this lightened my mood. I totally forgot I wrote that. **13:02:27** My dog is resting right now, if you're curious. I spent some time with her, but she hopefully will be helped a bit with sleep. maybe **20:05:05** She's dead. **20:16:15** Her tumor had grown to nearly twice its size in the last couple days. It started to bleed last night, so we took her to the emergancy vet, who told us to keep a close on eye on it. A couple other vets said that they couldn't really do anything, considering the location of the tumor and how old she was. We layed blankets down on the floor to stop the blood from seeping into the carpet, and hoped that it would stop. Today we kept an eye on her, and the tumor kept seeping blood into the sheets. She was as lively as ever, always a puppy, but we knew that something was really wrong with her. The vet's advice was that they had no advice. It was basically impossible to operate on, and the risk of going through with it would have been too much. Still, we hoped it would get better. Then, at around 6 PM today, she stood up and the tumor tore open. Like a leaky faucet blood poured out of her and wouldn't stop. We took her to the emergancy vet, all the while talking about what we would do if it was as bad as we thought it was. We got her inspected, and it confirmed: There was nothing they could do without significant risk. We chose to put her down. They walked us into a room and told us that there were after care options; they wanted to get the ashes back, but I said it was too morbid and that I only wanted a pawprint imprint. I feel sort of bad for shooting down the ashes thing, but I don't like that kind of thing. The room they sat us in had a generic therapy couch and a nice carpet and lights and whatnot, like it wasn't the most stereotypical looking "bad things are happening here" room ever. They took our money ("it's usually better for us if you pre-pay") and we waited. Eventually they brough her back into the room to say goodbye. She was still bleeding, so we covered the spot with a blanket so that we could focus on giving her as much praise and positive attention as we could. She didn't even look like she was struggling, even though she had lost so much blood. The doctor came in with his euthenasia tools: it would be an anesthetic overdose. I petted my dog until her last breath. She looked me in the eyes near the end. There was a moment when she was losing conciousness where she shook her head like she wanted to stay awake, but to no avail. On March 21st, 2021 my childhood dog Lilly died. She was a yellow lab. She was good. I will miss you Lilly. Good bye. ## 2021-03-22 **09:40:52** The bandwidth cost for the site in march has been 5x the amount from feb. Because the attention that FML post got, I think. Wow. **09:41:35** I'm taking the day off of work this monday to recover from yesterday. I'm not going to do a whole lot. Just relax **13:21:30** What's a good way to simplify git? You could use a plain list of archived zip files for every commit, or maybe an rsync if you want to be fancy. Use simple `patch` and `diff` to do patches and diffs. Have some commands to make this a bit easier like ` c` to commit. It would be a lot more simple, at the cost of a lot of the usefulness of things like git. I think this was how most collaberative projects were done back in the day before version control, actually. It seems appealing to me since I don't collaberate with other people when I program and I don't contribute to open source projects ever (besides my own, obviously). Having something super simple might be the best. **13:22:50** You could have something like ` r path/to/file` to get a fzf list of all the commits that file has had, and print the file at that location to stdout? Eh. Might as well just use git if you want to do something that complex **15:09:20** Moving over to useing sr.ht (sourcehut). For the price of what it takes to fill up my car with gas I can get this service that much more strongly aligns with my values. **15:09:50** And yes I knew that it's free while in alpha, but I feel like it makes sense to support it. **16:01:50** I'm thinking of doing a different release thing for the source code of the timtimestim site. I'll still be doing regular private backups, but releasing the actual files will happen inside of the newsletter. So every month I'll have a new release of the files in the site. Seems like a good way to not overload the servers on sr.ht with a bunch of binary files (images and other things I plan on adding in the future). And it also give me a bit of a buffer for people seeing what I'm working on in the repo. Might be a good call. Might not be. Could use up a lot of server space too... **16:02:19** Maybe I'll try to use it on sr.ht and see if I get a "friendly email" about storage usage or not. I'll have to see. **18:23:31** Fuck it. Uploading timtimestim to sr.ht. Better to ask for forgiveness right? I'll take it down as soon as they say anything **18:39:35** Setting up a cronjob to backup my bash_history file. That history file is really useful, and it only gets more useful as time goes on, and I've almost lost it a few times now. It's time to be more careful about it. First time using a cronjob. I hope it works **18:40:21** Today has been a lot of really yak-shaving things. Move over to sourcehut, try out some mail clients and give up, set up a cronjob I've been meaning to set up for a while. It was a good day for relaxing like this. **18:41:04** I'm still worried I violated something bad with the timtimestim site on sr.ht. They said no repo's larger than 3.5 GiB, but they also said that you shouldn't have a lot of binary assets. I'm not so sure which one it's supposed to be ## 2021-03-23 **02:32:21** In an ironic twist, I seem to struggle writing the word "precision" percisely without looking it up **03:13:30** The thing about ikna is that it was my "im learning how to use C! I've never done systems programming languages before!" thing. So I've had to rewrite it multiple times now as I've gotten better in the rapid learning phases of when you're learning a new thing. The git repo is like waves of "rewrite front/back with X" like 3 times now. **06:23:41** It's funny when my terminal gets fucked by faulty output from a program I'm writing. This time is was particurarly bad and chagned how all the text was rendered. Looked like wingdings **18:40:58** Tried out the vis editor for a bit. The ideas in it are interesting, but I just can't get myself to be interested. I'm so used to vim at this point that it's hardly even worth it to move over to a new editor. Also I couldn't find out a way to set the color scheme to a simple black/white like I have in (n)vim, which was annoying. I know I'm a psycho freak who likes syntax highlighting off and white text on black background, but it's really starting to get annoying that so many editors don't even have an easy way to turn that crap off. ## 2021-03-24 **04:22:27** The length string refactor of ikna has actually lowered the lines of code count a bit, I think. It's a lot more simple in a lot more places too. I think this is a win. ## 2021-03-25 **05:05:30** Dman I love the smell of rewriting the CSV parser again in the mornings **05:06:35** Seriously. Is this like, what, attempt 5? No hyperbole. This one is *way* more simple, though, so I've got that going for me. In fact, I'd wager it feels pretty nice to simplify the implementation so much ## 2021-03-26 **04:35:41** Feels good to be dropping the lines of code count on ikna. Much more simple now **04:35:49** Probably faster, too. **04:35:56** Less realloc() **05:06:03** Line of code count continues to fall. I think I've lowered it by at least 100 **07:05:03** When I step through my code with a debugger I realize just how absurdly fast computers are all over again. I step over an entire function and it takes an *instant*. Even though I know that function is a workhorse function. It doesn't matter; my human perception of how much work it takes to think about the function and its concequences pales in comparison to the execution speed of this shitty laptop. ## 2021-03-27 **09:07:29** Finally got the build function in my vimrc working better. Less errors every time I press it and it auto-saves before building **13:52:21** You know what? Fuck email clients. I'm just going to use the posteo roundcube thing when I need it. Shit. **16:25:39** idea: command line lorem ipsum generator in tutils **16:26:46** ""There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain..."" **17:33:19** I was iterating past argv and it printed environment variables. Learned that on unix systems theres a third argument to main() that has env vars in it. I was just going over the stack. Yay **17:37:29** Actual error in some old code: "Malloc failed somehow. Call an exorcist or something" ## 2021-03-28 **09:12:02** `// Cursed be the sould who views this` **10:22:51** Yessssss keep lowering the line count yesssss ## 2021-03-30 **05:15:10** Ughhhh. Woke up late today. My body just wanted to sleep in I guess. I feel well rested, if a little guilty **06:55:08** Okay. I sent in a request form about COVID vaccination. I hope I get it sooner or later. Probably later, if I'm being totally honest with what I expect. Pre existing medical conditions be damed. I'm not 50 fucking years old ## 2021-04-02 **18:13:41** God fucking damn it I hate internet stuff so fucking much **18:14:14** So I'm trying to do a backup of this tumblr that I like. Some sort of comic diary that's been going on for years. Whatever. **18:14:31** And so I do the normal `wget -pkm ...` thing that you're always supposed to do **18:14:45** but! Tumblr is *mordern* and so doesn't want you to download their images **18:14:48** Fuck em **18:15:50** So instead I thought that I'd use the other website archival tool that I like, SingleFile. I have the web extension and I use it to back up individual pages for things like my newsletter and shit. Really cool that it holds the page in the single file (get it lololo the name hahahahahah why me) **18:16:08** But you see the web extension is really... **18:16:09** Shit. **18:16:10** It's shit **18:16:52** Basically, because of how the firefox browser does things, it can't even be told to download anything outside of the downloads directory, which is just *splended*. But whatever, I can deal. I'll just use the command line tool instead! **18:16:59** Enter: Singlefile Command line tool **18:17:04** FDSUIFSDOAJFSDIOAJFSDO **18:17:07** So this tool **18:17:09** This TOOL **18:17:21** Uses fukin node.js, because reality is a joke **18:17:32** And I gotta download npm to install it **18:17:39** Because my life is in shambles **18:17:50** AND npm is still downloading. For like 20 minutes now **18:18:20** Oh, and before I forget, I also gotta somehow get it to connect to my web browser through yet another layer of program. **18:18:44** And when that's all said and done. When i finally can download a simple fucking web page through a command line interface **18:18:50** When the sun burns out **18:19:12** I will still have to make a script that crawls the tumblr blog in the right way to archive the actual pages I want. **18:19:21** And believe me, it's going to *suck*. **18:19:36** Fuck tumblr. Fuck the internet. Fuck npm and node.js. And fuck you. **18:19:37** Fuck **18:28:17** AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA **18:28:22** WHY **18:28:27** WHY IS THIS SO BAD **18:28:32** I JUST WANT MFDSJAKLFDSAJKLFASD **18:28:35** FDSJKLFDSJKLAFJKDSLA **18:30:07** You know what. I know what. I'm going to fucking give up **18:31:08** Oh look it works when I point it at *chromium* but firefox is just too fucking GOOD for it, huh? fuck me **18:37:53** Okay fine. I'll fucking do it with chromium **18:38:06** I hate everything about the internet right now **18:41:56** Whatever. I'm done with this for now **18:42:11** I'm going to get a fucking hernia if I keep stressing myself out like this. God damn ## 2021-04-04 **12:31:44** Knowing how to use vi(m) is really satisfying. Makes you feel like a badass for getting down. **12:33:19** Iv'e been reading "the elephant in the brain" and doing other things this weekend. Haven't gotten a lot of stuff done, but oddly I feel kind of okay about it. I'll probably be releasing the "Evil/Epic" dual post today. Probably **16:18:59** friend: "hey you availiable for a voice chat" **16:19:07** me: "yea! let's go!" **16:19:26** friend: \*nothing for 15 mins\* ## 2021-04-08 **07:05:04** Just finished reading "the elephant in the brain". Ho,y. Shity. ## 2021-04-09 **05:56:56** Messing around with making music in MilkyTracker. It's been a while since I've tried to make music. I've got a musically inclined friend who's been teaching me some music theory, and It's kind of fun :P I think I've got something decent going here. **05:57:13** MilkyTracker is kind of weirdly laggy in places? I don't know. It's weird. ## 2021-04-10 **02:06:53** Huh. My death countdown clock is exactly on 19000 days. It's going to roll over to 18999 in a few hours. ## 2021-04-11 **16:31:21** I got the covid vaccine yesterday (the johnson & johnson one). I was doing well, but then later in the day I came down with a feaver and nausea, and now today I'm all lethargic and sore and can't eat much of anything. At least it's the weekend, so I don't have to burn vacation days. **16:31:47** Still worth it to get the vaccine, though. Although I'm worried about the new strands. That feaver was *not* fun. ## 2021-04-12 **05:03:16** Oh man I feel a lot better this morning. Still a little gross, but nothing compared to yesterday or (shudder) the night before yesterday. ## 2021-04-14 **03:49:40** It hurts being in a world this inadequate. I'm so fucking unlucky, while also being lucky enough to exist at all. Fuck all this **04:04:12** I'm just... I'm sorrounded by fools optimizing for who can be the most moronic. It's a race to the bottom, and they're going to drag me down with them. **04:27:25** Not to mention how arbitrary and stupid most everything else I have to deal with is. Tinnitus? Why is that a thing? Fuck you that's why. ## 2021-04-15 **05:27:06** Oh my god aaaaaaaaaaaaaaaaaaaaaaaaaaaa **05:27:45** Reading some old scott alexander: "Such a response would be so antisocial and unjust that it could only possibly come from the social justice movement." **05:28:10** Here I am reading instead of doing interesting things. Gross. I'm just not feeling it mr.krabs ## 2021-04-16 **04:14:10** I've always had the thought of "I'm not smart enough to contribute to AI", even though I know that AI is probably one of the most important things I could possibly be working on. But I've never actually *verified* that I'm not smart enough. So why not spend a year or so trying to learn as much as I can about the technical details of AI and then see if I think I still can't handle it? **04:15:37** I don't know a lot of math, so that's going to be one of the harder parts. But I'm familar with formal systems anyways, and abstract thought isn't strange to me. Give me enough time and I can probably work backwards from a complex equation in some important AI paper until I actually understand it, even though it's going to be difficult when I first start since I have so little to work with in the beginning. **04:16:36** And it's not like I don't already understand some of the high-level concepts and problems in AI alignment (which is the sub-field of AI that I think is obviously the most important). I'm just worried at my actual probability in being able to advance the field, even given that I practice it for X years. **04:18:13** So, yeah. I think I'm going to try and test it. A year of on-and-off practice and research and thinking. Of *honest* effort, instead of making excuses like I have been. At the end of it I should have a much better understanding about how likely it is for me to be able to do something interesting before Google makes a advertisement-optimizing AGI or something and kills us all. **04:19:29** A year is also a good time scale to test it out with, since I can test it over a longer period of time instead of having to jump to a snap conclusion. To answer the question of: do I have the mental stamina to keep up with this kind of thing for a year? **04:21:30** I should mention, for the record, that I think there's a okay chance of me actually being intelligent enough to do *something* useful for AI alignment. Maybe not super amazeballz you've-done-it-tim kind of progress, but at least a little. Probably not within this year, though, I've got far far far too much to catch up on. **04:22:45** You can only tell yourself "I'm not smart enough to contibute to AI" so many times before it starts to seem like you're using it as an excuse to ignore a hard problem, especially one that you think is *literally the most important problem humanity is ever going to face*. **04:23:06** And hey, it'll be something to keep my brain occupied. ## 2021-04-19 **03:58:02** Anything is possible with a sufficently high number of Wikipedia tabs. **17:59:12** Fuck printers and scanners. And fuck the people who pretend like it's okay for them to be so bad. **17:59:17** And fuck you too. **17:59:23** I have such a bad headache ## 2021-04-20 **04:22:00** happy 420 **04:38:28** I want to live in Mackinac Island, Michigan. No cars, small place, islande in the middle of nowhere. It would be beautiful and serene. Pls ## 2021-04-22 **04:06:38** I object to reality and thus strive to rewrite it. **05:12:42** I'm grateful for the fact that so much information is on the internet. If I'm truly motivated to do something there's always a storm of people chomping at the bit to teach it to me. **05:15:00** I'm grateful for the nice walk I took this morning (even though it was rather cold, somehow) **05:15:42** I'm grateful for the fact that my waterbottle is literally just a slab of metal, and I don't have to worry about it breaking. **05:16:23** (If you haven't noticed, I'm trying to do the "gratitude journal" thing. I'm been in kind of a funk, and this is one of the emperical ways proven to help in a lot of cases. ## 2021-04-23 **07:07:22** I'm grateful for... my fountain pen, wikipedia, and my smiling inflatable ball thing that sits in the corner and smiles. ## 2021-04-25 **07:37:26** I'm grateful for music, chocolate milk, and long walks in the dead of night. **07:38:11** And yes, I realize I missed the previous day for the gratitude jornal. It doesn't have to be perfect **09:04:06** You can use calibre to read epubs with `ebook-reader` command on the command line. Because of course you wouldn't document that in the calibre man page. Fuck you. Just have a command line switch instead of filling up the program name namespace asshats ## 2021-04-26 **07:16:22** I'm grateful for a good night's sleep, all the educational things on the internet, and sugar. Mmmmmmm sugar ## 2021-04-27 **06:55:00** I'm grateful for... my sleep schedule letting me not have to wake up to an alarm, my ability to read, and my youth letting me exercise and be active. ## 2021-04-28 **07:09:41** I'm grateful for... that great sleep I had last night, the funny/cute things I find online, and my keyboard ## 2021-04-29 **04:49:35** Damn internet is acting up again. **04:50:19** I'm grateful for... my weighted blanket, my local library, and i3wm ## 2021-04-30 **03:31:41** Last day of the month. Time to write out the newsletter. **03:32:09** I'm grateful for... the newsletter, my website in general, and weird crackpot math theories. **06:35:46** Newsletter is out now yay. There's a certain pain in trying to find the link to people's dumb ass rss feeds. If you're ever looking for them, wordpress blogs make them (appended to `example.com/`) `rss`, while others can be `rss.xml`, `feed.xml`, `atom.xml`, `feed`, and so on. It's really annoying, but at least a lot of blog generators make auto feeds so most of the time these people don't even know they have it. Substack does `feed`, just so you know. **06:41:47** I've been thinking about the whole "infinite set" thing. Where there's supposedly more real numbers than natural numbers. But that doesn't make any fucking sense? Like... okay. Say you have a schema for converting natural numbers into real numbers. Hell, I'll make one up right now for you. First digit is negative or positive, 1 is negative 0 is positive. The next digit needs to be a non-zero number. Then, if you want the decimal point you just put a 0; and if you want to "escape" the decimal point because you actually need a 0, just use 00. There, suddenly you can map every real number to a natural number using a (injective, non-surjective) function! Therefore there's *at least* as many natural numbers are there are real numbers, otherwise you wouldn't be able to do this mapping. Infinity is infinity. QED? **06:42:49** And yeah I've been reading about the whole Cantor's diagnal argument and whatnot, and it doesn't make sense? Like, you make a set of all strings of 1's and 0's, and yet you claim that the set doesn't contain some string of 1's and 0's? Huh? **06:43:32** I'm sure that there's something I'm missing here, since people a lot smarter than me have thought about this problem for quite some time and the whole "more real numbers than natural numbers" thing is widly accepted, but I find myself *extremely* confused. **06:50:00** Only about 2 weeks of studying math and I'm already becoming contrarian about it. Or at least I'm just really uninformed or stupid about this particular case, which is much more likely. But setiously, what's going on here? Do I just have the wrong definition of "infinity" in my head? It means literally *not* finite, right? That is, not countable? I mean, I get it okay. You could count digits between 0 and 1 forever and ever without ever reacing 1, but that doesn't mean you can't come up with just as many natural numbers right? It's infinity, it's not like you're going to run out? **07:00:35** And let's not mention the weirdnedd with embedded agents vs dualistic agents. And by "lets not mention" I mean I'm going to mention it. This is also almost certantly a case of me being totally fucking confused (in fact, probably much more likely, since I don't know a lot about the formalizations of agents), but I'm still confused and writing down my thoughts keeps me from focusing on the void so fuck you. So you have AIXI, which is supposedly a dualistic agent; that is, that it isn't actually part of the environment that it's analyzing. But then you tell me that it does this amazing non-computable thing where it runs a universial turing machine over all possible possibilities of this environment, basically creating every possible environment and picking and action fron that. I'm willing to accept that AIXI is simply more powerful than the environment it's outside of (obviously, since it's incomputable), but what I'm confused about is the whole simulation part. In infiniate simulations there would have to be at least one in there that has a *less functional model* of AIXI, right? That sub-agent would be trying to optimize for the exact same thing as AIXI is (at least one of them would be, through sheer probibilities plus infinity). In a sense it would *be* AIXI, except less functional in many many ways, but still a viable sub-agent. Like if you got a partial lobotomy you would still be a continuation of conciousness of yourself after the surgery. This inferior AIXI would be *embedded in the environment*, in the sense that the full AIXI would be perfectly simulating the environment with this inferiror version of itself in it. Since the full AIXI is dualistic, it can do that sort of simulation. So either there's no possible AIXI-mini that AIXI-prime can simulate to the point where AIXI-mini is able to reason about AIXI-prime and itself, or it *is* able to. If it is, then that means that in certain internal simulations that AIXI does, it's an embedded agent (albeit gimped, since it's sub-agent AIXI-mini has to work within the rules of the embedded environment). **07:01:57** The intuitive objection I have to this is that you could probably imagine an AIXI that's not capable of creating sub-agents (how would you formalize that though?), thus maintaining the important (?) distinctions between dualistic agents and embedded agents. ## 2021-05-02 **05:57:57** I'm grateful for... this jornal software, my glasses (I'm blind as a bat otherwise), and pizza **05:59:10** Yesterday was fun. My sister is teaching me how to plant plants and grow them, and it's a lot of fun. We went to this big ass botanical garden and I picked out some pretty pink petunas, which are currently planted in a giant pot because it's the only one that would fit how many petunas I got :P. It was a lot of fun **06:56:23** There's a competition going on in the Optimalverse fandom right now, and it's really awesome to finally get some new stories after such a drought. **18:46:27** You know that feeling you get behind your eyes when you've read *all day* and now you're comfortably exausted? I have that feeling right now. Reading all day. I love this feeling. It's soft. ## 2021-05-03 **07:09:51** I'm grateful for... jogging, soft fuzzy things, and fidget toys. **07:11:53** So I did some more confusing reading about AI research this morning. I still don't understand a lot of what they're saying, but that's fine. To learn is to be confused. I'm reading ahead anyways since there's parts I *do* understand and I want to have a vague idea of what it is I'm looking at before I dig deeper into the individual parts. **07:12:34** Other than that I also went on a jog. Pretty normal stuff, except I was jogging in the rain! It's one of my favorite things to jog in the rain, even though I feel sligthly insane any time I do it :P. ## 2021-05-04 **07:35:21** I'm grateful for... fanfiction stories, vitamins, and my window garden ## 2021-05-09 **06:03:14** Haven't posted in the jornal for a while. Just reading things and whatnot. Learning more about AI too, which is fun **06:03:40** I'm grateful for... icecream, not being lactose intolerant, and soft stuffed animals **09:28:55** I'm downloading some web novels that I've neglected downloading for a while. I wish everything were put onto ao3 since it would be so much easier to just download the whole novel in full instead of having to crawl a table of contents. Ugh **09:29:07** Not to mention that there's so many damn incomplete ones out there. **14:28:16** When you're so impressed that someone has a contrary opinion that you can't help but adopt it for yourself. ## 2021-05-10 **06:27:19** I'm grateful for i3wm for being decent, cool programming streams by Jon Blow, and Marcus Hutter having made a "gentle" introduction to the AIXI concept that I can use as a launch pad to understanding agents and shit **06:48:46** Mathematical notation is such a fucking mess wow **06:49:06** I guess people like feeling smart understanding it or something. But jesus chirst why ## 2021-05-12 **05:58:15** With the drawing of a single line "WALK FOR THE CURE" becomes "WALK FOR THE CUBE" **18:40:38** My uncle from across the country got a door dash to delive pizza to me wtf freaked me out **18:40:48** Great surprise tho :D ## 2021-05-15 **07:20:15** I wonder if I should get a pinebook as my next laptop after this one porks out... Might be for the best, all things considered. Even though it's ARM (vomit) ## 2021-05-16 **10:08:05** I'm starting to think that the best version control for a single person team (a solo programmer like myself) is just to make a zip archive of your project every once and a while. Don't worry about complex git servers, don't worry about git ignores, don't worry about how git can't handle binary files. Just zip archives. Have a CHANGELOG if you want to know what you changed, so you know what archive to look in if you need to "revert" something. It would use up a lot more space than delta compression, but damn it would be so much simpler... ## 2021-05-20 **18:29:39** `AstNode new_ass_node; // my life is complete` ## 2021-05-23 **08:19:44** If the teacher doesn't arrive in 15 minutes you're allowed to leave the corporeal realm and trancend your mortal coil. ## 2021-05-25 **03:35:20** 9 weeks, 6 days, and 49 minutes of uptime before I had to restart the laptop. Damn. **03:35:31** Sleep well, my prince. ## 2021-05-29 **17:41:07** I'm grateful for my keyboard, my books, and my ability to read in general ## 2021-06-06 **15:33:20** Why am I me and not someone else? ## 2021-06-28 **04:40:53** Writing prompt: Instead of eggs benidict, you get Eggs Benediction ## 2021-07-03 **08:25:15** I'm grateful for this math book I'm reading, this good music im listening to, and this good water I'm drinking. ## 2021-08-15 **07:22:13** Remember this thing? Huh. ## 2021-08-28 **15:54:13** 1997, the year I was born, is a prime number! []{#newest}