35 stories

For a while, all ATC message routing in Germany was done through Emacs (2021)

1 Share

Article URL: https://teddit.net/r/emacs/comments/lly7po/do_you_use_emacs_lisp_as_a_general_purpose/gnvzisy/#c

Comments URL: https://news.ycombinator.com/item?id=31253981

Points: 1

# Comments: 0

Read the whole story
18 days ago
Share this story

Brave Clojure Jobs Blog -

1 Share

Learning any programming language requires a significant investment in time and resources. Of all the languages I’ve gained proficiency in, Clojure has by far yielded the largest benefits for my life. Some of these benefits have been surprising and have only become evident with time. I want to share these less-obvious benefits because they’ve had such a positive impact on me, and I want other devs to benefit, too.

Clojure’s stability can improve your lifestyle

Clojure’s core team is committed to the language’s stability over time so that code you wrote years ago will almost always work with the latest version of Clojure.

By unfortunate contrast, some other languages introduce significant, breaking changes like a friend declaring that they’re DONE with carbs and are going PALEO thank you very much. This imposes a cost every time you sit down to do some work. Say you want to spend some time on a side project that uses the language blub v1.0 but you want to use a library built for blub v1.1. You are in for a night of pain and horror.

Let’s play this scenario out over time. Say you only have 30 minutes to work on a side project. You run into a “language overhead” issue like the one above. Solving this kind of problem is chaotic, meaning it’s hard to pick up where you left off between programming sessions. If you don’t solve it the first time, you’ll retread a lot of ground the next session. Heaven help you if Life Happens and you can’t pick up your project for a couple weeks. It’s hard to make actual progress.

What does this have to do with your lifestyle? I’ll use this job board as an example. I recently re-built and re-launched this job board, and since then revenue has quintupled (!!!). This has provided more income, which obviously helps on the financial end. But what’s interesting is that Clojure’s stability has let me consistently make real progress on my passion projects without neglecting other parts of my life: making art, spending time with loved ones, etc. I can work less for better results because I’m not bogged down by the overhead costs imposed by the language.

I get to build this business at a sustainable pace without sacrificing my personal life because Clojure lets me focus on actually building instead of traversing the seven circles of language hell. I built some parts of the site eight years ago. The fact that I can figure something out and it’s still useful to me nearly a decade later is the definition of a good investment.

There’s another way that Clojure’s stability improves your lifestyle: it reduces your stress. The quality of your life is the quality of your day-to-day experience, and if a significant portion of that involves meaningless struggle with your programming language, well it’s hard to not end up feeling kinda lousy. And in this economy??

I realize I’m probably giving off strong “wow this guy is straight up mainlining the kool-aid” vibes here. Clojure, ultimately, is just a tool, right? Yes. And if we’re going to talk about building a satisfying and rewarding life, we need to talk about tools, and Clojure is an exceedingly good one.

Clojure is a great portal to other programming domains

Clojure has provided a gateway for me to learn more programming techniques and concepts, including:

There are other domains I want to explore, and great Clojure libraries for them:

You might look at this list and object that plenty of other languages offer libraries that let you explore other programming domains. In fact, some of the Clojure libraries I linked above are wrappers for Java libraries. So what makes Clojure special here?

Clojure has three properties that make it a superior language for learning programming concepts:

  1. Its REPL provides a tighter feedback looper than other languages, making it easier to perform mini experiments and learn from them. This is a form of self-testing, which studies show is one of the most effective tools for learning. You ask yourself a question, answer it, and compare it to the real answer, confirming (or not) your mental model of a system. The REPL allows you to do this almost at the speed of thought.
  2. Its focus on a small core set of data types and abstractions reduces the amount of non-essential learning you have to work through. In other languages, libraries introduce their own bespoke types with their own bespoke APIs, and the result is that you continually have to revisit the questions of “How do I represent data?” and “How do I transform it?”

    By contrast, 90% of the time the Clojure libraries you use represent compound data with vectors (which are like arrays), maps (like dictionaries), and sets. Even when they don’t, the data types they introduce likely participate in Clojure’s core abstractions, allowing you to use Clojure’s core functions. You don’t have to learn a new API for dealing with something like a LogicProgrammingSet or DiscreteEventMap.

  3. Its minimal syntax and lack of boilerplate. Less boilerplate means less ways to mess up, and less time writing boilerplate means more time experimenting and learning.

More than other languages, Clojure lets you focus on what’s essential about the domain or concept you’re trying to learn.

Your experience is portable across environments

Clojure was designed from the beginning to be platform-agnostic, and the result is that is that it’s made its way beyond the JVM to browser programming via ClojureScript, and to shell scripting via babashka. Being able to transfer your programming language experience from one environment to another like this means that you get to spend more time solving real problems.

It is hard to overstate how powerful this is. There are two complementary ways to think about this:

  1. You’re not limiting yourself to building only certain kinds of applications
  2. You’re gaining immense leverage

Generally, when you spend time gaining deep expertise in a programming language you’re necessarily limiting yourself to only building certain kinds of applications. Most languages are intimately tied to the kind of environment they target; when you spend time learning Go, you’re limiting yourself to server-side apps. When you learn Swift, you’re limiting yourself to iOS applications. If you want to start building a different kind of application, you have to learn a new language, with its attendant build tools and architecture ecosystem and paradigm and quirks. On top of that, you have to learn about the environment itself: its resources, its interaction modes, etc.

When you invest the time to learn Clojure, you gain leverage instead of limitations. Learning any language involves more than just the basics of syntax and build tools. It includes deeper topics like how to structure an application for maintenance and evolution. Taking the time to develop Clojure expertise will pay dividends when you switch from backend to frontend development.

I expect this situation will only improve over time, especially thanks to the unstoppable force that is Michiel Borkent, aka borkdude. I am very excited for what the future holds!

These Clojure Companies Hire People Without Clojure Experience

Are you ready to invest in Clojure? Then these companies are ready to invest in you. These businesses are successfully leveraging Clojure’s power, and they hire people without Clojure experience:

  • Nubank, the largest financial services company in Latin America and one of the biggest IPOs of 2021, is the world’s biggest user of Clojure and Datomic, with over 1000 Clojure developers.
  • Reify Health, a unicorn startup helping pharma companies and research sites enroll patients in clinical trials faster than ever before. Clinical research remains a significant bottleneck on drug development. Much of this is due to the slow and unpredictable nature of patient enrolment. Many potential therapies get scrapped because they failed to enroll enough patients in their trials. Reify Health is tackling this problem with a platform built on Clojure.
  • Pitch, the modern presentation software we always wished we had. Built for teams that care about where their time and energy goes. They’re around 80 Clojure engineers now, and are having a great time learning how to scale a Clojure codebase and team. They’ve got a good track record of hiring non-Clojurists and making them fluent in parens.
  • Metabase, the easiest way for people to get insights from their data, from tiny startups who get up and running quickly to major corporations with tens of thousands of users. Their codebase is open-source, and it’s one of the largest open-source Clojure codebases on the planet!
  • Logseq, a startup that exists to increase the knowledge output of humanity. They’re starting with building a personal knowledge assistant.
  • Mobot, a startup building developer tooling to help automate the manual side of mobile app QA (all the onerous work that remains after you’ve put in the time to leverage emulators and simulators). They’re using robots we fabricate to execute tests on a corpus of test devices. Their web apps and internal mobile app use ClojureScript.
  • Crossbeam, an escrow service for data with more than 5000 companies and more than $100M of venture capital. Their platform allows companies to find overlapping customers and prospects with their partners while keeping the rest of their data private and secure.
  • JUXT, a consultancy using Clojure to build systems and keep complexity under control. They’re hiring experienced Clojure practitioners as well as those that are keen to learn. JUXT also created XTDB and many well-known Clojure libraries.
  • BroadPeak Partners, a company that helps less technical users manage data streams and integrations without having to rely on developers. They’re focused on enterprises with increasing amounts of data to manage, the need to move fast, and deliver sustainable solutions.
  • Riverford Organic Farmers, an employee-owned company that delivers organic food to around 90,000 homes and businesses across the UK!
  • Shortcut.com, an intuitive and enjoyable project management platform, has been using Clojure for its backend since day one.
  • Dewise, a Cloud-first, polyglot, product and solutions development company, using Clojure for tricky data manipulation, tricky logic programming and dynamic business logic backends.
Read the whole story
59 days ago
Share this story

Write plain text files

1 Comment

I write almost everything important in my life: thoughts, plans, notes, diaries, correspondence, code, articles, and entire books.

They are my extended memory — my noted self — my organized thoughts. I refer to them often. I search them, update them, and learn from them. I convert them into HTML to make websites, or LaTeX to make books.

My written words are my most precious asset. They are also a history of my life. That’s why I only use plain text files. They are the most reliable, flexible, and long-lasting option. Here’s why.


I’ve brought my text files with me since 1990, from Mac to Windows to Linux to BSD, from PCs to laptops to tablets to Android to iOS to a tiny device the size of my thumb, and back again.

Every device, including ones long gone, and ones not invented yet, can read and edit plain text. Whether future virtual reality, or a chip you can implant in your earlobe, plain text will be there. Will Microsoft Word? Evernote? Notion? Maybe. Maybe not.

But plain text? Always. Everywhere.


Every few years a new company says you should use their special format. You have to pay them a monthly fee to use it — or keep all of your documents in their care. They offer some convenience or features, but at the cost of flexibility, portability, and independence.

When you store your writing in one company’s unique format, then you need that program to access it. Then the economy takes a turn, they go out of business, and your work is trapped in an unusable format.

You will outlive these companies. Your writing should outlive you. Depending on companies is not an option.

Plain text is un-commercial. It removes you from the world of subscriptions and hype. There will always be plenty of free, non-commercial software in the public domain for reading and editing text files.


There are places and times when you can’t get online. Don’t depend on any tool that needs an internet connection.

There are great benefits to being intentionally offline and unreachable, to focus. It’s a super productivity boost. You need to be able to write, and have access to all your writing, during these times.


If you rely on Word, Evernote or Notion, for example, then you can’t work unless you have Word, Evernote, or Notion. You are helpless without them. You are dependent.

People tell me about more tools I could use in addition to my text files. But I don’t need or want anything else. Plain text files and a basic text editor are enough. This is everything you need for great thinking and writing. (A paper notebook and pencil are enough, too.)

If you only use plain text, you can work on any device, forever. The less you depend on, the better. Peace and focus come when you stop looking for more.


Plain text can be converted into anything else.

HTML, Markdown, JSON, LaTeX, and many other standard formats, are just plain text. I’ve written four books and four hundred blog posts in plain text.

You can make your own personal formats in your plain text files. Maybe in each diary entry, the first two lines are like:

date: 2022-02-28
tags: where-to-live, kids, dog, anxious

Then it’s easy to use any little scripting language like Ruby, Python, or JavaScript to grab the date and tags, and use them for categorizing, sorting, renaming, archiving, or exporting.

Or if you don’t want to do it yourself, then it’s easy to find someone who can. Anyone who’s been programming for more than a week should be able to do it easily.


Use directories — also known as folders. These are also good for keeping your text together with other files like images and audio.



Need visual mind-mapping with circles and lines? Maybe you do. But maybe you don’t. Maybe it’s just another distraction, focusing on the tools instead of your thinking.

I love that plain text files have no formatting to tinker with. A tab key, SHIFT KEY, and vertical line breaks can go a long way, keeping you writing instead of formatting.

If you really need graphics, do your drawing using something else. Digital drawing into SVG files. Paper drawing, scanned into JPGs.

Formats that aren’t owned by any company. Formats that will outlast you.

Keep your graphics files alongside your text files. But keep your text as plain text.


Reliable, flexible, portable, independent, and long-lasting. Plain text files will be readable by future generations, hundreds of years from now.

I especially enjoy the tranquility of their offline, non-commercial nature. They’re quiet. They’re focused. (As I aim to be.)

screen shot of the text of this post
Read the whole story
70 days ago
And you can just copy paste it anywhere without any surprise
Share this story

Clojure - First Impressions

1 Share
Read the whole story
70 days ago
Share this story

Yi Tang: Wireless Backup Solution Using Raspberry Pi for MacOS

1 Share

If you need automated backups for Time Machine and have a Raspberry Pi, You will find this post useful.


After 3 months using my brand new MacBook Pro 14 M1 Pro, one of the USB-C port stopped working. I will have to send it back, not sure what Apple will do with it but I can't bear the risk of losing data. So I need a backup.

In fact, I need to backup regularly for situation like this so that's why I worked on it.

Wireless Backup Solution

The easiest solution is to get a USB-C portable SSD, plug it into my laptop and open Time Machine to start back up, do it once a week and call it a day.

But I'm reluctant to add more devices to my already cluttered home lab. There are a few hard drives in the drawers, it would be good to utilise them.

So I decided to set up a Time Machine backup solution using on my Raspberry Pi 4. The benefits are

  1. no additional costs, save me about £50-£100
  2. no need to buy new stuff, so fewer things to care of
  3. wireless backup to keep my desk clean

Later I realised the benefits of having a wireless backup is overlooked. It can backup anytime and anywhere in my house. Also, because of convenience, I can have more granular backups - instead of weekly backup, I have hourly backup without getting the cables and hard drives. I do less but get more value out of it.

The only concern I had was the speed. It turns out with SAMBA 3 protocol, I can get 55 MB/s write speed and 40 MB/s read speed from laptop to Raspberry Pi. So in theory, it would take around 2.5 hours to backup my 500 GB laptop. It might be a lot but only for the first backup, the subsequent incremental backup would be much simpler and faster, for example, as of now, the Time Machine completed a new backup within 3 minutes in the background without my notice.

A portal USB-C SSD can finish the backup within minutes but it's an overkill for an ordinary user like me and it's inconvenient.

So I'm satisfied with the current solution.

Set Up Raspberry Pi

I read a few guides on setting up Raspberry Pi for Time Machine, and I found this guide most accurate and useful.

One thing I noticed is the AFP (Apple File Protocol) is deprecated, so make sure you use SAMBA as the protocol.

Additionally, I followed this stack overflow answer to auto-mount the SAMBA server so that every time I reboot my laptop, the Time Machine will be ready to back up.

Time Machine Backup frequency

By default, Time Machine does hourly backup.

If you feel hourly backup is not necessary, you can change it by updating this file


for example, to change the frequency from hourly to daily backup, change the interval value from 3600 to 43200.

In the end, I left it with the default hourly backup so it does many small backup hourly instead of one big backup daily.

Backup for Backups

After couple of hours of work, I managed to get a wireless backup solution for my laptop so I won't have to worry about data loss. Plus I can time-travel files at hourly intervals.

One concern that occurred to me was the backup sits on my local hard drive. If the hard drive died, I would lose all my backups.

To solve that problem, I will have to go through the rabbit hole of doing backup for backups, or backup to a remote location or cloud, or setup a Raspberry Pi RAID.

At the moment, I'm not very concerned - I have Apple iCloud to back up my photos, videos, notes etc and I use GitHub to host my org-files and code. So having a backup for backups is not necessary for me for now.

Read the whole story
70 days ago
Share this story

Someone should probably start a bright home lighting company


Elevator pitch: Bring enough light to simulate daylight into your home and office.

This idea has been shared in Less Wrong circles for a couple years. Yudkowsky wrote Inadequate Equilibria in 2017 where he and his wife invented the idea, and Raemon wrote a playbook in 2018 for how to do it yourself. Now I and at least two other friends are trying to build something similar, and I suspect there’s a bigger-than-it-looks market opportunity here because it’s one of those things that a lot of people would probably want, if they knew it existed and could experience it. And it’s only recently become cheap enough to execute well.

Coelux artificial skylight Coelux makes a high-end artificial skylight which certainly looks awesome, but it costs upwards of $30k and also takes a lot of headroom in the ceiling. Can we do better for cheaper?

Brightness from first principles

First let’s clear up some definitions:

  • Watts is a measure of power consumption, not brightness.

    • “Watt equivalent” brightness is usually listed for LED bulbs, at least for the standard household bulb form factor. You should generally ignore this (instead, just look at the lumens rating), because it is confusing. Normally “watt equivalent” is computed by dividing lumens by 15 or so. (bulb manufacturers like to make LED bulbs that are easy to compare, by having similar brightness to the incandescents they replace, hence “watt equivalent”)
  • Lumens output is a measurement of an individual bulb, but says nothing about the distribution of those rays of light. For that you want to be doing math to estimate lux.

  • “Lux”, or “luminous flux”, is the measurement of how bright light is on a certain surface (such as a wall or your face). Lux is measured in lumens per square meter. Usually, your end goal when designing lighting is to create a certain amount of lux.

    • Direct sunlight shines 100k lux (source for these on Wikipedia)
    • Full daylight (indirect) is more than 10k lux
    • An overcast day or bright TV studio lighting is 1000 lux
    • Indoor office lighting is typically 500
    • Indoor living room at night might be only 50

Side note: This scale surprises me greatly! We usefully make use of vision with four or more orders of magnitude differences in lux within a single day. Our human vision hardware is doing a lot of work to make the world look reasonable within these vast differences of amount of light. Regardless, this post is about getting a lot of lux. I hypothesize that lux is associated with both happiness and productivity, and during the “dark season” when we don’t get as much lux from the sun, I’m looking to get some from artificial lights.

If you put a single 1000-lumen (66-watt-equivalent) omnidirectional bulb in the center of a spherical room of 2m radius (which approximates a 12’ square bedroom), the lux at the radius of the sphere is 50. So now we can get a sense of the scope of the problem. When doctors say you should be getting 10,000 lux for 30 minutes a day, the defaults for home lighting are two orders of magnitude off.

Raemon's housemate's setup

  • Raemon’s bulbs are “100W equivalent” which is ~1500 lumens per bulb. So he’s got 36k lumens. If we treat this as a point source and expect that Raemon’s head is 2m away from the bulbs, then he’s getting 1800 lux, which is twice the “TV studio” lighting and seems pretty respectable. I haven’t accounted for reflected light from the ceiling either, so reality might be better than this, but I doubt it changes the calculation by more than a factor of 2 – but I don’t have a robust way of estimating ambient light, so ideas are welcome.
  • David Chapman’s plan uses three 20k-lumen LED light bars for offroad SUV driving, for a total of 60k lumens. But because the light bars aim the light at a relatively focused point on the floor, David estimates that most of that light is being delivered to a roughly 6-square-meter workspace for a total of 10k lux. The photos he shared of his workspace seem to support this estimate.

Other important factors besides brightness

Color temperature seems important to well-being. Color temperature is measured in kelvins with reference to black-body radiation, but you can think of it as, on the spectrum from “warm white” to “cool white”, what do you prefer? Raemon’s plan uses an even split between 2700K and 5000K bulbs. 2700K is quite yellow-y, 5000 is nearly pure white. In my experimentation I discovered that I liked closer to 5000 in the mornings and closer to 2700 in evenings.

Color temperature scale from 1,000 kelvin (red) to 10,000 kelvin (blue)

And what about light distribution? Large “panels” of bright light would seem the closest to daylight in form-factor. Real windows are brighter near the top, and it is considered dramatic and unnatural to have bright lighting coming from the ground. Also, single bright point sources are painful to look at and can seem harsh. I think there’s a lot of flexibility here, but I think my personal ideal light would be a large, window-sized panel of light mounted on the ceiling or high on the wall.

Also, color accuracy: LEDs are notoriously narrow spectrum by default; manufacturers have to do work to make their LEDs look more like incandescent bulbs in how they light up objects of different colors. Check for a measure called Color Rendering Index, or CRI, in product descriptions. 100 is considered perfect color rendering, and anything less than 80 looks increasingly awful as you go down. The difference between CRI 80 and 90 is definitely noticeable to some people. I haven’t blind tested myself, and definitely might be imagining it, but I feel like there was some kind of noticeable upgrade of the “coziness” or “warmth” in my room when upgrading from CRI 80 to CRI 95 bulbs.

Dimmability? (Are you kidding? We want brightness, not dimness!) Okay, fine, if you insist. Most high-end LED bulbs seem dimmable today, so I hope this is not an onerous requirement.

Last thing I can think of is flicker. I have only seen flicker as a major problem with really low-end bulbs, but I can easily see and be annoyed by 60hz flicker out of the corner of my eye. Cheap Christmas LED light strings have super bad flicker, but it seems like manufacturers of nicer LEDs today have caught on, because I haven’t had any flicker problems with LED bulbs in years.

A realistic-looking fake window covered in curtains Okay, so to summarize: I want an all-in-one “light panel” that produces at least 20000 lumens and can be mounted to a wall or ceiling, with no noticeable flicker, good CRI, and adjustable (perhaps automatically adjusting) color temperature throughout the day.

A redditor made a fake window for their basement (see it to the right) which is quite impressive for under $200. This is definitely along the axis I am imagining.

I haven’t mentioned operating cost. Full-spectrum LEDs seem to output about 75 lumens per watt, so if our panel is 20k lumens then we should expect our panel to draw 266 watts. This seems reasonable to me. If you leave it on 8 hours a day, you’re going to use 25 cents per day in electricity (at $.12 per kWh).

Marketing and Costs

What do you think people will pay for the product? I have already put 6+ hours into researching this idea; I would probably pay at least $400 to get that time back, if the result satisfied all my requirements; I expect to put in quite a bit more time, so I think I could probably be convinced to pay north of $1000 for a really good product. Hard to say what others would pay, but I wouldn’t be surprised if you could build a good product in the $400-1200 range that would be quite popular.

Cree bulb What about costs? Today, Home Depot sells Cree 90-CRI, 815-lumen bulbs on their website for $1.93 per bulb for a cost of $2.37 per 1000 lumens. This is the cheapest I’ve seen high quality bulbs. (The higher lumen bulbs are annoyingly quite a bit more expensive). To get 36k lumens at this price costs under $100 retail. Presumably there are cooling considerations when packing LEDs close together but those seem solvable if you’re doing the “panel” form factor. There are other costs I’m sure, but it seems like the LEDs and driver are likely to dominate most of the costs. These are dimmable but not color temperature adjustable.

Yuji LED strips Yuji LEDs sells 2700K-6500K dimmable LED strips, also with 95+ CRI, at $100 for 6250 lumens (so a cost of $16 per 1000 lumens). This is 7x more expensive per lumen, but knowing that it exists is really helpful.

Kickstarter is the obvious idea for getting this idea out there. I would also recommend starting a subreddit (if it doesn’t exist; I haven’t checked yet) for do-it-yourselfers who want to build or buy really bright lighting systems for their homes, as I think there is probably enough sustained interest in such a topic for it to exist.

You can also try to get press. The idea of “indoor light as bright as daylight” is probably somewhat viral so I’d hope you can get people to write about you. Coelux got a bunch of press a few years ago doing this exact thing, but their product is so expensive that they don’t even list their price on their website, but in articles about Coelux you can see people commenting that they wish they could afford one.

I do think the idea needs to be spread more. Most people don’t know this is possible, so there’s a lot of work you’ll be doing to just explain that such a thing is possible and healthy.


I don’t think there’s any relevant competition out there today. Coelux is super high end. The competition is do-it-yourselfers, but this market is far bigger than the number of people who are excited to do-it-themself.

Yuji High Bay LED light Some have mentioned “high bay” lights, which are designed to be mounted high in warehouses and such, and throw a light cone a long distance to the floor. I am excited to try this and I will probably try it next, but I am not super optimistic about it because I expect it to be quite harsh. This is the one that Yuji sells, but you can find cheaper and presumably lower-quality ones on Amazon.

Grow lights exist for growing plants indoors. But they are optimized for plant health, not human health; I think their CRI is probably not good and I expect them to emit a lot of ultraviolet by default as well.

Part of my motivation for writing this blog post is to source ideas for other things that exist that could fill this niche. So please, email me (lincoln, techhouse dot org) or post a comment on HN or LW if you have solved this problem in a way I haven’t described! I’ll update this post with ideas. If you start this company, also email me and I’ll buy one and try your product and probably write about it :)

Building a Sustainable Business

If you put a bunch of research into designing a really great product and it succeeds but gets effectively copied by low-cost clones, you’ll be sad. I am not sure how to defend this, and I think it is probably the weakest point of this business model; but it is a weakness that many hardware companies share, and a lot of them still carve out a niche. One idea would be to build up your product’s branding and reputation, by explaining why low-cost clones suck in various ways. Another is just to give really good service. Lastly, if you avoid manufacturing things in China, maybe Chinese clone companies won’t copy your technology as quickly.

Read the whole story
70 days ago
Share this story
Next Page of Stories