Journal & Changelog

This page was previously known as the "detailed website history" page, but has been generalized to serve as both a personal journal and the site's changelog.

Entries created after the big site reorganization of 2023-12-15 are more personal and/or creative and thus jumping to that point may be more interesting. That's where the journal starts, whereas prior entries usually read more like a changelog.

All dates in the following list are formatted as year-month-day (ISO 8601).

  1. : I created the site, with only a minimal description of roughly what the site would be about. The site has no CSS customization at this point, only basic HTML.
  2. : I rewrote much of the text from the previous day to feel more natural and more structured. More importantly though, I uploaded a downloadable Doom 2 level and a Lua programming Anki quiz deck. Thus, this was the first day that this website became useful! I also added some links to other sites that users may find useful or interesting (such as on this day too.
  3. : I uploaded two downloadable documents I wrote about musical tuning systems. I also switched the links that went to my own site to use relative paths instead of absolute HTML addresses. I also added additional links to other websites, such as web revival related sites such as the famous
  4. : I finally added some basic CSS styling and custom pixel art fonts. That means today is officially the first day that my site doesn't look like a barebones HTML page. The site now has a nice dark pixel art theme. I also ensured that the CSS style is font-size relative and also free of misleading or extraneous settings.

    All the settings are intentional, not merely imitative or copy-pasted. The addition of automatic margin padding is an especially great legibility improvement over the HTML defaults. Also, I clarified a potentially confusing point about how musical note names work and added some paragraph breaks to various long list items.

    Additionally, the HTML code is designed to be semantically easy to read. Little would be gained by removing whitespace (etc) considering how small the files are regardless. Lastly, I added some new links related to the web revival movement.

  5. : I added some links and helpful overview info for people who want to find an easier way to pick good-looking colors for websites or for any other graphic design purposes. Color theory is interesting I think!
  6. : Today is thanksgiving! After eating with my family (etc), I still found some time to update my site. I added a useful link and description for automatic detection of broken hyperlinks in HTML documents.

    I also replaced the previous pixel art font with one whose opening quotation marks don't have the wrong directionality. I had previously tried using the <q> tag, which fixed the opening parentheses's directionality but caused the quotation marks' underlying characters to no longer be copy-pasteable, which I think would've been unacceptable for a good user experience. The new font also flows well enough to enable me to now use justified text instead of ragged-right.

    Finally, I added more paragraph breaks too, rephrased a few things, and improved my CSS file a bit as well.

  7. : Switched the CSS file to use border-box spacing for easier and more logically consistent element width control. Tweaked the HCL/LCH color section some.
  8. : Split the detailed website history (previously named "fine-grained website history") section out of the main index.html page, which up until now was the only page. I'm still deciding how much of the site I want to have as separate pages versus as sections of one (or more) page(s). Each approach has pros and cons. The detailed website history page seems like an especially good candidate for separation though.

    I've also added HTML id attributes to all of the headers on this website, so that users will now be able to link to and bookmark specific headings so that the user can jump to any heading automatically (thereby preventing the user from having to scroll to each section manually). I also added convenient # links beside all the headings so the user doesn't need to manually modify the URL to make heading jumping work.

    It would be nice to automate process for this, but for the time being I will set up these heading links manually. I still haven't decided how I want to set up automation for my website and in what respects. Once I do though, more will probably be automated.

  9. : I've added a table of contents box containing links to all of the headings of the sections that are currently on the main page. This will make navigating the page and seeing an overview of what is on the page considerably easier.

    Regardless though, the current mostly one-page structure is temporary. Site navigation and aesthetics will improve considerably over time as I make more decisions about the layout and content. For now though, the design is minimal but sufficient.

    I plan to ensure the site is useful for readers throughout its entire evolution, as it already was/is as of the 2nd day.

    Additionally, I added a recommendation link for a spell checker usable with HTML and CSS to the recommendation link list, plus another web revival (a.k.a. old net) movement related link.

  10. : I set the HTML lang attribute to English (instead of relying on automatic browser language detection). I installed a W3C validator extension on VS Code, fixed some potential problems it identified, and then added some W3C validation info to the recommended link list.

    I changed the downloadable files to no longer use spaces, even though the file downloads were working anyway despite containing spaces. Spaces in file names are more natural for users who are downloading files, so the rule against spaces actually seems counterproductive when considered from a first principles standpoint.

    W3C marks such spaces as "errors", even though I've never seen files with spaces not work. Now I'm using underscores for file spaces instead, since hyphens (the other common space replacement choice) can actually cause conflated meanings due to hyphens already having other common meanings. For example, "12-tone tuning" would be confusing (and would lose information) as "12-tone-tuning" and thus is better as "12-tone_tuning" to prevent any conflation of distinct meanings.

    I've also returned to using left justified text because HTML and CSS's justification behavior is too poor, even when using "media queries" to compensate. Likewise, since soft hyphens insert extraneous hyphens when copy-pasted (even when not visible!) soft hyphens thus also seem poor for creating a consistent and accessible user experience. So, I've deleted those too.

    Poor implementations of features in software often force such choices when one cares about design, even if the feature(s) would in principle be good otherwise.

  11. : Changed all hyphen based HTML id attributes to use underscores instead, which I am standardizing on for representing spaces instead of hyphens because hyphens can have other meanings and thus underscores are a better convention than hyphens for HTML mostly, as mentioned previously.

    Also, I've put the Lua Anki memorization card deck into a zip file now to save space.

  12. : I added a basic favicon for the website (the letters "WG" in a solid black circle) so that bookmarks and browser tabs are easier to distinguish and navigate. Perhaps I will add a more artistic favicon in the future though, after I've established a stronger aesthetic theme. I also added file extensions in parentheses (e.g. "file description (EXT)") to the visible link text of the downloads section.
  13. : I added cite attributes to the blockquotes to ensure search engines know where the quoted text is coming from. I added time tags to all the dates on the site for semantic HTML purposes.

    I corrected an (ab)use of <abbr title="..."> by changing it to <span title="...">. Apparently, the correct way to use the HTML mouse hover-over tooltip popup explanation system (akin to what abbr gives you) is actually to title a span. Otherwise, abbr could mislead a search engine or screen reader or user into thinking that a general-purpose explanation is a translation of an abbreviation. This <span title="tooltip text"> trick will be a nice way to emulate footnote-like helpful inline notes that don't disturb the flow of the text in HTML.

    I also added an explanation of the time format to the top of this detailed website history (changelog) page rather than redundantly labeling every date with spans. I've cleaned up some underlying CSS code for a few things on the site too.

    Finally, I added more semantic HTML tags (such as header, main, nav, and section) for better search engine awareness and screen reader compatibility. Previously only a few things (such as the table of contents) used semantic HTML tags. Now though, all parts of the body text are covered by at least one semantic HTML tag.

  14. : I changed my intra-page navigation links to use a more concise syntax. I added a link to the HTML standard to the recommended link list. I edited the "auto rename rag" recommendation to account for some usage problems. I implemented CSS styling for kbd for representing keyboard input in HTML.
  15. : I added <meta name="description" content="..."> elements to all of the existing HTML pages for the website, so that the pages are potentially easier to find and to understand the purpose of.

    I also fixed a problem with hyperlinks where they never showed a different color after being visited (which would make keeping track of which links had been visited harder for website guests). I also made the style of keyboard keys (HTML kbd) more visually consistent across browsers and fit more naturally alongside normal text.

  16. : I edited the "page not found" page to be less generic and much more helpful. It now lists five different ways that a user can end up not finding a page and then suggests a few different ways of trying to resolve that problem.

    I also made it so that the website now displays correctly in offline mode (i.e. when browsing the site directly from fully downloaded copies of all the site's pages in a local folder). I tested the offline browsing some in both Firefox and Chrome.

    The key to making the website work offline was removing the / in all of the / prefixed "absolute" site-relative HTML hyperlink paths within the website. The "absolute" site-relative paths are often recommended online for supposedly making relocation of files easier, but mostly such paths actually seem to make the site more brittle, less flexible, and less of an accessible user experience for people who want to save offline copies of the site to use without an internet connection and/or without wasting internet bandwidth and server load, etc.

    Firefox is my own preferred browser by the way, because it respects privacy and freedom much more. Such choices matter, because it cumulatively significantly impacts the future freedom of the internet and thus of free speech and human rights itself. I recommend it. I've only ever encountered a tiny minority of websites that don't work correctly in Firefox, but the browser is far more ethical in how it treats users' data.

  17. : I added a recommended link to a famous well-written introduction to shader programming (The Book of Shaders).
  18. : I changed the alt text for the "hosted by Neocities" logo link to be (probably) more friendly to screen readers for people with visual disabilities. Previously, the alt text had been wrapped by "[image: ...]" and was more abstract, which was fine for visual displays and was more concise but less descriptive.
  19. : Removed the three highest resolution favicon variants (180x180, 192x192, 512x512) to avoid browsers unnecessarily downloading them for little benefit relative to the amount of data. Too much software and too many websites are disproportionately wasteful with resources I think. Many sites are 90%+ data waste. That harms the environment and also users who have slow internet connections (such as many people in countries where data may be very slow and charged by amount).

    Once my site is further along and I've created a more interesting favicon than just the "WG" icon ("WG" in white inside a filled black circle) that I'm currently using then I may bring some higher resolution favicon bindings back, especially if I can just use a SVG file to handle all the higher resolution cases (which would be much less waste relative to the value the icons bring).

  20. : I added a recommendation link and description for a cool website I randomly stumbled upon: "The Obscuritory: For Games Unplayed and Unknown".
  21. : I made some minor adjustments to the website's text (rephrasing a few things).
  22. : I posted a new music composition (yanqin-based, Chinese rustic style music) as a downloadable MP3 file! This composition is the first new song I've composed in roughly 10 years and thus is a major milestone in me breaking through my creative roadblocks (much like this website itself is likewise a breakthrough event)! The title is "The Secluded Wilds".

    I've also added file sizes to all of the downloadable files now so that you know how much network bandwidth and disk space each will require. This actually matters (even for these "small" files) for users in places with very poor or metered internet connections and helps reduce data waste.

  23. : I originally planned to try to set up custom website domain forwarding tonight, but I ended up doing some additional xmas shopping for my family instead and so I'll have to do the custom domain stuff another time. I thought I'd already ordered everything for xmas already but felt compelled to add one more item for someone and it ended up taking a while.
  24. : Today I again intended to work on the custom domain for the site, but this time I ended up helping some of my family members pick xmas gifts for other people (whereas yesterday I was buying extra gifts for people), which used up more time than expected.
  25. : I added a new link to the top of this page (the detailed website history) that enables the user to instantly jump to the bottom of this changelog list so that the user can read the most recent changes more easily.

    I've also attempted to bind by custom domain to my website tonight, but it doesn't seem to be working yet. I'll check tomorrow to see if the change has propagated yet by then.

  26. : I checked whether the custom domain for this website has propagated yet and it is working for me now. It should be available for everyone else soon too if it isn't already. Thus, this site can now be accessed via the shorter domain in addition to also still being accessible from the old URL (which redirects to the custom domain now).

    The "subdomain" URL was still leading to the generic parked domain page this morning though. My name registrar's system for that didn't match Neocities' instructions on setting it up. However, I found a different setting on my domain registrar that may fix it. UPDATE: Yep, the new setting fixed it. Now the www version works too. Good! It's nice to have the custom domain finally set up!

    I also added several new very useful links to the recommended links list and edited and refined some other text on the website too.

  27. : I've added a 2nd new music composition to the list of fun/useful content available for readers to download! This time the music composition is a horror-themed dark music composition called The Misty Abyss. I hope you enjoy it!
  28. : I've massively reorganized and restructured the entire website! Page navigation is now much improved and the vast majority of the text body of the website now exists on separate dedicated pages. This is a huge improvement over the previous version of the website! I've been wanting to do this for a while.

    The reorganization and restructuring not only makes the website much less visually overwhelming but also greatly reduces data waste since text that visitors' were not seeking no longer gets loaded unless the corresponding page is visited.

    I've also greatly improved the look and feel of the main website title and subtitle.

    Furthermore, as of today, this page (previously known as the "detailed website history" page) has now been generalized to also include whatever personal thoughts I feel like sharing, even on days where no other changes to the website have been made! I am looking forward to having a nice low-burden system like this where I can share brief thoughts without the expectations of a "full" blog. Combining the changelog with this personal mini blog idea saves effort and is pleasingly natural and intuitive.

    I've run automated checks on my pages to catch errors. However, big reorganizations have a way of breaking things. Report broken content via my contact info page!

  29. : Today I've changed all the navigation boxes and notice boxes (the colored boxes used for special content on my site) to use rounded corners. This makes them look more classy, makes their special purpose nature clearer, and makes them more pleasing to the eyes. It's a small change but a significant improvement in style.

    I've also added a new recommendation link for a new VS Code tool I've started using today, which is an extension to insert a timestamp automatically. From now on I'll be using that to write each of the dates in this list. This eliminates the chance of errors.

    More interestingly and flavorfully though (and on a personal note unrelated to the website's content), today I've been experimenting with watercolor painting in the newly release wonderful traditional art media simulating painting program Rebelle 7. It was released just two days ago (on ). I ordered it on pre-order at a great discount and have been very excited to try it out. I'm looking to branch out into watercolor painting!

    Previously, the main visual art mediums I've worked with are digital sculpting, seamless texturing, and shader programming. I've dabbled briefly in pixel art and vector art on and off, but kept bouncing off of them somewhat. Watercolor painting recently caught my eye though as a more expressive way to create interesting color blending and variation, which was something that in contrast had always frustrated me in other art programs since I'm a big fan of multi-coloring and nicely textured looks.

    Experimenting with Rebelle 7 today in that respect exceeded my expectations! It's multi-color brush system and watercolor diffusion are fantastic and are just the kind of color variation thing I've been wanting to have for creating 2D art for years!

  30. : Today I focused on exploring more watercolor effects using Rebelle 7, as well as some of Rebelle's other non-watercolor capabilities (which are also great, such as the multi-color oil paint brush). It has been really enjoyable and I am feeling more hopeful about learning to paint than I ever have before! I'm excited for the future in that respect and in many others recently. Things are looking up now, in several different regards in my life lately!

    I also watched a sci-fi film series with my family today and that was enjoyable too. It was a great day overall I'd say.

    I didn't have time to do any more website work though, besides this log update here of course. That was as planned though today, so no worries! Thank you for your time and attention and for reading and visiting my website, as always.

  31. : Today I wrapped a lot of xmas gifts I bought for my family. I hope they like what I got them! My adventures in exploring watercolor painting features (plus some other available forms of art media) in Rebelle continued today as well. I also attended to a few other miscellaneous tasks, besides my usual daily activities of course.
  32. : The time passed by fast today for some reason. I did hang out with my family some and watched a movie with them. I also attended to some miscellaneous real-life things, but mostly today was a relatively uneventful day. It can be good to give one's mind breathing space sometimes like that, though admittedly my time partly slipped away from me today and much of it wasn't intentional. My perception of time sometimes surprises me, as is human nature it seems. Oh well though, such is the natural variance of life: that inherently imperfect tapestry in which we reside.
  33. : Nothing much to report again today! I mostly attended to some more holiday related things and also a variety of other miscellaneous tasks such as processing some emails. I did have the chance to read about watercolor painting more for about an hour today, which was nice. I also took care of a package that came in the mail today too. Anyway, I hope everyone reading this has a great day/night and a wonderful upcoming holiday!

    Oh! Actually, one interesting thing was that I learned about the existence of brush pens (which are like paint brushes but with built-in ink like a pen) recently and decided to buy one in the hopes that it will strain my wrist less than conventional writing implements such as ballpoint pens. I also wonder how brush pens compare with fountain pens, but first I'll try a brush pen since it seems more promising conceptually, because paint brushes have so much more of a gentle touch compared to pens.

    Using a brush pen may also have the benefit of improving my brush handling skills a bit (not that it's needed for Rebelle, but perhaps it'll help me understand traditional art mediums a bit better, perhaps subconsciously). I'm looking forward to it! I write a lot.

    I am also finally moving away from using any cloud based data backup and storage "services" recently due to many of those companies increasingly integrating extremely unethical "AI", making it now impossible to trust any them. Privacy matters! This new wave of data-scrapping based "AI" is essentially systematic theft in reality.

  34. : Tonight I played Dome Keeper (one of my recent favorite games) for a couple hours, watched another movie with my family, and then later on also created a policy page for my website as a partial safeguard against exploitation.
  35. : Besides normal everyday stuff as usual (e.g. my work) today I also decided to go ahead and order a cheap fountain pen just to try one out. If I like it enough I can get a higher quality one later. I'm interested to see which of the two writing instruments (brush pen vs fountain pen) will prove to be more effective for reducing wrist strain and for everyday pragmatic use. I also did a bit more handling of holiday related things (e.g. handling more gift arrivals) and hung out with family.
  36. : Today I handled more holiday related things and relaxed mostly. Happy upcoming holidays to everyone! Christmas Eve is tomorrow!
  37. : Merry Christmas Eve! Today I wrapped the last of the holiday gifts that arrived late in the mail. I also played some Dome Keeper and watched a movie with family, plus I did a few other miscellaneous things.
  38. : Merry Christmas (or Happy Holidays) everyone! ๐ŸŽ„๐ŸŽ๐ŸŽŠ๐Ÿฅณ๐ŸŽ‰
  39. : Besides my daily necessities (as usual, of course), today I focused on enjoying my gifts, having fun, and relaxing. I was happy both with what I received and with how my gifts to others were received. I hope you all had a wonderful xmas too!

    By the way, did you know that there's a name for the day after Christmas and that some people celebrate it? It is called "Boxing Day". It seems to be more of a UK term.

  40. : Much like yesterday, my free time today was spent enjoying the gifts I received over the holidays. As such, it was an easy going and pleasant day.

    Also, because I've been in the mood for watercolor and ink art lately, I used some gift card money for Steam to buy three ink themed video games: "Inked: A Tale of Love", "Drawngeon: Dungeons of Ink and Paper", and "There Will Be Ink". I played each of those briefly today and am pleased with all three so far.

    They each have nicely distinctive art styles, though in "There Will Be Ink" it was harder to discern gameplay elements due to everything in the game being zoomed out so far by default (and staying zoomed out usually being necessary to see and aim at units).

    Along the way, today I was also reminded of the story of the Gordian knot and was struck by how it is an apt analogy for the nature of what may at times be needed to break out of creative stagnation (generalized writer's block) and of the importance of not giving too much credence to false constraints and false authority. The insight embodied by the metaphor or microcosm of the Gordian knot helps free up creativity.

  41. : There's not much to report today. I've mostly just been enjoying the holidays, as is typical for me in the week or two (or three) around Christmas.

    Here's a random thought I had today though: Subtle is not the same as insignificant. Nuance is essential to doing justice to most things, whether creativity or ethics.

  42. : Today I got my fountain pen ink in the mail and so am now able to actually test and use the fountain pen I got a few days ago. For the ink I picked Noodler's Midnight Blue, which is a nice blue color that incidentally reminds me of the cerulean blue pigment palette color available in Rebelle 7. The fountain pen I chose also has swirly a blue-black-white color wrap design, which I intend to use as a reminder that this particular pen will always contain blue ink.

    I'm pleased with how the pen writes despite being a cheap one that I bought for testing purposes. The pen certainly seems better than ballpoint pens so far (which hurt my hand, especially as I've become older). I also really like how much more environmentally friendly having a big bottle of ink is, especially compared to disposable pens and even compared to ink refill cartridges.

    The reason why I've been getting and testing a brush pen and now a fountain pen is because I plan to do a greater proportion of my (not intended to be published) notes on paper instead of digitally. In the past several years (almost a decade really) I've used primarily digital note taking systems such as note apps and then later on simply using cloud based storage and plain txt files to sync from/to my phone and computer for all my notes. However, with every passing year I have less and less trust for tech companies and am tired of their perpetually worsening violations of user boundaries. Paper notes are immune to that.

    I'm looking forward to regain more and more of my freedom and boundaries. That general trend is connected both to these paper notes and to this website itself.

  43. : I deleted my "cloud" storage account today, which marks the beginning of my real transition to using more paper based notes going forward. Every single time I've invested years in using a note app or "cloud" storage system it has always ended up backfiring, with me regretting it. Each time I made an effort to pick what seemed to be trustworthy companies and always they have proven to repeatedly violate that trust and to make many undesirable changes.

    Besides, even if I hadn't had so many egregiously bad experiences with the "cloud", tech corporations have been becoming less ethical every year and I want to preemptively create much more distance from them. So, that's exactly what I'm doing. Such relief! It feels wonderful to reclaim a greater proportion of my life that will no longer be tampered with so arbitrarily and capriciously by people who have no right to.

    On a more cheerful note though, I've been playing Moonscars some today and yesterday and have really been enjoying it. I had previously avoided it due to some moderate reviews (~80% positive), but as is all too often the case it turns out I should have just trusted my one instinctive interest. It seems like a great game so far! I especially love the tastefully artful mood and classy thematic style of the game.

  44. : Happy New Year's Eve everyone! ๐ŸŽŠ๐ŸŽ‰๐ŸŒ†๐Ÿ“…

    Today I've been settling into my new fountain pen and paper based notes system. It feels great to put more distance between myself and these ever increasingly unethical, intrusive, and tyrannical "tech" companies and their digital kleptocracy!

    To follow up on my earlier discussion of how I was comparing brush pens with fountain pens to reduce hand strain, basically fountain pens seem more practical overall. Brush pens do require even less pressure to write with than fountain pens, but controlling the line width with a brush pen for everyday writing of mostly text seems impractical.

    Fountain pens still require significantly less pressure than disposable ballpoint pens. Brush pens admittedly use so little pressure that they feel like tickling the page with a feather, but alas they still seem too hard to write text with consistently and quickly. I can definitely see them being great for many uses in ink-based brush art though.

    As far as fun goes, today I also played some more Moonscars and also got a whimsical humorous game called Rain on Your Parade and played that some too. I also briefly spent some time brainstorming on paper about some game design ideas.

    I'm looking forward to next year and the changes it may bring! Things are looking up!

  45. : Today is the first day of the new year (New Year's Day)! ๐ŸŒ„โณ

    Besides my usual work and routines, I found some time to brainstorm some more game design ideas for a prospective upcoming project, all on paper with my fountain pen. I've been quite enjoying it so far. I've come up with a few interesting ideas already.

    I also played some Moonscars again today. It really has great atmosphere and flow.

    Oh, and I ordered a few books of interest to me, plus an unlined journal to try. Currently, I'm using a small lined pocket-sized journal. It is convenient for carrying but the small writing surface seems to potentially increase hand cramping. Perhaps a larger journal will help with that. Either way, I'm going to use up what I already have so as to not be wasteful. Ergonomics for everyday activities matter! I'm sure my system will evolve with time as I adjust to it and work out what feels optimal to me.

    Anyway though, here's to the new year! I wish the best for all my visitors' years!

  46. : Tonight I was reading more about HTML after a several week long hiatus from it. I also wrote some more paper based game design notes whilst exploring my ideas for the project I have in mind. Other than that, I did some extra job-related work, helped take down the xmas tree, and a few other miscellaneous things.
  47. : I read a little more about HTML, but mostly I was working on more game design ideas for the project I'm planning. I'm trying to figure out how it will fit together.

    For leisure though, I also played a game some. This time it was Potion Craft. I've seen it before and was interested but actually decided to get it and try it today. I like the art style. It has that authentic old-school ink art feel and is very distinctive and tasteful.

    I've been very happy with the games I've picked this holiday season. They're all good!

  48. : I mostly focused on exploring more game design ideas today, besides my usual work. I did briefly play some more of the Rain on Your Parade game though.
  49. : I did a little bit more game design idea work today, but a family member invited me to a movie and later in the day I also needed to do some household work. Thus, there's not much to report today. Such days are inevitable, naturally.
  50. : I unpacked a package that arrived in the mail today, helped an injured family member with some things that needed done, and made some more game design progress in my notes. Each day I've usually come up with at least one new major idea for the game concept, and so I'm pretty happy with the progress so far.

    I also played a few games, including Moonring (a free roguelike with great charm). Moonring should not be confused with Moonscars, which is another good game I mentioned recently but which is an entirely different game. Both are worth playing.

  51. : Much like yesterday, I did some more game design work, played Moonscars and Moonring, and took care of a few other miscellaneous things.

    I've had a steady pace of good game design ideas lately and today was no exception.

  52. : I was struck today with the thought of how much I appreciate the existence of this community of web revival (old web, retro web, or whatever else you want to call it) and how it has made me feel so much more comfortable creating and sharing content and publishing my thoughts online. It is such a huge relief to be so greatly distanced from the reach of the big creepy groupthink-based platforms.

    Likewise, even though it has only been a little over a week since I deleted my cloud storage account (on ), which I've previously been using to store most of my personal notes, the switch back to paper and pen has created a similarly massive sense of relief and empowerment as I experienced when creating this site.

    I feel like I've (1) regained enough of my creative voice and (2) put enough of a distance between myself and the numerous overbearing interlopers that have come to plague the modern internet that (3) I am able to breathe again. Free at last!

    Indeed, I think that any intellectually honest and creatively distinct human being needs this kind of healthy wide distance from any form of societal groupthink to stay intellectually and creatively healthy. The mind is like a living ecosystem that must be cultivated and cared for attentively. The garden of our mind is us: one and the same.

  53. : I read a little bit more about HTML and did a bit more game design.

    For fun, I also got a cheap $2 game called Dino Survivors on Steam. It is pretty fun and certainly worth the cost. I am still more interested in the other games I've mentioned recently in this journal/changelog (Moonscars, etc) though. Still, I like to diversify.

    I recommend Dino Survivors if you want a game with a lot of fun for a small price.

  54. : I received a package in the mail today containing a gift for a family member's upcoming birthday, which I am glad arrived. I hope they like it! ๐ŸŽ๐Ÿ™‚

    I also went on a long walk outside, which is a refreshing change considering that during the winter I tend to go on walks much less often than in other seasons. Normally, during the other seasons, I walk out in nature at least a little while every day, but winter is less pleasant for that. It was good to go today though, with the temperatures being more comfortable than for many other days this winter.

    Other than that, I mostly attended to many different miscellaneous tasks.

  55. : For a change, I spent most of my free time today reading a novel I bought (one written roughly in the late 1990s to early 2000s era). Ah, peace and quiet and a good book! It is/was a wonderfully tranquil and nostalgic experience. ๐Ÿ“š๐ŸŒ„

    I've always loved books and read a lot of them, but it's been several months since the last novel at least. In contrast, in recent years I've mostly read technical books.

    I also invested a modest amount of time in reading more in-depth about HTML today.

  56. : I read more of the same novel from yesterday, which has been good so far. I only briefly worked on my game design today. I also worked my job, as usual.
  57. : I added a minor "intellectual property" clarification to the policy page. I clarified that automated searching is allowed but not "chatbot"-like plagiarism.

    I also read more of the same novel as yesterday. I didn't do much design work today.

    More interestingly, today I was randomly struck by the following thought: Every person has connections to family (by definition, by being born) and within a family people generally tend to believe in each family member's capacity for change and to respect each person's agency beyond merely one-dimensional black-and-white terms (i.e. to be aware of the sentience underlying each person). Yet, too often society does not afford the same generosity of spirit and margin of error and awareness of sentience to strangers. However, if you think about it, such an attitude is only a matter of perspective. Every person has familial connections, and hence every person has that available viewpoint of agency for change from at least one person's eyes (ideally). Viewed this way, one may reduce one's prejudices towards others and be kinder.

  58. : Today was fairly uneventful. I read more of the novel I bought. It is actually a combination of three novels and thereby is over 900 pages long. Though I wrote some personal notes to myself I didn't do any real game design today. I've been pondering whether I want to try the upcoming 2024 7DRL or stick to my own schedule. Either way will be fine honestly. I do intend to use procedural generation regardless.
  59. : For my free time I mostly focused on reading the novel again. I also jotted down a few random thoughts in my notebook. Oh, and it snowed here today! โ„๏ธโ›„
  60. : Another uneventful but pleasant day! I spent my free time reading mostly. Also: There was even more snow today than yesterday, a lot more. That has been a rarity in recent years, most likely due to global warming (climate change).
  61. : I'm over two thirds of the way through the novel now. I've enjoyed it. That (reading the novel) was once again the focus of my free time. I intend to finish it.
  62. : There's nothing much to report today again!

    I'll leave you with a random thought though: Boredom is fertile ground for creativity.

  63. : I'm getting close to finishing the novel now. I may even be done with it by the end of the night perhaps. Anyway, like yesterday, here's another random thought:

    Don't take things for granted. Live well. Respect what's good in your life and tend it.

  64. : I finished reading the novel today, sometime around noon. I also shoveled some snow and salted the ground, as well as did a few other miscellaneous things.
  65. : I don't have much to say today. However, here's a random thought I had:

    A path to great anger, if followed in reverse, may instead lead to great joy.

  66. : The time flew by today even though I didn't intend it to.

    Anyway, here's another thought I had, so I'll leave you with that much at least:

    Above all else, a good editor should respect the authorial voice of any work they edit. The best in the work should be brought out, but the message should be respected. Much the same applies to other endeavors. True compassion respects agency.

  67. : I was diving into some desktop publishing tutorials today for something I have in mind. I also needed to help take care of an ill family member today some. Normally I use LaTeX for typography but in this case I may use Affinity Publisher.
  68. : The main focus today was working on the document I was talking about yesterday. It is unrelated to my game design idea. The work went well overall.

    That aside, I was struck today with a remembrance of how important the concept of the edge of chaos can be in understanding how to fully utilize emergent effects, which can be valuable for things like procedural generation and hence for game design too.

  69. : I went on a nice serene walk today since the weather was warm enough today for doing so to be pleasant again. It was raining slightly the whole time, but I've actually always loved the rain and indeed I didn't even bring an umbrella.

    Interestingly, I saw more fog today near the tunnel under the main road near where I live than I've ever seen before. The scene reminded me somewhat of the atmosphere of Silent Hill 2, though far more peaceful in this case, luckily... as far as I'm aware. ๐Ÿ˜œ

    I really love nature and going on walks and hikes when it is pleasant outside. I love to savor all the little details and nuances of nature and of life.

  70. : Here's a thought of the day that popped into my mind this afternoon:

    Question everything. See clearly. Act wisely. Patience pays.

    No person is above meniality, nor below greatness. Weave both into the tapestry of one's choices. Such burgeoning diversity is inevitable: as essential to maximizing value as to nature's vitality.

  71. : I explored some more game design thoughts. I also had a compelling idea for what kind of approach I'm thinking of taking for exploring watercolor painting more going forward (using Rebelle 7 for its wonderful watercolor diffusion simulation).

    In both cases (i.e. for both game design and watercolor art) it's been a little while since I last dived into these subjects, because I've been doing a few other things in the meantime, as you can see from my recent log entries. I read a novel, for example.

  72. : Today I've been doing more in-depth reading of HTML. You see, since early on in this process of creating a Neocities website I bought a giant HTML book and have been gradually reading my way through it to get a stronger sense of exactly what I can do with the HTML and CSS only approach I intend to use for my entire website.

    The book is HTML and CSS: The Comprehensive Guide by Jรผrgen Wolf. It is over 800 pages long! I plan to skip the JavaScript part though at least. The book is reasonably good and seems fairly comprehensive. It is translated though, and has some flaws.

    I actually already have experience working professionally with multiple programming languages such as C++ and C#. In fact, I'm a "language dilettante" and have explored many obscure and new languages too. However, I believe in a simple and streamlined approach to this website and have no interest in tracking users. I also prefer independent standalone programs over web apps as much as possible.

    The less interdependent the software world is the better, generally, I think. Thus, using only plain HTML and CSS (with no dynamic website code) provides a wonderful way of making any documentation or thoughts I may I want to share available without breaking my principles. Besides, any software or other forms of dynamic content I create can simply be shared via download links with accompanying descriptions. That's better than making any form of web app I think. It creates a healthier tech ecosystem.

  73. : Late yesterday night I finished the last of the non-JavaScript part of the massive HTML and CSS book I had bought. It feels good to have that done finally. The book had been lingering on my shelf for weeks after the initial burst of website edits. I had read through more than half of it by then, but only just recently finished the rest.

    Anyway, I'm going to be helping family with some things today, plus whatever else.

  74. : I had a dentist appointment today, which went fine. I also played Moonscars and Moonring briefly. Mostly though, my free time was invested in reading more about art via some small ebooks I had bought a while back but hadn't read yet.
  75. : I got a new screenless digital drawing tablet in the mail today! I already have a drawing tablet with a screen/monitor, but I had frequent problems with the Y-dimension (height) of the screen causing some art programs' user interface elements to get cut off the edge of the screen (thereby rendering them unclickable and sometimes unusable). Using the screen/monitor drawing tablet also made it much harder to maintain any good posture and having my hand covering what I was working on partly was a nuisance.

    For a while now I have also had a super cheap tiny screenless drawing tablet too, but it was one of the bottom-of-the-barrel ~$20 ones. I had planned to use that one for everyday non-art use (e.g. digital handwritten notes) and casual sketchy work originally, because it was so small (modestly larger than an index card) that it could be kept right next to me at all times without taking up much valuable desk space. It worked but was too jittery with regards to its input and so I didn't end up using it much.

    This time though I picked a drawing tablet almost perfectly sized to fit in front of my keyboard without getting in the way. The new one is a middle-of-the-road decent quality screenless tablet. It uses bluetooth too, so I don't have to worry about cables getting in the way anymore now either. I've tested the new tablet out a little bit and it seems great so far! I suspect the new tablet will be a much better fit for me than the other two were.

    I've never had much trouble with hand-eye coordination and having the tablet always there right by my keyboard permanently going forward will reduce the mental/habitual friction against using the tablets more often. The fact that the new tablet's ergonomic situation on my desk will not strain my posture nearly as much and will also enable me to use keyboard keys much more naturally and often (instead of being stuck with mostly using tablet shortcut buttons) is also a big benefit. I'm excited to have it now! It should be super useful and fun!

  76. : I've been working more on that document I mentioned a few days back, the one I'm using Affinity Publisher to make. I had some issues with the typography and typesetting I had in mind today, but eventually was able to reach a reasonable compromise that I was happy enough with to move forward with.

    That document is the most urgent thing I have to work on right now, so it has been on my mind and also eating up time and mental energy I'd otherwise rather spend elsewhere. I'm looking forward to having it done so that I can move on.

    As such, I wasn't able to test out my new wireless and screenless drawing tablet today more. I'm looking forward to when I can though, for watercolor digital art (etc). There's a whole bunch of competing priorities and interests I have to balance.

  77. : I freed a tiny spider (probably a jumping spider) today that has been living in the glass housing of an old incandescent ceiling lamp in a hallway near my office.

    I found him/her hanging out in the bathroom later today though, uncharacteristically lethargic. I've been wondering how the little thing has been surviving up in that light enclosure and the surrounding vicinity, since I hardly ever see bugs around the house.

    I used a glass cup and index card and sat the spider down on the front porch rail near the bushes. Several seconds later it jumped away. Hopefully it lives more fully and happily out there in nature than where it was in the house.

    I debated for a while whether to put the spider outside, since I wasn't sure whether the spider would actually like that (e.g. considering the cold), but overall putting the spider outside seemed more likely to be the most beneficial and kind course of action.

    Most notably though, I was struck by the thought during and after this process that the spider's predicament is/was in a sense kind of like a microcosm or metaphor for how we sometimes get stuck in life and linger in false safety that harms us when a greater risk (via a bold change) would likely put us in much better circumstances.

    As such, this encounter with the spider ended up also serving to remind me of the nuances and consequences of the nature of safety vs risk and the pitfalls either may have and the importance of living with at least a certain level of gusto and risk taking, on pain of life becoming like a cold glass prison of "safe" and corrosive complacency.

    As such, analogously speaking, one is inspired to ask oneself periodically:

    Have we become like the tiny emaciated spider trapped in a prison of false "safety"?

    Is it time we freed the metaphorical and microcosmic spider that is ourselves from the glass prison of our present circumstances? What would be our equivalent of nature?

  78. : Tonight I did a bunch more work on that document that I need to get done soon. I've drafted most of it now, though there is still one more large section to do. It's been eating up a lot of what would otherwise be my free time lately, so I'll be happy when I am finally done with it. I did get extra sleep this morning though, luckily.
  79. : Since the previously mentioned document is near enough to completion to alleviate most of my worries about getting the document done, I finally allowed myself some time to experiment with my new screenless drawing tablet in Rebelle 7!

    Specifically, I made two highly textured abstract symbols designed to look like they came from some otherworldly arcane language. Each symbol is also supposed to loosely serve as a wistful metaphor or visual analogy, being subtly suggestive of the meaning each corresponds to, but in that distorted kind of surreal linguistic way typical of ideograms that still have some partial remaining correspondence with their original pictographic origins but which have been in some respects distorted since then.

    That's the kind of aesthetic I'm going for in this case. I plan on doing a whole series of colorfully textured abstract symbols of this sort. It was a fun creative exercise! It has some overlap with conlangs conceptually. Look into that (conlangs) if you like the idea of designing new symbols for a fictional otherworldly language. I'm interested in that.

  80. : For my free time today, I mostly relaxed and played a few nostalgic games.

    I also wrote down a couple of ideas I had for game asset production, etc.

  81. : There's not much to report again! I was enjoying more nostalgic gaming.
  82. : It was another night of taking it easy. I'm near the end of the game now.
  83. : I finished the nostalgic old game I was playing (Riven) late yesterday night.

    Playing games from the earlier days of computing (e.g. the 1990s and early 2000s) has also reminded me of the wonderful merits and potential of some of the techniques that were used back then to work around the more limited computational power of computers of the time. In particular, pre-rendered graphics are strikingly efficient.

    In games like Resident Evil 1, 2, and 3 (the originals); Final Fantasy 7, 8, and 9; Myst and Riven; and Legacy of Time, the use of pre-rendered static graphical backgrounds that dynamic gameplay elements are then displayed on top of enables these games to have stunningly beautiful high fidelity scenery that holds up even today in many respects and yet simultaneously imposes very little burden on the computer's processing.

    Pre-rendered graphics make it possible to have photorealistic graphics on almost any computer, even if it is a "potato". Only image display and video playback is required. There are often so few objects in a scene that truly need to be dynamic that even software rendering can be enough to handle them easily and indeed was used.

    The technique is much less commonly used in the modern era, due to computers now having such extraordinary graphics rendering capabilities. However, the potential the technique still holds both for eco-friendly gaming and for making games universally accessible to everyone regardless of their computer's power is fantastic.

    I think it is also very telling of just how incredibly wasteful much of modern computation has become in recent years. Many games are probably wasting 95%+ of their computational overhead on re-rendering things needlessly. There is something beautifully tasteful and compelling in the unbounded yet essentially maximally environmentally friendly nature of the game design technique of pre-rendering.

  84. : I attended to some longstanding real-life issues I've been wanting to resolve for months and finally did today. Other than that, I read about watercolor more.
  85. : I made some more watercolor art today using Rebelle 7. I especially love how the 1st composition turned out. I used vector art to create an outline and then used Rebelle's stencil mode to fill it out using water diffusion to create texture.
  86. : I experimented more with Rebelle, this time creating two small simple non-watercolor pieces since I hadn't made any artwork with any of Rebelle's extensive non-watercolor media yet until today (other than random test doodling).

    For one piece I used the oil paint and acrylic paint simulator and for another I focused on deliberately abusing the smudge tool. I also did a third piece (though using watercolor), but with a lithography background instead of paper.

    The results of the three pieces were ok, but I wasn't as happy with them as my previous few experiments. Oh well though. It was still worthwhile.

    More interestingly though, I was afterward struck with the idea of using a vector art program to do outlining and sketching for future pieces and then transferring that into Rebelle to texture it via watercolor diffusion or whatever else I feel like.

    I in fact already did that with one of my prior Rebelle experiments, creating the outline first in Affinity Designer and then transferring it over to Rebelle, and that was the one I ended up most happy with, perhaps in part because it ended up with such clean lines.

    However, the experience of creating the vector outline/sketch using Affinity Designer was quite awkward, tedious, and slow. Affinity Designer's capabilities are pretty limited, though very performant and reliable.

    Luckily though, I remembered I had bought a copy of a different (more flexible and featureful) lesser-known vector art program called Vector Styler. Vector Styler seems all-around a much better vector art program than Affinity Designer in terms of capabilities (though not in terms of stability/bugs). It is far more fun to work with.

    In particular, Vector Styler seems much better for expressive and natural drawing and for arranging the composition to read better artistically. Thus, I am thinking I will use both Vector Styler and Rebelle together to play to the strengths of each one (Vector Styler for clean lines and expressing compositional interrelationships more easily and Rebelle for texturing, detail work, and finishing).

    I'm excited to experiment more! I think it'll be a strong workflow for what I have in mind!

    Vector Styler seems like a really underappreciated yet wonderful piece of software. Vector Styler has a really awesome range of features, though it would benefit from having fewer UI bugs and communicating information more clearly to the user. It'd be nice if it gave errors for invalid operations instead of silently not responding in a way that appears broken or confusing like it unfortunately currently frequently does.

    Vector Styler especially seems to bug out when applying special effects or special operations upon any object that contains a hole. It should tell you it isn't applicable.

    Anyway, I recommend trying out Vector Styler if you are interested in exploring much more expressive ways of working with vector art, especially if you like vector art in principle but normally find it too tedious to work with. Vector Styler seems especially good for expressive artistically versatile vector art, with less tedious node fiddling.
  87. : In an unexpectedly rapid turn of events, I've already started diverting my attention away from Vector Styler towards a quite unexpected piece of software.

    Although Vector Styler has amazing features that offer a tantalizingly wide range of naturally artistic expressive capability and fun compared to most vector art software, it still seems far too buggy to be comfortable to use. It has improved, but not enough.

    You see, I had picked up Vector Styler about a year ago, intending to use it, but abandoned it back then for being too buggy then too. There's been promising changes on that front and so I was hopeful (and half assuming) that the software was finally stable enough to not be overly frustrating to use, but alas.

    Vector Styler is still so extraordinarily buggy (even for basic things like user interface elements actually activating when you click them) that it is hard to stomach. Oh well though, I'll just check into Vector Styler in the future to see if it becomes usable.

    More interestingly though, was that a freewheeling exploratory tangent I went off on as a reaction to my frustrations with Vector Styler's abundant bugs eventually lead to a really great unconventional solution to what I have in mind.

    I seriously considered two additional art programs today in the aftermath and eventually settled on the second one going forward.

    The first was Clip Studio Paint (which is perhaps the most popular art program for illustrating anime characters). The reason why I considered Clip Studio (even though I don't have anime art in mind) is that it has really great line art support.

    Though Clip Studio's vector layer and vector manipulation support is nominally weaker than traditional vector programs, it is exceptionally easy to work with lines and line art in Clip Studio and keep them clean. The subtle qualities of such things matter greatly.

    For example, Clip Studio's vector path simplifier is among the most responsive and natural feeling of the paintable vector path simplification tools I've used. For another example, Clip Studio's vector paths also allow the use of arbitrary raster brushes. Just paint as normal in a vector layer and the stroke you make is editable as a vector line.

    Clip Studio is hence a fair option for making the preliminary outlines I have in mind.

    However, that's not the option I ended up settling in on today, which brings us to the most interesting part of today's journal entry! I've actually settled on QCAD.

    I bet you weren't expecting that! QCAD is actually a 2D computer aided design (CAD) program designed primarily for things like mechanical engineering, architecture, interior design (e.g. floor plans), manufacturing, and schematics creation.

    Why QCAD of all things when I am intending to ultimately make artwork? Well, though it seems strange at first glance, the reason is because QCAD has extraordinary support for constraint-based drawing that allows you to express very precise interrelationships between pieces of geometry very well.

    Remember, the purpose of the program I am seeking here is to create things like sketches and outlines that I plan to subsequently bring into Rebelle to paint on top of and thereby create the actual finished artwork. QCAD's output will be temporary.

    In other words, I intend to use QCAD to create rough blueprints that lay out (in a broad and rough sense) the compositional interrelationships of what I intend to actually paint.

    I intend to use QCAD to create schematics that I will lay down as a background layer and then work on top of so that I can keep my lines and intended interrelationships among components precise, clean, and consistent. Pure art programs can't express precise logical constraints between elements nearly as well as 2D CAD software can.

    I also have a highly technical background (such as having a computer science degree) and so this approach will also make it easier to play to a broader range of my strengths. I'm excited to finally have the ability to express the compositional constraints more freely and directly! It should be easier than doing it by hand.

  88. : I spent extra time hanging out with my family today, but did also find some time to learn more about QCAD and to post two new feature suggestion threads on their forum. I am really pleased by how wonderfully diverse the range of geometric constraints available in QCAD is. It is shaping up to probably be a fantastic tool for laying out my compositional intentions for my future art (plus other uses too). ๐Ÿ˜Ž๐Ÿ“
  89. : I am really loving QCAD's ability to express a multitude of geometric relationships and constraints so effectively and efficiently. It's a breath of fresh air.

    Conventional vector art programs (e.g. Illustrator, Affinity Designer, and Inkscape) give you so few ways of expressing precise interrelationships and constraints by comparison. Indeed, manually adjusting wobbly freeform vector paths until they actually look clean can be surprisingly tedious, time consuming, and fiddly.

    QCAD has much fewer of those problems overall. Nonetheless, the biggest shortcomings of QCAD so far are perhaps its lack of boolean ops (e.g. union, intersect, and difference) for whole shapes and its lack of general purpose art features (e.g. it seems to have a small max line width, strangely). It is for engineering, not art.

    However, these issues aren't really a prohibitive problem for what I have in mind, because I only intend to use QCAD for laying down the broad strokes of my intentions to guide me in my design. I intend to use it to create reference images to sit below the layer(s) I actually paint on in Rebelle, as I've alluded to before.

    It also seems like QCAD's lack of boolean operations may not even be that much of a problem in reality because (1) I'm just painting over the schematic anyway, so I don't actually need the bool ops and (2) interior lines can be removed from any arbitrary shape in such a way as to emulate what you'd get from boolean ops anyway. So, there's actually no real impediment in that respect, except convenience and time.

  90. : There's not much to report today. My progress continues steadily. ๐Ÿ™‚
  91. : I've finished learning the basics of QCAD now. Thus, my attention won't be as narrowly focused on it as it was for the past few days. Onwards and upwards!
  92. : I had an idea today for a simple wooden device that would help fix a problem around the house, and I realized that I could use QCAD to create a design schematic for it now. That's a nice coincidence! Such fortuitous timing!

    I learned QCAD initially solely so that I could have a more effective tool for precisely laying out interrelationships between planned objects in painting compositions and for therein creating clean lines and consistent intended distances within those lines.

    However, it is interesting (and fitting) that I would immediately thereafter get an idea for a small household engineering project right after learning QCAD. The project should also serve as good practice for cementing knowledge of what I just learned about the basics of QCAD. So, that's a good bit of serendipitous or synergistic value!

  93. : I submitted my request to join the MelonLand forum today! I actually have intended to join the MelonLand web revival community since the very beginning of making this website. Indeed, I even mentioned the MelonLand forum (and linked to it) on the 3rd day () of my website's existence, back when this hybrid journal & changelog section you are reading right now was only a changelog (akin to a version control repository's changelist) and wasn't even a separate page yet! My site was just one single tiny plain HTML page back in those days (approximately 3 months ago).

    The other pages of this site change much less frequently than this one so far. That's because this journal & changelog page is a daily commitment I've made to myself as a way of ensuring I get my thoughts down and so that readers can know what I'm up to and more importantly so I can coincidentally share useful info and ideas here with them whenever inspiration strikes me. This is page is kind of my "micro blog", though different in format and intent than many such pages.

    Anyway, in other news, I also submitted several features request to the developers of QCAD today and I am hopeful that those feature ideas will get implemented! QCAD is shaping up to probably become one of my favorite programs! I really admire how well designed its user interface and constraint-specification capabilities are.

    QCAD to me is kind of like the 2D vector graphics analog of Blender in terms of how it feels, though QCAD is intended for engineering and planning rather than for use in art directly. That (engineering, architecture, etc) is its main intended audience anyway.

    The hotkeys in QCAD even feel similar to the hotkeys in Blender, though it is far easier to immediately guess what things do when using QCAD compared to when using Blender. Blender (though great) can be more opaque and mysterious than QCAD in terms of guessing how to do things and trying to navigate the interface in an natural and exploratory fashion. QCAD's interface and design is truly a thing of beauty!

  94. : I've added three new recommendation links (specifically for Rebelle, Vector Styler, and QCAD) to the recommendation link page and also made some minor adjustments to the main index (i.e. main directory) page.

    I also switched all the recommendation entries over from using a colon based format to using only natural prose-based sentences. That format is a bit more flexible!

    It has been a while (at least several weeks, but probably more than a month or two) since I last made a change to a page other than this Journal & Changelog page you're reading right now. That is largely because I've been learning lots of new things. You can see from my many journal entries that I've actually been quite busy all the while.

  95. : I created a QCAD schematic for the silhouette of a watercolor Rebelle art piece that I am going to color and texture in the next few days sometime. This will be my first official QCAD based art piece! I had to fix some errors, but I figured it out.
  96. : Mostly today I was elaborating on various notes for some recent new ideas I've had, so that I can reobtain a clear sense of what the ideas are later on.
  97. : Tonight I mostly (1) did some more research on one of my recent project ideas, (2) talked some with a very knowledgeable and helpful QCAD user, and (3) tweaked my new MelonLand forum account settings and posted an introductory thread over there. All in all it's been a good night!

    I still haven't got around to watercolor texturing my QCAD composition plan that I mentioned earlier that I had finished, but I probably will within the next few days.

    Anyway, thanks for reading and for visiting my website! Have a great day/night/etc!

  98. : I talked with some people on the MelonLand web revival forum, posted a hotkey memorization self-quizzing Anki card deck that I made on the QCAD forums for everyone's benefit, and I did indeed finish coloring my first QCAD-Rebelle composition!
  99. : With luck and committed effort gracing my mindset today, I was inspired to create another art composition schematic (now my second QCAD-based art piece) and actually made great progress on it too! Indeed, I would say that most of the schematic is done already! It's been a busy but creatively productive day for me.

    Oh, by the way, I'm not sure when I'll be posting these art pieces online. I'll certainly share the ones I like enough at some point, whether directly as images to be browsed or incorporated into a project such as a game or other piece of multimedia work.

    In those regards: A key aspect of this website and how I manage it is that I build it brick by brick at my own pace, in a way that feels right for me. I have had previous websites and previous projects where I didn't follow that natural pacing policy and those burnt out. I'm striving to ensure that that won't happen this time around though, because I'm setting both strong boundaries and strong commitments, in a balanced and sustainable way, a way that I am happy keeping up with in perpetuity. ๐ŸŒ†๐Ÿ˜Ž๐ŸŒฑ

  100. : I finished the QCAD composition outline/plan that I mentioned yesterday. I also browsed around the art software ecosystem on a whim to see what other things have changed lately and ended up getting sucked down a tangent along those lines for hours. That tangent was interesting, although not what I intended for my day.

    I sort of lost my grip on my time today overall. I'll try to be more alert tomorrow.

    Other than that, I don't have much I feel like reporting. Good night and sleep well!

  101. : I made a minor update to the Lua programming Anki deck available on the My Creations page. It makes various subtle corrections and clarifications.

    I also spent some time today playing around with Wings 3D, which is interestingly the closest modern still-maintained inspired-by descendant of the 3D modelling software that was used for games like Final Fantasy 7, MediEvil, Super Mario 64, and Crash Bandicoot. The name of the 3D modeller used for all of those was N-World/Mirai/Nendo.

    Wings 3D uses the same heavily context menu based workflow, which has the advantage of greatly reducing the memorization burden compared to most 3D modeling software. Wings 3D is thus easier to remember after periods of disuse than Blender.

    Wings 3D doesn't support animation though, nor does it have good support for texturing either. It is focused on just box modelling and subdivision modelling essentially. Luckily, Wings 3D is free and open source, so give it a try if you want to see roughly what the workflow that was used to create those old classic games felt like! It feels comfortably lightweight: very low mental overhead, very discoverable!

    Incidentally, if you are interested in 3D modelling editors that are easier to learn and to work with than Blender (at least in terms of up-front or short-term burden) then Crocotile 3D is another good modelling program.

    Crocotile 3D is designed for pixel-art-inspired 3D modelling and PlayStation 1 era 3D artwork. Crocotile 3D enables you to do 3D modelling without thinking about UV mapping nearly as much. It lets you treat 3D more like a tile based workflow, like what you'd be more used to if you're coming from 2D pixel art based environments. Croctile 3D is paid, but is very cheap compared to most 3D software.

    I'm also going to work on my 2nd QCAD based composition again today, though I think I'll try texturing it with my copy of Paintstorm Studio instead of Rebelle this time, just for variety. Paintstorm Studio is one of the cheapest digital painting programs around but is very capable and has a very well-designed user interface and some other good features. I find Paintstorm's multi-coloring brush settings overwhelmingly easier to use (and indeed all-around better than) Krita's multi-coloring brush.

    In fact, I much prefer Paintstorm Studio over Krita in general. The user interface of Paintstorm Studio feels far more intuitive and expressive than the user interface of Krita. Paintstorm is also my goto program for making creative seamless textures from scratch (which are subsequently useful in both 2D and 3D contexts), since its seamless mode is so useful and intuitive and its brush variety helps for inventive seamless texturing too.

    If you want an extremely affordable yet still very expressive painting program that is capable of some cool brush settings and effects that are awkward in other programs, then Paintstorm Studio is a great choice. I recommend giving it a try. It's so cheap that there's practically no reason not to add it to your available art software arsenal.

    Anyway, that's what I have to say for today. There's a good amount of fun stuff you could explore in the above! Some of these things are unknown to most people. ๐Ÿ˜Ž

  102. : Today I did indeed finish coloring my 2nd QCAD based art composition. As planned, I did use Paintstorm Studio to good effect in that regard, but halfway through transferred the work over to Rebelle to finish giving it a sense of texture.

    Rebelle's watercolor diffusion simulator just makes creating natural textural color variations so much easier, hence I couldn't resist finishing the piece up that way after laying down some base paint in Paintstorm.

    I also messed around in Wings 3D a bit more and also played with my old copy of 3DCoat some as well. I've been in the mood for experimenting with more of the various art programs I've gradually accumulated over the years.

    Anyway, that's it for tonight. Goodnight all!

  103. : My creative time today was spent on primarily two things:

    (1) I touched up some of my extant Rebelle art by using Rebelle's selection feathering command to prevent unwanted "color halo" artifacts from appearing along the transparency boundary of the intended silhouette of the depicted object(s).

    (2) A new music composition idea has arisen in my mind and I spent an enjoyable few hours picking out instrumentation choices for the upcoming piece. I quite like the set of sounds I've arrayed for the purpose and I think they well sound good together. I'm looking forward to working on it! ๐ŸŽน๐ŸŽผ๐ŸŽถ๐ŸŽต
  104. : I mostly focused on the music composition I mentioned yesterday. I removed a few of the instruments from the set I had selected yesterday because they didn't seem to fit well with the motif I've built up so far and don't seem likely to in the future either, given the direction the composition is now heading.
  105. : The other day I stumbled upon a quite interesting web revival adjacent idea from an unusual obscure source ("Lab 6"): using PDFs (specifically PDF/A, the non-interactive archival version of the PDF file format) as a way to escape from the often very harmfully hyper-interdependent nature of the modern web "living web standard". The article of note is "De-urbanising the web: all hail PDF".

    Much of the modern web has become a mess of bloated and/or user-hostile overengineering and shadowy surveillance machinery.

    Most websites have to put enormous effort into forcing web browsers to display the site's subject matter as intended. Ironically though, web "standards" were actually originally designed primarily around the idea that only the substantive aspects of what is being communicated (or offered) matters and that how to display each website should be mostly left to each viewer's preferences and browser settings.

    Websites designed to be completely agnostic of style and aesthetics are now a tiny minority of all sites in practice. Even my own website here (though far more on the "substance over style" side of the spectrum than most websites!) still mostly dictates its own appearance (except for the reflowability of text).

    A huge part of the effort now made in creating websites is actually fighting against HTML's original design goal of being mostly independent of aesthetics and primarily about communicating information well and sharing resources freely and efficiently. This mismatch is where much of the unreliability, instability, and overcomplication of the web ecosystem now comes from.

    The web has also had an enormous volume of shady cruft added onto it too, such as tools for unethical business practices revolving around user tracking and mass social manipulation and so on.

    Consequentially, the web has become caught in a cycle of endless churn that has resulted in web content becoming extraordinarily brittle and unreliable. The web has become the exact opposite of standalone essentially. The large companies in control of the web and the major browsers can arbitrarily break or remove features with no regard to what users want or for what is actually good for humanity or human dignity.

    Indeed, from day one of my creation of this website one of my most overarching goals has been my stance that the contemporary software ecosystem has become too interconnected and interdependent and that software (and computer hardware too) is at its best when it is designed to be as standalone and independent as reasonably possible within the constraints pragmatism.

    That's why you'll never see any JavaScript running on this site (unless my web host does so without my knowledge at some point). Indeed, you'll never see any program running on this website at all. This is strictly an HTML and CSS only site (by design). If I want to offer dynamic content it will always be in the form of downloadable standalone files (and not based on "web tech" either).

    As such (circling back to the subject I began today's web log entry with), when I encountered this idea that perhaps the web should be based primarily on PDFs and read through the reasoning I knew I had found a kindred spirit in the author of Lab 6's PDF-based internet proposal.

    PDFs ensure that the visual layout and content that is published remains stable, predictable, and resilient to future changes. PDFs don't break every time some random third party person or organization decides to change a software framework against everyone else's will or modifies some network hardware infrastructure unexpectedly, unlike the web.

    PDFs are anti-fragile: much the opposite of the web. PDFs are standalone by design. PDF are far easier to reliably save and access again in the future, even if the source the PDF originally came from is later destroyed or if computer "updates" and "upgrades" have changed the surrounding software ecosystem. The web in contrast is so interdependent that huge swathes of it are frequently destroyed by arbitrary changes outside of the control of the people being harmed by those changes.

    Reading Lab 6's proposal for a PDF-based internet struck me as a smart way to further decrease the power of the corrupt institutions currently controlling too much of the net while simultaneously increasing user freedom (and thus human dignity) by making the way one provides content even more standalone and independent.

    Don't get me wrong. I'm not going to switch my website here over to being a PDF. What I am going to do though is whenever I post major articles and useful reference documents then I will often release them as downloadable PDFs, much like the two PDFs about music tuning frequencies I've already made available on this website since the earliest days of this site's existence.

    This journal and changelog will continue to be formatted as HTML and CSS and likewise for the other major parts of the website. Individual special-purpose articles and reference documentation though will often be PDFs. So, in other words, the static HTML and CSS will be a hub for navigating to whatever standalone resources I make available, whether those are PDFs or music or art or games or programs or whatever else I feel like making available.

    This isn't really any different from what I was already doing before (yet), but rather it is an increased solidifying of my approach to ensuring my published work on this site will be as standalone and as user-friendly as possible, unlike so much of what the web has become.

    Relatedly, I also had the idea of posting downloadable archives of the entire website at some point that can be periodically generated offline and then made available online. That would make downloading my site much easier for users than saving individual pages. Likewise, perhaps I can also generate a PDF version of that (of the whole site) for user convenience.

    On an unrelated tangential note though: When writing this web log entry I accidentally wrote "PDA" as a typo once, but that incident also serendipitously reminded me of PDAs and how much I preferred them over phones.

    PDAs were like much more limited pocket computers, essentially like phones but with no internet connectivity and no tracking or psychological manipulation mechanisms built-in. They were basically what phones would have been like if certain unethical companies hadn't decided they'd rather systematically exploit the rest of humanity by invading our digital personal space as much as possible and monetizing it.

    PDAs were essentially phones minus the most harmful parts. Companies pretty much stopped producing them though after the advent of phones though and I still miss PDAs. The were a much more wholesome form of pocket-sized computers!

    Anyway, that enough web log writing for me today! Have a magnificent day/night/weekend everyone!

  106. : I added three new recommendation entries to the recommended link page. Two are about the fragility of the web and about how important archiving and backing up your data and protecting your boundaries and your creative/intellectual freedoms is. The third is a related link to a very useful data backup tool (Free File Sync).

    I also am going to do some more music composition work today! ๐ŸŽน๐ŸŽถ๐Ÿ˜Ž

  107. : I finished my new music composition (The Murmur of Moss) yesterday and posted it on the My Creations page! I like the way it turned out. ๐Ÿ˜

    It was loosely inspired by the sounds (ambience and soundscape) and music of Riven (1997) but ended up going in a different direction. I posted three different versions of it: full, ambience only, and melody only. That way you can compare and contrast the two different layers and how they sound combined.

    Posting multiple versions of a song like that also reminds me: my very first music composition ever was also created with three different versions, each with a different instrument playing the melody! Maybe one day I'll post my old music compositions too!

    That was a cool trick for getting three distinctive versions of the same song without much more effort! Thus, I am reminded of that approach and I think I may try it again for my next music composition! In the meantime though, I'm back to focusing on other things at present, until the next music composition mood randomly strikes me. ๐Ÿ˜Ž๐ŸŽป

    In much less exciting news though, I'm planning on filing my taxes today. ๐Ÿง๐Ÿ˜ต๐Ÿ“ƒ๐Ÿ’ธ

  108. : My main focus today was cleaning up some of the files on my old backup hard disk drives, which is something I've been meaning to do for quite a long while but have been putting off. I did go on a nice walk outside in the neighborhood though. ๐ŸŒฒ
  109. : I was doing a bunch more hard drive reorganization and cleanup today, so there is not much to report again. Have a great night though! ๐ŸŒ†
  110. : I finally finished handling my hard drive reorganization today. There were a lot of things I had to account for to finally get it cleaned up the way I wanted.

    Oh, and yesterday I posted a thread about my new music composition (The Murmur of Moss) on the MelonLand forum, but neglected to mention it.

  111. : I mostly used my free time today to experiment some with Lua-based game dev libraries and engines. I've been planning to use Lua for my next game dev project, even though professionally I used to use C and C++ for that kind of thing.

    The main candidates I'm considering are Love2D, Solar2D, and Defold. I also looked at Gideros, but I feel like if I wanted something like Gideros then I'd pick Defold instead.

    Along these lines of consideration, I did a couple of Defold tutorial projects today. I like its cross-platform packaging ease very much and its editor seems useful too. However, Defold's style of code seems awkward, overengineered, and unnatural.

    I'm in the mood to be more in control of the flow of the code and of how I express myself and thus I'm currently most leaning towards using Love2D. That's been the library I've been learning towards for months now, considering how I will build my project, but today I just felt checking my options more carefully again.

    I'd like my choice to also support creative coding, and thus that's another reason why my instinct is towards Love2D. I want to make code that fits my own mental model instead of whatever (often bloated) mental model an engine programmer thought was "best". Rigid assumptions in an engine feel stifling. Lรถve seems more free of that.

    Anyway though, have a great day/night everyone!

  112. : Today was another busy day exploring my idle whims and curiosities.

    Though I've mostly been thinking of using Lua and Love2D for my next game project for a few months now, today I was struck with an adventurous spirit to perhaps use something much more obscure and unconventional this time! ๐ŸŒ„๐ŸŒ‹

    I've messed with quite a few lesser-known languages over the years, but in this case (for what I have in mind and the old school rustic game dev feel I want) my explorations today led me to the Lobster programming language and since then I am inclined to give it a try! ๐Ÿ˜Ž

    Thus, I plan to do some tutorial programming work in Lobster tomorrow to test the waters and see if I want to embrace using it for my next game dev project instead of Lua, for something a bit fresher and more unusual! ๐ŸŒฑ

    Like yesterday, I again intended to check on my MelonLand forum thread about my music, but I have once again run out of time and must go to bed within the hour. I will check back there tomorrow, if all goes according to plan! ๐ŸŽผโณ

  113. : I did indeed check the MelonLand forum today and all is well (as expected), though apparently that subforum doesn't get a lot of traffic. I really enjoy creating and sharing things like this, especially in the midst of a philosophically compatible environment (community) such as the web revival movement.

    I did play with the Lobster programming language again some today and also submitted some simple typo corrections to their documentation. It seems like a really tastefully designed language and the tightly integrated multimedia features make it kind of like a game dev and creative coding oriented language.

    As for what programming language and library/framework/engine I will be using for my gradually upcoming game dev project, I have still yet to decide. There are many pros and cons to each choice and many wonderful avenues of creative opportunity.

    Today I've also been weighing Love2D, Defold, SFML, and SDL against each other in my head too. There are also many other good options of course (both large and small).

  114. : I contemplated my programming language and library/framework/engine choices again some today and also played around with the Lobster programming language again some. I also submitted a fix on the Lobster GitHub repo for a bunch of numeric warnings in the samples directory. I'm looking forward to getting back into the swing of creative coding, no matter what path I choose! ๐Ÿ‘จโ€๐Ÿ’ป๐ŸŽ†๐Ÿ”ฅ๐ŸŒŠ๐ŸŽฎ
  115. : In the first half of the day, I finished the rest of the Lobster programming language tutorial game and then also submitted a couple typo fixes to Lobster's GitHub repo. It's quite a nice little language and I really admire the author's breadth of knowledge and wide range of creative experience across games, tools, and programming languages! That greatly increases one's confidence in the capability and future of the Lobster programming language and I'll be keeping an eye on it!

    In the second half of the day, I somehow found myself going down a tangent on the subject of green computing and how to minimize the energy consumption of computers and software. That led me to a great academic paper comparing the energy, time, and memory costs of a wide range of different programming languages. The research paper originates from a computing research group from Portugal evidently: The Green Software Lab. The paper is a great read and the comparisons embodied in the data tables are especially illuminating. I recommend giving it a read if you are into that kind of thing, like I am!

    Anyway though, the research paper has some startling stats in it that give you a much better sense of how big the energy gap actually is between different programming languages and such. Here's some examples:

    On average, compiled languages consumed 120J to execute the solutions, while for virtual machine and interpreted languages this value was 576J and 2365J, respectively.
    Grouped by the different paradigms, the imperative languages consumed and took on average 125J and 5585ms, the object-oriented consumed 879J and spent 32965ms, the functional consumed 1367J and spent 42740ms and the scripting languages consumed 2320J and spent 88322ms.
    The CPU-based energy consumption always represents the majority of the energy consumed. On average, for the compiled languages, this value represents 88.94% of the energy consumed, being the remaining portion assigned to DRAM.
    ...the most energy efficient language in each benchmark is almost always the fastest one...
    On average, the compiled languages needed 125Mb, the virtual machine languages needed 285Mb, and the interpreted needed 426Mb. If sorted by their programming paradigm, the imperative languages needed 116Mb, the object-oriented 249Mb, the functional 251Mb, and finally the scripting needed 421Mb.

    To put this in perspective 1 joule of energy is approximately "the amount of electricity required to light a 1 watt LED for 1 s" or "the kinetic energy of a 50 kg object (e.g. human) moving very slowly - approximately 0.72 km/h". Inefficiencies add up fast!

    I care quite a bit about efficiency, the environment, and ethics. Reading this academic paper has thus inspired me to lean much harder in a specific direction now regarding my options for my upcoming game dev project I've mentioned:

    I'm now planning to use SFML and C++ for my game.

    Granted, if you read the paper you'll see that the most efficient language was actually C, not C++. However, I'm going with C++ and SFML because the style and clarity of code via SFML instead of SDL seems more well-suited to me and what I'm feeling like doing. Besides, I intend to use C++ in a very "C-like" way, by which I mean I'll mostly use C++'s extra features for reusable data structures and higher expressiveness but will mostly be minimizing OOP within the constraints of pragmatism, yielding greater efficiency.

    C++ is the language I used professionally back when I was working in a AAA video game development company, but I've been avoiding it for a while to an extent. However, now that I have seen the magnitude of the energy waste of many other languages so clearly laid out before me in this paper (e.g. ~70 times less energy efficient for interpreted languages) then I feel compelled and duty bound by my own principles to implement my project in a way that's compatible with green computing and thus (weighed slightly by personal preference against just using C) I've now directed my sights and plans to SFML and C++. Plus there's art & audio production to do too!

    It's good to have clarity about what I'm going to use for the project now! I'm glad to have stumbled upon that energy efficiency research paper randomly! ๐Ÿ˜Ž๐ŸŽฏ๐ŸŒฑ

    Anyway though, have a great night everyone and sleep well! ๐Ÿ˜ด

  116. : I had to take my car in for repairs and inspection today and it took quite a while! I spent much of the time there in the lobby quizzing myself with C++ questions, using the most precise and comprehensive C++ programming quiz app I've ever found!

    I'm in the process of refreshing my memory of the C++ language and its (very many) subtle nuances, since it has been a while since I've used it professionally. C++ is known for being a more challenging language than average to work with, but after seeing the energy costs of other choices laid out so starkly in the article I read (and mentioned in my log) yesterday I am suddenly completely fine with accepting that burden, indeed even proud to bear it. It's my pleasure to make a difference to the environment! ๐ŸŒŽ๐ŸŒฑ

  117. : I've been reading more about ISO C++ today some to refresh my memory more as well as to start getting more of a grasp on C++20 (which I've not used yet, in contrast to C++17 which I have used). I also read some about OpenGL to start refreshing (and expanding) more of my memory of that too.
  118. : Today was all about C++ and Batch (CMD) scripting. The C++ was a continuation of my studies from yesterday. The Batch (CMD) scripting is because I plan on also creating some simple scripts to help with builds, config, distribution, and/or other utilitarian processes for anything I create.

    Unlike PowerShell scripts, Batch files can be run by simply double clicking them (by default). That makes Batch scripts more helpful for end users for setting up their system faster if you can manage to create the same effects with the (in some ways more limited) facilities of Batch scripting compared to PowerShell's capabilities.

  119. : Though I got a bit distracted with other things, I did find some time to study more C++ and SFML today again. I also briefly did some Batch/CMD studying too.
  120. : There's not much new to report today! I studied SFML more again. For fun and variety though, I read some of the C89 standard ! The C89 standard was written and published back when the C language was standardized only by ANSI and not ISO.

    The C89 standard is a lot shorter and nearer to the languages conceptual and idiomatic origins and thus perhaps reading the very first 1st C standard (C89) will give me a more natural sense of the deeper nuances of the C programming language's underlying foundational nature. I've always been the type who likes to understand things genuinely rather than just on the surface! ๐Ÿง๐Ÿ”ฌ

  121. : There's not a lot to say today. My studies continue as usual. Anyway though, I hope you all have a pleasant upcoming week!
  122. : I've finished one of the books I've been reading through today, which means that my time will be available for more than just studying tomorrow (in contrast to the past few days), which I'm glad for.

    As for the C89 standard, my plan is to read it very gradually, at a rate of about 2 pages per day. Thus, that book in contrast won't pose a big daily burden, but will be ongoing for quite a while. Spreading challenges out like that is a great pacing technique!

    Most importantly, I hope to do more work of a creative nature in the next few days!

  123. : I did some work setting up my SFML project library linking and build system to suit my preferences. I also hung out with my family longer than usual at dinner tonight and the conversation was lively and cheerful!

    Anyway, best of night to you all, as always! ๐Ÿค—๐ŸŒƒ

    PS: As a personal victory, I also prevented my attention from being derailed from my current project intent today! Commitment is (ironically) often the gateway to freedom!

  124. : I worked with SFML some today but mostly ended up studying more Batch (CMD) scripting because I felt like it. Batch (CMD) has some rather quirky programming idioms (ones that feel organically home-made and idiosyncratic) and makes me a bit nostalgic for the days of MS-DOS and Windows 98.

    Relatedly, I also went on a brief tangent reading about a few less known (not Windows, Mac, or Linux) operating systems: ReactOS (a Windows 2003 inspired OS), FreeDOS (an MS-DOS emulating OS), and Icarus Desktop (an Amiga emulating OS). You may be interested in those if you are into retro computing (which many people reading this website probably are)! I still personally wish Windows' user interface was still more like Windows 98 and that they'd stop randomly deleting or obscuring features and giving users less and less control of many things with each "new" Windows OS.

  125. : Somehow it felt like a slow and frustrating day and I felt off for the greater proportion of it. I was kind of stuck in my thoughts. Oh well though, it happens.
  126. : I came up with some new Batch (CMD) scripting related ideas today (and also studied the language a bit more), as before.

    However, more interestingly, I went down a fun tangent reading several interesting articles on two other programmers' blogs: Richard Mitton and Yossi Kreinin. I recommend browsing their blog post archives and reading a few of the more interesting-sounding posts! They are very authentic and speak from 1st principles!

    Oh, and that reminds me, yesterday I also read an interesting article from Yukari Hafner (Shinmera) about how much of "information hiding" in programming doesn't actually accomplish much. It's kind of a partial "the emperor has no clothes" confession against the grain of conventional software ideology. I like it! ๐Ÿ˜Ž

  127. : Another interesting project idea occurred to me, but I don't know if I'm going to do it. I've got so many ideas for things I've accumulated over the years but only so much effective time that I can allocate to those ideas, especially considering I tend to fixate on quality a lot and my time usage could be more efficient in that regard.
  128. : I stumbled upon some more interesting obscure operating system related stuff today. A healthy diversity of ideas helps keep oneself clearsighted and fresh!

    First, I encountered the term "unikernel", which apparently is an approach to operating systems where you bind application software much more tightly to the operating system (via static linking) so that the intermediary communication, task sharing, and security overhead of the operating system is reduced or eliminated. MirageOS seems to be one of the most prominent examples.

    Second, I also encountered Ironclad, which is a partially formally verified operating system (i.e. is designed to make many bugs provably impossible to occur, besides physical damage and any other physical things that software can't control of course).

  129. : I've been busy reading about things of interest to me today. That's all I've got to say tonight! Thanks for reading and I wish you all well as always! ๐Ÿž
  130. : I studied more Batch (CMD) scripting today. Anachronistic as Batch may be, it is still better for distributing scripts to end-users for easier setup of things than PowerShell since Batch files can be double-clicked to activate them (just like EXEs can).

    In particular, I've been reading a fairly long book about Batch scripting. It has been informative but I am looking forward to being done with it within the next few days since it is quite dry and limited compared to other systems and not super interesting. Nonetheless, I know that I intend to use Batch for an upcoming project and so I am committed to finally getting a better grasp on it despite its oddities. Goodnight! ๐Ÿ˜ด

  131. : I finished reading that big Batch (CMD) shell scripting book today. It's good to have it finished, since it was kind of lingering in my subconscious as a todo item and hence fuzzing my focus to some extent. I also was reading more about low-level programming in general today, plus a few other miscellaneous things.

    I know I haven't done much artistic or musical stuff in the past few weeks, but my mind does tend to run in streaks like this and in that respect I'm currently locked into my "study and digest large volumes of technical information" mode. Who knows when the balance will shift back the other way again? I don't. I just know it eventually will, as is inevitable for my current trajectory. My technical and artistic/musical sides are kind of like yin and yang in that sense (the balance shifts often) I suppose one could say.

  132. : There's been a big change in my game project plan by the way, which is that I'm now planning to actually use Rust and one of its libraries (which library is not yet determined) instead of C++ and SFML.

    I've been thinking about this on and off for a over a week (maybe two) and I've decided to make the switch going forward, even though my professional experience is more in C++. There are several reasons why, but mostly it is because:

    1. Rust code often runs even more efficiently and performantly than C++ and hence is even more aligned with green computing and protecting the environment. I care deeply about matters of ethics and responsibility in computing, and so the fact that this better prospect exists matters to me. It's hard for me to ignore that.
    2. C++ has many suboptimal qualities and as I've been working with it again recently I've constantly had a feeling in the back of my mind of really wishing I was working in a different (more expressive and clean) language. C++ feels stifling compared to more modern programming languages such as Rust and other languages (mostly).

    Those concerns were weighing on my mind and deflating my motivation and energy when I was working with C++ and SFML and switching to something fresher like Rust is more inspiring and also wiser in the long term with the way things are going (both for the project and for professional outcomes in general too).

    I'm not going into this switch to Rust blind though or merely on hype. Don't worry. I've actually already read an entire Rust introduction book a couple years ago (and done the corresponding exercises) and I've been aware of the language and following it since as early as ~2013, when far fewer people even knew about it!

    I'm also looking forward to being free of C++'s nightmarish build dependency ecosystem (e.g. CMake). C++ makes you afraid to try things, whereas Rust is the opposite.

    So, that's all I have to report for today! Good night everyone! ๐Ÿฆ€๐Ÿ˜Ž๐Ÿ˜ด

  133. : I mostly studied more Rust programming today. I've been reading through a new book I bought about it (Rust In Action) to refresh my memory and broaden my skills since it's been a couple of years since I played with Rust last. ๐Ÿ“…๐Ÿฆ€

    Also, today was nice outside and so I went on a good walk, as I do on many pleasant days, though I seldom note it here in the log. I love nature and find that walks are very clarifying to my thoughts and such. Anyway, have a great day/night/etc all! ๐ŸŒฑ๐ŸŒ„

  134. : I'm going to skip on my log entry tonight to save myself a bit of time for other things. My studies continue though, as usual! Goodnight everyone!
  135. : Oh! I actually forgot to post a log entry on this day (an extreme rarity for me)! This was easter and I was hanging out with my family and helping with many things. Later on, I laid down on my bed "for a bit" but ended up falling asleep for a few hours and then later went to bed for real, and somehow in all that I forgot to post a log entry. Sorry about that for anyone who was expecting one!

    Anyway, happy easter! ๐Ÿฅš๐Ÿ‡๐Ÿ’

  136. : I'm taking tonight off again to give myself a bit more time for other things!

    Have a wonderful evening! ๐Ÿค—

  137. : I found out something quite unexpected today: There's apparently a little-known programming paradigm known as "function-level programming" which is NOT the same thing as the (much more widely known) functional programming paradigm.

    There doesn't seem to be much info about the "function-level" programming paradigm in contrast. The Wikipedia page has some cursory/fragmentary commentary on it but not enough to make the implications entirely clear. Apparently, the programming language J fits the category (and is also incidentally an array programming language, though I'm not sure how orthogonal that is to "function-level programming").

    This also reminds me of tacit programming, which is another interesting programming technique (or pseudo-paradigm perhaps) best embodied by concatenative programming languages such as Forth and Factor. They're worth checking out!

    The community responsible for Factor also has a great website listing many known examples of concatenative programming languages that exist.

    For many years now I've been fascinated by the various programming paradigms and how significantly they can completely change how programming feels!

    Anyway though, have a great night friend! ๐ŸŒ†๐ŸŒƒ๐Ÿ’ค

  138. : Oh, and there was another fun fact I found out yesterday that I neglected to mention. Did you know that the Haskell programming language is a descendent of an earlier (similar) language named Miranda? More interesting still, apparently Miranda had what some considered to be a cleaner syntax and even a few features that Haskell still doesn't have (although Haskell is generally more powerful, so I've heard).

    That being said, I have very little experience with either language. I messed around briefly for a day or two with Haskell several years ago, but didn't go much further with it than that. The language has too much syntax (hence arbitrary stuff that has to be memorized) for my tastes and lazy evaluation makes it too unpredictable for truly reliable multimedia programming in contexts such as game dev, though Haskell is otherwise an interesting programming language.

    Anyway, I don't have much else I feel like saying today. Things are continuing as usual: quietly but steadily, though with me sometimes overthinking things to my detriment. Oh well though, I'm putting earnest thought and effort into everything and so I shouldn't be too hard on myself probably. I am trying to be more decisive and efficient though!

    All that aside: Have a wonderful evening anonymous internet reader! ๐Ÿ˜

  139. : I stumbled upon a most unusual article on someone's blog today! It is an article where the author (Linus Akesson) is arguing against using syntax highlighting, which is not something you hear very often since most programmers don't question it and just assume as a given that syntax highlighting is good.

    The author has an interesting first principles based perspective on it! I enjoy reading opinions that are distinct from the norm and I think reading them and considering them authentically helps keep one's mind healthy and helps reduce one's chances of operating under potentially false assumptions.

    Incidentally, over the many years of my spelunking in code and exploring different programming languages, I've gone back and forth on using or not using syntax highlighting. I think perhaps it depends somewhat on context. Sometimes it seems to help, but sometimes it is counterproductive. Currently I've been using no or very little highlighting again and have been enjoying the lack of noise that minimizing it can bring.

    That's my comment of the day! Thanks for stopping by! ๐Ÿก๐Ÿ“ข๐Ÿ˜ƒ๐Ÿ‘‹

  140. : You know, I've been thinking... I really love the aesthetic of janky old typewriter printed documents, like what you'd imagine a writer would have hand-typed into a manual typewriter before computers ever existed (or in the early "twilight years" of computers' existence, when people still used typewriters for a while).

    I've wanted an actual practical retro typewriter word processing program for a while now, but the problem is most (all?) of them seem to be designed as jokes (heresy!) or don't have enough features to be usable for real work.

    Barring that, I at least want fonts and paper-textured backgrounds that capture that authentically janky typewriter aesthetic well together. Most such fonts though are missing some common characters and thus end up not usable in practice. I want that retro typewriter in an actual usable package. You know what I mean? I want clunky old computers too, like a Windows 95 or Windows 98 machine. I like the freedom and homey feel that the older platforms and mediums of expression like that had.

    I did find a pretty nice janky typewriter font today (or yesterday?) at least though, which is named "Kingthings Trypewriter 2" and gets the aesthetic pretty close. Maybe I'll use it at some point to make a retro document of some kind. That could be fun! ๐Ÿฅณ

    I also want an old school dot matrix printer... not the kind that tries to eat your coworkers like in Yuppie Psycho (which is a wonderful documentary on what it sometimes feels like to work in the tech industry, by the way), but an old school wholesome dot matrix printer with those dot-riddled tracks on each of the two sides of the paper that comes out in one giant scroll and that you have to manually tear off (very satisfyingly, like popping bubble wrap) after the document is printed. Mmmm... now that's the way a printer should be.

    Alas... my sweet retro jank, how I miss thee. Be that as it may, that covers my random thoughts for the day. May you have a peaceful (and very satisfyingly retro-clunky and quaintly inefficient) evening tonight! ๐Ÿงฎ๐Ÿ’พ๐Ÿช•๐Ÿ“ป

  141. : I randomly stumbled upon a nice article by a programmer (Dan Luu) where he talks about the value of being willing to look stupid, especially regarding how doing so enables you to discern truths that you'd otherwise be more apt to overlook.

    This kind of healthy perspective is important for all of us creative types to keep in mind I think! We have to stay loose enough to be willing to be imperfect and/or be criticized!

    Anyway, that's all I feel like logging here tonight. Sleep well and sweet dreams y'all! ๐Ÿฅฑ

  142. : I'm taking tonight off to give myself a bit more time! Goodnight! ๐Ÿ˜ด
  143. : I often really appreciate the old-school retro feel of text-based user interfaces (TUIs, as they are sometimes called). That approach to UI design also sometimes yields a nicely tight and pragmatic result, which may surprise many people.

    Relatedly, I also think command prompt based workflows still have a lot of untapped underutilized potential as well! I've heard that the defunct Oberon operating system did interesting things along those lines, though I've never used it myself!

    All that aside, on a related search today I ran across a GitHub list page collecting together a wide variety of software that use some form of text based user interfaces. I've barely explored the list much yet, but it looks like there's a bunch of fun and/or interesting stuff on there.

    Oh! Also, I watched the eclipse some with my family today, which was cool! I went out to check multiple times and got to see the last few minutes in addition to the main part. I've heard that there won't be another such eclipse for approximately 400 years! I wonder what society will be like 400 years from now. What the future will be like is interesting to ponder. ๐Ÿงโณ

    Anyway, thanks for reading and wishing you good fortune! ๐Ÿ“š๐Ÿ€๐ŸŒ 

  144. : Hey everyone! I've been busy with lots of random things today, but here's a few thoughts for today anyway for you! ๐Ÿ˜Ž๐Ÿ‘

    I actually haven't been studying Rust for several days now. It is a great language and its package ecosystem and error messages are certainly the best I've ever seen in any language or community! The error messages have a communicative quality that is a whole level above what most other languages do for error messages. The package manager of Rust (Cargo) is also gloriously fantastic (probably the best package manager for any programming language) of course.

    However, there's another language I've studied in recent years (off and on, partially, like Rust) that I have been starting to lean more towards so that I will be able to iterate much faster on my game dev project once I start production on it in earnest: Nim. As a solo game developer, for the project I have in mind I need to be able to iterate rather quickly in order to be able to polish the final game up well enough to feel right (satisfying to the player) and to reduce my chances of running out of momentum and mental fortitude before I can complete the whole thing. The project I have in mind has become rather big over time, though still designed (very intentionally and consciously) to have a naturally adaptable and malleable scope.

    Nim is more expressive and pleasant than Rust in most respects. Indeed, Nim actually feels even easier than Python and yet compiles to native code that runs as fast or almost as fast as C or C++ or Rust. Admittedly, Rust is likely to result in marginally more performant (and energy efficient code) but at the cost of a greatly increased compilation time and a much slower workflow iteration time. Rust is also less malleable than Nim (e.g. Rust's macros are far less pleasant to use and are less expressive and Rust's compile-time computation is also more rigid and awkward than Nim's, etc).

    It's a relief off my shoulders honestly. Rust is a great language and I definitely care very much about the fact that it can generate more environmentally friendly and performant code than pretty much any language except maybe C. However, Nim is very close in terms of performance (especially if you use it right) and is just a much more pragmatic choice for a solo game developer who needs to be able to iterate quickly to be competitive and to stay sane. So, that's why I'm now planning to use Nim instead of Rust. For other projects Rust may be a better fit, but Nim is likely to be more practical and more pleasant for my use case. ๐Ÿ˜„๐Ÿ‘‘๐ŸŒฑ๐ŸŒฒ

  145. : Today I randomly came across a kind of device I didn't know existed: a customizable "electronic paper" screen, one that you can program to behave however you want and display anything you want.

    I've been aware of Kindle devices that use this kind of non-emissive paper-like non-glare display and indeed I've used a Kindle Paperwhite before, so I was aware of the tech itself and have always admired that such a low power and paper-emulating kind of screen exists. However, I was unaware that there was any way available yet to use such a screen for completely custom purposes. It's really cool that it does exist!

    Such a screen enables you to reduce passive power consumption of a screen to zero or almost zero as long as what is displayed isn't changing quickly. Unlike a LCD or LED or CRT monitor, an "electronic paper" (e-paper, e-ink, EPD, etc) screen doesn't emit any light. I behaves like paper and hence is far more glare resistant and more usable under bright light.

    The low power consumption aspect of it really appeals to me from an environmental friendliness standpoint. I also feel like there's a big untapped market (and ethical imperative) for there to be more computers designed for low energy consumption instead of for maximum specs! ๐Ÿ˜ฎ๐ŸŒŽ๐Ÿ’š๐ŸŒฑ

    The models I encountered specifically were the Inky Phat and the Inky What. Both look like cool devices! Another brand that sells customizable programmable e-paper screen devices is apparently Waveshare. Inky is a UK company, whereas Waveshare appears to be Chinese though, so I'd probably prefer Inky when possible if I got one.

    I think it would be really cool to build some kind of custom retro computer using such a screen! It makes me tempted to get a Raspberry Pi and then combine it with one of these e-paper screens and some programming to create my own little custom eco-friendly retro computer! ๐Ÿ’พ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘พ๐Ÿ˜Ž

  146. : I'm skipping the log again tonight! See you guys tomorrow! ๐Ÿ“…๐Ÿ‘‹๐Ÿ™‚
  147. : I've been considering the past couple days whether or not I should make a retro game for the Playdate (a new retro handheld video game console, kind of like a Game Boy with a "fishing reel like" crank attached, which was released within just the past couple years) or if I should instead stick with the PC and the full power that desktop computing offers.

    There's pros and cons either way. In a sense, having a lot of power and options at one's disposal can make oneself more likely to overanalyze things (i.e. choice paralysis, etc), but on the other hand the possibilities are greater of course. Likewise, retro is obviously more limited, but then again, design within limitations (indeed, the art of selecting interesting limitations) could be argued to be the very essence of good creativity!

    However, the more I've thought about it the more I'm inclined to not view the choice of platform as an "either or" situation after all! You see, even if I do decide to target the Playdate (or any other retro console or emulator for that matter), as long as I structure my code in a properly separated (roughly "model-view-controller") way, where the main game code is properly modular and separate from the input handling and display code, then I could just easily port the game to both platforms (Playdate and PC) and hence release on both! That seems likely to be the best strategy overall!

    I should also mention that if I go ahead with this plan then I'll actually be working on a reignited (newly envisioned) version of an older game design, not the one I've been coyly talking about on this website on and off. The reason is because the characteristics and production implications of the older game idea seems likely to be more suited to a retro platform than my most recent game idea, perhaps.

    I love both ideas a lot! In fact, the most recent game idea that I've been talking about (mostly without divulging hardly any real info) on this website is perhaps my favorite game idea overall so far. I can save it for later though. ๐Ÿ˜Ž๐ŸŽฎ

    The newly envisioned version of the older game concept in contrast seems more immediately viable though, especially if I do decide to target the Playdate and also port to the PC. The re-envisioned older idea also also seems less overwhelming and perhaps easier to find a bigger audience for and to iterate on.

    Either way, both projects are good prospects to move forward with gradually as I find the time to.

    I am still refreshing some of my skills and knowledge and figuring out some aspects of the preliminary (rough) plan, but I am looking forward to hopefully beginning production one of these game design ideas soon.

    Oh, and I also repaired a few unreliable links on this page by changing them to point elsewhere. I've been seeing those links having (sometimes intermittent) problems for a while now in my link scanner. I was waiting, in hopes that those pages would fix their problems, but finally decided to change the links to other (more reliable) webpages.

    Anyway, thanks for stopping by and taking the time to read my journal and logbook (fun alternative historical term: commonplace book). I hope you've found it useful and inspiring in some way! Have a deeply restful evening and a good night! ๐Ÿค—๐Ÿ˜Œ๐Ÿ˜ด

  148. : I'm going to a special family gathering tomorrow, which should be fun!

    As such, I'm taking tonight off again to save some time, etc. Goodnight! ๐Ÿ’คโœจ๐ŸŽŠ

  149. : The family meetup today went well! It was good seeing everyone! ๐Ÿฅ˜๐Ÿต
  150. : I learned an interesting new word the other day: menhir (also known as standing stones, orthostats, and liths). ๐Ÿ’Ž

    Apparently, people used to place long boulders in the ground so that the stones would point up into the air. It is essentially stone age architecture. Despite the simplicity of it, the resulting aesthetic is subtle and understated yet somehow moving.

    It has a kind of refined and gentle appeal, suiting both my love of nature and my love of retro things. The aesthetic also touches on the value of putting love into the details in one's surroundings even if just inspired by some semi-random impulse, even if others may be dismissive of those efforts, and even if only a few will appreciate why (if there is even a reason) you made such a charming yet subjective and arbitrary choice.

    The ability to make subjective and arbitrary choices in a free-flowing and empowered way seems likely to be conducive to good creative outcomes I think! ๐ŸŽจ๐Ÿคช๐Ÿฆ‰๐Ÿฆ…๐ŸŽ‰

    I'm still working on improving that in myself, as I sometimes second guess myself too much. Onwards and upwards though, right lads/lasses? Goodnight y'all! ๐ŸŒŸ๐Ÿคฉ๐ŸŒ„

  151. : Hmmm, I'm not sure what I want to say tonight. I guess I'll just link you to a few things of interest, so that you'll have something to explore if you want to.

    Specifically, I feel that data-oriented design and entity component systems have become increasingly relevant and interesting over the past decade. Many of the insights of this alternative way of building and structuring code are directly contrary to a large subset of popular programming ideology. Indeed, it is wise to question popular assumptions, as such "widely accepted truths" are often wrong in reality.

    Two additional useful sites about data-oriented design are and this GitHub list of related resources. Anyway, I hope that's useful to some of you.

    Have an awesome evening and thanks for stopping by! ๐ŸŒ†๐ŸŒƒ๐Ÿ‘จโ€๐Ÿ’ป

  152. : Several days ago an interesting thought occurred to me (and reoccurred to me today as well, hence inspiring me to post about it here now).

    Programmable calculators are a viable way to simulate an ultra-retro computing environment. Unlike actual retro computers, which are mostly no longer in production and hence have become more difficult and more costly to obtain, programmable calculators are still routinely manufactured and thus abundantly available.

    Thus, one can use a programmable calculator as a kind of retro computer and as a really strong "design within limitations" exercise for programming and data management. Indeed, I actually remember playing a really cool RPG game on my TI-83 Plus calculator back when I was in high school. The devices are more capable than one might think, though some basic things (e.g. text documents) will likely be awkward.

    The performance constraints would also be quite stringent of course, but that is also part of the point. Programmable calculators provide a way of experimenting directly with the kinds of extremely resource/performance constrained systems that the very first computer programmers would have had to deal with! Limitations foster creativity.

    I think that's actually a pretty cool workaround for the scarcity of true retro computers in the modern era. Programmable calculators are also proper isolated standalone systems, unlike the often harmfully overly interconnected modern phones and desktop computers (where one is often not even given a choice for whether to be connected, perhaps because the lack of that would make it harder for companies and other entities to parasitically manipulate your attention for profit, etc).

    In any case, the prospect of treating a programmable calculator as a retro computer and seeing how far you could take it is an intriguing prospect. It could be fun!

    Also, I do really think there's a huge untapped market for highly constrained, highly eco-friendly, and 100% isolated standalone computing devices that are entirely free from external manipulation. I think a lot of people (myself definitely included) are getting extremely tired of having unwanted (and often unethically manipulative) changes forced upon the systems we use regularly.

    A computer should be 100% its owner's personal property, entirely free from external control. Our computer(s) should be treated like part of our physical homes and everything in it (them) should be inviolable under almost all normal circumstances.

    Computers have become like digital extensions of our minds and hence have become morally analogous to being like part of our bodies and intimate personal space and hence any intrusion upon that space whatsoever should actually be treated as a very serious violation of ethics, human dignity, and consensual boundaries. ๐Ÿšง๐Ÿค•๐Ÿšง

    There are fewer things about the current tech landscape that are actually inevitable than some corrupt entities would like use to believe. Better designs that are more respecting of freedom and human dignity and healthy limitations are certainly possible.

    With all that off my chest, I bid you all a generously fair night's sleep. ๐Ÿงฎ๐Ÿฅฑ๐Ÿ˜ด

  153. : Besides being one of the most wonderfully pragmatic and expressive programming languages I've ever encountered, Nim also has a diverse variety of libraries and projects that've been made with it, especially compared to its relatively moderate community size. That's the power of an expressive language for you though!

    I look forward to doing creative coding and game dev with it once I get around to it!

    That's my post today. I hope you all have a breezy and soothing day! ๐ŸŽฎ๐ŸŽ‡๐ŸŽ†๐Ÿ”ฅ

  154. : This evening I think I'll just link you to an empathetic and intellectually honest (i.e. not morally cowardly, not propaganda in disguise created by "AI" companies/kleptocrats) article about the deeply unethical and disgusting nature of web-scrapping-based plagiarism engines (i.e. the so called "generative" theft-based "AI" software of recent years, such as ChatGPT).

    The article is "Generative AI is stealing the valor of human intelligence" by John Loeffler. It cuts to the heart of things fairly well. Here are a few quotes of note:

    AI is stealing the valor of human intelligence, and it can't be forgiven for that

    All of this, meanwhile, wouldn't be possible without you, the human being, the one who produced the training data that all these AI models have used to get so good at writing an email. Google's models probably read countless emails to understand what an email is supposed to sound like, and yours was possibly among them.

    AI image-generation tools like DALL-E, Midjourney, and soon Google's AI image generation, likewise, wouldn't be anywhere without the grueling, often unpaid and thankless work of the photographers, painters, and other artists whose works were used to train these models, almost entirely without the artists' consent or even knowledge.


    The only analogy I can think of for this is someone donning a military uniform and claiming to have fought in a war they did not fight in, or claiming some medal or act of heroism that they did not personally earn or perform. This is called stolen valor, and it banks on the respect and admiration given to those who do something productive and heroic by taking credit for something without having to actually do it.

    Anyway, that's my post of the day. I hope you have a wholesome and highly restive (or alternatively: invigorating) remainder of your day/night! ๐Ÿ‘‹๐Ÿ„โ€โ™‚๏ธ๐ŸŒฒ๐Ÿค—
  155. : Tonight's been pretty hectic and stressful for me, so I'm not doing a full post tonight. Sorry! Wishing you all the most pleasant of dreams though, as always! ๐Ÿ˜ด
  156. : I had another busy night and so I won't be making a full post.

    Thanks for dropping by though! Have an awesome day/night!