Skip to Content Skip to Navigation
Profile image for Álex Córcoles (coding)

Álex Córcoles (coding)

@coder@alex.femto.pub

This is the profile where I talk about coding and technology in English.

193 Posts Posts & Replies 48 Following 16 Followers Search
Pinned post
Edited 127d ago

But today looking at a *private* service I'm running, correlating with my experiences running non-professional publicly exposed services and...

I wouldn't feel comfortable at all running the same kind of websites I was working on in 2008-2011. At the very least, I would have to rely on Cloudflare or others that I do not like for "protection".

Likely it's just that I've become disconnected from running public websites, but I think the world is changed in a sad way :(

In 2008-2011 I was working on some public websites- some of them were even "nation-wide" "important". And I felt confident running them my moderate systems administration skills, on simple platforms, with reasonable hardware.

(For two specific projects with important customers, we did pick overpriced and overprovisioned hardware and hosting from a "serious" company, but outside that, it wasn't very different from what you would do for personal stuff.)

I had an interesting projects list as an org-mode file. The hierarchy was organic and chaotic. This bothered me so I decided to overcomplicate it:

alex.corcoles.net/notes/intere

It's non-deterministic, so even unrelated changes to the underlying Git repository shuffles things around, but I find the result much more pleasant than the previous version.

Vikings are a type of pirate.

Options: (choose one)

I have written down some notes about software development here:

alex.corcoles.net/notes/tech/o

(My intention is to extend and update this as I need to... right now it just collects a few things that are on my mind.)

I was copied on an email today. Someone was requesting a count from someone else, wanting to know who in a department had done a certain thing. This lovely sentence was spoken by my screen reader:

"Can you get a quick woman raising hand man raising hand medium skin tone from your department members?"

I really hate emoji.

Recently I came in contact with Next.js. I think I already tooted that I thought it was the first framework I'd seen that delivered the old promise of good integration between the code running on the browser and the code serving your application.

But these days it surprises me more it's absolute lack of support for WebSockets!

So maybe the real-time web application problem continues to be unsolved satisfactorily for me.

Around 2000, when first started to become popular, it brought me more and more email. At some point it became hard to answer it all, and my inbox started to grow.

Young and optimistic, I came up with a plan to fix this. I drew a line in my inbox (by sending myself an email with subject "---------"), and told myself that I'd keep the region below the line clear, and every few days, deal with a few messages from above the line, until eventually the line was at the top again.

Of course, it didn't work at all. Soon enough there was a huge backlog even below the line, and the stuff above the line was all still there. The line became part of the problem, not the solution.

It took a historian friend of mine to point out the fallacy. To answer more mail, you must spend more time answering mail. No amount of classifying, rearranging, or reorganising it makes there be less of it. You must either answer the mail or decide not to. (And once there's too much of it, only one of *those* is possible.)

This is a post about management methods that respond to any problem by spending more rather than less time moving issues around the bug tracker or kanban board or what have you.

One thing I've learned in 25 years of software maintenance is that every time you commit crap that appears to work without being sure why it works, that's going to come back to waste a lot of your time later.

@datarama (and sidenote: I think the definition of art must include some kind of intentionality; otherwise all bad software is art, because it does evoke quite strong feelings in its users: anger, frustration. Whereas good software sometimes does not cause delight because it just works.)

@datarama ah! I was going to disagree, but I agree with your second toot.

One important thing is that nothing is "lesser" because it's not art. Just like HTML/CSS rarely are "programming" (but they can be), but that doesn't make them any less important, complex, or valuable.

We like to shoehorn things into categories we think are important, when those things are important in their own right.

I wish command line tools would make an output mode optimized for screen readers. I just did a no-cache build of four containers with compose. Instead of hearing random numbers constantly shouted at me, I'd love to have Docker make NVDA say the current step when something significant changes. "Building php_dev. Health check for mysql_dev. Check passed. Building web_dev." No fancy progress bars, no always-updating percentages, no detailed output. Direct that stuff to a file if you want it.

Nice, searching on discover.holos.social/ reveals two toots about this. Perhaps Fediverse search can be useful.

Yesterday afternoon I started having some trouble with Ubuntu mirrors at work. 5 hours ago Canonical acknowledged the issue on their status page:

status.canonical.com/

If you are having problems with stuff such as building containers (failures and extreme slowness), this might be it.

This (type `for(;;);` into the Javascript console, triggering Firefox's "script in infinite loop" detection, causing it to offer to halt all Javascript on the page) worked perfectly

and I fucking hate that it not only works but appears to be the best way to do this

gts.woodland.cafe/@untitaker/s

Some networking knowledge I figured out a good while back that should be standard, but I think it's poorly understood and worth sharing:

A route *without* a gateway address means you want the system to do an ARP (v4) or NDP (v6) lookup to find the MAC address of the *destination* and send/forward the packet to that MAC address.

A route *with* a gateway address means you want the system to do an ARP (v4) or NDP (v6) lookup to find the MAC address of the *gateway* and send/forward the packet to that MAC address.

(The other being the "Sharp Tools" chapter explaining that programmers need a computer with one megabyte of RAM, 100 megabytes of disk, and a terminal much faster than 15 characters per second.)

(Wait, sometimes we still suffer from less than 15 characters per second...)

> Brooks claims that accidental complexity has decreased substantially, and today's programmers spend most of their time addressing essential complexity.

(The Wikipedia article about No Silver Bullet.)

OK, I found the other part of The Mythical Man-Month that has not aged well.

I just learned there's a tab-size CSS property. So I assume you can style code blocks so that they have different indentation under different screen sizes, or that users could adjust tab size according to their preferences.

(And maybe code blocks using tabs for indentation are more accessible than code blocks using spaces for indentation, but I have my doubts.)

I guess I'm a person of extremes. I am a huge proponent of batteries-included web frameworks, but I also think that CGI-style raw web programming is the best option in a surprising amount of scenarios!

(And PHP is not the only option. CGI and similar wrappers like WSGI are a bit annoying, but at that scale, you can get by with a little boilerplate and no dependencies.)

I'm trying to reduce my reliance on GitHub. So I'm trying to move some repos to cgit. This means losing browser-based editing for small contributions such as typo fixing.

github.com/alexpdp7/quick-patc is a prototype to explore alternatives.

It's a 100-line WSGI Python webapp with no dependencies. I think I can do something functional in about 200 lines, including a CGI wrapper so that it can be deployed to web servers without Python/WSGI support.

BTW, I recently discovered that writing Git hooks for doing stuff on push is easier than I expected. For example, now I do git push to run my static site generator with this:

ñix.es/cgit/alex/alexpdp7.git/

So 9 days ago, GitHub (I know) warned me of a vulnerability in Black (a Python code formatter). This does not matter, but I like to keep dependencies up to date anyway.

Today I thought... let's switch to... and then I realized.

If you know, you know. This is not ideal.

`git add -u` will add all modified files that are already staged. If you merge, then have to fix a bunch of conflicts, you don't have to add each file as you fix it. Just fix everything and use `git add -u`. I've been using git for over 7 years, and I just now learned this. I will now try to not think of all the time I spent adding files one by one after a conflicted merge.