wpm is a process manager for Windows, written in the Rust programming language, published under the Komorebi License. The Komorebi License does not permit any kind of commercial use (i.e. using wpm at work). A dedicated Individual Commercial Use License is available for those who want to use wpm at work. The Individual Commerical Use License adds “Commercial Use” as a “Permitted Use” for the licensed individual only, for the duration of a valid paid license subscription only. All prov...| LGUG2Z
Komorebi is a tiling window manager for Windows, written in the Rust programming language, published under the Komorebi License. The Komorebi License does not permit any kind of commercial use (i.e. using komorebi at work). A dedicated Individual Commercial Use License is available for those who want to use Komorebi at work. The Individual Commerical Use License adds “Commercial Use” as a “Permitted Use” for the licensed individual only, for the duration of a valid paid license subscr...| LGUG2Z
Tell me, Qabbani How did you bear the weight Of such a love In each of those moments When you were left To bear it Alone| LGUG2Z
The few times I pray Are when you let me swim Out in the open When those greatest of waves Pound down upon my body Expelling the oxygen from my lungs And with it, a hope of life| LGUG2Z
My heart becomes a whisper I shrink down as a child If I were a flower They’d call me دوار الحب Waiting patiently For you to remember| LGUG2Z
Sometimes I think If I hold you close enough For long enough That you might be jolted awake By that ticking clock And what once you shared With somebody else You might also wish To share with me| LGUG2Z
I am a ghost riddled with holes scrambling to fill before I am lost| LGUG2Z
ګهېځ چې راپاڅېږم د لمونځ پر ځای ستا انتظار باسم| LGUG2Z
در عمق فساد انسان نور حضورت راه مرا روشن میسازد| LGUG2Z
These awesome people are currently looking for a job. If you are looking for anyone with these skills, please feel free to reach out to them. If we have worked together and you’d like to add yourself here, please open a PR adding yourself to the data.json file.| LGUG2Z
In 2024 I received $1861.88 in sponsorships via GitHub Sponsors for my work on komorebi, the tiling window manager for Windows, which has continued to grow beyond my wildest dreams; it currently has 10k stars on GitHub, 106k downloads and almost 2000 members in the community Discord. Below is the monthly breakdown of the sponsorship payouts received in 2024: Month Payout January $92.35 February $115.48 March $143.03 April $150.30 May $188.| Articles on LGUG2Z
Certainly, no contributors get into projects with the sole purpose to get a financial gain out of them. Open source has never been about money either. But for you as an author, the lack of funds to sustain your ideas and pay for even a small portion of the time you’re spending on them is—I’m not going to lie—devastating. It may not be your concern at first but it will inevitably become one when your ideas gain popularity, demanding significantly more time than there are hours in a day.| LGUG2Z
The big mistake Using Tailwind CSS for Notado is the single biggest mistake I have ever made in my career as a developer. I cannot overstate the amount of technical debt that this has introduced, and how it has compounded over the years since this decision was taken. Never use this for a one-man SaaS project. One of the biggest consequences of this mistake was that introducing dark mode immediately became a non-trivial task, especially when compared to Kullish, where I had the good sense to u...| Articles on LGUG2Z
Earlier this week I saw an Ask HN post titled “What are some iconic comments on HN?” Over the years, I’ve seen some iconic comments on HN. Inspired by this, I want to create a website showcasing the most memorable discussions and comments on this website. What are some of your favorite comments on HN? I have been saving comments from Hacker News on a variety of subjects and topics since 2020 when I finally ditched traditional URL-focused bookmarking services and created Notado to be abl...| LGUG2Z
A few weeks ago I ran nix flake update to get the latest versions of CLI tools that I regularly use from nixos-unstable. atuin is one of those tools which I started using relatively recently and quickly became a huge fan of. I run it on all of my machines, and I can’t overstate how amazing it is to have all of my shell history across all of my machines synced.| LGUG2Z
In the previous article we walked through how to set up our very own Nix binary cache. It’s great being able to run attic push system /run/current-system on whichever machine we are currently using, but the the chances are that if you use Nix to manage your system configurations, you have a system configuration monorepo, and depending on how many machines and architectures you are targeting, it can quickly become tiresome to manually push to the cache from each of them.| LGUG2Z
For the most part I feel very much at home on the Hachyderm Mastodon server; it’s probably the best social media experience that I can remember having and I have had the pleasure of interacting with so many cool and impassioned people there. Hachyderm implements the default 500 character post limit which is hard-coded into the Mastodon codebase and as of writing these, seems unlikely to ever be made configurable.| LGUG2Z
The Layoff Along with 25% of my former colleagues, I was laid off by Beamery (glassdoor reviews) immediately before “American Thanksgiving”. I was provided with a number of informational pamphlets at the end of a 5-minute layoff call at 9am which was scheduled with less than 15 minutes of notice. The following Wednesday, I was at the neighborhood social dance, trying to take my mind off the stress of job hunting in Q4 and interview preparation with some live music.| LGUG2Z
Before this week, it had been a long time since I visited the Plex subreddit. I shared my last article there, which was a technical write-up of moving my Plex instance from a Hetzner auction server to a virtual machine running on hardware in my home network, and the considerations that influenced the migration. It didn’t take long for me to realize that a culture of hostility towards even the mention of Hetzner or other cloud hosting providers has strongly taken root since Plex announced it...| LGUG2Z
Last October, Plex started blocking access to instances running on servers hosted by Hetzner. I have a Hetzner Auction server that I renew every year or so to make use of newer hardware, which I use to run various workloads, from web services, to scheduled jobs and self-hosted instances of privacy-friendly alternative web frontends like Nitter. Another one of those workloads, until recently, was Plex. I didn’t have the time to put too much effort into getting around the Hetzner network ban ...| LGUG2Z
I came across an interesting thread on the NixOS subreddit today that helped me fix a problem that I didn’t even know I had with my NixOS system configuration. Every now and then, I’ll try to quickly do nix-shell -p somepackage, and it will fail, because somepackage couldn’t be found. I go and check https://search.nixos.org and it’s there. Huh. Weird. So I just go and add it to my environment.systemPackages to install it, and remove it if it turns out I don’t really need it.| LGUG2Z
I have a confession to make. Until yesterday, I did not have any form of dotfiles management or versioning for my Windows 11 machine. Yes, I, the person who wrote an entire tiling window manager for Windows from scratch in Rust, did not manage my dots. I had to sheepishly admit this on more than one occasion in the project Discord server when people would watch my live programming videos and then ask if I could share my Windows dotfiles repo.| LGUG2Z
There are a number of different approaches available for NixOS users to handle secrets. The most popular tend to be git-crypt, agenix and sops-nix. But which one should you use? To hopefully help you in answering this question for yourself, here is an overview of a few common use cases and what I think is most appropriate for each. Managing Your Own Physical Machines Maybe you have a desktop, a Macbook and a Raspberry Pi which you are managing from a single NixOS flake repo.| LGUG2Z
In my last post, I shared how to get a working instance of Nitter deployed on NixOS, but requested advice on how to best automatically provision the guest_accounts.json runtime secret file on the target server. A number of folks reached out to me on Mastodon (thanks @vt52@ioc.exchange, @aynish@merveilles.town, @linus@schreibt.jetzt and @uep@octodon.social!) to suggest that I use agenix to copy encrypted files to the server and decrypt them in non-world readable directories, and then use syste...| LGUG2Z
With all of the various user and developer-hostile changes introduced to Twitter over the past year, the importance of a user-friendly alternative frontend for Twitter is greater than ever. After using public instances of Nitter for a while, I wanted to try hosting my own instance. I thought it would be as simple as enabling a service in my NixOS configuration: { services.nitter.enable = true; } Unfortunately, the only builds of Nitter that currently work are taken from a feature development ...| LGUG2Z
The social media landscape from Twitter and Mastodon to Instagram and TikTok has, for better or worse, centralized on sharing text highlights and quotes as images rather than as plain text. Now I can share my highlights easily as images on social media! I like to share my highlights from across the web, which is why I publish topic-specific RSS feeds for people to subscribe to. However, one of the features that I’ve been missing for a while now on Notado is exporting screenshots for social ...| LGUG2Z
As I write this, the genocide in Gaza being perpetrated against the Palestinian people continues unabated, with the explicit support of many western governments and politicians across the political spectrum. Facilitation of war crimes is generally recognized as a war crime in International Humanitarian Law, the Rome Statue of the International Criminal Court and Customary International Humanitarian Law (I know this thanks to my many years spent as an ICRC field delegate, but you can do your o...| LGUG2Z
I recently starting using Yubikeys both to store passkeys which allow me to do passwordless logins to websites like GitHub, and to SSH into remote servers with FIDO2. I have a number of machines at home, but I spend the majority of my time using a Windows 11 desktop computer running NixOS on WSL2 (in the past I’ve described Windows 11 + my tiling window manager komorebi as the “desktop environment” on top of my NixOS WSL2 shell).| LGUG2Z
Have you ever hit alt + backspace while in a zsh session, intending to delete just the last part of a path, or a word, or an identifier, but ended up deleting far more than that? This is probably because you are using the default value for $WORDCHARS. The default value for $WORDCHARS is *?_-.[]~=/&;!#$%^(){}<> i.e. pretty much everything and the kitchen sink. Usually, therefore, you will want to remove characters which you don’t want to be considered parts of words| LGUG2Z
Last year I read the excellent article “Hands-Free Coding” by Josh Comeau which went into detail about modifying his programming workflow to use dictation and eye-tracking after developing Cubital Tunnel Syndrome. I highly recommend reading the whole article and watching the demonstration videos of his approach. This article was my first exposure to the dictation software Talon, which is specifically built to be hackable and naturally targets software developers. If you know anything abou...| LGUG2Z
For the last few years I have been writing and maintaining a tiling window manager for Windows that has steadily grown in usage and popularity. My first exposure to tiling window managers was on macOS with kwm (which was succeeded by chunkwm and later yabai). Naturally, this meant that whenever I used Linux, I would reach for bspwm. I am a big proponent of what I call the “bspwm architecture” for tiling window managers.| LGUG2Z
Earlier this month I mentioned on Mastodon that I was replacing a Docker-based local development environment at my day job with a Nix-based one, orchestrated with overmind and a justfile. There was quite a lot of interest in particular in how overmind and just could be used to replace a container / compose-based local development. While I can’t share the details of the significantly more complex migration I did at my day job (yet!| LGUG2Z
The last few months have seen a flurry of changes on major social media websites like Twitter and Reddit with regards to API access. This has also resulted in a number of new competitors seeing rapid growth and becoming new hubs for online discussion. Let’s start with the first point: you will always be able to save Reddit comments and Tweets to Notado by highlighting and saving a text selection. This doesn’t require any API access or scraping, and it will always work because it only reli...| LGUG2Z
Earlier this evening I finally had the opportunity to watch Spiderman: Across the Spiderverse, which I enjoyed a lot. I have been reflecting on how my experience of films like these (films with teenage protagonists) has changed with age. Even in my mid-to-late 20s, I would often identify clearly with the teenage protagonists, but over the last few years I have increasingly started identifying with the parents of the protagonists. Spiderman: Across the Spiderverse was no exception to this rece...| LGUG2Z
The data model for bookmarking and highlighting services past and present can generally be distilled down to the following: * URL * Title * Scraped Content * User Highlight * User Annotation * ... Other Metadata The bookmark itself is tied to a URL, and anything else related to the bookmark, such as the title, the scraped content (if the service scrapes on your behalf), highlights and annotations are stored as additional metadata linked to that URL.| LGUG2Z
For the past three years I have maintained a browser extension that I publish to both the Firefox and Chrome web stores. I recently received an automated email from the Chrome web store overlords who had decided I was violating the “Use of permissions” policy by requesting the cookies permission “without using it”. Here is a snippet from the manifest.json for my extension: { "permissions": [ "activeTab", "contextMenus", "notifications", "cookies", "https://<SPECIFIC_WEBSITE_RUN_BY_ME>...| LGUG2Z
I have wanted to redesign my website for a while now. In fact, I have wanted to redesign my website ever since I saw Nathan Wentworth’s website. If you haven’t seen it before, check it out. To this day it remains my favourite personal website on the internet. My favourite feature on his website has to be the regularly updating feeds; music from https://last.fm, recent posts from https://mastodon.social, and recent bookmarks from https://pinboard.| LGUG2Z
In my mid-twenties my body was in pretty rough shape. I was suffering from chronic pain and had terrible mobility to the pain where my quality of life and mental state were being severely adversely impacted. I was also terrified at the idea of entering a gym. I worked with an excellent chiropractor in Birmingham (UK) who helped to provide significant pain relief and subsequently referred me on to a physical therapist.| LGUG2Z
The past few weeks I have been putting off updating my personal website, which has sat untouched since October 2019. I’ve done quite a lot of interesting work since 2019, so finally this past weekend, I forced myself to sit down, clone the repository, and update it. My personal website is nothing fancy; just a static website built with Hugo and a community theme, and hosted on S3. This should be simple, right?| LGUG2Z
While watching the implosion of Twitter in real-time over the past week, I noticed more and more people in my Twitter feed sharing links to their Mastodon accounts. During that time, https://instances.social was posted to Hacker News as a tool to help people find a Mastodon instance to register with. My initial experience with this was quite poor. Mastodon's onboarding story needs so much work. Still can't pick a server. Tried https://t.| LGUG2Z
User comments and discussions on the internet have a pretty bad rep these days, to the point where many people have just opted out of online commentary completely, going as far as using a combination of DNS filtering and browser extensions to remove them entirely from their browsing experience. I, on the other hand, have spent the last couple of years refining ways to separate signal from noise in the cacophony of online user commentary, as I have come to believe that the most valuable knowle...| LGUG2Z
If you find, as I do, the act of physically marking books indescribably (in the literal sense) disrespectful (to the physical book), you probably felt great the first time you realised that PDFs could be digitally annotated. Equally so when Amazon’s Kindle brought eBooks into the mainstream. Unfortunately the story of highlights on Kindle has been one of some frustration and disappointment for me, in large part due to the restrictions placed on liberating highlights from the Amazon ecosyste...| LGUG2Z
I don’t think I’m alone in having consumed more documentaries on cults between the years of 2020 and 2022 than I had ever before in my entire life. There were many great documentaries, but the one that sticks out in my mind even today is The Vow: A NXIVM Story. Every time I watch a scene in that or any other documentary about cults in which people are reunited for the first time outside the cult, every muscle in my body feels the reunion that is happening on the screen.| LGUG2Z
I have previously written about how I unwittingly found myself at the center of an accidental community with a shared desire for a stable, reliable tiling windows manager for Windows. Despite the huge growth of komorebi users, I remain for all intents and purposes the sole developer of the codebase. Several of the most important aspects of komorebi today however are in large part thanks to community contributions. In no particular order:| LGUG2Z
I am the only deaf person in my family. I’m 24 years old and none of them learned ASL or only took one course. They hardly know the alphabet and can say “bathroom”. I do not go to my family gatherings because no one is able to communicate with me. When they do, they talk REALLY loud and only ask me “small talk” questions. They are hell bent on me coming around, because “we’re a family and we love you”.| LGUG2Z
It was during the shutdowns of 2020 that I became increasingly frustrated with my Intel MacBook pro. It was slow, loud and hot; all the things that many people, myself included, dislike about laptops. I decided to build a PC. After a month or so spent scouring the internet for parts, I had assembled a PC. I ran Pop!_OS for a while, but this being my first desktop machine in over a decade, I spent a fair about of time dual booting into Windows to play all the video games that I missed out on a...| LGUG2Z
Since my last post back in June, I have been steadily eating at a surplus while focusing my training on powerlifting. During this period I have run three different programmes: Metallicadpa’s Push/Pull/Legs Split nSuns 531 Linear Progression GZCL Linear Progression Metallicapda’s PPL While I was cutting I was running a full body calisthenics-focused programme three-to-four days a week, but I had been wanting to try a split programme which would allow me to train with more frequency through...| LGUG2Z
Some time around early May I decided to change up my eating habits. Since January 2016 I have been working on cutting body fat, conquering my appetite and improving my poor eating habits. By May I felt I had reached a point where the returns I was getting from eating at a deficit were diminishing; my stomach was flat, my abs were visible, and my relationship with food had substantially changed for the better.| LGUG2Z
After switching from an iPhone to an Android device at the end of last year, my content consumption workflow changed significantly. I stopped reading articles on my phone due to the poor experience provided by the Android version of the Instapaper App, and I started checking my RSS feeds once a day on my laptop rather than on my phone. This new approach to getting through my feeds helped me to remove a lot of the noise from subscriptions, and also got me thinking about whether certain topics ...| LGUG2Z
Background Just over a month ago I decided to start learning Italian. I have previously studied French and Spanish and can speak both languages fairly confidently (though French perhaps more so than Spanish), so I began studying Italian with an idea of what works for me when it comes to the study of Romance languages. I had previously written of my desire to compare my experience learning Italian in 2017 to my experiences learning other languages, particularly Romance languages, in previous y...| LGUG2Z
When I started learning languages in my late teenage years, I began with French and Persian. French, like most European languages, uses an alphabetic writing system, whereas Persian, like many languages in the Middle East uses an abjad writing system. I later also learned north Indian languages which use abugida writing systems, and last year I began learning Japanese which makes use of both syllabic and logographic writing systems. If you’re reading this article you’ll be familiar with a...| LGUG2Z
At the beginning of 2016 I was overweight. My frame since childhood had been wiry, and through adolescence to young adulthood, finding myself a victim of pop culture’s false dichotomy of intellectualism/athleticism, my activity levels decreased and my percentage of body fat rose. My activity levels as an undergraduate student were already low, but I was not prepared for just how physically static my life would become when I began working.| LGUG2Z
When I initially set a goal for myself, nine times out of ten it will be abstract and unmeasurable; not particularly useful in the long run, but enough to get me moving in the right direction. My specific fitness goal for 2017 is to be able to hold an l-sit on gymnastics rings, and this goal is helping to shape my long-term approach to fitness throughout the year. On the other hand, I have not had any sort of equivalently defined goal when it comes to writing; it has essentially just been ‘...| LGUG2Z
I imagine that summer vacations from school comprised formative periods for many people across the world. Six weeks (or more) without broken education systems breathing down our necks, allowing us to discover all those things that require long, uninterrupted blocks of time to understand and appreciate. At some point during the last five years I started reading the works of Nassim Taleb. I regularly find myself coming back to one of the more well-known quotes taken from one of his books:| LGUG2Z
I spent much of the first half of the this month plugging away at what was my first sizeable piece of technical writing, my previous post on using Terraform to set up a new Hugo website on AWS. It took much longer to write than I originally anticipated, and the longer the post remained unfinished, the harder it became to continue working on it. While a piece of writing taking longer than originally anticipated or intended is not really a problem in and of itself, I found that the unfinished s...| LGUG2Z
Background Static generated blogs have seen a surge in popularity over the past few years, as a more cost effective and scalable alternative to traditional publishing platforms such as WordPress. A big reason contributing to why it took me so long to actually start writing online was uncertainty about the publishing medium I should use. Ghost appealed to me for a while, but it felt like overkill for what I wanted to achieve.| LGUG2Z
Over the weekend it was decided that this year’s wedding anniversary would be celebrated somewhere in Italy. It has been a long time since I last had any extended exposure to Romance languages. My French and Spanish are still fairly strong, though I rarely have the chance to speak either at any great length these days. I’ve flirted with the idea of learning Italian many times over the years, though I have always ended up deciding not to.| LGUG2Z
Get comfortable with being uncomfortable is a saying that I hear a lot when I’m around tech people, and particularly non-technical people working in tech. I get the feeling when hearing this saying repeated aloud, that my understanding of this it is quite different to the understanding of the people I hear repeating it. In a team-based environment, it is important to voice discomfort at the earliest available opportunity. Whether that discomfort is a result of dynamics in the team, gaps in ...| LGUG2Z
This year one of my goals is to improve my writing skills, and one of the ways I’m working towards that goal is to make sure I write something every day. January was not terribly successful, but February has been a lot better. Initially I was having a lot of trouble getting started, though that has been mitigated by my efforts to consistently write something every day, even if what I start remains incomplete.| LGUG2Z
At some point over the last two weeks I came across a subreddit about ’non zero days’. As far as I can tell, the community on Reddit sprung up in response to a comment made by ryans01: Rule numero uno - There are no more zero days. What’s a zero day? A zero day is when you don’t do a single fucking thing towards whatever dream or goal or want or whatever that you got going on.| LGUG2Z
Working in the technology sector as a consultant means that I sometimes find myself working with public figures in the tech community. I can’t think of many points in my life where I have found myself working with people whose talks I have watched on YouTube or whose writings I have read in various publications on a regular basis. Naturally the process of following public figures primarily through the lens of the persona that they expose to the world results in expectations being formed whi...| LGUG2Z
I remember content consumption being quite a simple process before I owned a smartphone. I had some preferred RSS feeds that I subscribed to with a reader of my choice, which I would go through on my laptop whenever I had time and save articles that I was interested in reading later. In the years since I first started using smartphones I’ve gone through a few different mobile-first apps such as Flipboard and Pocket, trying to augment/improve my content consumption workflow, but as of last w...| LGUG2Z
Since the start of the year I’ve been trying to make a concerted effort to write more. I realise that many of my biggest hurdles at the moment can be traced a lack of regularity and discipline, but there has been one thing in particular which has caught my attention recently when I’ve been going over topics I’d like to write about: length. I seem to convince myself that if I cannot (or don’t think I can) write about a certain topic up to a certain arbitrary length, it is not worth eve...| LGUG2Z
The past month has seen me think a lot about portability in development teams and across environments. The first real development project I worked on last year made use of a utility script which provided a unified development environment interface for all of the developers, a go script. This was something of a revelation, as it really helped with my onboarding and environment setup, and allowed me to be a productive contributor right away.| LGUG2Z
I went through a period last year where I was listening to a lot of podcasts on the Nerdist network. The stand-up comedians who often feature on various Nerdist podcasts will every so often talk about career progression and recognition in the world of stand-up. A point that has been brought up in those podcasts which continues to resonate with me is to ‘just kill’ (write good material, perform it well, listen to the crowd’s feedback, make adjustments and get a better reaction next time).| LGUG2Z
Making time is getting harder as the years stack up. The things that I wish I could make more time for are not particularly extravagant. Reading. Exercising. Preparing lunches and dinners in advance. Writing music. Studying foreign languages. Revisiting video games from my childhood. Diving into the history of cinema. Listening to lengthy post rock records without interruption. I had a routine that I really liked towards the end of this summer.| LGUG2Z
I have tried running the Attic Nix Binary Cache on my Hetzner dedicated server in Germany a few times in the past, but the peering issues and the latency to Xfinity in Seattle have always made me throw my hands up in frustration. This morning I noticed a comment by Zhaofeng on the repo issue tracker. As a NixOS aficionado myself, I begrudgingly admit that I’ve been running my instance on fly.| LGUG2Z