Adding unicode support to write

In Unix, there's a write command that lets you send messages to other users logged in to the system. In Debian, a version of this command is included in the bsdmainutils package. I'm lucky enough to know people that like to communicate with me this way.

It's a known bug that write only supports the basic characters that are part of ascii. So you can't use all the characters of different languages like Danish or Spanish.

The write utility does not recognize multibyte characters.

—from write's man page

You can fix this by changing the character buffer to use a multi-byte type instead of the old-school 8-bit char. Details are here.

There are still some improvements that I need to make with this patch. wchar_t isn't ideal for UTF-8 data, though it works. Apparently it's better (i.e. possibly more portable in the long run) to use char16_t or char32_t, including uchar.h instead of wchar.h. Also, I need to investigate some interactions between this patch and how it's displayed over ssh when you're connecting through Mac OS X.

Thoughts on Som thing Crazy that Happ n d R c ntly

Throughout th months b for th l ction, I f lt that Trump didn't d s rv to b paid att ntion to, so I didn't list n to him at all. But of cours I couldn't h lp but h ar v ry singl last tidbit.

Now that th situation has chang d, v ryon n ds to r aliz that h 's not just anoth r r publican whos polici s you probably don't agr with. H 's not lik , say, G org Bush. Now v ryon must mak it compl t ly cl ar, as oft n as possibl , how adamantly you oppos Trump's right-wing populism and his b li f in racial and social hi rarchy. You n d to n v r "g t us d to" his id as or p rsonality, n v r finally acc pt th m.

You n d to prot st as oft n as possibl , or do anything you can think of, sp cially if you don't think of yours lf as a "prot st r" or "activist". What v r vi ws you hav , how v r you think of yours lf, always oppos Trump - v n if you happ n d to accid ntally vot for him.

And if h mak s it to th inauguration, if h v n mak s it 4 y ars, your stanc n ds to r main th sam and activ ly against v ry m ssag h s nds containing his insidious whit supr macism.

Th probl m is s rious, and now w n d to tak it s riously!

a crazy bug

Y st rday I was working on a bug that was kind of int r sting. Sinc my fri nd Tony was talking about writing an articl for his blog, I thought I would writ down what I'v b n doing h r .

I was told about a bug in Libr JS – you couldn't load r wh n using th Libr JS add-on with GNU Ic Cat and Trisqu l. Wow.... I n d to fix this imm diat ly. :roll y s:

Th symptom of th probl m was that th brows r froz . ach voting arrow on r ddit has an attribut that looks lik this: onclick="click_thing(this)" ach of th s scripts n ds to b proc ss d by Libr JS. Th first tim it's proc ss d, it comput s a hash of th script so th r sults can b sav d for subs qu nt id ntical scripts.

Th n I saw som thing suspicious in th d bug log. I'v link d to it h r b caus th r 's a lot of t xt. Imm diat ly at th top it says "too much r cursion". If you scroll all th way to th right, you can s th call stack r p ating its lf many tim s, confirming th runtim 's complaint.

I thought, "Gr at.. I'v found th probl m. I'v s n this b for it must b an infinit loop." I sp nt a f w hours trying to fit th r cursiv loop into my h ad – what is it actually doing, and what sp cial if stat m nt should I nt r to just br ak out of it, in this sp cific cas ? All th s strang onclick scripts must b trigg ring an unhandl d cas in Libr JS.

But r ddit was loading fin in Mac OS. That was an important point that I had forgott n about. Mayb "Too much r cursion" just m ant too much r cursion for this sp cific syst m, and th loop wasn't actually infinit . Aft r r ading mor about this JavaScript rror, I found that using s tTim out can r s t th call stack. I tri d this out, and it work d.

And now you can r ad r wh n you'r using Libr JS with GNU Ic Cat on Trisqu l Linux.

hacking cooltoad

Th r ar two influ ntial variabl s in th inbox. Th y ar : $o = 'fold r:inbox'; // (op n) and $p = 'fold rs'; // (pag )

L t's try just passing in $p. sktop?p=fold rs Cool!

Now l t's try changing on . sktop?o=lol r turns a blank pag with th t xt: Unknown command: Op