1. Install packages talk, talkd, inetutils-inetd
  2. Make sure users have set ‘mesg y’
  3. ‘talk user@localhost’. Despite documentation, ‘talk user’ will not work.

So have you ever used a web printer and it was great?

Yeah, me neither. It’s probably possible on windows, but try to add more than one OS to the network and it’s horrible. And actually printing is a major pain in Linux anyway. Theoretically ‘lp’ and the like have no problem with remote printers, but I wanted something I understood. So today I’m going to post my setup I use instead.

I have a computer physically connected to the printer. Let’s call it ‘printserver’. On that server there is a folder, /printme, which is constantly monitored by inode. Any file added to that directory is printed.

Suppose I downloaded cutecats.pdf and I want to print it. Then I run:

scp cutecats.pdf printserver:/printme

And voila, the cute cats get printed.


Here’s the setup for the server:

  1. Get the printer to work. This is the hard step.
  2. Make a directory /printme. Add any missing users, add a new group called ‘print’ and add everyone who needs to print to that, etc.
  3. Set up /printme to be a tmpfs with the sticky bit set. (So we don’t fill up the hard drive)

    /etc/fstab
    tmpfs           /printme        tmpfs   rw,nodev,nosuid,noexec,uid=nobody,gid=print,mode=1770,size=1G  0       0
    
  4. Install incron and add this to the incrontab (of user ‘print’ or ‘sudo’):

    # incrontab -l
    /printme IN_CLOSE_WRITE,IN_MOVED_TO lp $@/$#
    

    Note that this will preserve files after they’re printed, because my server is low-volume enough I don’t need to care.

Action Potato
Action Potato

It’s whooshing because it’s going as fast as a WEAK SPEEDBOAT.

Space Action Potato 2 big

In space no one car hear “whoosh” sounds but action potato is so cool you still can mostly.

vampire bat x16

Made using Piskell

(From Stack Overflow)

  1. 64 bit requirements for pre-made binaries:

    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386
    
  2. Install CUPS

    sudo apt-get update
    sudo apt-get install cups
    
  3. Download DriverGo to http://support-au.canon.com.au/contents/AU/EN/0100459602.html and download driver

    64e2d00f0c8764d4032687d29e88f06727d88825 Linux_CAPT_PrinterDriver_V270_uk_EN.tar.gz
    
  4. Extract and enter extracted folder

    tar xf Linux_CAPT_PrinterDriver_V270_uk_EN.tar.gz
    cd Linux_CAPT_PrinterDriver_V270_uk_EN
    
  5. Install the custom drivers and ccpd

    sudo dpkg -i 64-bit_Driver/Debian/*.deb
    
  6. Add the printer to CUPS and ccpd

    sudo lpadmin -p CANON_LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
    sudo lpadmin -p CANON_LBP6000 -E
    
    sudo ccpdadmin -p CANON_LBP6000 -o /dev/usb/lp0
    
  7. Set the default printer

    sudo lpoptions -d CANON_LBP6000
    
  8. Set ccpd to start on boot

    sudo update-rc.d ccpd defaults
    

Our house has seven people, so today I made some mail holders to put on our doors.

cardboard_near0.5

I basically had some long cardboard boxes, and cut them in half. Then I added new ends and separators in the middle.

I’m not sure if they’ll actually get used. Mail on the floor looks bad, but these aren’t that hot either. If you make some and want to improve the look, you can cover everything in paper or cardstock.

I decided I wanted to show (restricted) data views on the web in table form. Specifically, ‘stylish.db’ is a database provided by a chrome plugin. Here’s an example script, stylish.view, which displays the contents of that. It contains a comment saying which database it’s a query on, together with the query.

-- stylish.db
SELECT style, code, GROUP_CONCAT(section_meta.value) as 'website(s)' FROM
 (SELECT styles.name AS style,
 sections.code AS code,sections.id AS sections_id
 FROM styles INNER JOIN sections ON sections.style_id = styles.id)
LEFT JOIN section_meta
 ON section_meta.section_id = sections_id
GROUP BY style;

The cool part here is that none of this was specific to stylish. I can quickly throw together a .view file for any database and put it on the web.

I add put any databases in cgi-bin/db, and add view.cgi to cgi-bin:

#!/bin/bash
# view.cgi
echo "Content-type: text/html"
echo

QUERY_FILE="${PATH_TRANSLATED}"
DB_NAME=$(head -n1 "${QUERY_FILE}" | sed -e 's/--\s*//')
DB="/home/za3k/cgi-bin/db/${DB_NAME}"

echo "<html><head><title>Query on #{DB_NAME}</title><link rel="stylesheet" type="text/css" href="db.css"></head><body><table id=\"${DB_NAME}\">"
sqlite3 "$DB" -html -header <"${QUERY_FILE}"
echo "</table></body></html>"

I add this to apache’s `.htaccess`:

Action view /cgi-bin/view.cgi
AddHandler view .view

CFAR usually designs their techniques to help people Get Stuff Done. I have a failure mode of Getting The Wrong Stuff Done, so this time through their workshop, I focused on improving techniques to explicitly have steps around pursuing the correct terminal goals (which I’ll here call “terminal goal techniques”).

Original technique: Goal-factor
New terminal goal technique:

  1. Find an instrumental goal toward another instrumental goal.
  2. Embark on that goal provisionally, while also making a plan to acquire more information about whether it’s a good idea and better plans are available.
  3. Periodically re-evaluate to make sure it’s the best goal and you’re gathering information.

Original Technique: Murphy-jitsu

  1. Come up with a plan to achieve your goal.
  2. Use pre-hindsight to ask “How did this go wrong?”.
  3. Fix that. Go to 2 until fixed.

Revised terminal goal technique: Murphy-jitsu with terminal goal check

  1. Come up with a plan.
  2. Use pre-hindsight to ask “How was I disappointed when this went as planned?”
  3. Fix that. Go to 2 until fixed.
  4. Use pre-hindsight to ask “How did this go wrong?”.
  5. Fix that. Go to 2 until fixed.

Another technique: Positive murphyjitsu (“Why didn’t this go even better?”)
Another technique: Aversion murphyjitsu (“Imagine none of the positive listed factors happened. Why was it still possible?”) for cases when I can’t think about how to overcome a aversion directly.

Instrumental failure TAP:

  • Notice executive planning fails  -> Look for lack of motivation or motivation propagation
  • Notice motivation / motivation propogation fails -> Look to see if the goal you’re pursuing is what you want (or exactly what you want)

Technique: Exactboxing

  1. Find a thing to do
  2. Set a 15-minute timer
  3. Do the thing
  4. If you finish early, keep doing the thing anyway. (For example, figure out how to do it better in the future or for the problem to never happen again.
  5. If you don’t finish in time, stop anyway. It’s done. If you don’t know how it’s done, that’s a failure mode–you should have at most one task which takes an unbounded amount of time in your life. (I find this makes my brain accept ‘line of retreat’)

Technique: Do the Obvious Thing

  1. Ask a question, for example how to pursue a goal you want achieved (I recommend a Hamming Question)
  2. Figure out the most obvious solution.
  3. Acknowledge that it is the most obvious solution.
  4. Decide whether or not to do it.
  5. If you don’t want to, contradiction. Debug steps 1,2,3,4 and see where you went wrong until they’re in accord.

Theory on how to avoid lost purposes (mostly from Eliezer): Use Litany of Tarski a lot until you get the magic effect where you don’t start rationalizing to begin with (and generally don’t flinch away from learning about things/mistakes). Then, develop an aversion to lost purposes. The naive failure mode is to avoid noticing lost purposes if you have an aversion. (The simpler technique is Alien in a Body)

Sep, Oct, Nov 2014: Vietnam.

A year ago, I left my job at Streak and moved to Vietnam. I felt like I needed change. Vietnam ended up being wonderful; I was really glad I travelled with my friends Richard and Kathy, which ended up making the experience a hundred times better than it would have been otherwise. The basic environment was: everything is cheap, I newly have endless free time, I was automatically prompted by my friends in the evenings and sometimes during the day to go on small novel adventures involving physical activity, and I had little internet access. This is probably my perfect environment, and I was functioning very well (the vietnamese diet also has small, well-balanced meals which might have helped). For some reason, I was also able to intensely single-task. [I’d like to write more about what Vietnam is like, but this article is quite long enough as it is]

While I was in Vietnam, I made a to-do list. The to-do list had all the burning projects I actually wanted to do. I’ve ended up accomplishing most of them, at a rate of one every week or two, and it’s a decent summary of what I’ve been doing since. Two things made the to-do list a success. First, it had BIG tasks. These are projects like my recent “set up an IRC server” or “start a publishing company”. Because of that, I don’t get bogged down in minutae, and the tasks are always motivating. I find I function better when I try to carefully plan around having any logistics. The second reason, which I realized today, is that I was very careful to only include tasks I was planning to do (subtly different than tasks I wanted to do). The list was descriptive, not normative, although it certainly included some things like doing taxes I wasn’t wild about.

Looking at my journal and it really only starts up again in March, so I’m going to organize this post in terms of the to-do list. There are a couple items that don’t fit:

  • I started dating my wonderful pet, Lealend, while I was in Vietnam. I went to visit them for a month in Puerto Rico where they live. This is very very important to me (the most important thing that happened in the last year), but I don’t usually write about things that personal on my blog so I’m not doing to say much. I’ve been emotionally maturing a lot by being with them.
  • Conventions. I went to DEF CON, which was probably the best single week this year so far. I’m definitely going again next year. I attended a mirix [paper] in the South Bay, which ended up being stressful for transportation-related reasons but really good while I was there. I’m planning on going to Burning Man this year as well.
  • I started contracting, that’s how I’ve been alive for a year. I’ve been doing some work for Zinc and Paul Christiano on a workflowy clone, mostly. I work two hours a day average.
  • I’ve been developing a minecraft modpack [I’ll write more about this when it’s stable], and recently taken an interest in livestreaming.

Now on to the to-do list.

  • Project: Printserver
    Success: Success but obsolete
    Description: I set up a printserver. It’s a little raspberry pi that talks to my printer, because getting printers set up is a pain and I don’t want to do it all the time. It went great, it saved me a ton of hassle to have it automatically print out my daily agenda every morning, and to just be able to transfer documents over with ‘scp’.
    Future plans: Unfortunately, my printer died and we only recently got a new one. I need to set it up with the new server. I could also make printing completely automatic when new files show up with scp (right now it’s manual so I can switch out paper, but my roommates would be happier with scp I think).

  • Project: Set up my phone so dropping/losing it isn’t horrible
    Success: Partial success
    Description: I wanted to root and then automatically backup my phone. I did figure out how to do as much backing up as I can, and it is automatic. Unfortunately it turns out most of the filesystem (including SMS) just isn’t available over Media Transfer Protocol which android uses to display files, so I had to special case the things I desperately needed backed up. I’d prefer the state of the world let me back up everything on the phone, but that’s as much work as I’m willing to do.

  • Project: Get digital copies of all books I own
    Success: Success
    Description: I got digital copies of all books I own via a combination of pirating, buying copies, and getting the books scanned by a service. I did not get rid of the physical books.

  • Project: Switch to private email
    Success: Not done
    Description: I get a little nervous entrusting Google (or any third party) with the ability to read, lose, or add restrictions on what I can do with my email. I want to set up my own email address (za3k@za3k.com) and have it be my main point of contact. My email does work, but I can’t send outgoing email, and I haven’t switched everything over to it for that reason.

  • Project: Download ArXiV
    Success: Done
    Description: As an archive nut, I worry that the ArXiV collection, one of the nicer collections of scientific papers I access regularly, might someday go down or get censored. I downloaded a copy and stashed it away somewhere. Unfortunately ArXiV’s licenses they get papers under doesn’t permit redistribution, so I can’t publicly host it. (This was really cool but I had to decide whether I was going to publicly mention, since it’s a legal gray area)
    Future plans: Someone (not me) should host a torrent. Contact me and I can get you a copy.

  • Project: Pack and unpack storage bins (trip to vietnam)
    Success: Success
    Description: Okay I know this sounds stupid, but I spent about a month packing up to go to Vietnam, and all my physical stuff has stayed organized ever since. That’s a really big change for me.

  • Project: Host an IRC server
    Success: Success

  • Project: Make hibernate work on my laptop
    Success: Success
    Description: This involved switching partitioning around since btrfs doesn’t support swap files. If I recall, my setup is now a swap partition and a root btrfs partition, inside LVM, inside LUKS.

  • Project: Extract bitcoins
    Success: Success
    Description: Extract bitcoins from all my computers and centralize them in one place

  • Project: iPhone
    Success: Success
    Description: Back up all my personal data from my iPhone, clear the contents, and sell it.

  • Project: N-grams
    Success: Obsolete
    Description: The Google N-grams dataset from their book scanning project is freely available, but in a terrible format (split across set-size file chunks, but in random rather than sorted order). My plan was to convert the formatting and offer it as a torrent / s3 bucket. Google has corrected the problem in a revised version of the dataset.

  • Project: NNTP over tor
    Success: Didn’t do
    Description: I run a private newsserver, and I wanted to let people access the newsserver (and anything else on that physical server) over tor. I decided the newsserver was too dead to bother with, and I didn’t feel enthusiastic about setting up tor, so I dropped the project.
    Future plans: I don’t care about the original project, but if there’s a compelling stimulus, I want to set up tor for my server to learn how and leave flexibility.

  • Project: Textmode backup
    Success: Success
    Description: ‘textmode’ is the name of a virtual machine on my OS X machine. The project was to back up contents of the machine once, and then delete the virtual machine

  • Project: Post pdfmailer website
    Success: Success
    Description: I wanted people to be able to get a physical copy of a pdf document they had mailed to them. I think this project was an especial success, because I’d been failing at an over-engineered version of this off and on for a year. I decided to have the website email me instead of trying to do everything automatically, and ended up getting the books to be a factor of 10 cheaper or so by going with a publisher with no API.
    Future plans: I’d like to popularize the website more. I think there are also some small technical improvements to be made. I’m not going to automate things unless it starts using up a lot of my time to process requests myself.

  • [Censored project involving an arbitrage opportunity I haven’t cornered]

  • Project: Back up email
    Success: Success
  • Project: Flatten backups
    Success: Good enough
    Description: Oh just go read the XKCD. Now imagine you’ve been archiving computers onto other computers for 15 years, and buy cheap laptops.

  • Project: QR codes for ebooks
    Success: Success

  • Project: Business cards
    Success: Not done
    Description: Make some personal business cards

  • Project: QR Punchcodes
    Success: Didn’t do
    Description: So you know how QR codes can contain any data? That means you could show them to a camera and the camera could run any code. Like, code to wait for another couple of QR codes, or to print out some more QR codes…

  • [Censored project involving an arbitrage opportunity I haven’t cornered]

  • [Censored project involving a mildly illegal thing]

  • Project: Make a desk out of cardboard
    Success: Ongoing
    Description: I want to make a desk out of cardboard, because it sounds fun. I’m proud of doing the design right here. I’ve finished mocking it out of cardstock, and actually noticed a lot of flaws and fixed the design instead of hoping them away. Now I mostly have to get the cardboard and make it, should be fun.

  • Project: Make a whiteboard partition
    Success: Success

  • Project: Write about paper backups
    Success: Success

  • Project: Sort physical scans
    Success: Success
    Description: As part of packing up all my possessions to go to Vietnam, I scanned every physical document I own (and mostly threw them out). Twenty years of stuff is a lot of stuff, but I eventually sorted it all out. I’ve been increasingly finding that a flat folder structure ends up working out best for me in the long term, so that’s what I used.

  • Project: Two-location backup
    Success: Not done
    Description: My backup server uses RAID-1, but I’d like to have a second copy on an external hard drive somewhere.  Also, I have a bunch of external hard drives which are currently not backed up anywhere (mostly with stuff like movies) which I’d like to have some kind of redundancy

  • Project: Treemap finances
    Success: Not done
    Description: I’ve made my finances public, but my analysis tools aren’t great. I’d like to update some old work I’ve done and add a web interface to see where I spent money during a particular time span, using a treemap display.

  • Project: Archive Github (aka download all the code in the world)
    Success: Not done, on hold
    Description: I’m kind of burnt out on archiving tasks lately, so this doesn’t sound fun to me. I decided to work with archive team on this one. It’ll get done if it sounds low-stress and no one else seems to be doing it, but it’s less likely than the older archiving projects, despite being important for the world.

  • Project: Encrypt backup
    Success: Not done
    Description: I’d like a way to back up my data to untrusted media, like tarsnap does, especially a way that avoids leaking file metadata (like access times and file lengths). Failing that, I should at least encrypt the drive backups are to so I can turn off that computer if needed.

  • Project: Gwernify
    Success: Not done
    Description: Gwern writes about how to protect links against link rot. He does this for all links on his website. I ambitiously plan to automatically save a copy of every site I visit (not just the actual URL I visit ideally, but the whole page).