This is my personal presence on the Fediverse, powered by my own website rather than a centralized social network. You can follow me from Mastodon, Akkoma, Pleroma, Misskey, and other ActivityPub-compatible platforms using @arazgray@arazgray.com. Things you can find here: Posts: Posts Projects: Projects Gallery: Gallery Playlist: Playlist Links: Links How to follow From your Fediverse client, search for: @arazgray@arazgray.com You can follow this account from any service that supports ActivityPub. Why the Fediverse? The Fediverse is an open, decentralized social network built around interoperable protocols such as ActivityPub. Instead of keeping my social identity on someone else's platform, I host it on my own domain. My identity is therefore not tied to a particular social network. The domain is the identity. My website and the Fediverse This account is connected to my website. I may use it to share new posts, projects, links, thoughts, and other updates. Replies and interactions from other Fediverse servers can also be delivered back to this website. Technical details Handle @arazgray@arazgray.com Profile arazgray.com/@arazgray Protocol ActivityPub Moderation Interaction with this account is subject to the moderation policies of the servers involved. I may block or limit interactions from accounts or servers that engage in spam, harassment, or abuse.
Infinite Mac is a collection of classic Macintosh and NeXT system releases and software, all easily accessible from the comfort of a web browser. URL: https://infinitemac.org/
Adam Jacobs has secretly recorded over 10,000 concerts since 1989 URL: https://archive.org/details/@aadam_jacobs_collection
What If We Could Compile Intent Instead of Code?
Large Language Models have fundamentally changed how software is written. Today, instead of writing every line of code ourselves, we increasingly describe what we want and let an AI determine how to implement it. But this raises an interesting question: What if we could describe software in such a precise, structured way that GPT, Claude, Gemini, Llama, or any future AI model would all generate essentially the same application? In other words, could there be an AI Programming Language—or perhaps a better name would be an AI Specification Language—whose purpose isn't to be executed by a CPU, but to be "compiled" by an AI? Programming Languages Already Solve This Problem Traditional programming languages are remarkably deterministic. Write the same valid C program and compile it using GCC, Clang, or Microsoft's Visual C++, and although the generated machine code may differ, the observable behavior of the program should remain the same. This works because languages like C have a formal grammar and well-defined semantics. Every keyword has a precise meaning. Every statement has predictable behavior. AI prompts, on the other hand, have no such guarantees. Create a modern login page. One model may generate React. Another chooses Vue. A third prefers Svelte. One uses Tailwind CSS. Another writes plain CSS. All of them are technically correct. The prompt leaves far too much room for interpretation. Prompts Are Specifications—Just Bad Ones Most prompts are simply incomplete specifications. Consider this example: Create a dashboard. Compare it with: page Dashboard framework: Laravel 12 frontend: Vue 3 database: PostgreSQL authentication: JWT theme: Light responsive: true charts: Chart.js tests: PHPUnit api: REST style: shadcn/ui Suddenly, most design decisions disappear. The AI has far fewer opportunities to improvise. This isn't code. It isn't a prompt either. It's something in between. Maybe It's Not a Programming Language Calling it an "AI Programming Language" may not even be accurate. A better name could be: AI Specification Language Intent Language Software Intent DSL Declarative Software Specification AI Intermediate Representation (AI-IR) Unlike Python or Rust, this language wouldn't be executed by a processor. It would be interpreted by an AI model. The AI becomes the compiler. The Real Goal Isn't Identical Code Two models may never produce byte-for-byte identical source code. That isn't necessary. What matters is whether the resulting software behaves identically. If two different AIs generate: the same API endpoints, the same database schema, the same validation rules, the same authentication flow, the same accessibility behavior, the same user experience, then they have effectively produced the same application. The implementation details become secondary. The Biggest Challenge: Ambiguity Humans are comfortable with ambiguity. Programming languages are not. Current AI models fill in missing information using their training data, personal preferences, and statistical patterns. That is both their greatest strength and their greatest weakness. Any universal AI specification language would need to remove ambiguity almost entirely. Every statement should have exactly one interpretation. Every keyword should carry precise semantics. Every omitted value should have a clearly defined default. In other words, we'd need to formalize software intent with the same rigor that traditional programming languages formalized algorithms. Has Anyone Already Built This? Not exactly. Several existing projects move in this direction: Model Context Protocol (MCP) standardizes communication between AI models and tools. DSPy provides a structured framework for programming language models. Guidance helps developers build structured prompts. Semantic Kernel orchestrates AI workflows. OpenAPI formally specifies REST APIs. JSON Schema defines the structure of JSON documents. GraphQL specifies APIs declaratively. Protocol Buffers define structured data across languages. TLA+ formally specifies system behavior. Alloy models software systems mathematically. Each solves a piece of the puzzle. None attempts to become a universal, deterministic language for AI-driven software generation. Could It Actually Work? I believe it's possible—but probably not in the way many people imagine. Instead of replacing programming languages, it could become a layer above them. A developer would write an AI specification. Any capable AI would translate that specification into Laravel, Django, ASP.NET, Rust, Go, or whatever implementation is requested. In this model: Humans describe intent. The specification defines semantics. The AI performs compilation. The target language becomes an implementation detail. We already have intermediate representations for CPUs, such as LLVM IR. Perhaps AI needs its own intermediate representation as well—one designed not for processors, but for reasoning systems. Final Thoughts Every major leap in software development has come from increasing the level of abstraction. Assembly replaced machine code. C replaced assembly. Frameworks replaced repetitive boilerplate. AI is beginning to replace parts of programming itself. The next logical step may not be "better prompts." It may be the invention of a standardized language for communicating software intent—a language that any sufficiently capable AI can understand and compile into functionally identical software. If such a language ever exists, it may become one of the most important standards in software engineering, separating human intent from implementation in the same way HTML separated content from presentation decades ago. Sources Model Context Protocol (MCP) DSPy Guidance Microsoft Semantic Kernel OpenAPI Specification JSON Schema GraphQL Protocol Buffers Alloy Language TLA+ LLVM Intermediate Representation
A sleek, zero-setup torrent finder and downloader that lives right in your terminal. URL: torlink.bairon.dev
The Complete Nasreddin Journal Archive (1906–1931)
The Complete Nasreddin Journal Archive (1906–1931) Today I am publishing what is, to the best of my knowledge, the first publicly available complete digital archive of the legendary Molla Nasreddin Journal. Browse, Read & Download the Complete Molla Nasreddin Journal Archive Molla Nasreddin Journal (Azerbaijani: ملا نصرالدین, Molla Nəsrəddin; Russian: Молла Насреддин, old orthography: Молла Насреддинъ) was an eight-page Azerbaijani satirical journal published in Tiflis (1906–1917), Tabriz (1921), and Baku (1922–1933). Founded by Jalil Mammadguluzadeh (Cəlil Məmmədquluzadə), the Molla Nasreddin Journal became one of the most influential publications in the history of Azerbaijan, Iran, and the wider Turkic world, combining satire, literature, political commentary, and remarkable illustrations to criticize censorship, corruption, injustice, and social inequality. For historians, researchers, students, and anyone interested in Azerbaijani history, Persian history, the Caucasus, Turkic literature, political cartoons, and early twentieth-century periodicals, the Molla Nasreddin Journal remains one of the most valuable primary historical sources ever published. The First Complete Digital Archive After years of searching through libraries, museums, private collections, and digital archives around the world, I was finally able to assemble what I believe is the only original, digitized, and complete archive of the Molla Nasreddin Journal available online. Almost every existing digital collection of the Molla Nasreddin Journal is incomplete. Most notably, the long-missing 1921 issues No. 5, No. 7, and No. 8 have never been publicly available together in any online archive. This archive includes those missing issues alongside every other known published issue, making this, to the best of my knowledge, the first complete digital archive of the original Molla Nasreddin Journal ever published online. Archive Includes Every known issue published between 1906 and 1933. High-resolution scans of the original journal. Individual PDF downloads for every issue. A complete ZIP archive containing the full collection. The previously unavailable 1921 issues No. 5, No. 7, and No. 8. Keywords: Molla Nasreddin Journal, Molla Nasreddin Magazine, Molla Nasraddin Journal, Molla Nasraddin Magazine, Molla Nəsrəddin Journal, Molla Nəsrəddin Magazine, Nasreddin Journal, Nasreddin Magazine, ملا نصرالدین, ملانصرالدین, Молла Насреддин, Молла Насреддинъ, Jalil Mammadguluzadeh, Cəlil Məmmədquluzadə, Azim Azimzade, Azerbaijani journal, Azerbaijani magazine, Azerbaijan history, Azerbaijani literature, Azerbaijani satire, Persian history, Persian literature, Persian satire, Turkic literature, Caucasus history, Tiflis, Tbilisi, Tabriz, Baku, historical journal, historical magazine, historical newspapers, satirical journal, satirical magazine, political cartoons, digital archive, digitized archive, complete archive, PDF archive, public domain, rare periodicals, free PDF, free download.
Let's Speak The Open Web (and stay readable by everyone)
For a while my blog had the usual stuff: HTML, RSS, a few alternate formats. That was fine. Then I started wanting it to play nicer with the rest of the indie web — without bolting on a heavy CMS or a pile of JavaScript. So I spent some time wiring up the boring, important protocols. The ones that don’t trend, but keep the web a web. Feeds, but properly RSS 2.0 was already here. I cleaned it up, kept Atom and JSON Feed in sync, fixed Open Graph so each post has its own URL and metadata instead of always pointing at the homepage, and made sure tags and authors show up where they should. Small things. They matter when a reader or a feed reader is picky. Microformats Posts are proper h-entrys now. The blog list is an h-feed. Titles, authors, dates, content, tags, canonical URLs — in the HTML itself, no scripts. If something wants to parse my blog the old indieweb way, it can. Webmention You can mention my blog from yours, and I’ll get the ping. Mentions are verified (your page has to actually link here) and moderated before they show up — same vibe as comments, not an open spam hose. And if I link out to someone, I can check a “Webmention” box when I publish and notify them. Not automatic on every save — only when I mean it. WebSub Feeds advertise a hub. Subscribers can get push updates when something new goes out, instead of polling forever. The boring infrastructure of “new post, please wake up.” ActivityPub My blog has a fediverse actor now. You can try finding @arazgray@arazgray.com from Mastodon and friends. Follows, likes, boosts, replies — the basics. Posts can go out as Create activities. It’s modular enough that I can grow it later without rewriting the whole blog. I’m not trying to replace a full Mastodon instance. I just don’t want my blog to be a dead end when the rest of the network talks ActivityPub. Accessibility (the quieter half) Same project, different angle: make my blog usable for more people, not just more protocols. Semantic HTML where it counts. Skip link to main content. Real labels on forms. Focus styles you can actually see. visually-hidden text where icons need context. Prefer reduced motion when someone asks for it. Alternate formats still exist — TXT, MD, RAW, INK, PDF — because “accessible” isn’t only screen readers; it’s also old devices, weird browsers, and people who just want the words. I still joke about making the most accessible blog in the world. I’m not there. But the direction is intentional: open standards for machines, careful HTML for humans. Why bother Because I don’t want this place to only work inside one company’s app. Because feeds still matter. Because a personal site can talk to other personal sites without a central landlord. And because if you’re going to put words on the internet for twenty years, you might as well make them findable, shareable, and readable by as many people and tools as possible. No new frontend framework. No SPA. Just Laravel, queues, and some care. If you run a site that supports webmentions, link here and say hi. If you federate, follow along. If you just came for the post — the HTML still works the old-fashioned way. That’s the point.
Semantic Image Compression (Left=Original, Right=Outcome) We've spent decades making image compression better. JPEG throws away details your eyes probably won't notice. PNG keeps everything but produces larger files. Newer formats like WebP and AVIF squeeze images even further using smarter algorithms. But what if we stopped compressing pixels altogether? What if we compressed meaning instead? That question sent me down a fun rabbit hole. The Idea The experiment is surprisingly simple. Give an image to one AI and ask it to describe every visual detail it can possibly see. Then throw the original image away and give only that description to another AI image generator. The goal is to recreate the original image as accurately as possible. Instead of storing millions of pixels, you're storing a semantic description of the scene. You're no longer saving what every pixel looks like. You're saving what the image actually contains. Is That Really Compression? Sort of. A detailed prompt may only be a few kilobytes of text, while the original image could be several megabytes. If another AI can reconstruct something visually close from that text alone, the compression ratio becomes surprisingly interesting. Of course, there are some catches. This Is Definitely Not Lossless Traditional image formats preserve exactly what was captured, at least when using lossless compression. This approach does not. Even the best description cannot perfectly capture every tiny texture, reflection, or random detail. On top of that, image generation models are not deterministic, so the exact same prompt can produce different results every time. The reconstructed image often feels less like an exact copy and more like an incredibly accurate memory of the original. The Prompt Matters More Than You Think I quickly discovered that ordinary image captions are nowhere near enough. A caption like "A person standing on a beach during sunset" is great for humans, but terrible if another AI needs to rebuild the image. Instead, the description has to read almost like a technical specification. Camera angle, focal length, lighting direction, colors, materials, textures, object positions, proportions, shadows, reflections, depth of field, and countless other details suddenly become important. The better the semantic specification, the closer the reconstruction gets. Pixels vs. Instructions One way to think about it is that traditional image formats store pixels, while this approach stores instructions. Rather than recording the color of every pixel, the description explains the scene itself. It's less like saving a screenshot and more like saving the recipe that can recreate it. Could This Ever Be Useful? I don't think this replaces JPEG anytime soon. If you need exact fidelity, conventional image compression is still the right tool. But semantic representations could become useful in AI native systems, searchable image databases, or applications where understanding the content matters more than reproducing every single pixel. As image generation models continue improving, something interesting happens: the stored description never changes, but the quality of reconstruction keeps getting better as the "decoder" improves. That's a fascinating idea.
Most of these projects started as tools I wanted for myself. Some are tiny, some are experimental, and some are slowly becoming more serious. But they all follow the same idea: simple interfaces, useful features, less noise, and more control for the user. Wave Wave is my small internet radio app. I redesigned it with a cleaner mobile-first interface, horizontal country tabs, a simple station list, and a sticky player at the bottom. The goal is still the same: open the app, pick a station, listen. No clutter, no heavy interface, no unnecessary distractions. Just radio. Awesome M3U Editor Awesome M3U Editor also received a lot of attention. It is a private, browser-based editor for M3U and M3U8 playlists, made especially for organizing IPTV playlists. The newer version has better group and channel management, multi-select support, rename buttons, editable playlist headers, improved metadata preservation, and a status checker for selected channels. I also fixed the export behavior, so the downloaded file reflects the current edited playlist instead of falling back to the original version. That was one of the most important fixes. Azerbaijani with Arabic Alphabet Keyboard I also improved my web keyboard for Azerbaijani with Arabic alphabet. The goal is to make typing easier for people who want to write Azerbaijani using the Arabic alphabet. The keyboard now has better touch and mouse behavior, a left-to-right layout, number and extra symbol layouts, emoji support, copy and paste support, persistent text storage, and a more natural mobile keyboard feeling. This project matters to me because language tools should not feel like a luxury. People should be able to type in their own language easily. Odak.app Odak.app is my distraction-free writing tool. It is built around a simple idea: give the writer a clean page, remove the noise, and keep the writing experience fast and calm. I have been working on the editor experience, Markdown behavior, local saving, export options, themes, and small details that make long writing sessions feel better. It is still meant to feel light. I do not want it to become a complicated writing suite. I want it to stay focused, useful, and pleasant to write in. Turkish Pantomime Azerbaijani Turkish Pantomime is the first and only online group pantomime game in Azerbaijani Turkish. In recent improvements, many bugs have been fixed, a large number of words and sentences have been added to the game’s data, and its appearance, core mechanics, and structure have become more consistent, better, and smoother. Additionally, an offline mode has been provided so that access to the game is not lost during internet outages. Nasimi Nasimi is my experimental Azerbaijani programming language. It works as a layer over Python and translates Azerbaijani syntax into executable Python code. The project was created with education in mind. I wanted to imagine what programming could feel like for Azerbaijani kids if they could start learning it in their own language. Recent work includes support for Azerbaijani with Arabic alphabet, syntax improvements, custom loop syntax, and editor support. It is still experimental, but I like the direction it is going. What Connects Them These projects look different from the outside. A radio app, an IPTV editor, a keyboard, a writing app, and a programming language are not the same kind of thing. But for me, they are connected. They are all about making small tools that respect the user. Tools that are fast. Tools that do not try to trap you. Tools that do one thing clearly. Tools that feel personal instead of corporate. I am still experimenting, fixing, rewriting, and learning. Some of these projects may stay small. Some may grow. Some may be replaced by better ideas later. But I like that they exist. And I like building them.
az is a small, sane terminal text editor written in PHP with NO external dependencies except PHP CLI. It opens ready to type, supports project folders, tabs, a project tree, quick opening, command actions, line numbers, simple shortcuts, syntax highlighting, and autocomplete.
A pirate libraries archive URL: https://shadowlibraries.github.io
A small, fast, and surprisingly thoughtful bookmarking service inspired by the old web. URL: https://ln.ht/
Wave - right to the point internet radio
It is simple on purpose: choose a country, pick a station, and press play. The player stays at the bottom, so the important controls are always there: previous, play or stop, next, and Shazam. It works nicely on mobile, uses a plain monospace look, and keeps everything focused on the music, news, and voices coming through the stream. No accounts. No noise. Just radio. Wave
I missed listening to radio in a simple way. Most apps around streaming radio today feel overloaded: too many menus, recommendations, popups, accounts, animations, and things competing for attention. I did not want a platform. I just wanted a list of stations and a play button. So I made Wave. It's a small radio player that stays out of the way. Pick a country, choose a station, and listen. The controls remain fixed at the bottom, so switching stations or identifying a song is always one tap away. The interface is intentionally minimal: monochrome, monospace, mobile friendly, and focused on keeping everything visible on screen without jumping between pages or panels. It is also just a single HTML file. No build process, no dependencies beyond HLS playback, and easy to modify if you want to add stations or host your own version. A quiet little radio app for people who still like radio. Open Wave View source on GitHub
Sane VIM configuration for my personal use
Dive deep into the roots of modern web design and trace the history and evolution of the web design trends and techniques. URL: https://www.webdesignmuseum.org/
The only solution for bad and violent people are good people that are more skilled in violence. Japanese Samurai Code Bushido
Most people don’t miss being young. They miss being alive. They say they want to stay a kid. What they really want is curiosity, energy, joy, friendship, wonder. Good news: those were never owned by children. Children just have easier access to them. At 30s, you’re not losing youth. You’re losing defaults. As a kid, life gave you curiosity for free. Now you must choose it. As a kid, play was built into the day. Now you must schedule it. Curiosity Kids ask endless questions. Adults perform certainty. Better to be interested than impressive. Learn useless things. Try hobbies you’re bad at. Explore your own city like a traveler. Ask people questions you genuinely care about. Curiosity is youth with direction. Play Adults often only allow fun if it is productive. Terrible trade. Play games. Draw nonsense. Dance badly. Build pointless things. Make jokes. Kick a ball around. Fun that serves no purpose serves the biggest purpose. Body Many people think they feel old. Often they feel neglected. Walk daily. Lift things. Sprint sometimes. Stretch. Sleep enough. Eat food that looks like food. An exhausted nervous system feels ancient. Friends Adults say friendship is hard. No. Passive friendship is hard. Kids become close because they repeatedly do things together. Use the same formula. Weekly coffee. Monthly dinner. Friday football. Shared hobby. Regular calls. Consistency creates closeness. Self-consciousness Children waste little energy managing image. Adults burn years there. Be enthusiastic. Laugh loudly. Wear what you like. Admit ignorance. Try things badly. Coolness is expensive. Aliveness is cheap. Small joys Children know treasure when they see it. Rain smell. Favorite snack. New notebook. Fresh sheets. Music in headphones. Sunset walk. Adults often don’t lose joy. They lose attention. Feelings Children feel honestly and recover quickly. Adults suppress until nothing moves. Speak truth. Cry when needed. Celebrate openly. Show affection. Let excitement be visible. Numbness can look mature. It feels old. Future excitement Kids naturally have something to look forward to. Adults need to build it. Trips planned. Projects started. Dates set. Goals that matter. Anticipation is renewable youth. Seriousness Many confuse seriousness with adulthood. False choice. You can be responsible and playful. Wise and goofy. Stable and spontaneous. Some of the best adults are. Age 30 At 30s, you likely have more freedom, money, confidence, and choice than you did at 13. Use adult resources to fund childlike wonder. That’s better than being a kid. Weekly recipe One new thing. One playful thing. One physical challenge. One meaningful hangout. One quiet moment of awe. One thing to look forward to. Repeat.
I challenge you to open your website in a desktop browser, disable all JavaScript, and navigate through it, testing the functionality you expect to work. Then, share the results here. If it doesn't work, feel free to fix it and share a before/after comparison. I'll post the results in this post.
I challenge you to open your website on a desktop browser, remove all the external, internal, and inline CSS from it, take a screenshot, and share it here. If it doesn't look sane, feel free to fix it and share the result as a before/after. I'll share the result in this post.
We're all looking for someone to look up to, someone whose perspective, skills, or experience can help us grow. When people sense that kind of value in you, they become genuinely invested in your world. They'll read your casual updates, follow your thoughts, and care about things you'd never expect them to notice. Think about it: when was the last time you eagerly followed someone's writing and felt they had less to offer than you? It rarely happens. We naturally gravitate toward those we admire. That's why how you present yourself matters. Your audience came to you for inspiration, insight, or guidance, and that's worth protecting. Sharing vulnerability isn't inherently bad, but there's a difference between being human and making your struggles the centerpiece of your platform. When your content shifts from value-giving to processing personal hardship publicly, people quietly drift away, not out of cruelty, but because the connection they were seeking has changed shape. Keep the difficult moments close to your chest, or at least frame them in a way that still serves your audience. There's a version of honesty that uplifts; there's another that simply unloads. Your private life can stay private. It doesn't make you less authentic, it makes you someone worth listening to.
Minimal (22) How much simplicity is enough?
As far as it looks sane to you. You decide. It's your world. It's your design.
“If you're stuck, simplify. If you're still stuck, simplify again." Unknown
In recent months, after watching wave after wave of automation tools and AI copilots flood the industry, I had to ask myself an uncomfortable question: what does it actually mean to be a software developer today? Not five years ago. Not even two years ago. Today. For a long time, writing code was enough. If you could implement features, build internal tools, connect APIs, and ship on time, you were safe. That safety is gone. Not because developers are useless, but because routine implementation has become cheap. Very cheap. If we are honest, much of what used to take hours can now be generated in seconds. Identity Is the First Thing That Must Go The biggest mistake is identifying with a tool instead of a problem. When your professional identity is tied to a language or framework, you are standing on unstable ground. Tools evolve. Abstractions rise. Automation expands. The market no longer rewards syntax knowledge. It rewards system thinking. If your value is “I can write endpoints,” you are replaceable. If your value is “I can design a system that reduces operational cost by 40 percent,” you are not. This shift is uncomfortable. But necessary. Competing With AI Is a Losing Strategy Trying to out-code AI in speed is like trying to out-calculate a calculator. You will lose. The better strategy is simple: use it. Aggressively. Study how large language models work at a conceptual level. Understand embeddings. Learn what vector databases are. Experiment with retrieval augmented generation. Build small tools that integrate AI into real workflows. The goal is not to become a machine learning researcher. The goal is to become someone who can orchestrate intelligence. The people shaping this space, like Sam Altman and Andrej Karpathy, are not spending their days implementing forms and pagination. They think in leverage. That is the real lesson. Move Up the Abstraction Ladder Low level implementation is being commoditized. Architecture is not. Boilerplate is cheap. Judgment is expensive. Syntax is abundant. Taste is rare. What remains valuable? Architecture. Security. Infrastructure. Performance. Data pipelines. AI workflow design. Deep understanding of messy business logic. AI can produce code. It still struggles with ambiguity, politics, conflicting requirements, and incomplete specifications. In other words, it struggles with reality. If you can operate comfortably in that messy layer and then use AI as a force multiplier, you become extremely hard to replace. Expand or Shrink Staying inside a single ecosystem is a slow decline. You do not need to abandon everything. But you need expansion. Learn Python because the AI ecosystem lives there. Learn cloud infrastructure because deployment is part of value. Learn DevOps because automation compounds. Learn product thinking because code without context is noise. The goal is not to collect buzzwords. The goal is to widen your surface area of relevance. Build Something AI Native Not for investors. Not for hype. For survival. Build a small SaaS that automates a niche workflow. Create an internal tool that wraps multiple AI services behind a clean API. Integrate language models into a real problem you understand deeply. This changes your mindset from employee to builder. Even if it fails, you will have crossed a psychological barrier. You will stop seeing AI as a threat and start seeing it as raw material. The Collapse of the Middle There is an uncomfortable truth here. The average developer who only implements tickets will slowly disappear. Not overnight, but steadily. At the same time, a small team properly using AI can now produce what once required entire departments. The middle layer is compressing. This is not pessimism. It is structural change. The Mental Shift The technical steps are clear. The harder part is mental. Fear freezes. Resentment blinds. Denial delays. Curiosity compounds. Use AI daily. Let it critique your code. Let it suggest architectures. Let it generate drafts. Then refine, correct, and improve. You are not obsolete. But the version of you from three years ago might be. Software development has always rewarded those who evolve faster than the tools. The difference now is that the tools are evolving faster than ever. The only real question is simple: will you evolve faster than they do?
How to set global key shortcuts in Wayland
If you're a dropdown terminal person, you know the deal: one key, instant access, no friction. I've used the grave key (`) to show and hide my terminal for as long as I can remember. Then Wayland came along and decided that key is off-limits for global shortcuts. Relearning decades of muscle memory wasn't an option, so I found a workaround. The fix Install Input Remapper, a tool that intercepts your keystrokes at the device level, before Wayland gets a say. sudo apt install input-remapper sudo input-remapper-gtk Open the app, find your physical keyboard in the device list, and set the grave key to remap to a safe shortcut that Wayland does allow as a global hotkey, something like Ctrl+F1. Then go into your dropdown terminal settings and bind that same shortcut to toggle visibility. The chain works: you press grave, Input Remapper turns it into Ctrl+F1, your terminal responds. One more thing Since you're remapping the grave key entirely, you'll lose the ability to type a grave or tilde normally. Fix that by adding two extra remaps in Input Remapper: Shift+grave to output a grave, and Alt+grave to output a tilde. Not perfect, but it gets the job done without giving up your muscle memory.
You won't find this one in your usual self-help feed. Most guides out there are quietly telling you that you're doing something wrong and they've got the fix. This isn't that. "Stop eating to lose weight." Okay, but that's literally the only good thing going on right now. Hard pass. Make your bed, it sets the tone for a productive day! But also, don't make your bed, your joints are stiff in the morning and you'll mess up your cartilage. Drink coffee! Actually, skip the coffee. Start your morning with lemon water and a side of breaking news. Yep. Really. The contradictions are endless and honestly a little funny if you zoom out. Science doesn't always agree with itself, and that's okay. What's not okay is the pressure you feel when you can't keep up with whichever study went viral this week. You're carrying a lot. Bad sleep. No real downtime. A mind that won't stop running. The weird tension between the world you grew up in and the one you're living in now. Memories you'd rather not have. A future you can't quite picture clearly. That's not weakness, that's a very full plate. Here's something that doesn't get said enough: you deserved a calm childhood. If you didn't get one, your nervous system has been working overtime ever since and that's not your fault. Your brain learned to stay on alert. It was just trying to protect you. And now you're living in a world where every idea, every brand, every opinion is competing hard for your attention, spending real money to get inside your head. Of course it's exhausting. You're not failing at life. You're just a human being navigating something genuinely overwhelming. You are a person, not a productivity machine. Please be a little kinder to yourself, you've earned it.
Minimal (21) How to deal with noisy people?
You've probably been in situations where you had no choice but to wait. For people like me, especially with ADHD, waiting can feel like genuine torture. Waiting to reach a mountain summit while hiking. Waiting to hit a 2-hour walking record. Sitting through a party you were sure you wouldn't enjoy. Surviving a 3–4 hour flight with no internet. Just for fun, I Googled it and read the top three results (+, +, +). Pure fluff. Like most advice out there, the research was completely disconnected from reality. When you're actually in a situation where you need time to pass before reaching a goal, it almost always turns out to be far easier than you imagined it would be. My conclusion: patience itself isn't hard. What's hard is the anticipation of having to be patient, and that anticipation is what stops people from doing things in the first place. So if you're facing something that requires waiting, don't stress about it. Most of the time, the experience is much smoother than you expect.
I made a Cyberpunk 2077 Tarot Deck. It has 22 Major Arcana, 4 Minor Arcana, 3 extra cards, and the original back design from the game. Most cards are from the game itself, originally made by Jakub Rebelka, and the extra three were designed by an unknown artist, with descriptions I wrote. These are the highest-quality versions you can find on the internet, and the most complete set. You can preview and download it here.
Cyberpunk 2077 Tarot Deck (22 Major Arcane, 4 Minor Arcane +3 Extra and Back Illustration)
Originally made by Polish cartoonist Jakub Rebelka, These are tarot cards that appeared in Cyberpunk 2077 (Main Story and Phantom Liberty expansion). The first 22 cards (I-XXII) represent the major arcana, followed by four minor arcana cards (XXIII-XXVI) that belong to the Phantom Liberty expansion. The next three cards (XXVII-XXIX) were designed by an unidentified Chinese designer (cards only, with descriptions written by me). The final image shows the card back design extracted from the game itself. Download Cyberpunk-2077-Tarot-Deck.zip (~90 MB) Cyberpunk 2077 Tarot Deck (30 Cards) I The Fool The Fool is everyone - including you and me. Each step he takes on his journey feels like stepping into a brave new world. Ultimately, the journey will change him. But as the card shows, he's a trustworthy lad whose tireless hope drives him toward his goal. II The Magician The Magician is the card of self-confidence and adapting to situations through intellect and sheer will. The Magician is a schemer who always has one last trick up his sleeve, who despite everything manages to stay afloat and remain in control of his own destiny. III The High Priestess The High Priestess is a card of mystery. It shows how all our secrets hang by a delicate thread and the struggle between common sense and intuition. The High Priestess symbolizes the cold, calm waters as well as the mysteries hidden in their depths. IV The Empress The empress is a card of femininity and motherhood. She is authoritative, knows what she wants, and exhibits refinement and sensuousness. The Empress symbolizes creativity and growth, and instructs us not to dismiss our unconscious impulses, but to trust our intuition. V The Emperor The Emperor represents patriarchal control and is pleased with the authority and power he possesses to shape the future. The Emperor makes the rules and enforces them for the common good. But prestige has its dark sides – the Emperor is dominating and ruthless and will climb over a mountain of bodies to achieve his aim. VI The Hierophant The Hierophant symbolizes a respect for tradition. It represents one who tries to maintain the established order, even though their very character is shaped by it. The Hierophant places his faith in institutions – for the alternative is pure chaos. Only by placing his faith in order can he draw strength. VII The Lovers The Lovers is the card of dichotomies. It points to the contradictions that clash within each of us and of the challenge of striking a balance between extremes. The Lovers is also the card of dilemmas, like The Fool who stands at the crossroads, unable to make his choice. VIII The Chariot The Chariot is always charging ahead despite being pulled by its steeds in opposite directions. The rider who steers it constantly reins in the light and dark sides of the soul with the help of Reason. To ride in The Chariot is to experience highs and lows – ups and downs. IX Strength Strength is the card of resilience. It is associated with determination, bravery and internal struggle. One must have dedication in order to overcome obstacles and reach one's goal. Strength is about physical prowess and spiritual fortitude – the power that must be unleashed to achieve the impossible. X The Hermit The Hermit is a card of self-imposed isolation. It represents an escape from the hustle and bustle of the city, a turning away from constant newness toward Ye Olde ways. For the hermit, solitude is the road to the sublime – a road that is taken not with great bounds and strides, but with small, concentrated steps. XI Wheel of Fortune The Wheel of Fortune means that change is coming. One's destiny could turn out for the better or the worse, yet it also bears the promise of new possibilities. The Wheel reminds us that nobody remains at the top forever, but also that not every situation is hopeless. XII Justice Justice is the card of conflict resolution. It proclaims the need for order, to see through lies and deceit, and a return to the natural state of affairs. Justice implies a just sentence, but also due process. XIII The Hanged Man The Hanged Man is the card of sacrifice. It says that a price must be paid in order to achieve enlightenment. The Hanged Man's forsakenness opens the path for rebirth into a new life, though this path is wrought with pain suspended in time and ultimately ends in death. XIV Death Death is the card of becoming. It signifies an imminent and difficult transition – the conclusion of one phase of life and the beginning of another. Inevitably, something gets lost during the transformation, but something else will rise and take its place. XV Temperance Temperance is the card of balance. It may symbolize self-restraint or the gradual shift toward a more mature state of equilibrium. Temperance is associated with being in control of oneself as well as the desire to achieve inner peace. XVI The Devil The Devil is addiction, craving and passion. He brings fame and fortune, but at the price of losing oneself to a world of material distractions. The Devil lures unsuspecting souls into traps, but always grants them a choice. One can try their luck and take him up on his offer, but one should always know when to call quits. XVII The Tower The Tower is an omen of radical change, chaos and destruction. The lightning striking The Tower signifies a return to the old order that lies buried under the ruins, and a new order that will rise from it. It is a symbol of tragedy, apocalypse, and self-destruction. XVIII The Star The Star is the card of hope. In the darkest of nights there is a light that shines the path to home. The Star is inspiration, motivation and gives us strength to move forward. XIX The Moon The Moon reminds us that reality is not always what it seems at first glance. In a world of appearances and illusions, the best course is often charted by one's own intuition. The Moon is also the card of dreams, desires, and of course, sleep – Death's nightly ritual. XX The Sun The Sun symbolizes success. It is a card of freedom, renewal and a bright future that lies ahead. The Sun also represents truth, for its light will always pull back the curtain of shadow that hides the world's secrets. It is also represents greatness and splendor. XXI Judgement Judgement is the card of renewal. The angel blowing into the horn heralds resurrection and liberation. This card foretells an important change that will result in healing or fulfillment. It is also a symbol of self-worth. XXII The World The World lies at the end of The Fool's long and winding journey. Wiser and more world-weary than he started out, the Fool faces a moment of reckoning. Some of us accept where our journey has led us to, while others embark on a new challenge. One thing in this World is certain – you can't have it all. XXIII King of Cups A King of Cups is a creative and emotionally-driven person. They are strong individuals, who realize the importance of feelings. Intuition helps them navigate their lives. When fate is in their favor, compassion guides their actions. When they're at odds with fate, it'd be unwise to trust them. XXIV King of Pentacles The King of Pentacles is imperious. They represent entreprise, pragmatism, but also attachement. From such a person one can expect coldness or attachment to material possessions; they are likely to turn your world upside down sooner or later. XXV King of Wands The master of planning and unorthodox ideas. An individual who brings people together and radiates inspiration to those they consider friends. However, their enemies will soon find they are an impulsive, devastating force of nature, capable of breaking oaths and crossing any line, just to see their goals achieved. XXVI King of Swords Two things matter above all else for a King of Swords: logic and conviction. They represent a person with a precise moral compass, who is known for their caring demeanor. However, enemies beware - the King of Swords is a ruthless opponent, who will not rest until you are punished and left to be torn apart by hounds of fate. XXVII Blade Runner The Blade Runner is the card of scrutiny and moral ambiguity. It represents the relentless pursuit of truth in a world where reality blurs with illusion. The Blade Runner challenges us to confront uncomfortable questions about identity, humanity, and the cost of justice. XXVIII Sailing to Byzantium This card symbolizes the quest for transcendence and the yearning for a legacy beyond the corporeal. It speaks to the soul's desire to escape the confines of the physical world and seek immortality through art, memory, and meaning. Sailing to Byzantium urges reflection on what endures beyond the fleeting moments of life. XXIX Misty, The Oracle The Oracle is a card of intuition and foresight. It embodies the quiet strength of those who perceive the unseen and understand the unspoken. The Oracle guides with subtle wisdom, offering insights that illuminate the path ahead, even when the way is shrouded in uncertainty. XXX Back Extracted from game itself.
There’s a quiet strength in feeling different. Many people grow up in environments where conformity is praised, where society tries to write the script of your life before you even start living it. They tell you what to celebrate, how to dress, what to say, and even how to think. But here’s the truth: you don’t have to play by those rules. Feeling different? Keep it that way. That difference is not a weakness, it’s your power. Language is one of the clearest examples. Maybe you naturally slip English words into your conversations. Maybe you feel like “freedom,” “chill,” or “vibe” carry something your local language just can’t express with the same energy. That’s not a mistake. That’s not disrespect. It’s simply you being authentic to the way you think and feel. If your audience doesn’t understand, that’s on them, not you. Language evolves, cultures mix, and sometimes a borrowed word says what an entire sentence cannot. Celebrating international holidays is another way of claiming your freedom. Why not put up a Christmas tree even if it’s not part of your official tradition? Why not throw a Halloween party, eat pancakes on Shrove Tuesday, or mark Thanksgiving with friends just for the joy of gratitude? These holidays may come from different places, but joy has no borders. It’s your right to celebrate life however you want. You’re not betraying your roots, you’re expanding them, adding more colors to your palette. And yes, people will talk. Society always talks. Some will call you “too modern,” others will whisper that you’re forgetting your culture. But culture isn’t a prison. It’s a foundation. You can stand on it, respect it, and still look beyond the walls it tries to build around you. You are not obligated to fit in. You are obligated to live your life in a way that feels real to you. So keep being different. Keep mixing languages, keep celebrating what excites you, keep standing apart if that’s where your truth lies. Life is too short to let others dictate the soundtrack of your existence. In the end, it’s your life, it’s your choice.
What You Need to Do vs. What You're Doing
You want to blog What you need to do: Open an account on bear.dev or WordPress, or install it on your server and start writing. What you're doing: Designing a new theme for the 100th time or building a new CMS for others. You want to organize your life What you need to do: Use a to-do app, make a list, schedule your tasks, and actually do them. What you're doing: Creating your own to-do app instead of using one. You want to play What you need to do: Buy a PlayStation, turn it on, and play. What you're doing: Thinking about opening a video game club. You want to get fit What you need to do: Put on your shoes, go outside, and start walking or running. What you're doing: Spending weeks researching the best workout plan, shoes, and supplements. You want to learn a language What you need to do: Open Duolingo or a textbook and practice 15 minutes every day. What you're doing: Reading endless blog posts about “the best method” to learn languages. You want to start a business What you need to do: Pick one small idea, launch it, and learn by doing. What you're doing: Writing a 200-page business plan and waiting for “the perfect moment.” Seeing the pattern? Got the problem? Stop overthinking, stop postponing, and start living.