Wednesday, October 17, 2012

[lyrics] sappy emo lyrics that are lame and boring




we took a ride down to the valley of the moon
I hid my rocket in the shadow of a pirate's tomb
it must have been a hundred miles until we met again
I feel there's nothing left to say...yeah

it must have been a hundred miles until we met again
I recognized the scent of lilacs floating on the wind
I really don't care which flag you make your home
as long as you'll keep my sins with your own


if I go crazy then will we still reach the promised land?
if shadows fall and burn will I see your face at world's end?
I'll be safe in the darkness, my sweetest silence
white spades, in lace

I've stolen from them all the secrets that you're paid to keep
you could have stopped me all those times you found me indiscreet
you stumbled in and cut me loose if not for me you'd miss the truth
I stood it up, kept it out of evil hands


if I go crazy then will we still reach the promised land?
if shadows fall and burn will I see your face there at world's end?
I'll be safe in darkness, my sweetest silence
white spades, in lace

Monday, October 15, 2012

The Population Cycle of Lemmas

You don't "cover" for me; you manage expectations.
--Donald Draper

Previously, I mentioned that I was solving a trillion instances.  That was the original plan.  One thousand instances in a modified cnf file, one thousand files in a folder, one thousand folders in a zip file, and one thousand zip files.  Somewhere along the line, maybe precisely when I realized that individual uncompressed folders exceeded 500 mb in size and I couldn't even fit a thousand of them on disk, I switched the thousand folders per zip file to 1 folder per zip file, and promptly forgot the effect it would have on the order of magnitude of the size of my data set.  So, I'll be generating 1.001 billion instances to test with, as opposed to 1.001 trillion.  Yes, I could simply generate a million zip files and stick them on a giant hard drive, unfortunately, I've also recently discovered that with the resources at my disposal it would take years to accomplish that.

I could generate 1 trillion, if there were exactly 1000 clones of me (thanks to the .001 its one thousand and not 999 clones) but I think I'm going to settle for the billions instead.  Either sum is pathetic compared to the size of the search space (number of atoms in the universe?  please) so what does it matter?  The only danger is if there was an elusive, super-hard worst case instance that was only going to appear if I generated a trillion.

I need to begin work on the proof anyway.  Why do I need to begin this?  Because I just hit the limit for the number of cores I am allowed to rent from Windows Azure.  Fun fact:  if you need to do CPU intensive work, you may find it far cheaper to rent 8 extra-small shared-CPU instances than to rent a single 8-core server.

The next technical difficulty other than maxing out my Azure subscription (a point in Amazon EC2's favor) is getting the data off the hard drives before they fill up.  Given that I can apparently only use the most basic libraries with mono, and given that I want to move the files and not just sync them, the best option was to use FTP.  You know, that old ass file moving protocol on port 21.  Well, guess what.  FTP is actually not a simple file moving protocol that does everything through port 21.  Port 21 is just the beginning.  If you have to manually open ports to a box in order for it to work, you are going to learn a lot about passive mode, and active mode, and port 20, and ranges of ports in both the client and server, and bugs in various popular FTP clients.  I'm sure the cludgy-ass design made sense back when harddrives only held 30 MB, but holy shit it is awful now.  And it transmits the password in clear text!  If I was going to design a protocol to be a headache of a security risk, I would write FTP.  I got an active-mode FTP client that can punch through the Azure firewall.  Unfortunately it does not work from inside the Azure firewall.  Go figure.  I would like to formally protest all network protocols that can still have connection failures after you've established a connection.


In light of this, the least amount of work is probably going to be to manually log into the servers and clean the files out myself.  Oh, I forgot to mention I implemented a simple workflow engine in mysql and php.  That was fucking awesome.  Anyway.

Azure has its own version of S3, but you can't directly upload files larger than 64 MB do it--you have to break it up into blocks, and the libraries provided probably won't run in mono.  In the choice between [not using mono, and therefore .NET on windows, which means] having to log in to my servers with some graphical bullshit, verses having to manually move files, the latter seems way more fun.

I want to say that I don't understand why you still can't just ssh into windows (powershell doesnt count) but I actually know why;  I just want it to complain about it.

My next strategy with the proof aspect is I'm going to try and see what small things I can prove about my algorithm (if condition X, can I always succeed at clause finding?) and then see if I can build a proof out of those smaller statements.  I believe these are called lemmas, and then the axioms are the ones that are obvious/self evident.

Knowing that girls in the future could read what I write today is making temporal mechanics a real problem for my writing.  For now, I haven't written anything but math shit, yet my readership is growing.  I wish blogger would let me ban Seattle IP addresses.  In this town all of the attractive girls that know how to set up a proxy to get around regional restrictions always turn out to be guys in real life anyway, which is {tolerance affirmation}.

Thursday, October 11, 2012

Stuff from Reddit

Now that I work for a certain company, I have to use a certain operating system.  The chief characteristic of this operating system as it relates to this post is that I have to restart it all the fucking time (because of forced security updates).  I got in an argument--well a discussion actually--with my coworkers about it.  A discussion is a lot like an argument except that you simply cave to whatever their opinion is after a few minutes.  Anyway apparently the reason a certain OS needs to be restarted all the time is backwards compatibility--they can't fix how the system is architected because they want to stay compatible with ridiculously old programs.  In fact, the people I was arguing with weren't even sure that you could architect a system with enough things in user space so that you don't need to restart for every little update.  I had to point out three times that linux has this capability, and that since linux exists, is proves it is possible.  They still weren't sure.  People here seem to have some kind of filter.

Anyway, since I have to restart I want to same some random links I've accumulated.  These are mostly from reddit, thanks to the time it takes to install a certain operating system on 10 virtual machines:

1. TODO:  get a profile picture like this:   http://imgur.com/s10M4

2.  Amazing bigass ship:     http://imgur.com/a/oRQQx

3.  Awesome comic making fun of eco nerds:  http://www.explosm.net/db/files/Comics/Rob/ecofriendly.png

4.  Awesome clock make of a candle:  http://en.m.wikipedia.org/wiki/Candle_clock#

5.  Reason to own a baboon someday:  http://www.earthfoot.org/lit_zone/signalmn.htm


some stuff on azure blog storage:

-http://blog.smarx.com/posts/windows-azure-storage-libraries-in-many-languages

-http://www.codeplex.com/

Tuesday, October 9, 2012

Today I Learned, Part 2

Mono has a bug in the built in .NET json serializer that causes your program to fail immediately with an IL code failure, which is kind of fine, because the .NET people who wrote the built in json serializer love xml too much, and treat json like an idiot step brother of xml by making you use the xml parsing classes, which is quite unfortunate because the chief benefit of using json is not having to use an xml parser, which is just fine because the time it took to write my own weakly-typed json parser was significantly less than the time I spent investigating the mono bug, which is perfect because I originally wanted a weakly-typed json parser anyway.  Other People's Code:  it sucks.


Generating 1 trillion small 3-SAT instances overnight would cost roughly $3000, which is the price of a Ninja 250 circa 2000ish.

With 34 computers, I could generate 1 trillion instances in 1 month.  These estimates are quite rough.

I've generated 30 million so far.


Saturday, October 6, 2012

Today I Learned

The Netgear Genie WNDR3400v2 is my near least favorite device.  The people who make shitty consumer-grade routers have gone ever further in the narrower-use-case and dumber-customer direction to the point where the router basically sets itself up, which is unfortunate because they didn't include a step for reading my mind to get the network settings I want.  The simple act of plugging in a cable into the internet port causes their shitty automatic wizard to render irreparable harm to the configuration that can only be undone by a hard reset.

The morons who designed Ubuntu decided they needed to fuck with the different run levels.  Instead of run levels 1-6, Ubuntu basically has two different run levels:  useless, and everything.  I can't imagine why they would do this.  The stupid people they market their distro to don't know what run levels are.  And almost everyone in the universe who does know what runlevels are wants runlevel 3 to be multi-user, network enabled mode.  Runlevel 3 is known in some languages as turn-off-that-bloated-graphical-shit-runlevel.  So far all of the information I see requires you to identify which graphical login ubuntu is using and kill that.  You're still not in the real runlevel three; you simply broke 5.

If you have a recent version of ubuntu, here is the easiest way to pretend you are at runlevel 3:

sudo killall lightdm

The Cloud High Club

Yesterday I learned that 1 million sat instances, uncompressed, may take up 500 megs of space, which means if you leave it running for a few days and the whole machine only has 4 gb to its name (because you wanted to save money!) you might come back and find out that it spent most of its time doing nothing with a full disk.

One of my foxconn supercomputing nodes appears to have crapped out for what is either no reason, or I bumped the thumbdrive that the operating system is running on.  Who knows.

My wireless network is, at times, and because of interference from neighboring apartments, too poor to support an ssh command and a netflix movie at the same time.  So, now I'm faced with upgrading my home network and best buy is closed.

I experimented with the Azure offering.  Amazon's prices are probably better...they offer a ton of options like spot and reserved instances to help you play games and keep the price down, but it was far easier to get an Azure machine up and running.  I was stuck on the password screen for a very long time;  they force you to include characters other than numbers and lower-case letters in your password.  Using passwords that only contain lowercase letters and number is a religion of mine.  Its bad enough when a giant software company that pays you to do computer shit forces you to have a gay ass password with capital letters in them.  Its a completely different level of awful when you are forced to do it on your own time.  Feeling violated, I first tried to use EC2 instead and then remembered what a giant pain it was to get those damn ssh keys set up, and went back to Azure.

Anyway, getting a SAT instance in Azure running was super easy.  I think that was the point of this post.  In less than the time it took to open the case of a foxconn computer with an improperly sized screwdriver (2 hours) I was able to get an Azure completely up and running.

Also, the Azure instances have domain names that are much easier to remember.  So that is super awesome.  I am a bit curious if I am the only customer on the planet using Azure for linux systems.

So.........I forget what the point of this was.

Monday, October 1, 2012

Hacking the Gibson

When all else fails, read the manual
--Unknown

It turns out, and maybe I've mentioned this before...a trillion 3-SAT problems is actually a lot of problems.  Its hard to describe my exact rational for picking that number, but I know I was staring at a page with things like 10^200 and 10^48 on it and when I realized that a trillion might be in the realm of possibility (that is, I might solve that many before my attention span expires) I wrote 10^12 on the paper and it was, like, settled then.  For no reason.  I make great decisions.

Its taken longer than I'd like, but I have one Foxconn NTA350something up and running.  I've spent hours screwing around with booting off USB drives in an attempt to avoid spending $70 on a hard drive.  Turns out no one makes a live-USB image with mono, sshd, and the WPA key of my wireless network.  However, if you want to run a permanent installation from a USB stick (and not just a "livecd") I found the trick is to use a USB stick with the livecd on it to install the operating system onto a second USB stick.  Ridiculous but simple.  This thing has two cores, so it can generate two million problems in slightly more than a day.  If only I had 49 more of these.  Also, note:  the Foxconn manual makes it look like you have to buy and install a wifi card, when, in fact, it comes with one already installed.  So, whatever.

Next, I experimented with the Mini Android PC.  I had high hopes for this device, and was especially excited that is was so cheap and small.  I had dreams of constructing a super computer out of these things.  Unfortunately, there is something wrong about the implementation.  The HDMI output didn't work with my monitor, and the screen was corrupted and clipped on the TV.  It has some kind of wifi card that kept dropping the connection, and running one instance of Firefox and two terminals taxed the thing beyond its abilities.  Also the USB mouse I had stopped working for no reason.  Also, it has no power switch.  It just switches on when you plug it in.  Also, the manual is written in broken English.  I gave up on any hope of using this computer, but, fortunately, the little green box it came in is pretty and looks great on my shelf.

I ordered a second Foxconn machine today.  There are a dozen barebones PCs made by that company listed on Amazon and Newegg and I can't tell the difference between them so I just ordered the exact one I have because I know it works.  I want to order more but quick estimates show that buying these machines is only cheaper than Amazon's EC2 if I run them for 100 days straight, and I would really like to wrap up this little trillion-instance stunt by November.  Of course, then again, I get to keep the machines when I'm done.

So, I guess its on to the EC2 instances.  This is typically the stage where I discover the flaws of whatever algorithm I'm using, so I guess the fun is almost over.  Actually, no.  November is the deadline for creating the samples.  I'm not even talking about actually running them yet.