Natural Language in Small Wide World


Sept 1, 2016

Yesterday I published a small piece of software to Small Wide World's git to very little fanfare. It was a generalization of a bad piece of software I wrote the day before. It uses NLTK to perform a simple task: parse a simple sentence which follows the form "subject verb object" with optional additional information starting with "because". Examples of this grammar include:

GnuPG is software
IRC is a protocol
software implements a protocol
Javantea is human
AI3 is software
Javantea wrote AI3
Javantea writes software
Javantea writes English
Javantea reads German
Javantea reads Japanese
Javantea reads Portuguese
Javantea reads Spanish

nlp1.py creates this graph of the relationships:

Read more »

Learning to Read and Write Kanji


Feb 16, 2016

learn_kanji-0.2.tar.xz [sig]

For many years I have been learning Japanese as a hobby. I have spent years watching subtitled anime to get my comprehension higher. Anime's often slow and deliberate speech patterns make it fairly easy to grab words. But the pace at which anime goes if you aren't careful you can forget everything you hear. Of course, you'll be more prepared for conversing and remembering if you've heard something 1000 times rather than once, but that doesn't translate into instant comprehension.

Read more »

Quick Gentoo help

If you ever accidentally delete /usr/bin/emerge (happened to me when I ran emerge -aC dev-lang/python-exec), don't panic. That file is just a wrapper for /usr/lib/python-exec/python2.7/emerge. So you can fix your system by temporarily using /usr/lib/python-exec/python2.7/emerge.

Yes, it's that simple. This is also a useful way to execute pylint and pyflakes on python3 files while still having your system's default python be python2. Simply run /usr/lib/python-exec/python3.3/pyflakes (substituting whichever version of python you use instead of 3.3) and you're set. Yes, it was actually designed to work that way.

In case you want more to read, read this. In case you're more interested in playing than reading, click here.

Read more »

Automating Let's Encrypt No Sudo for 9 Domains

Let's Encrypt Nosudo Scripts 0.1 [sig]

Let's Encrypt is a free SSL certificate authority that is designed to let users encrypt their website correctly. This has let me save around $81 creating certificates for all my domains (9 domains with Let's Encrypt, one without). Let's Encrypt was designed for the overly-trusting user who is willing to run code they download off github as root. Experience and paranoia teaches us not to run untrusted code as root or even as a user that isn't fully sandboxed. How do we deal with this? This technical document is for the admin who can read code and find vulnerabilities in Bash, Python, and protocols, not for the faint of heart.

Let's Encrypt Nosudo was designed for that. It takes a few hours to sign 10 certificates, so maybe 30 minutes per cert. But Let's Encrypt only issues certs with duration of 3 months which means that every 2-3 months you have to spend 30 minutes per cert. If you have 9 certs, that's a huge time investment. So like me you want to automate Let's Encrypt so that you don't have to spend 5 hours every 2-3 months. This is what these scripts are for.

Read more »

« previous next »