Saturday, October 19, 2013

Saturday: Part 2: Sushi and a lot of crazy tinkering

Sushi:

I had a nice seat at position #1, so I could spy on the new things coming out and plan ahead.

And then, just when I was about to order a salmon and an ahi, a giant pile of them appeared on the belt.  Today was the first time in a long time that I've been able to draw solely from the belt and not order anything.
Crazy Tinkering 1: Google

There are a lot of problems that are in general hard to get right.  Specifically, converting speech into machine usable text strings.  Linux has a few programs that attempt to do this, but they tend to be not that great, or require a lot of training runs, or restriction to a small corpus of words.  Apple came out with their magic Siri, and Google followed soon after with their non-anthropomorphic "Speech API."  They added this API somewhat sneakily to chrome browsers, but since part of that code is open source, it didn't take long for people to find the magic and post details.

My first attempts kept failing, but after doing a bit more research, it seems that the "status=5" error I was getting is not "bad file type" that the internet people were trying to claim, but rather "no match found."  This would be returned for a bad file type, but actually means that no words were detected, and so no text could be constructed.  Switching my test sound clip from one taken at a bit of a distance to one taken by speaking directly into my laptop made it clear that this was the problem my test code was having.

Conveniently, Google also provides the inverse operation as well:  given a text string, they can convert it into a sound file using the same voice that my phone's search thing uses when I ask it a question.  The problem this raised?  The speakers attached to teddiursa aren't driven strong enough to be heard over downtown noise.

I think that these two similar problems suggest that the right solution to the problem would be to get a bluetooth headset thing, and use that to connect to a speech to text to speech program.

"Why would you want this, and what would you do with it?"

I don't know.  That's not really the point right now.  I'm sure I could come up with something.

Intermission:

Holy shit, TCM is showing this movie.  I assumed it was a generic Italian/Spanish horror movie, and then I saw Shatner.  There's only one movie commonly in the intersection of {Shatner,horror movie,non-English}.  As a side note, the reason I couldn't place the language is because it's in Esperanto.  The other commonly known fact about the movie.

Crazy Tinkering 2: Wait, that's actually an easy problem.

I live in a tall apartment building, and everyone has wireless routers.  Everyone.  That immediately presents the obvious question: where exactly are all these routers located?

"Wait, huh?"

Yeah, if you have signal strength measurements for all the routers, you should be able to triangulate things back and come up with a solution.

"But, isn't that like a lot of variables?"

Surprisingly, no.  You need to minimize the equation:
r = d(t)_i^2 - ( (x(t) - X_i)**2 + (y(t) - Y_i)**2 + (z(t) - Z_i)**2)
where d(t) is the signal strength distance, (x,y,z)(t) is your current position, and (X,Y,Z)_i are the assumed fixed positions of all visible routers, indexed by i.  This means you have 3*i fixed position values to find, and 3*j samples of your own position.  This position is listed as a function of time, as you should be moving around to break the degeneracy of the problem if you don't.  You have i*j samples, which is larger than 3*(i+j) for most values of i,j.

A quick google search led me to this page, which gives the equation:
d(t) = 10**((27.55 - (20 * log10(F * 1e3)) - S)/20)
where F is the channel frequency the router is using, S is the signal level in dB, and d(t) is in...meters?  I assume it's of order meters, based on the values I get for my own router.

How well does it work?  This is where the whole thing fell apart, as I don't have linear algebra code for perl that I know well, so that means I need to write the solver in C, which moves this from a "quick hack" to "actual problem."  I know the Jacobian values:
J_nm = \pm (2 x_n - 2 u_m)
so the solution is just solving
J^T J \beta = J^T r
until it converges.

Plotting up the raw d(t) values makes it look like this is plausible.  Index 1 is my router, and index 3 is what I suspect is my neighbor's.  I moved around t=1650, went to sit on my bed for a minute or so, then returned to the couch.  There's a clear increase in distance, followed by a return to the "couch" normal.

Videos:

I kind of want to play this game again.  In my head, the name is "Betrayal of Haunting at House on the Hill of Haunts."  The real name is much shorter.



Cool, Squirrel Girl.  I've gotten good at recognizing voices, as I immediately guessed it was Tara Strong.



Links:
  • I really can't imagine what absolute assholes live in Maryville, Missouri.
  • The truth is that we don’t know the truth. Mary Jones, founder of the North Texas Tea Party Patriots, could be murdering puppies and babies all this time, drinking their blood, and fashioning bizarre hats from their bones. I just don’t know, all I'm doing is asking the question.
    • Side note on this absolutely ridiculous story: have you ever looked at lists of Tea Party groups? It's Life of Brian, but in real life.  Go look at this list.  "North Houston Tea Party," "North Houston Tea Party Patriots," "North Texas Tea Party", "North East Texas Tea Party Patriots". It wouldn't surprise me if a lot of these are various flavors of "you're doing it wrong, so I'm going to start my own team!" or "you can't tell me what to do, you're some sort of collectivist!".
  • Pika-kiss!

Saturday: Part 1: Morning

Why do I have a morning post today? Yesterday I got a phone call that I had to go get a vaccination due to the new magic drugs I'm taking.  Woo.  In a move that surprised me, they were able to schedule that for today.  The downside of next-day, weekend doctor visits is that they were crazy overbooked, so I ended up sitting and waiting for an hour.  This meant that the next part of the day's plan was going to be delayed.

What was that next part?

Doughnut time!
Since I was up and out in the morning, I figured something breakfast-y was the way to go.

Not the absolute best selection today, and I wanted two of those chocolate/almond ones in the lower right corner, but still, OM NOM NOM.
Then I got stuck in traffic, and started formulating a few equations that attempt to explain why things are slow by modelling v_T as a function like v_T ~ v_0 * (\rho/\rho_0)**-\alpha, where \rho is the car density and \rho_0 is the maximum possible density.  Problems arise during mergers, which should be equivalent to moving from \rho/\rho_0 to (\rho + \rho')/\rho_0.  Since you want to optimize flow = v_T * \rho, you can kind of imagine that flow increases with \rho up to some critical value \rho_C < \rho_0, at which point the addition of more cars due to mergers decreases v_T.  The fact that I had enough time to formulate all of this should suggest that \rho > \rho_C for this trip.

Finally, I got home to discover a brand new fucking Pokemon series has started.  I hate when this happens, because they change the name of the show in the listings, which means the DVR misses the first episode and a half.  I think they claimed this was just a preview, so I suspect they'll replay them when the series starts for real.

Because I missed things, I don't know who anyone is.

Like her.  Obviously she's the rival, so I'll call her Not-Misty until I learn her name.  Also that bottle of water has a poke-ball symbol on it, but if you just glance at it quickly, it looks like underwear.

Not-Misty's mom?  Sister?  Friend?  Is she going on the journey too?

Crap. Froakie.  I was hoping for Chespin.  You chose the water type last time, Ash.  Also in the background are Not-Max and Not-May

Officer Jenny knows how to do new series, and nicely lets me know that this is Professor Sycamore.
 Anyway, adventure!
Garchomp is freaking the fuck out because somebody put a shock collar on him.  Ash (having no sense at all) climbs up to try and help while everyone else in the city stands around and acts surprised.

Garchomp's a dick, and flies up to the very top of the Not-Eiffel tower.

Ash, continuing to not have sense, climbs up this totally exposed ladder.

Garchomp shoots them.
Blah blah blah, they save garchomp, blah blah.

But then the ground gives way!

Oh no! Pikachu!

Christ, Ash.  Just...what the fuck was your plan here?

"Pika-pi..." Even Pikachu is a bit confused as to how both of them dying is going to help anything.

But then Mega-Blaziken shows up and saves the day, and Ash continues to not learn the lesson that jumping off tall buildings is fucking stupid.

Froakie pulls out all the cute it can.

Activates its own pokeball, making this pokemon 9486 that Ash has not really captured.

"Everything's going to be great, because I'm immune to the consequences of my actions!"

"Immune!"

Friday, October 18, 2013

Friday: And some days I just back date the post to the right day

Oh, fuck you, amazon.

  • Liars lying, even when they could benefit from what they're lying about.
  • I'm pretty sure this is a reason why law professors shouldn't be doing statistics.  Or, you know, should learn statistics.  Given a set of N variables and M groups, claiming that membership in group M_i implies larger values of N_j without clearly stating how you accounted for the effect of the covariance of N illustrates that you're just throwing numbers together.  For this example, something to the effect of "for matched cohorts of age and income" would probably suffice, or at least point out that you're aware of this kind of problem.
  • I'm interested to try this, even if it won't be for like another year (or 18 months, since there's a hipster/new place problem to deal with).  I know they're conceptually just a Steak&Shake, but still.
  • I may or may not have internally come up with elaborate back stories for why I'm purchasing baked goods as well.

Thursday, October 17, 2013

Thursday: Why am I suddenly so sleepy?

Today was the day I go buy random things at Target.  I discovered that in the process of adding a new lane to H1, they've made everything slower.  The only thing I can think of to explain this is that people noticed things were different, and panicked, and that's why we were going 15mph.  My evidence for this is that when the construction zone ended (note: no actual construction was happening), everything magically sped up.

I can now say that I had the option to buy these cereals.  An option I declined, but still.

Wait, what?

  • At the beginning of this, that frog faced bastard seemed reasonable.  Then about halfway through, he talks about "dynamic scoring," which some people may just gloss over. "That sounds good.  Everyone like scoring points, and dynamic sounds like it's active!"  No.  The idea behind dynamic scoring is that you rewrite the tax code by claiming that if you decrease tax X by $Ne6, you spur $Me6 in "growth," and therefore you only need to claim that you've cut taxes by $(N - M)e6.  It's slightly more complicated, but that's the idea.  Why is this bad?  Because you could basically just claim whatever you want.  Having the CBO score things, you know, the Congressional Fucking Budget Office (for Budget Calculations, Duh), makes more sense, since that's kind of their damn job.
  • Have you ever kind of wished someone would have a horrible existential crisis that finally crushes their life and soul entirely?  Yeah...that'd...um...me neither.
  • Everyone else was talking about this today, so why not.
  • But this, I saw nowhere.  Imaginary Onion Joe Biden is one of the greatest fictional characters ever.
  • Adventure time.
  • I didn't originally notice, but the "Dandy Fish" logo is smoking a pipe.

Wednesday, October 16, 2013

Wednesday: I didn't play around with the new computer much today

Mostly because I spent an extra hour at work because I finally sorted out where stuff was being calculated wrong.  I did sort out some stuff with using it to monitor a webcam, and discovered that you can fairly easily write a twitter bot that can handle media posts.  Not that those are at all related.

Plus the government stopped being completely stupid today.

Tuesday: teddiursa


Yes, that tiny little box that I've stuck to the side of the tv stand is a proper full computer.  I'm reasonably sure that it'll be a perfectly valid replacement for kadatheron.  I'm still getting things set up on it, but I haven't run into any major issues yet.  It knows the network, it's crossmounted giant disks across the network, it can see and use the webcam, and it displays to the television with only minor glitches (I'm pretty sure that HDMI-1 on my tv is broken).

I think the hardest question I've had to confront is what to name it.  Kadatheron could be followed up with anything from the set of {thraa, ilarnek, sarnath}, but those are all kind of bad names (the reason I chose kadatheron in the first place).  That suggested taking a new path.  I'm planning on using it to monitor a bunch of things automatically, and have low-level AI attempt to diagnose and notify me of any issues.  This led to the idea of tachikoma, but I already used that name for a laptop (which doesn't really exclude it, as that laptop has been dead for years).  Even though I'm pretty sure they're etymologically distinct, that led me to 熊 pronounced kuma or "bear."  Next on the logic train was the realization that if this works well, I may end up buying more, so it'd be good to have a large supply of assignable names.

Of course, the largest supply of assignable names is Pokemon, so I went with teddiursa, partially because it's cute.

And as a side note, here's the CDF for when I post things to my blog.  I've plotted both the raw times as well as a folded set of times, where posts before 6AM have been appended to the previous day as hours 24-30.  Like today's post is going to end up being because I was busy this evening and didn't get things done on time.
Note how the 50% point is something like 9:30 PM HST.

  • Raspberry pi troubleshooting page.
  • Squirrel.
  • Brock.
  • The Largo is very good.
    • Side complaint: I was listening to this as part of a giant "99 classical songs for $1!" thing from amazon.  For the album this is on, I have 91 tracks.  For another, 67.  WTF, amazon?  The support response I got was "here's a coupon for the price you paid so you can try buying it again."  Of course, it's now $7, so the $1 coupon doesn't fix things.  I think this boils down to the fact that I'm annoyed that the amazon computers have stolen 40 songs from me of total value $0.40404.  Computers are supposed to be reliable, especially when you have to transfer the music files from your magic mp3 vault to the section of the magic mp3 vault that you've assigned to me as my "cloud player."
  • I want to play the game and then get immediately bored, but it doesn't start until the 25th.
  • I fixed the problem. Problem solved.”
  • Why people are so crazy that they've shut down the government.  Tl;dr: they're old white people who are scared of anyone who isn't exactly like them, and since they're too dumb to realize that this is just the result of demographic change brought on by globally increasing population and rapid transportation, have decided that it's all the fault of Lucifer, and therefore it's the end times.
  • I made this point in grad school to someone from a different country, and I think I've come to a more logically sound view on the subject.  The US is an excellent choice for the world's reserve currency because it has something that you really want in that position: permanence.  Having giant stockpiles of nuclear weapons is not something you keep around to force people to use your currency.  You use it to assure those that do use your currency that you will be there next year and you will be there in thirty years, as there are no outside groups that can destabilize you.  Note "outside groups."  The previous link illustrates that there are a lot of people who not only don't care about stability, but actively court instability because that's a herald of their psychotic millennialism.

Monday, October 14, 2013

Monday: Columbus Day!

This appears to the be the fourth year in a row I've made the traditional Columbus Day Spaghetti Tacos (the Overcompensating archive has changed, and that's the first in the series that I found).  You're welcome, America.  I'm single-handedly saving you from bags of syphilis being shot at you by Ghost Christopher Columbus.


This year's worked much better than the previous years.  First, that lazy sauce works well, although I did add some garlic and some red pepper flakes to make it a bit more interesting.  Second, tiny mini-meatballs of Italian sausage pan-fried and then added to the sauce at the end.  Third, WF brand taco shells have at least twice the structural integrity of the national brand ones I've gotten before.  Plus, these come in blue.  Finally, some smoked provolone to add a creamy note.

Not that these are easy to eat.  I can't imagine how these could be "kid food."  First, you have to fill the shells immediately out of the oven, when they're flaming hot.  Next, you fill them with boiling hot spaghetti and sauce.  Finally, you have to eat them fast enough that the liquid doesn't make the shells soggy.  Basically, you're holding a tiny inferno which at any moment will either shatter into a billion pieces, dumping the hot spaghetti into your lap, while simultaneously trying to keep the drips from travelling much further than your elbow.

Final note: ramekins have yet another use.  Holding your assembled tacos upright.

  • I don't know how this was a surprise.  Sunkist is the best orange soda, no contest.
  • Adjunct faculty is a disgrace.
  • MM suffers from the "basically Superman, but less well known than Superman."  See also: Captain Marvel.  I also want to add Big Barda here, as she's basically an invincible face-pounder as well.
  • What an asshole.  See, my theory on blogging can be summed up like this:
    • Things I made, I post first.
    • Things I found randomly, I put them next.  If there's an obvious source, I try to stick that in the links.  If there's a clear theme or something, I do the google image search thing.
    • Links go last, and for tumblr stuff, I try to click back through to the initial post, unless I'm lazy, or there's a comment, or I'm making some other point.  I try not to have more than one link to a given site, because that seems weird. 
    • Post link math goes last-last.
  • I'm making a point on this link, so that's why I'm not tracing back.  This is going to be my last link to sigma7.tumblr.com.  Why?  Because over the weekend I had like six links to it that I had to cull down to a single one.  Go follow him directly, and if you don't, fine.  You probably drown puppies too, don't you, fun-hater?
  • WTF?  If LAX looked like that, I'd actually want to fly through it.
  • I saw this image retweeted by LSJ on twitter.  The point they make is that 44% of people surveyed age 18+ think that children should contribute to their parents' retirement.  36% disagreed.  Prepare for math.
Let's ignore the aspects of Social Security/Medicare/government programs that use current receipts to redeem Treasury bonds issued previously to pay for current benefit payments.  That's a higher order thing that I'm pretty sure most people don't immediately think of when confronted with a question like this.  Instead, let's curse the heavens above for the incompetent Congress that has led to the government shutdown preventing me from accessing the cohort demographics data compiled by the census go hack out data from a wikipedia plot by eye to generate the following plot:


The red line shows the rough CDF for all ages, with the blue line showing a similar thing for everyone older than 20 (which we'll use as a similar group as the 18+ in the USAToday survey.  Next, let's over plot the 36% and (1 - .44) = 0.56 lines.  So, the oldest 44% of the country are basically people 50 and older, and the youngest 36% (blah blah 18+) are those under about 40.  Now, imagine two hypothetical people.  One is quickly approaching retirement and beginning to realize that they maybe didn't save enough to sustain their lifestyle.  The other sees retirement as far off in the future, and is struggling with a shitty job market, huge student loan bills, probably also isn't saving enough for retirement, and considers being asked to carve out more of their income as kind of a bad deal. 

fucking really?


Sunday, October 13, 2013

Sunday: I ended up being lazy. Then I mocked someone semi-famous. Finally, I did unnecessary math.

I had intended to make spaghetti for dinner, but discovered last night that my butter had gone bad.  "I have never had butter go bad," you say?  You apparently don't buy butter and then leave for a month allowing it to go bad.  So congratulations for eating your butter faster than I do.

Since the butter was no good, I had to go out today anyway to get more butter, but then I became lazy and waited around until I had become too hungry to wait to get groceries and then make dinner and then eat. So, burger time.


You may have noted that that last one isn't really fair, because I've kind of expected NF and CNF not to be writing in the exact same article.  Therefore, I don't see any other option than to conclude that Niall Ferguson is kind of a shitbag.  Maybe he's an incompetent shitbag, and me calling him a liar isn't fair either.  


And now, after sorting out links for that mess, something else has struck me.  That rating system isn't just arbitrary and stupid, it's mathematically arbitrary and stupid.  If you wanted to rate the quality of twitter feeds, how would you do that?  First thing that would be nice would be if we have an accuracy value.  Like, the fraction of tweets that were true or helpful or something.  Next thing that you need to include is something to account for how much they tweet.  If you tweet zero, you spread zero information no matter how correct you are, so more tweets that are true is better than fewer tweets that are true.  Next, you need some sort of network effect.  If you tweet, but no one listens, you're only marginally above not tweeting at all when it comes to spreading information.  So, you get the product of these three things, or something like:
U = (a + k) N F
where U is the utility of the feed, a is the accuracy, N is the number of tweets, F is the number of followers, and k is the fraction of tweets containing "cats," in a very general sense (basically, any tweet pointing out something cute to look at.  Puppies would work too, but because internet).

You probably also need to fold in a time decay term, something of the form N = \int \rho(t) dt; U(t) = (a + k) F * \rho(\tau) exp(-(t - \tau) / \kappa).  The idea here being that something wise you said three years ago is probably less important right now than something wise you said seconds ago.  Then again, this invites switching to a(t) as well.  I may be right in what I say today, but two years from now added information may change this fact.  This means that the present utility rating is like
U(t) = \int (a(\tau)|_t + k) \rho(\tau) exp(-(t - \tau)/\kappa) d\tau F

Shit.  F.  That's not constant either, is it?  I'm going to stop here because I'm be lazy today and assume all followers do the responsible thing and scan the entire tweet archive to become as up-to-date as all previous followers.  Therefore, we don't need to bother with anything else and F is simply F(t).  This now tells us the utility at time t, based on a distribution of past tweets at times \tau < t.

Saturday, October 12, 2013

Saturday: Adventures in Kailua

First important point: Kailua is basically a roughly equal mix of a) people who live in Kailua because that's where their family has lived for generations; b) tourists visiting someplace "out of the way"; c) some sort of hyper-douchebag pseudo-hippies.

I'll admit, group (c) probably seemed extra prominent because I went to the WF that they recently built there.  "Where's your gluten free section?" "No, like, dude.  Dude.  You have to put that [six pack of beer, single heirloom tomato] in a bag.  I'll be careful with it.  Just put it in a bag."  "O. M. G! Look at all these apples!"  Fuck you, that's a shitty selection of apples, they just made a big pile of them.  My WF is probably half the size, but the produce section seems to have more stuff.  Not just big piles of the same stuff.

Part 1: Lunch

After deciding to head over to Kailua, I googled around to see if I could find some place to have lunch nearby.  "India Cafe"?  Sure, that sounds good.

It's really tiny inside.  I'm in the corner here.
I probably actually like Indian food more than I really think I do.  Or, in any case, the Indian food that's available in restaurants here.
Garlic naan, chicken tikka masala with potato masala, watermelon juice.
I would have liked more garlic in my garlic naan.  The tikka was a bit tame.  Knowing that, I'd probably ask if it could be spiced up more next time.  The potatos were delicious.  I may need to back-engineer that recipe.  "Potatoes slow cooked with cloves and cinnamon in a tasty masala" is all the menu says.  I'm pretty sure the salad is just there to make you feel better about having three starches in one meal.

Part 2: Ramekins

I never have enough ramekins, so I made the trip to Kailua specifically to go buy more at pier one.  $2.50 each.  Problem solved.

They also decided that they'd have those french onion soup bowls that I've been looking for for years, but I didn't get any.  They weren't on the shopping list, so I skipped them.

Part 3: Bowling

This was the other goal of the trip.
Shoes!




.
frame12345678910
.
1 71 07 X36 7/ 8/ 9/ 8/ 6/ 90
.
8 15 34 43 61 80 98 114 133 142
.
2 5/ 60 80 70 6/ 81 44 72 80 27
.
16 22 30 37 55 64 72 81 89 98


Hrm.  Yeah, that didn't really work as well as I'd hoped.  There should be boxes dividing things, and I don't see them.  Anyway.  Decent first game, increasingly bad second one.

Part 4: WF

I already covered my first impressions.  They have a larger meat case, but think they had higher prices.  Ground lamb though, so things kind of balance out.  The deli is hidden in the far back corner, which is even harder to find due to the fact that the back of the store has a series of shelves perpendicular to the rest, obscuring the deli unless you approach from the perfect direction.

Part 5: The Moon

It was out and shiny last night.

Part 6: Links


Friday, October 11, 2013

Friday: Linear Algebra

It's not immediately obvious, but any sort of solver, fitting, or minimization is all basically just linear algebra.  This week's work-related math problem was in the polynomial fitting code.  It only arises when the x-data is closely (like 1e-3) spaced.  How is this linear algebra?

Here's how you fit a polynomial.  First, define the Vandermonde matrix for a vector x as
VM[x] = [x.**n x.**(n-1) ... x.**2 x.**1 x.**0]
using matlab/octave style .-operators for element by element operations.  Basically, this has expanded the vector x into an array that has the various power terms in the columns.  You can then define a system of polynomials as VM[x] p, where the vector p contains the polynomial coefficients.  In the fitting form, this vector is what you're trying to find.  To do this, you do basically the same thing as regular fitting:
A p = b
(VM[x]^T VM[x]) p = (VM[x]^T y)
using some prior knowledge of how least squares fitting usually goes.  This is basically a matrix inversion (of A), but that's hard to do, so usually this kind of thing is solved with a LU-decomposition or the Gauss-Jordan method.  However, as mentioned above, if the x-data is closely spaced, this is failing, as our GJ implementation has some logic to prevent the construction row operations that have large scaling factors.

This leads to the idea of pre-scaling the data in x to prevent this from being a problem.  Define a new vector
x' = f x
where f is some scalar.  This means that
VM[x'] = VM[x] .* VM[f]
so
A' = (VM[x]^T VM[x]) .* (VM[f]^T VM[f])/length(x)
b' = (VM[x] .* VM[f])^T y
which has the solution
p = p' .* sqrt(diag(VM[f]^T VM[f])/length(x))

Great.  What's f?  This is where things start to be complicated.  Why does the GJ solver fail?  It's complicated, but basically boils down to the matrix A being ill-conditioned.  The degree of ill-conditioning for a matrix can be calculated as the condition number (with the most ill-conditioned matrices being non-invertable, where c_N = infinity).  The fastest way to do this is to calculate
c_N' = max(diag(A))/min(diag(A))
If this is large relative to some threshold (like 1e7), the matrix is ill-conditioned and should have some scaling.  Unfortunately, this is just a decent lower limit, so to do this correctly, you'd need to do something like
c_N = abs(max(eig(A))/min(eig(A))
or, even better:
[U S V] = svd(A)
c_N = max(diag(S))/min(diag(S))

In any case, I have the suspicion that the "optimum" f value is something like
f = sqrt(max( max(diag(S)), 1 / min(diag(S))
The idea being that you want to reduce the dynamic range of A in such a way that you no longer break the threshold.  One complication of this is that checking on the real matrix that's breaking things suggests that the "scaled" form that works is actually even more ill-conditioned than the unscaled, but since the test in the current code is uni-directional, this doesn't throw an error.

That was kind of hard to go through, so here's a Jigglypuff mocking Clefairies.

Thursday, October 10, 2013

Thursday: And then an asshole decided he would turn left from the right lane, and very nearly crashed into my car.


  1. Learn how to look around before you turn.
  2. Try turning from the left lane if you're turning left.  It's a one way street, it's not hard.
  3. Plan a little bit.
  4. Alternate solution: just pull over and kill yourself.

Wednesday, October 9, 2013

Wednesday: A few more bizarre illuminated manuscripts

"Oh, you fucking Capricorn!  Where are all my damn trees!"

"Yeah, so...like this demon was just around, and then he got tangled up in the playstation controllers, and it's just a mess."  "Whoa, this isn't a big deal.  We just get a knife, and cut the demon in half, and then everything is fixed."

"Did that dude just steal one of my king horses?  I guess he's a king too, but I'm starting to think I got sainted for a really fucking weird thing."
Yes, I know that most controllers are wireless now, but I couldn't think of anything else that still had cables.  And, no, I have no clue who the saint is in the final one.  My horribly non-existent french suggests it's something about lobsters, but that just makes even less sense.


Tuesday, October 8, 2013

Tuesday: See? What did I say yesterday?



Monday, October 7, 2013

Monday: I'm going to blow through a lot of things I probably should have rationed.

It was telecon day today.  So:
If you draw curvy-up mouth bits, the cat looks smiley.  If you make them curvy-down, the cat looks angry.  If you draw one, then the other without erasing, the cat looks like it might puke.
I started out drawing the saw-tooth squiggle.  Then I started to draw a spiral, but got distracted.  Next, I drew a box and shaded the sides differently.  Then I decided to turn the squiggle into a stylized dragon, so I added an eye and tapered the tail at the top.  Now the spiral is the smoke coming out of the dragon's mouth, and the box is just...there still. I'm sure there's an art word for "thing that looks solid, but isn't, because it topologically equivalent to a line."  Maybe a math word.  "Topologically" doesn't seem like it shows up much in art.

Then I saw an article about kolaches, and went with the closest thing that's available here, manapua.  Note to future self: don't get the peking duck, as it's like 99% celery, and celery tastes gross.
Did you know that the tiny sliver crescent moon was next to Venus tonight?  Here they are above town.

  • Because I was reading it.
  • I realized after watching the video that these are basically cheez-its.  However, unlike those, these look absolutely delicious.
  • Nice job being a dick, wikileaks.  I think "actually getting shot in the fucking head" counts as persecution more than "hiding out while pretending you're some sort of messianic super-spy."
  • I stopped watching this interview on tonight's Daily Show.  Stewart just kind of came off as a dick.  Besides, I'm really not convinced that this is a super important issue.  Let's look over the wikipedia page on the law.  Ok, individuals have to buy insurance, or they have to pay a $95 penalty.  Businesses will have to provide insurance if they have more than 50 employees, and don't provide coverage.  That makes sense.  The penalty provision of that is delayed for a year, which isn't a great plan, but I don't see it as a major fault.  The individual mandate is there to ensure that the exchanges get enough healthy people to keep the premiums reasonable for everyone.  It's not a bug, it's a feature.  The general assumption is that businesses with more than 50 full time employees already provide health insurance, because not having sick workers is a good thing.  However, for those that don't, they have a year to get things in place.  During that time, workers without insurance should be eligible for the exchanges.  I guess I don't see what the problem is with the delay.  The individual exchange needs to have the penalty in place to ensure universal enrollment.  Businesses with more than 50 employees probably have a sufficient insurance base that universal enrollment for cost controll isn't a problem.
    • Or, you know, we could just do single-payer and skip all this shit, but that didn't seem to be anywhere in Stewart's arguments.
  • Mystery bear.
  • That kolache article.

Sunday, October 6, 2013

Sunday: I should remember that chopsticks are generally the answer

Why?  Today I had the problem that I had a large and unwieldy mat that I wanted to dry.  I ran it through the washer, but I'm somewhat hesitant to run something made of foam and rubber through the dryer.  That just seems like a bad idea.  The next obvious solution is to air dry it, but I don't have a line, nor do I have a place that would be convenient to place one.  What I do have is a set of sliding doors that have a C-shaped track at the top.  The C has large "serifs," so I've used it in the past to dry shirts and things by simply hanging them on the lip.  However, since the mat is large, I wanted to have more security than just hanging the hanger on one hook on that lip.

This is where the chopsticks come in.

Take a pair of disposable chopsticks, use it to span the gap, resting on both sides.  Hook hanger onto chopsticks.  The hanger is now balanced better, and the weight holds the chopsticks in place, preventing them from sliding.

Then I spent 15 minutes making this gif from the episode of Regular Show I'd just watched.  I now know three new tricks in the gimp.  1) Highlighting text. 2) Merging layers to add text to multiple frames. 3) Optimizing by differences.
And then the sky opened up to mourn my departed computer.