I Need More Coffee2024-02-25T15:46:46Zsohalsdrhttps://ineedmore.coffee,2023-01-04:default-atom-feed/Trimming Down The Nerd's Cookbook<h1>Trimming Down The Nerd's Cookbook</h1>
<p>2023-06-13</p>
<p>I've finally had a chance to do a little cooking again! After being cooped up in a dorm room for two semesters with a shabby excuse of a kitchen shared by the entire floor, I'm back home, with decent burners, a good spice rack, and even an <em>actual fridge</em>. Now that I'm doing some more cooking, and hopefully will continue to do so for the forseeable future, I want to have a home for some homegrown recipes. This is even more pertinent now than before college, as I'm a recently-minted vegetarian and as a result often adapt recipes I've loved making in the past to work with my diet. Thus, I took a look at a project I've used once in the past, <a href="https://github.com/doersino/nyum">nyum</a>.</p>
<p>It's a shell-script-based static site generator that takes in Markdown and spits out a <a href="https://doersino.github.io/nyum/_site/index.html">full recipe site</a>, with search, a nice layout, and more. Overall a pretty neat little way to spin up a personal cookbook. However, ever since starting to really work with simple, shell-script-based static site generators, like the one used for this site, I don't like settling with someone else's way of generating a site, I want to hack on it and adapt it to my tastes. And the amazing thing about these simple static site generators is that it's incredibly easy to do so!</p>
<p>As such, I <a href="https://github.com/sohalsdr/nyum">forked nyum</a>, and made a number of changes. I first tackled deployment, modifying the script to build to <code>docs/</code> rather than <code>_site</code>. This allows me to simply deploy the site onto GitHub pages without any additional hassle, as Pages lets you deploy from <code>docs/</code> (but not any other directory for some absurd reason). I also removed the rsync deployment script, GitHub Action, and supporting code inside <code>build.sh</code>.</p>
<p>Next up was design and load times. My design language on <em>I Need More Coffee</em> (and other tangential pages in the works) is based around basic HTML, using system fonts, and dithered images, which results in simple, inherently responsive design, as well as blazing fast load times. As such, nyum's use of webfonts and a header icon wasn't going to work for me, and I stripped them out. I did keep the other UI icons, as they serve a purpose and I couldn't be bothered to adapt the layouts to work without icons. Honestly, in my opinion, my "trimmed down" version looks better than the original, but that's just my taste so your mileage may vary. I also dithered the images in the demo site to be able to compare resource usage between the original nyum and my planned usage.</p>
<p><strong>And boy do they compare</strong>. I ran 4 <a href="https://gtmetrix.com/">gtmetrix</a> reports between the two sites:</p>
<ul>
<li><a href="https://gtmetrix.com/reports/doersino.github.io/nNOV1vqp/">Original Homepage</a></li>
<li><a href="https://gtmetrix.com/reports/sohalsdr.github.io/JDcdVi40/">Fork's Homepage</a></li>
<li><a href="https://gtmetrix.com/reports/doersino.github.io/43OiGORA/">Original Cheese Buldak Recipe</a></li>
<li><a href="https://gtmetrix.com/reports/sohalsdr.github.io/UtV3isPa/">Fork's Cheese Buldak Recipe</a></li>
</ul>
<p>The fork's homepage <strong>loaded 3x as fast</strong> (301ms vs. 958ms) and <strong>transmitted less than a tenth of the data</strong> (13.6KB vs. 186KB). The recipe page similarly loaded 3x as fast, but there wasn't as much of a delta in the amount of data transmitted as a vast majority was image data, and the particularly heavy image of the Cheese Buldak didn't want to reduce in filesize tremendously even when dithered to 4 colors and reduced to 1024px wide.</p>
<p><strong>On the whole, a few simple changes resulted in a substantial and noticeable decrease in load times and resource usage of this simple site.</strong> I hope you'll check out the <a href="https://sohalsdr.github.io/nyum">demo site</a>, or my <a href="https://cookbook.ineedmore.coffee">actual cookbook</a> (it only has the sample Strawberry Smoothie recipe for now, but will have more recipes soon, I promise).</p>https://ineedmore.coffee/trimming-nyum2023-06-13T00:00:00Z2023-06-13T00:00:00ZDoing Some Admin<h1>Doing Some Admin</h1>
<p>2023-05-15</p>
<p>It’s been a few weeks since I’ve posted to this site, which is quite unfortunate. In that time, I’ve finished off another semester of college, shoved all my possessions into my trusty 4Runner, and hopped on a flight to Isla Verde, Puerto Rico, where I’m writing this post from.</p>
<p><img src="../public/images/some-admin/islaverdebeach.png" alt="Picture of Isla Verde Beach" /></p>
<p>I’ve also taken a renewed interest in making this place my home on the internet, inspired by the numerous other folks on the internet I’ve added to my RSS feed over the past few days (I definitely want to add a <a href="https://blogroll.org/what-are-blogrolls/">blogroll</a> to this site at some point, maybe even a blogroll-roll of other blogrolls and webrings I’ve used to find numerous sites for my RSS list). With that, I’ve decided to do some admin and refactor, as well as better define, all of the subdomains and repositories that comprise (or will comprise) <em>I Need More Coffee</em>. Many of these changes haven't happened yet, but will in the coming days or weeks, and may be accompanied by their own posts.</p>
<h2>Subdomains</h2>
<p>I want to use <em>I Need More Coffee</em> as a home for a larger portion of my online presence, and as such I've decided to start using some subdomains to add other types of pages beyond just this blog. Here are a few subdomains I may add in the future (or may have already added).</p>
<p>| Subdomain | Purpose |
| <code>@</code> and <code>www</code> | Will continue to point to this site, with the amount of pages kept to posts and other hyperrelevant pages. |
| <code>pages</code> | Will serve as a central location for one-off and auxiliary pages that don’t need to hold to the same design language and purpose as pages on the main site, from full-size assets for posts to small project-specific sites. |
| <code>verify</code> | A single <a href="https://manuelmoreale.com/my-verified-online-presence">verification page</a> outlining my entire online presence, verifying that these accounts are mine and that others may not be. |
| <code>wiki</code> | Will be the future home of a wiki or “digital garden” of sorts. Could either take the form of a published <a href="https://logseq.com">Logseq</a> graph, or maybe something more minimal. |</p>
<h2>GitHub and Repositories</h2>
<p>I'm also making some changes to this site's presence on <a href="https://github.com/ineedmore-coffee">GitHub</a>. The organization has been renamed from <code>I-Need-More-Coffee</code> to <code>ineedmore-coffee</code>, as it looks more elegant and is less effort to type. The <a href="https://github.com/ineedmore-coffee/main">repository that houses this site</a> has been renamed from <code>i-need-more-coffee.github.io</code> to <code>main</code>, which does technically mean that it's being served as a "project site" and as a subfolder of my main GitHub pages site, but this doesn't matter much as I'm pointing my apex domain to this repository, and will be manually specifying subdomains for any other repository I enable GitHub Pages for.</p>
<p>| Repository | Purpose |
| <code>main</code> | Contains this site. |
| <code>pages</code> | Contains the files for <code>pages.ineedmore.coffee</code>, will consist a simple directory of HTML files. |
| <code>verify</code> | Contains the HTML for <code>verify.ineedmore.coffee</code> |
| <code>meta</code> | Contains meta-information about how the various sites, repositories, and subdomains are organized and managed |</p>
<h2>The "Future Link"</h2>
<p>This is a new addition to the site that I intend to use in the future, a placeholder page that I can link to, and then later replace with a link to a new post that did not exist at the time of the original post. I've written a little bit more about it on <a href="/future-link">the page itself</a>.</p>https://ineedmore.coffee/some-admin2023-05-15T00:00:00Z2023-05-15T00:00:00ZResources for a Resource-Saving Internet<h1>Resources for a Resource-Saving Internet</h1>
<p>2023-05-18</p>
<p>A while back, I stumbled upon <a href="https://korayer.de">korayer</a>'s <a href="https://referi.de">RE;FERI</a>. This site outlines a number of resources about creating lightweight websites, and most notably includes the template for a CSS grid system, allowing one to create websites with layouts more complex than just a linear text document, but without any bloated JavaScript. I was intrigued by the possibilities, but didn't want to continue having to view the site in Google Translate, so I created <a href="https://github.com/ineedmore-coffee/referi">my own fork</a>.</p>
<p><img src="../public/images/referi-translation/screenshot.png" alt="A screenshot of the grid system on the example site of my version of RE;FERI" /></p>
<h2>Translation</h2>
<p>I don't know German (the language the original version is written in). As a result, I relied on a combination of Google Translate, as well as my own intuition on the message being conveyed. This has resulted in what I feel is a reasonable interpretation, but <strong>please do <a href="https://github.com/ineedmore-coffee/referi/issues/new">open an issue</a> if there's anything I've grossly misinterpreted</strong>.</p>
<h2>Dark Mode</h2>
<p>One aspect of the original RE;FERI that bugged me was the <strong>lack of a dark mode</strong>. In 2023, every website has a dark version, and I knew from my work on <a href="https://github.com/ineedmore-coffee/main/blob/main/header.html">this site</a> that it's <a href="https://bt.ht/html-dark-mode">incredibly easy to add a dark mode to a simple HTML site</a>. As such, <strong>my version of RE;FERI supports a dark mode</strong>. This is achieved using just the <code><meta name="color-scheme" content="dark light"></code> tag to indicate to the browser that a dark mode is available, and then some mode-specific CSS styling for links, highlights, and some other custom elements to ensure consistent readability across modes.</p>
<h2>Next Steps</h2>
<p>I think this system, and having a version in English with a dark mode, will allow me to easily create more pages for <em>I Need More Coffee</em>, as well as other personal projects, that preserve the simple, lightweight, and quick-to-load nature of this site. For starters, I plan on using it for the <a href="https://manuelmoreale.com/my-verified-online-presence">verification page</a> I discussed in a <a href="https://ineedmore.coffee/some-admin">previous post</a>. <strong>I'm excited to see what I, and others, can create with this.</strong></p>
<p><strong><a href="https://referi.ineedmore.coffee">View the example site here!</a></strong></p>https://ineedmore.coffee/referi-translation2023-05-18T00:00:00Z2023-05-18T00:00:00ZLearning How to E-Mail Pt. 1 - Primary Mailbox<h1>Learning How to E-Mail Pt. 1 - Primary Mailbox</h1>
<p>2023-06-02</p>
<p><em>Note: This post is the first part of a planned multi-part series on learning how to manage my e-mail. Check back soon for part 2!</em></p>
<p><img src="../public/images/mail-cleanup/napkin-drawing.png" alt="Hand drawn picture depicting a transition from the drawbacks of my prior inbox disorganization to the benefits of my new inbox and mail solution" /></p>
<p>It feels like my generation never really learned how to use e-mail correctly.</p>
<p>I had a school provided e-mail since I was in 4th grade, and have had my own personal e-mail, the one I still used up until recently, for over a decade. Because e-mail, and other aspects of digital life, were something pushed at us from childhood rather than being a conscious choice to set up and use as an adult, it seems like I, and all of my peers, just kind of <em>use</em> e-mail, creating accounts, getting signed up for newsletters, racking up unread e-mails in the thousands, without any sense of order and organization. It becomes this chore and burden, wading through all sorts of automated annoyances just to dig out that one important e-mail from an employer or classmate.</p>
<p>For the longest time, my solution to this was simply to ignore it. To not use e-mail on my phone, or to just ignore the unread count on my mail app when I eventually needed to use it on my phone. I then switched to a series of e-mail apps that employ their own filtering to make a “focused inbox”. But ultimately, these are just bandaid solutions, trying to deliver a “quick fix”. When I found myself missing important college application e-mails because one of these mail apps was filtering them out erroneously, I decided that enough was enough and that I would fix my e-mail situation.</p>
<p>For this first phase of sorting out this messy, disjointed cluster of accounts that comprises my e-mail infrastructure, I decided to focus in first on my primary e-mail address, the one I ask people to contact me at and that handles the important accounts in my life.</p>
<h2>Stopping the Flow</h2>
<p>The first step I took was to stop the flow of junk e-mails that was flowing into my primary inbox. Despite having a separate e-mail address designated for extraneous accounts and anything that was likely to get me a lot of e-mails, I still had a daily flow of newsletters, CollegeBoard <a href="https://bigfuture.collegeboard.org/for-parents/planning-for-college/student-search-service">Student Search Service</a> e-mails, and other noise that I just didn't want cluttering up my inbox. Inspired by <a href="https://www.reddit.com/r/LifeProTips/comments/jgpzpr/lpt_it_only_takes_about_23_weeks_of_clicking">this Reddit post</a>, I took this dead simple approach to stopping the flow of unnecessary e-mails for good:</p>
<ol>
<li>Mark all e-mails as read</li>
<li>Every day, open my e-mail and look at the dozen or so new e-mails I receive</li>
<li>For all of the unwanted messages, unsubscribe from the mailing list or block the sender</li>
<li>Repeat steps 2 and 3 for around a week or two until the flow of e-mails slows to a crawl</li>
</ol>
<p><strong>This is seriously all it took.</strong> To speed up the process for myself, I also retroactively went through the previous two weeks of e-mails and unsubscribed from all senders I didn't want to receive e-mails from.</p>
<p>This simple step solved the initial problem that spurred me to take on this project, and allowed me to start using my primary e-mail in a good old fashioned mail application like Apple Mail, without missing a single important message amidst noise.</p>
<h2>Taking Control</h2>
<p>Another thing that has irked me about my e-mail situation thus far has been how it's kept me tied to Google. I have worked on slowly (but not completely) de-googling my life for some time now, largely tackling low hanging fruit like switching to DuckDuckGo and Firefox years ago, as well as ending my Google Drive and Google Photos usage, switching off of Google Maps, and overall minimizing my personal Google product usage to just YouTube and GMail. Having so much importance resting on a Google account bugged me though, with recent stories showing <a href="https://www.nytimes.com/2022/08/21/technology/google-surveillance-toddler-photo.html">just how easily Google is ready to lock you out and never respond to you again</a>, leaves me somewhat uneasy. Furthermore, Google is an advertising company, and between adding features I don't need, and serving ads in my inbox, I'm sure my e-mails are being scanned and analyzed in 10 different ways.</p>
<p>Thus, I decided to finally make the somewhat scary jump off the GMail address I've used for a majority of my life, and switch to a <a href="https://proton.me">Proton</a> account, with an address on a domain that I own. Proton gives me secure and encrypted e-mail that I'm paying for with my wallet rather than my data, and using my own domain means that if Protonmail goes under for some reason, or simply if I find a better offering elsewhere, switching providers is a matter of changing a few DNS records rather than painstakingly migrating dozens of accounts like I'm having to do for this transition (it's certainly an ongoing process that I'm only in the beginning of).</p>
<p>Protonmail's <a href="https://proton.me/easyswitch">Easy Switch</a> feature made the first few steps of the switch pretty easy, as with one button I had my 12 or so years of e-mail history in my Protonmail account (meaning to find an important e-mail in the future I'll only have to search one account), as well as setting up a forwarding rule to forward all mail from my GMail to my Proton address. From there, most of the work really revolved around cleaning up my inbox, as well as dealing with accounts, as mentioned above.</p>
<h2>Cleaning Up the Mess</h2>
<p><em>Note: The mail organization in this section should have been performed</em> <em><strong>before</strong></em> <em>moving my inbox history over to Proton. I didn't, however, so I resolved to instead keep my Proton mailbox as my organized and pruned copy, and simply mass archive all messages in my Google account.</em></p>
<p><strong>Nobody ever told me that you're supposed to move e-mails out of your inbox.</strong></p>
<p>As a result, a lot of talk about organizing e-mails, with folders and labels, has felt like alienspeak to me. It wasn't until I thought about it recently that it made sense, that an e-mail inbox is an intermediate place for mail <em>prior</em> to it's final destination, rather than being the final destination itself. Yet another aspect of e-mail that I had never learned about due to e-mail being pushed at us from too young of an age.</p>
<p>With this new insight, another goal was added to my e-mail extravaganza: <strong>getting to 0 messages in my primary inbox, while purging all unnecessary mail from the past decade</strong>. I started with ~18,000 messages in my inbox, and it ended up taking around a week of intermittent cleanup sessions to get that down to 0.</p>
<p>I first started by searching for e-mails that I knew I wanted kept, and archiving them so that they didn't accidentally get deleted. This included filtering for senders like family members, partners, my university, and past employers. I then used creative search terms to try and capture large amounts of e-mails I knew I wanted gone, such as:</p>
<ul>
<li>" sale" (the leading space was important in not picking up unrelated messages)</li>
<li>".edu" (to get rid of spammy e-mails from colleges)</li>
<li>"newsletter" (to get rid of various company newsletters)</li>
<li>"notification" (for various services that I didn't disable e-mail notifications for)</li>
<li>"verify" (for all of those e-mail verification or two-factor messages)</li>
</ul>
<p>I then systematically filtered through my inbox, finding different senders and either trashing or archiving all of their messages, and finished it off with a manual review of a couple hundred messages that didn't get categorized through any of the above actions.</p>
<p><img src="../public/images/mail-cleanup/empty-inbox.png" alt="Image displayed by Protonmail when a user's inbox is empty, telling the user that they are all caught up on e-mails" /></p>
<p>At long last, I was faced with a completely empty inbox.</p>
<h2>Conclusion</h2>
<p>With admittedly some work, yet not an impossible amount of effort, my personal mailbox has gone from being that drawer full of junk that I try to open as little as possible to being an organized space that I feel ownership of and have control over. It's a pride point of my digital life rather than an annoyance. I hope that my journey to make this step off Google, and take control of my inbox, my e-mail address, and my e-mail management, inspires others to do the same and make e-mail work as it's supposed to.</p>
<p>The next step in this process, beyond migrating accounts to my new e-mail address, is going to be to apply some of these insights to my other inboxes, as well as deleting and consolidating e-mail accounts where possible to create a comprehensive e-mail handling strategy that extends beyond just this personal address, and I plan to outline that journey in a second part to this series.</p>
<hr />
<h2>Resources</h2>
<ul>
<li><a href="https://reddit.com/r/degoogle">r/degoogle</a> - This subreddit has some good resources and links about degoogling in a broad sense, and has others going through a similar transition away from GMail. <a href="https://reddit.com/r/privacy">r/privacy</a> is also a great resource, but more general.</li>
<li><a href="https://web.archive.org/web/20140317005022/http://inboxzero.com/articles">The Inbox Zero Series</a> - A really useful collection of insights about e-mail management and how to handle it effectively. The series includes <a href="https://web.archive.org/web/20140409230155/http://www.43folders.com/2006/03/27/process-to-zero">a post on processing an inbox down to 0</a>, and this may be a good starting point if you have more e-mails to work through than I did.</li>
</ul>
<h2>Appendix A: Choosing an e-mail provider</h2>
<p>There's a good few options for paid e-mail providers out there that fit some of my requirements, and while I chose Proton, that may not be the best choice for everyone. This appendix goes over some of the providers I considered, and why I did or did not go for them. I primarily looked for providers that I pay for with money, rather than data, that were at least somewhat privacy-respecting, and that would let me use my own domain name. Another important factor for me was longevity, for my primary address I'm not interested in buying into a specific provider and workflow unless I know it will be around in the long run, and doubly so for encrypted mail providers that often require users to only use their applications to access e-mail rather than being able to use any IMAP/SMTP client.</p>
<h3><a href="https://proton.me">Proton</a></h3>
<p>This is the provider I went with, as it was reasonably priced, fit all of my requirements, and had the additional bonus of being encrypted and secure, as well as providing other services alongside e-mail such as cloud storage and calendar management (I have yet to significantly make use of either, but they're not bad perks to have). I also believe in Proton's longevity, and feel confident that they'll continue to be around for a bit.</p>
<p>For <strong>$4.99/mo</strong> ($47.88/yr) on their "Mail Plus" tier, you get <strong>15GB of storage</strong> (more than enough for me at the moment), <strong>10 e-mail addresses</strong>, and the ability to use 1 custom domain for e-mail. <strong>The 15gb of storage can also be shared with Proton Drive</strong>, their cloud storage service, and the plan also gives you the ability to create <strong>25 calendars</strong> on Proton Calendar.</p>
<p>It's not all sunshine and roses however, as there are some drawbacks. The first is that their web client isn't perfect. It's good enough, but doesn't have any "select all" feature, and can be slow at times. They do let you search the contents of e-mails now, which is a pain point that some have mentioned in the past, but it's not perfect. The biggest drawback, however, is <strong>not being able to use third-party clients on mobile</strong>. On desktop, you can use a third-party mail app like Thunderbird with their <a href="https://proton.me/mail/bridge">Proton Bridge</a> application, but this isn't available for mobile, forcing users onto the official Protonmail app. This is understandable, given that IMAP and SMTP were never designed with encrypted e-mail platforms in mind, but is nonetheless unfortunate. The iOS app isn't too bad though, so this is a compromise I'm willing to make for the promise of additional security.</p>
<h3><a href="https://www.fastmail.com/">Fastmail</a></h3>
<p>Fastmail came in second place for me, as it's a lot of the good of Proton, but without any encryption, meaning that it doesn't suffer from a lot of the drawbacks that Proton has. It advertises privacy-first e-mail, and doesn't have any ads. It also offers a bit more for a similar price to Proton.</p>
<p>For <strong>$5.00/mo</strong> ($50.00/yr) on their "Standard" tier, you get <strong>30GB</strong> of storage, <strong>600 e-mail addresses</strong>, either on your own domain or on one of their <a href="https://www.fastmail.com/about/ourdomains/">many domains</a>, <strong>access to their calendar service</strong>, as well as the ability to use any IMAP/SMTP client.</p>
<p>Honestly, Fastmail has a very compelling offering, and I've seen others on the internet using it, so it was a very tough decision between this and Proton, but ultimately I settled on Proton due to Proton Drive, as well as simply having a bit more experience with the platform (I've used their free tier for a few accounts here and there over the years and have watched it grow). The encryption is also a solid "nice to have", even if I'm not entirely sure how much I care about it due to pretty much all of my e-mail correspondence being with GMail or Outlook addresses, meaning my messages end up passing through Google or Microsoft's servers anyways. There is still a chance I may move to Fastmail later, and I'm considering giving their free trial a shot, but am somewhat unclear how I would actually go about testing their services.</p>
<h3><a href="https://tutanota.com">Tutanota</a></h3>
<p>Tutanota was also in contention, being Proton's primary competition in the private and encrypted e-mail business. Their pricing is certainly pretty good if you just want e-mail and calendars, and they have similar promises as Proton of encrypted e-mail storage and end-to-end encryption of messages between Tutanota users.</p>
<p>For <strong>€1.20/mo</strong> (€12/yr), on their "Premium" tier, you get <strong>1GB storage</strong> (but this can be upgraded à la carte for a reasonable price), <strong>6 e-mail addresses</strong>, <strong>custom domain support</strong>, and <strong>unlimited calendars</strong>.</p>
<p>The big downside with Tutanota is that they don't an equivalent to Proton's "Proton Bridge", meaning that IMAP/SMTP clients can't be used, even on desktop. They do have native desktop applications in addition to mobile, but I would prefer the freedom to choose which client I use for mail on the desktop. Additionally, as stated with Fastmail, I'm just more familiar with Proton's offering, hence why I opted for them over Tutanota.</p>
<h3>Honorable Mentions</h3>
<ul>
<li><a href="https://posteo.de/en">Posteo</a> - Great price, but seems like more of a barebones offering compared to the others. I may consider this service if I need a cheap secondary address under another domain.</li>
<li><a href="https://www.icloud.com/mail">iCloud</a> - $0.99/mo for 50GB or $2.99/mo for 200GB, as well as custom domain support and a whole host of other features is a great deal, and I already pay for the 200GB storage tier for iCloud Photos anyways, but I want to reduce my reliance on Apple services rather than increase it. If you use a number of Apple devices and are fine with getting bought into the ecosystem, however, this is arguably the most compelling offering out there.</li>
</ul>https://ineedmore.coffee/mail-cleanup2023-06-02T00:00:00Z2023-06-02T00:00:00ZWrite An Intent Statement For Your Knowledge Infrastructure <h1>Write An Intent Statement For Your Knowledge Infrastructure</h1>
<p>2023-08-01</p>
<p><img src="../public/images/knowledge-system-intent-statement/pkm-meme.png" alt="Meme depicting a bell curve, with a simple person on one end and a wise person on the other both using Apple Notes, while a crying person in the middle has a complex setup with many different note-taking applications" /></p>
<p><strong>Nerds (like me) love trying out new tools.</strong> At least in the circles I follow, there's been this new Renaissance of information management and sharing. Using personal knowledge management (PKM) software is gradually becoming more common among knowledge workers, a good few people are starting <a href="https://www.technologyreview.com/2020/09/03/1007716/digital-gardens-let-you-cultivate-your-own-little-bit-of-the-internet/">digital gardens</a>, and there seems to be more and more tools billing themselves as a new way to write or think.</p>
<p>However, this can quickly become a trap. I found myself in this situation with a tool I've been recently trying called <a href="https://anytype.io">Anytype</a>. For those who are unfamiliar, Anytype is a pretty new contender in the PKM space, and it's got a lot going from it, from open-sourced code, to encrypted sync, and a pretty nice UI to boot. However, it's main draw is the type system. As the name suggests, users can make any type, with it's own attributes and templates, and structure information in whatever way makes sense in their head. <strong>And by god, it's addictive</strong>. It's a really powerful feeling being able to structure information in the exact intuitive manner that makes sense to you.</p>
<p>But all of this ended up backfiring on me a little bit.** I was so caught up in the fact that I <em>could</em> map out a lot of my mind in this tool that I didn't stop and ask myself whether I <em>should</em>.** I've been helping my partner build up her own knowledge infrastructure recently, and after explaining the virtues of organization and intent to her I went to add some notes into Anytype and I realized that I had a bit of a mess on my hands. My knowledge infrastructure was a total mess, littered with types I came up with on a whim, and a ton of essentially boilerplate information. I don't need an entire object for a youtuber just because they publish a single course that I plan on taking one day. <strong>That information isn't actionable or meaningful for me in any way, and not every piece of knowledge needs every attribute represented in my personal knowledgebase.</strong></p>
<p>Ultimately, I realized that I was missing <strong>intent</strong>. I was creating notes and trying to offload knowledge, but I didn't have an end goal, a specific idea of what I wanted out of my private knowledgebase. This has been further complicated by the fact that I'm slowly building up a <a href="https://cst.ineedmore.coffee">public knowledgebase</a>, and not having a clear intent means that it's hard to navigate what should be private and what should be public.</p>
<p><strong>The simple solution for this problem is an intent statement, a document that outlines the intent of a given system.</strong> I've already been doing this in smaller ways, for example whenever I spin up an OS on one of my computers, and enter that information into my notes, I write a small intent statement indicating what the machine is for (Is it my primary machine for some time? Does it have a specific purpose that it's set up for? Am I just spinning it up to try out a particular piece of software?). Having my intentions thought through, written out, and in a place where I'm reminded of it results in a more organized way of thinking about my systems. **Having an intent statement grounds me into thinking about what I need to do with the system to meet my goals for it, rather than what I could do with the system. **</p>
<p>My intent statement for my Anytype knowledgebase ended up being structured like this:</p>
<blockquote>
<p><strong><!-- raw HTML omitted -->Intent<!-- raw HTML omitted --></strong></p>
<!-- raw HTML omitted -->
<p>Broadly speaking, my Anytype knowledgebase is going to focus on working documents, contrasting with my public knowledgebase that serves to hold more crystallized notes and knowledge, notes that are more divorced from their immediate context in my life. For example, the public knowledgebase would have the information on how to install Tailscale on Fedora Silverblue, while the private knowledgebase would tell me whether I've installed Tailscale on a given Silverblue installation using those instructions.</p>
<!-- raw HTML omitted -->
<p><strong><!-- raw HTML omitted -->Use Cases<!-- raw HTML omitted --></strong></p>
<!-- raw HTML omitted -->
<p><strong>System Documents</strong></p>
<p>Notes on hardware and software will likely be moved into my public knowledgebase, but the details of how my systems are set up will be in my private knowledgebase, for operational security reasons and because they're rapidly changing working documents.</p>
<p> <strong>Implementation</strong></p>
<p> The "Computing Hardware" type and set.</p>
<!-- raw HTML omitted -->
<p><strong>Drafting Box</strong></p>
<p>A private place for me to synthesize knowledge together into thought-out writing, like the posts on this very site.</p>
<p> <strong>Implementation</strong></p>
<p> The "Drafting Box Draft" type and set.</p>
<!-- raw HTML omitted -->
<p><strong>Project, Course, and Book Tracking</strong></p>
<p>A place for me to keep track of my progress on courses I'm taking, projects I'm working on, and books I'm reading. Essentially <a href="https://www.techtarget.com/searchapparchitecture/definition/state-management">state management</a> for these categories.</p>
<p> <strong>Implementation</strong></p>
<p> The Project, Book, and Online Course types and sets.</p>
<!-- raw HTML omitted -->
<p><strong>Idea Formation and Iteration</strong></p>
<p>A private place for me to outline and form ideas for projects, as well as iterate slowly on them until I decide to implement them</p>
<p> <strong>Implementation</strong></p>
<p> The Idea type and set.</p>
<!-- raw HTML omitted -->
<p><strong>Miscellaneous Notes</strong></p>
<p>A place for me to put minor personal notes that don't really warrant a dedicated area, like grocery lists or what my brother wants from Chipotle. Essentially a replacement for Apple Notes on my phone.</p>
<p> <strong>Implementation</strong></p>
<p> The Note type and set</p>
</blockquote>
<p>I plan on adding intent statements to all of my public and private knowledge systems, as part of a broader initiative for all of my information systems to have "<a href="https://ineedmore.coffee/future-link">batteries included</a>". For example, you can now read the intent statement for this site <del><a href="https://ineedmore.coffee/intent-statement">here</a></del> [EDIT 02-25-2024: This page has since been removed, and is now located within the <a href="/colophon">colophon</a>].</p>https://ineedmore.coffee/knowledge-system-intent-statement2023-08-01T00:00:00Z2023-08-01T00:00:00ZGiving KDE A Sincere Try<h1>Giving KDE A Sincere Try</h1>
<p>2023-04-07</p>
<p><strong>I’ve been using mainly GTK-based environments for a long time.</strong> When I was first forced to switch to Linux in 2020 (my cobbled-together Surface Pro 3 finally succumbed to having magnesium dust shot into the battery after I <a href="https://hackaday.com/2015/04/28/upgrading-a-microsoft-surface-to-a-1-tb-ssd/">dremeled into the back to replace a dead SSD</a>, and my shiny, expensive MacBook Pro had suffered from a motherboard power failure), it was on an old desktop with a 2nd generation i5, and no GPU. Windows 10 lagged and stuttered to an unusable extent, so while I had only tinkered with Linux distros to some extent on spare laptops and Raspberry Pi’s, I had to make the plunge.</p>
<p>When I first installed Linux on this desktop, I initially attempted to use KDE but it was unusably messy due to some OpenGL issues with the integrated graphics card. I then switched to XFCE, then i3 (but using primarily GTK applications). I kept i3 on my desktop and used it alongside XFCE, Cinnamon, and then GNOME on my series of secondhand laptops, before fully standardizing on GNOME within the past year after switching away from the desktop to primarily using my <a href="https://tech-docs.system76.com/models/darp7/README.html">Darter Pro</a>.</p>
<p>I’ve always found myself disliking KDE when trying it out every once in a while on a spare (and usually not very capable) machine. In addition, I haven’t really used many KDE applications, as QT applications look extremely out of place on a GTK desktop. However, when I had to quickly spin up a VM on my Darter Pro for a task, and decided to use a distro that ships KDE just for kicks, I noticed that I didn't immediately hate the look and feel of modern KDE. <strong>I realized that in all these half-hearted attempts to toss KDE on a spare machine and “try it”, I hadn’t actually given myself the real experience of using KDE on my primary machine, with good hardware and a good display.</strong></p>
<p>With that in mind, I decided that I had to give KDE an honest try. After all, there’s a <a href="https://apps.kde.org/">whole world of KDE applications I’ve never even tried</a>, and KDE’s embrace of user customizability, as well as the potential to <a href="https://userbase.kde.org/Tutorials/Using_Other_Window_Managers_with_Plasma">swap out the window manager for a real tiling one</a> have real appeal to me. At the time of starting this exploration, I’m still firmly in the camp of preferring GTK’s visual aesthetic. However, I want to go at KDE with an open mind, and really see if I could daily drive it.</p>
<h2>Hopping over to the Kool (Desktop Environment) Side</h2>
<p>I had a spare m.2 SSD sitting around, so I opted to install it alongside my Silverblue SSD so I have that still available in case I need to access it for any reason.</p>
<p>The next question then was <strong>which distro to choose</strong>. I was initially leaning towards <a href="https://kinoite.fedoraproject.org/">Fedora Kinoite</a>, as it would be most equivalent to my current setup on Silverblue. However, all the quirks and extra setup involved in using an immutable distro as a tinkerer and programmer make it not the most ideal for a short experiment like this. I decided to just go with <a href="https://neon.kde.org/">KDE Neon</a>, as now that I primarily use Silverblue I'm used to working in Flatpaks and <a href="https://github.com/89luca89/distrobox">Distroboxes</a>, and thus KDE Neon being based on Ubuntu LTS doesn't bother me as much.</p>
<p>A quick ISO download and live boot later, and I was greeted with a clean KDE desktop!</p>
<p><img src="../public/images/kde0/fresh-desktop.png" alt="KDE Default Desktop Screenshot" /></p>
<p><em>Note: For whatever reason I didn’t have the standard Downloads, Documents, or other directories in my home folder out of the box, but this was quickly resolved with the command <code>xdg-user-dirs-update</code>.</em></p>
<h2>It’s installed, now what?</h2>
<p>With the desktop now installed, I set about doing the initial configuration I usually do on a new distro install, items like setting up my keybindings, preferred touchpad settings, and more. One immediate thing that stood out to me was that there was a <em>lot</em> of settings. Every little thing is configurable in Plasma, it’s what they’re known for, but it does make it a little intimidating on initial install compared to GNOME’s polished but simplistic settings menu.</p>
<p>In particular, I was astounded by the sheer amount of choices in the keyboard shortcut menu. Even the most basic of shortcuts, like <code>Ctrl+C</code> and <code>Ctrl+V</code>, can be remapped to whatever you want. The custom shortcuts are incredibly powerful too, being able to not only run a command but also send keyboard input.</p>
<p>So far, I also really appreciate how snappy and sane KWin’s quick-tiling is. One of my gripes with GNOME has been how limiting only letting uses easily tile two applications side by side is. Additionally, GNOME adds more animations to this, and the tiling simply doesn’t feel as snappy or quick as a result.</p>
<p>I’m still not quite sure how much I’ll be able to get used to Plasma’s design language, but maybe some customization will help with that part, especially considering that even on GNOME I change the system theme and interface font to my own liking (with immense effort thanks to the switch to <code>libadwaita</code>). <strong>Tonight and tomorrow, I plan on getting the applications I need installed and configured, as well as begin trying out some of KDE’s applications for various tasks, but overall I'm excited to kick the tires and see what KDE has to offer!</strong></p>
<hr />
<p><strong>Edit (2023-04-11):</strong> I opted not to write a sequel to this post, as I stuck with the experiment, and rather enjoyed KDE, but didn't feel like I had enough thoughts to structure an entirely separate post. Overall, the interface is certainly more busy, but does managed to look very cohesive and well-organized nonetheless, expecially when paired with a good system theme like <a href="https://github.com/Luwx/Lightly">Lightly</a> and a good colorscheme like <a href="https://github.com/catppuccin/kde">Catppuccin Latte</a> (yes, I went with a light theme for this setup, as KDE actually looks really good with light themes, whether it's the default Breeze theme or with a third party one like the aforementioned). I'll be going back to my Fedora Silverblue setup for now, especially as the distro I chose, KDE Neon, doesn't work very well with my hardware, but I do hope to have a machine running KDE full time at some point!</p>https://ineedmore.coffee/kde02023-04-07T00:00:00Z2023-04-07T00:00:00ZJoplin 7-Month Retrospective: Unfulfilled Promises<h1>Joplin 7-Month Retrospective: Unfulfilled Promises</h1>
<p>2023-07-04</p>
<p>My existing note management solution hasn't been cutting it for a while now. My current approach to notes and knowledge management has been to keep things in <a href="https://joplinapp.org/">Joplin</a> (with my 5TB university OneDrive as the backend), as well as use <a href="https://simplenote.com/">Simplenote</a> as a "drafting box" for things like blog post articles and some small temporary notes. However, Joplin hasn't really lived up to what I hoped it would enable for me when I first set it up around 7 months ago. While there are many gripes I've had with it, below are the biggest three I had, and the ones I really hope the platform can sort out in the future.</p>
<h2>Gripe #1: Plugins Aren't What They're Chalked Up To Be</h2>
<p>Starting with a (somewhat) small one, the plugin system is very rudimentary, and doesn't actually deliver the customizability advertised on the rool's website. First of all, plugins are <strong>desktop only</strong>, meaning that if there's a plugin that plays a significant role in how you use your notes, you don't get to use it on the go. Contrast this with <a href="https://obsidian.md/">Obsidian</a>, where there's mobile plugin support, and a <a href="https://publish.obsidian.md/hub/02+-+Community+Expansions/02.01+Plugins+by+Category/Mobile-compatible+plugins">significant amount of supported plugins</a>. Furthermore, <strong>plugins don't sync between devices</strong>. This means that for every device I set up, which is a lot given the amount of laptops I rotate through, I'd need to manually install and configure a whole host of plugins. Combine that with a relatively poor plugin ecosystem compared to other applications, and I opted to just not bother with plugins.</p>
<h2>Gripe #2: Poor Desktop UI</h2>
<p>This was a much bigger deal-breaker for me. <strong>The desktop application flat-out sucks</strong>. It already gets significant points taken off for being an Electron application, which switching to a HiDPI laptop has made me absolutely despise. However, it's also not even a well-executed Electron application, with a frustratingly laid out UI, very little customization, and odd visual glitches like <a href="https://github.com/laurent22/joplin/issues/7506">this one that constantly popped up</a>:</p>
<p><img src="../public/images/joplin-retrospective/garbled-text.png" alt="Garbled text on the "Notebooks" pane of the Joplin app" /></p>
<p>The desktop client feels like it gets very little love compared to the mobile one, which is frustrating for an application like a note-taking application where a lot of work will be done at a computer with a keyboard. It's bad enough that a lot of people who do use Joplin, like <a href="https://www.jupiterbroadcasting.com/hosts/chris/">Chris from Linux Unplugged</a> interact with it exclusively using a VSCode plugin. However, I want to keep my code editor and my notes application separate, and the VSCode plugin has also proven to be unreliable, which was the impetus for Chris finally ditching Joplin.</p>
<h2>Gripe #3: Sync Issues</h2>
<p><strong>I haven't even dared try to install Joplin on my newest laptop, lest it erases my existing notes and I have to fix it again</strong>. While I appreciate the effort Joplin goes to in order to support a variety of backends, unfortunately I've been faced with a number of sync issues from the beginning. It's become routine to export my Joplin notes, because sync will often break out of nowhere right in the middle of syncing some changes, and the only way I can get it to complete is to take an export, delete all of my notes locally so that they get erased remotely, then restore all of my notes from the export. I shouln't need to do that regularly in any piece of software, let alone with something as irreplaceable as my notes. A lack of trust in the sync solution has really dissuaded me from continuing to use Joplin recently, and until I can get my notes somewhere else, it'll likely continue to be that way.</p>
<h2>Takeaways</h2>
<p>I don't mean to completely rag on Joplin. There's a lot that's done right on the backend, especially when it comes to the freedom to sync your notes the way you want. <strong>However, I can't help but feel that Joplin has a long way to go to be the Evernote replacement it purports to be, and a lot of users are probably better served looking at other solutions for managing their information.</strong></p>https://ineedmore.coffee/joplin-retrospective2023-07-04T00:00:00Z2023-07-04T00:00:00ZA first post<h1>A first post</h1>
<p>2023-04-03</p>
<p>A first post is always very difficult to write. This one is definitely more of a placeholder than a grand occasion, and may get deleted later, but a first post it is nonetheless.</p>
<p>I've been putting off getting this blog/"brain dump"/"digital garden" set up for weeks now, so I'm very excited to finally have a place to put some of the article ideas I've had saved in my notes for a long time.</p>
<p>I'd also like to start the <a href="https://100daystooffload.com/">#100DaysToOffload</a> challenge, and I suppose that makes this post the first out of 100.</p>
<p>I hope you enjoy reading as I populate this site over the coming months :)</p>
<p>- Sohal</p>https://ineedmore.coffee/first2023-04-03T00:00:00Z2023-04-03T00:00:00ZBuilding up an RSS Feed<h1>Building up an RSS Feed</h1>
<p>2023-06-16</p>
<p><strong>I had put off building up a personal RSS feed until just about 2 months ago.</strong> I don't entirely know why it took so long, but a lot of it was certainly choice paralysis. There's so many reader and sync services that it takes a minute to figure out which one to use, and it took me needing to download some variety of RSS reader to test the RSS generation of this site to finally start building my feed. I currently use <a href="https://netnewswire.com/">NetNewsWire</a> on iOS as my primary method of consuming RSS content, as I personally find that smaller screens allow me to focus on reading more than the large, distracting canvas of a laptop screen.</p>
<p>With the <a href="https://www.reddit.com/r/apolloapp/comments/144f6xm/apollo_will_close_down_on_june_30th_reddits/">ongoing Reddit API fiasco</a> resulting in me <a href="https://www.reddit.com/r/Save3rdPartyApps/comments/1476ioa/reddit_blackout_2023_save_3rd_party_apps/">not using the site</a>, RSS has served as a much healthier way for me to consume interesting, independent content. These few days have really shown me the merits of consuming and curating content on my own terms. <strong>The biggest barrier with RSS, however, is actually building up a feed of people to subscribe to.</strong> Without the algorithms that drive sites like Twitter and Reddit, you as the user need to put in that effort to seek out content.</p>
<p>To get my RSS feed list, I started with the dozen or so blogs that I had in my "Blogs" bookmark folder at the time, serving as a nice base of content I already know I like. After that, the amount of effort to find more content went up a good bit. The types of sites I follow tend to be individual people writing medium to long form content somewhat infrequently, so it would take a pretty large feed to have around 5-7 pieces of interesting, high quality content to read every day. As a result, I had to start "feed speed dating".</p>
<p>This consisted of finding aggregated lists of links like <a href="">blogrolls</a>, <a href="">webrings</a>, and ".clubs", and going through each link. When I'm visiting a person's page, I first <strong>check whether they've posted in 2023</strong>. I then, as a general rule, go through the first page of their posts, and see if I can find <strong>two pieces of content that catch my interest</strong>, and if so I'll add them to my RSS feed. I'll often read some of their posts too, since this has become a nice free-time activity of mine.</p>
<!-- raw HTML omitted -->
<p>Using RSS to entertain myself rather than just scrolling something like Reddit has tremendously increased the value I get per period of "reading time". When I open NetNewsWire (which has a great UI by the way, I strongly recommend it), I'm greeted by content I <em>know</em> I like, and that has had thought and effort put into it, rather than having to scroll endlessly to dig up the bits of content that I'm there for. I hope this small resurgence of independent websites, RSS feeds, webrings, and all of these goodies I missed out on by not being alive in the 90s continues.</p>https://ineedmore.coffee/feed-speed-dating2023-06-16T00:00:00Z2023-06-16T00:00:00ZUnleashing the Potential of an AOSP Flip Phone<h1>Unleashing the Potential of an AOSP Flip Phone</h1>
<p>2023-04-12</p>
<p><em><!-- raw HTML omitted -->Note: I go into a bit of background on this phone during the first portion of this article. If you want to skip straight to the setup guide, scroll down to "Unlocking the Potential".<!-- raw HTML omitted --></em></p>
<p>Around a week ago, I noticed a flip phone being auctioned off on my city's surplus website. I've been looking around for interesting phones as part of a separate project, so I jumped on it and bought it, not entirely knowing the rabbit hole I'd go down in my attempts to push the capabilities of this device.</p>
<p>The device in question is a <strong><a href="https://www.phonearena.com/phones/Kyocera-DuraXV-LTE_id10714">Kyocera DuraXV LTE</a></strong>, a rugged flip phone from 2017:</p>
<hr />
<p><strong>Device Profile: Kyocera DuraXV LTE</strong></p>
<p><img src="../public/images/duraxv/closed.png" alt="Closed Kyocera DuraXV Flip Phone" /></p>
<p>| Key | Value |
| Release Date | September 2017 |
| Release Price | $264 |
| Device Type | Flip Phone |
| Primary Display | 2.6 inch 320x240 |
| Processor | Snapdragon 210 |
| Memory | 2GB |
| Storage | 16GB + microSD |
| Battery | 1530 mAh |
| Camera | 5MP Rear |
| Operating System | AOSP 7 |</p>
<hr />
<p>This phone's hardware is definitely unique. It appears to be a slightly upgraded and heavily ruggedized cousin to the <a href="https://www.phonearena.com/phones/Kyocera-Cadence-LTE_id10675">Kyocera Cadence</a> (this becomes relevant later), and has this interesting "rounded hexagon" motif going on. The buttons arent too bad, the D-Pad feels nice, and overall it generally feels much higher end than the usual budget KaiOS feature phones.</p>
<p>What's really interesting about this phone is the operating system it's running. With modern flip/feature phones, outside of generic ones that use an RTOS, the two most prominent options are the <a href="https://www.kaiostech.com/explore/devices/">veritable battalion of KaiOS phones</a> on the low end, with their basic apps and limited functionality, and full on Android feature phones, like the <a href="https://www.agmmobile.com/pages/agm-m7">AGM M7</a> and <a href="https://www.aliexpress.us/item/3256803156280932.html">Xiaomi F21 Pro</a> where the only differentiating factor from a low-end smartphone is the form factor. However, somewhere in the middle, there is a category of stealth Android phones, phones that use a locked down version of AOSP but don't make it clear to the user. <strong>This Kyocera phone is just that, a flip phone that on the surface appears to be a boring, basic interface, but is secretly hiding Android goodies underneath</strong>. These phones at an initial glance seem to be even less capable than KaiOS phones, typically not even letting users install applications. However, with just a bit of tweaking, we can unlock all sorts of functionality.</p>
<h2>The First Attempt</h2>
<p>When I first began investigating this phone, and slowly realized it had Android guts, as well as it's similarity to the Kyocera Cadence, I stumbled upon <a href="https://www.apps4flip.com/">Apps4Flip</a>, a website that offers custom applications for Android feature phones similar to this one. They offer utilities such as a custom application menu that can be launched from the notification screen, a cursor that can be invoked to simulate touchscreen input, and a couple utilities like a file manager, office suite, weather app, and a variety of applications relevant to those of Jewish faith. The purpose of this site seems to be to enable certain sects of Orthodox Jews to add more functionality to make these phones viable for daily use, which is essential to them as <a href="https://en.wikipedia.org/wiki/Haredi_Judaism#Technology">devices that can access the unfiltered internet are considered <em>terefah</em> (not kosher)</a>.</p>
<p>However, after spending a couple of days figuring out the basics of what this device can do using their software, doing some experimentation, and reading up on places like <a href="https://reddit.com/r/dumbphones">r/dumbphones</a>, <strong>I decided that I wanted something different</strong>, and I wanted more. Apps4Flip's solutions feel like the only options when trying to search around for information on extending the capabilities of devices like these, but <strong>there are also some drawbacks to using their software</strong>, namely:</p>
<ul>
<li>The code to the versions of the applications they distribute is <strong>not open source</strong>, which makes it hard to trust these apps, especially when they're from an unknown party.</li>
<li>They've allegedly <a href="https://github.com/virresh/matvt/releases/tag/phone-v1.03"><strong>repackaged and redistributed an open source application, while claiming it as their own</strong></a> (they've since walked this back and credited the original developer on their Apps page, but doesn't it doesn't inspire the most trust).</li>
<li><strong>Their launcher doesn't display all installed applications.</strong> I noticed this when I attempted to install F-Droid. I thought that the install had failed as there was nothing in the launcher, but then I noticed a notification from F-Droid. Judging by the fact that the launcher does display <a href="https://github.com/virresh/matvt">MATVT Cursor</a>, they are likely filtering for <code>com.android.cts.*</code> package names.</li>
</ul>
<p><strong>Overall, I felt like there was the potential for so much more, so I opted to wipe the phone and start fresh, this time with the challenge of not using any of Apps4Flip's software.</strong></p>
<h2>Unlocking the Potential</h2>
<p>From the aforementioned couple days of experimentation, there were <strong>a few key insights gained:</strong></p>
<ul>
<li><strong>APKs can be sideloaded by Bluetooth transferring them from another device</strong>, then selecting the file transfer notification to run the app installer (This also works with the built-in browser, as I found out later, but Bluetooth transfer is much more convenient).</li>
<li><strong>Any compatible APK can be installed</strong>, not just ones with <code>com.android.cts.*</code> packagenames, which apparently is the case for some phones.</li>
<li><strong>Applications that register as launchers can be installed</strong>, and the phone will give you a prompt to choose a launcher app to use every time you unlock, but <strong>while in any other launcher there is no consistent access to the all-important notification menu</strong>.</li>
</ul>
<p>Armed with these insights, I reset the phone and went through the following setup:</p>
<p><em><strong>DISCLAIMER: This phone is a spare/test device for me, and as such I had very few qualms with removing core system applications (primarily the default launcher). While the phone seems to be functioning fine, you won' be able to get any system apps you uninstall back without resetting the phone!</strong></em></p>
<h3>Step 1: Enable Developer Mode</h3>
<p>Enabling developer mode on this phone is very similar to any other Android phone. Simply navigate to <code>Settings -> About phone -> Software information</code>, select <code>Build number</code>, then press the <code>OK</code> button 7 times or until a prompt at the bottom of the screen says that you are now in Developer Mode.</p>
<p>Now, when we navigate back out to the main <code>Settings</code> menu, there should be an additional option labeled <code>Developer options</code>. <strong>Select that and scroll down to <code>USB debugging</code> and turn that on</strong>. This will allow us to connect to the phone with <code>adb</code> later to grant applications special permissions.</p>
<h3>Step 2: Transfer over Some Apps</h3>
<p>Download these 4 APKs to a computer or another Android device:</p>
<ul>
<li><a href="https://f-droid.org/packages/com.anpmech.launcher/">Keikai Launcher</a>: The launcher we will be using to replace the default. It's pretty ugly on this phone due to some icon issues, but it's the one I've found that works best with the D-Pad</li>
<li><a href="https://github.com/virresh/matvt/releases/tag/phone-v1.03">MATVT Cursor</a>: A cursor application that we can use to simulate touch input. Essential for interacting with apps at times</li>
<li><a href="https://f-droid.org/en/">F-Droid</a>: A marketplace for free and open source Android apps, and a great place to find simple apps that work well with this device</li>
<li><a href="https://f-droid.org/packages/com.aurora.store/">Aurora Store</a>: Allows us to download applications from the Google Play Store</li>
</ul>
<p><strong>First, transfer over Keikai Launcher.</strong> We'll need to do this twice, as when we attempt to select the notification the first time, the phone will prompt us to open Settings to enable "installing apps from unknown sources". Follow the prompts and toggle the setting on, then transfer the file again and install it. <strong>Now, every time we unlock the phone (if it's locked with a PIN code), the phone will prompt you to choose between "Idle Launcher" (the default homescreen) and Keikai launcher.</strong> Having access to the default homescreen is crucial at this stage, because it gives us consistent access to the Notifications menu.</p>
<p><strong>Next, transfer over MATVT Cursor.</strong> Once the application is installed, we will need to use <code>adb</code> to grant it certain permissions, as I wasn't able to successfully do so from within the application. <a href="https://webadb.com/">WebADB</a> is a great tool to run <code>adb</code> commands from the browser if you aren't interested in installing the tool locally.</p>
<p>After connecting to the phone with <code>adb</code> (or WebADB), run these commands (if using WebADB, remove the <code>adb shell</code> portion from each command):</p>
<pre style="background-color:#2b303b;"><code><span style="color:#c0c5ce;">adb shell appops set com.android.cts.io.github.virresh.matvt SYSTEM_ALERT_WINDOW allow
</span><span style="color:#c0c5ce;">adb shell settings put secure accessibility_enabled 1
</span><span style="color:#c0c5ce;">adb shell settings put secure enabled_accessibility_services com.android.cts.io.github.virresh.matvt/com.android.cts.io.github.virresh.matvt.services.MouseEventService
</span><span style="color:#c0c5ce;">adb shell am startservice com.android.cts.io.github.virresh.matvt/com.android.cts.io.github.virresh.matvt.services.MouseEventService
</span></code></pre>
<p><em>Note: The last command may fail or error out (it did for me). I've still been able to use the cursor perfectly fine, so I can only assume that the last command either is still doing what it needs to do, or isn't entirely necessary.</em></p>
<p>Lastly, go into the MATVT application and <strong>override the activation key</strong>. I overrode it to key 17, but feel free to remap it to whichever <a href="https://elementalx.org/button-mapper/android-key-codes/">keycode</a> works best for you.</p>
<p><strong>Once these commands have been run, we should now be able to invoke a virtual mouse by holding the <code>*</code> key (if you overrode the activation key with key 17).</strong> Holding the key for a short time while in mouse mode will also allow us to scroll using the virtual mouse, but this can be hit-or-miss at times.</p>
<p>Now, transfer over and install <strong>F-Droid</strong> and <strong>Aurora Store</strong>, and set them up. With just that simple step, we now have a phone that can download applications off both the F-Droid and Google Play stores!</p>
<h3>Step 3: Polishing Things Up</h3>
<p>Right now, our phone still pesters about which launcher to use whenever we unlock, which is good because right now, <strong>we need the consistent access to the notification menu that the default launcher gives us</strong>. However, this is still annoying, and can result in some inconsistent behavior especially when using the back key.</p>
<p>To give us access to the notification menu without relying on the default launcher, we can use the <a href="https://play.google.com/store/apps/details?id=flar2.homebutton">Button Mapper</a> application from the Play Store. <strong>This neat tool allows us to bind actions to any key on our device</strong>, including launching the notification menu.</p>
<p>After installing the application and granting it the appropriate accessibility permissions, <strong>add one of your buttons as a "Custom Button" and bind it to launch your notification menu</strong>. I also took the chance to add a few more key bindings to get back some more normal Android interaction. This specific phone has <a href="https://www.verizon.com/support/knowledge-base-215459/">dedicated hardware buttons for PTT</a>, including a big red side button, so I decided to bind multiple actions to it and make it a "home button":</p>
<ul>
<li>
<p><strong>Big Red PTT Button:</strong></p>
<ul>
<li>
<p><em>Single Tap:</em> Home</p>
</li>
<li>
<p><em>Double Tap:</em> Recents</p>
</li>
<li>
<p><em>Long Press:</em> Notifications</p>
</li>
</ul>
</li>
<li>
<p><strong>Top Right "Stop" Button:</strong></p>
<ul>
<li><em>Long Press:</em> Screenshot</li>
</ul>
</li>
</ul>
<p>Now we can get rid of all that inconsistent launcher behavior by simply <strong>removing Kyocera's default launcher</strong>. To do this, first open <code>adb</code> (or WebADB) back up, and list the applications with <code>adb shell pm list packages</code>. Then, look for one with a package name that looks something like <code>jp.kyocera.home</code> (I'm really annoyed at myself for not writing the exact package name down). Remove the application with <code>adb shell pm uninstall -k --user 0 com.example.changethis</code>. At your own risk, feel free to "debloat" and remove carrier apps while you're here. I've chosen to keep everything as-is and just disable these extra apps for now, but I may experiment with how much of these I can remove in the future.</p>
<p>Once the default launcher is removed, Keikai launcher should now act seamlessly as your primary homescreen!</p>
<h2>Conclusions</h2>
<p>Overall, with this setup I think this phone feels far more liberated than with the Apps4Flip suite of apps, as we now have access to a full launcher, multiple app stores on-device, and much more granular controls with remapped buttons. The biggest barrier with this phone now is D-Pad support in applications. Some apps, like the official <a href="https://f-droid.org/">F-Droid client</a>, and games, like <a href="https://play.google.com/store/apps/details?id=com.yodo1.crossyroad">Crossy Road</a>, treat the D-Pad as a first-class citizen and work exceptionally well. Others, like Spotify, don't work at all with the D-Pad and require fully using mouse mode, which can be cumbersome. Many fall into a middle category, where some UI elements can be selected and used with the D-Pad, but other parts need mouse mode. <strong>I think there is potential for a part two of this post as I explore more of which apps give the humble D-Pad the love that it deserves.</strong></p>
<p>This phone is a super intriguing device, and now that I have a solid base setup I'm excited to try and see what further capabilities can be added!</p>https://ineedmore.coffee/duraxv2023-04-12T00:00:00Z2023-04-12T00:00:00ZThe Best Windows XP System Is... A Dell Latitude From 2013?<h1>The Best Windows XP System Is... A Dell Latitude From 2013?</h1>
<p>2023-07-02</p>
<!-- raw HTML omitted -->
<p>I've wanted to have a reliable machine running an older version of Windows for a while now, so that I can run older software and period-correct games that I have sitting around. However, I haven't had a great solution to this so far. Desktops are mostly out of the question for me, as I move around a ton being a college student, and they're big and clunky and just a hassle. However, laptops from when XP was in it's heyday require a lot of babying, often have faulty batteries, and rely on flimsy IDE laptop drives. A potential option I was leaning towards is to use a netbook, as they have more modern hardware but were still built to run Windows XP, however gaming would be out of the question, and using disc-based software (or even installing Windows XP in the first place) is much more of a chore without a built in disc drive.</p>
<p>When thinking about this recently, however, I remembered an interesting detail. When downloading Windows drivers for my Dell Latitude E6530, I noticed an odd entry in the list of platforms that had drivers for the laptop: <strong>Windows XP</strong>.</p>
<p><img src="../public/images/dell-latitude-windows-xp/dropdown.png" alt="Pictured is a drop-down menu with the option "Windows XP" highlighted" /></p>
<p>This was initially quite shocking for a machine that was made in 2013, with a third generation i5 and other modern specs, but it makes reasonable sense given that these laptops were enterprise and education machines, and there are still enterprise users today, like the US government, that make significant use of Windows XP. Digging around a bit more, I found that, at least in this Latitude E6xxx line, this laptop and it's sister models in the E6x30 generation were the last laptops to have Windows XP support, with 2014's E6x40 Latitudes dropping support. With this discovery, I decided to see just what the experience was like installing XP on this laptop.</p>
<h2>The Laptop</h2>
<p><img src="../public/images/dell-latitude-windows-xp/laptop.png" alt="Pictured is a black and gray 15-inch laptop opened, facing diagonally away from the camera" /></p>
<p>The Dell Latitude E6530 is a 15-inch business laptop released in 2013. My particular laptop has an <strong>i5-3320M CPU</strong>, paired with an <strong>Nvidia NVS 5200M GPU (1GB VRAM)</strong>, <strong>8GB of DDR3 RAM</strong>, and a <strong>128GB SSD</strong>. It also has a pretty nice keyboard, and a great selection of I/O. This may not be a brand-new gaming laptop, but it's certainly not the type of hardware you'd expect to have support for XP!</p>
<h2>Getting it Ready</h2>
<p>With the relatively young age of this laptop, I first had to change some BIOS settings to ensure that everything would work well with XP. This included:</p>
<ul>
<li>Setting the system to Legacy Boot rather than UEFI</li>
<li>Disabling Secure Boot</li>
<li>Setting the SATA mode to <code>ATA</code> rather than the default <code>AHCI</code> or <code>RAID</code></li>
<li>Disabling Nvidia Optimus</li>
</ul>
<p>None of these newer technologies were around back when XP was around, so it's important that we disable them to prevent any installation errors. I believe Dell does ship a driver for Intel RST (the <code>RAID</code> SATA mode in the BIOS), but as I'm just using an unmodified installation disc I decided to keep things simple.</p>
<h2>Installing XP</h2>
<p>As this laptop has an optical drive, the actual process of installing Windows XP was pretty smooth. I installed a bog-standard copy of Windows XP Professional SP3, just went through it as a normal user would, and the whole process took just under 15 minutes.</p>
<p>The rough part was installing the drivers that started this whole saga in the first place. After downloading all of the relevant drivers for my model from Dell's website and copying them over to the laptop, I was greeted by this error:</p>
<p><img src="../public/images/dell-latitude-windows-xp/error.png" alt="Pictured is a Windows XP error message, indicating that the driver program "is not a valid WIN32 application"" /></p>
<p>Eventually, after poking around at Dell's website for a while, I found that each driver offered an alternate download of what seemed like an older driver format, and these packages worked correctly on Windows XP.</p>
<p><img src="../public/images/dell-latitude-windows-xp/other-formats.png" alt="Pictured is a button on Dell's website offering "other formats" for a driver download" /></p>
<p>After getting all the drivers installed, and modifying some settings to taste, I was left with a pretty clean Windows XP desktop:</p>
<p><img src="../public/images/dell-latitude-windows-xp/desktop.png" alt="Pictured is a clean Windows XP desktop, with a black and orange theme" /></p>
<h2>Thoughts</h2>
<p>The machine performs extraordinarily well on Windows XP, pretty unsurprisingly. While XP can only see 4GB of the system's RAM, it barely even sips at the RAM, and the CPU usually idles at 1% usage. Software runs snappily, and some games, like Rainbow Six 3: Raven Shield, play pretty well.</p>
<p>I think this generation of Dell Latitude makes for a great XP machine to have around, and offers significantly more utility and reliability than something like a netbook, period-correct laptop, or a desktop.</p>https://ineedmore.coffee/dell-latitude-windows-xp2023-07-02T00:00:00Z2023-07-02T00:00:00Zex librīs<h1>ex librīs</h1>
<p>2023-04-04</p>
<p>During some internet exploration a few days ago, I stumbled upon a <a href="https://raypatrick.xyz/blog/2023/01/27/my-bookplate/">blog post</a> where the author details making a bookplate for their personal library. Sufficiently intrigued, I began doing a little research on this historic practice, and ended up creating my own.</p>
<h2>What is a bookplate?</h2>
<p>A <strong>bookplate</strong> (or <em>ex librīs</em>) is a label affixed to the inside of a book, often on the <a href="https://en.wikipedia.org/wiki/Endpaper">front endpaper</a>, indicating the ownership of the book. These get quite creative, with a <a href="https://rentafont.com.ua/blog/znadibky-Istorychni/exlibrysy-yakova-hnizdovskogo">wide variety of designs, subject matter, and techniques used</a>.</p>
<p>The actual medium varies widely as well, with traditional bookplates having their designs <a href="https://en.wikipedia.org/wiki/Burin_(engraving)">hand engraved into copper</a>, being printed onto paper with an <a href="https://en.wikipedia.org/wiki/Intaglio_press">intaglio press</a>, and then glued into a book.</p>
<p>When looking at modern day bookplates, I saw two main categories. Many bookplates use <strong>self-adhesive paper</strong>, such as ones offered by <a href="https://bookplateink.com/">commercial sites</a>. Others, including the author of the post that initially inspired this, use <strong>stamps</strong>, as besides the initial cost of the stamp, they are exceptionally cheap and easy. However, there is controversy around stamped bookplates as bibliopholes argue that they degrade a book, and decrease it's value rather than increasing it.</p>
<h2>Why bookplates?</h2>
<p>An equally interesting topic is the reason for even using bookplates in the first place. Bookplates originally stem from other methods to <strong>indicate ownership</strong> and <strong>dissuade theft</strong> of a book, such as <a href="https://en.wikipedia.org/wiki/Book_rhyme">book rhymes</a> or <a href="https://en.wikipedia.org/wiki/Book_curse">book curses</a> printed within a book. They're also <strong>surprisingly old</strong>, with the first "modern bookplate" being from 15th century Germany. Over the following centuries, it became very common for affluent people with personal libraries to have their own bookplates, and have been extremely helpful in <a href="https://www.atlasobscura.com/articles/mystery-bookplate-collection">helping modern historians trace the ownership of old books</a>.</p>
<p>Around the late 19th to early 20th centuries, bookplates became more common among middle class American households, as they gained wealth and sought to emulate the customs of "old money" families. They also started varying more in design, branching out from the traditional crests and coats of arms to have more unique art (I was particularly struck by <a href="https://content.artofmanliness.com/uploads/2014/04/einstein.jpg">Albert Einstein's</a>). Unfortunately, bookplates fell in popularity by around the 50s, likely due to cultural changes after World War II and the switch to primarily paperback books.</p>
<h2>Creating my own bookplate</h2>
<p>Armed with more knowledge and a newfound appreciation for the <em>ex librīs</em>, I decided to create my own. I enjoy customizing the objects I own, and this seemed like a fun way to add a personal touch to my own books. I haven't been a super prolific reader since I was a little kid, so my bookplate is more for my arsenal of journals and notebooks, but I do hope that having a bookplate encourages me to purchase and read more books as I build up a humble personal library.</p>
<h3>Design</h3>
<p>The first portion to tackle was the design. I opted to design mine digitally, as it would give me the most flexibility. I downloaded <a href="https://inkscape.org/">Inkscape</a>, and started messing around with some text to come up with this very minimal design with the <a href="https://github.com/rsms/inter">Inter</a> typeface:</p>
<p><img src="../public/images/bookplate/text-only-exlibris.png" alt="Text-only bookplate concept" /></p>
<p><em>Note: The images on this site are <a href="/meta">dithered</a>. The SVGs are located <a href="https://github.com/sohalsdr/exlibris">here</a></em></p>
<p>This one was pretty easy, and looked pretty clean and modern, but I decided I wanted something with a little more character, so I pulled out my legal pad and sketched up this concept:</p>
<p><img src="../public/images/bookplate/draft-exlibris.png" alt="Bookplate sketch on paper" /></p>
<p>After an afternoon learning the basics of Inkscape, I then had this design, featuring the <a href="http://www.georgduffner.at/ebgaramond/">EB Garamond typeface</a>:</p>
<p><img src="../public/images/bookplate/exlibris.png" alt="Final version of my bookplate" /></p>
<p>The motto, <em>ad īnfīnīta mystēria</em>, means "to infinite mysteries" in Latin, and reflects my disposition to always learning more. I then chose the coffee/tea mug as it's simple, and something warm and caffeinated is always a great companion to a good book.</p>
<h3>Medium</h3>
<p>With a design in hand, the next decision to make was whether to print the bookplate out or turn it into a stamp. Looking at the prices to get a custom stamp made, I decided that it would be simpler and quicker to simply get some self-adhesive paper and print the bookplate on that.</p>
<p>I found these <a href="https://www.walmart.com/ip/Avery-Shipping-Labels-White-8-1-2-x-11-True-Block-Laser-Inkjet-10-Labels-15265/34202344?">letter-sized shipping labels</a> for cheap enough at my local Wal-Mart, and they seemed decent enough for the job.</p>
<p>As my design was 2 inches by 2 inches, I determined I'd be able to fit 20 of them on my page, and used the <code>montage</code> command that <code>imagemagick</code> ships to create a printable page with the bookplate tiled 20 times (I'm sure there was a more elegant way to do this):</p>
<pre style="background-color:#2b303b;"><code><span style="color:#c0c5ce;">montage -geometry 1024x1024 -tile 4x5 exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris.png exlibris_print.pdf
</span></code></pre>
<p>I then printed this out, cut them using a paper guillotine (this ended up being way harder than I thought), and had my bookplates!</p>
<p><img src="../public/images/bookplate/stacked_bookplate.png" alt="Stack of printed bookplates" /></p>
<p>With bookplates in hand, I promptly went and stuck one in the center of the front inside cover of the each of the journals I'm currently using.</p>
<p><img src="../public/images/bookplate/in_cover.png" alt="Bookplate pasted in cover of book" /></p>
<h2>Conclusion</h2>
<p>This was a really fun little delve, and I really liked the end result. If this intrigues you as well, why not make your own? I think seeing someone's bookplate in a book I buy secondhand would give me a little extra appreciation for it and make me cherish it that much more. Bookplates are very individual, so there's no need to stick with conventions or try to fit any one style. Make one in whichever style and medium makes you happy!</p>
<p>I'll likely stick with this design for a while, but may update it eventually as my own tastes change. Who knows, it could be fun to be able to look at my books later, and be able to determine when I got them just by the bookplate design.</p>
<p><strong>To check out the SVG files for the two bookplates I made, check out <a href="https://github.com/sohalsdr/exlibris">the repository</a>.</strong></p>
<h2>Resources</h2>
<h3>History</h3>
<p><a href="https://en.wikipedia.org/wiki/Ex_Libris_(bookplate)">Wikipedia</a></p>
<p><a href="https://bookriot.com/history-of-bookplates/">Book Riot Article</a></p>
<p><a href="https://www.atlasobscura.com/articles/mystery-bookplate-collection">Atlas Obscura Article</a></p>
<h3>Inspiration</h3>
<p><a href="https://raypatrick.xyz/blog/2023/01/27/my-bookplate/">Original Ray Patrick Article</a></p>
<p><a href="https://rentafont.com.ua/blog/znadibky-Istorychni/exlibrysy-yakova-hnizdovskogo">Ukrainian Bookplate Collection</a></p>
<p><a href="https://www.artofmanliness.com/living/reading/ex-libris-the-bookplates-of-31-famous-men/">Bookplates of Influential Men</a></p>
<h3>Other</h3>
<p><a href="https://bookplateink.com/">Bookplate Ink - Commercial Bookplate Seller</a></p>
<p><a href="https://www.walmart.com/ip/Avery-Shipping-Labels-White-8-1-2-x-11-True-Block-Laser-Inkjet-10-Labels-15265/34202344?">Printable Shipping Labels</a></p>https://ineedmore.coffee/bookplate2023-04-04T00:00:00Z2023-04-04T00:00:00Z