Saturday, December 19, 2015

Hat 60

This hat has not been seen since shortly after it was completed.  It may be haunted.  If found, do not attempt to approach or wear but instead lay out rum and wool fluff to propitiate it.


Thursday, December 17, 2015

Hat 61


Hat 60, meanwhile, has mysteriously gone missing.

Overheard unnerving conversation between elevator repair people, part 2

(overheard from the shaft under repair, while riding the remaining car)

[bang, bang, clang]
A: Fuck, shit.
[long pause]
A. Well, that's one way to do it
B. [muffled]
A. Naw, I'm gonna have to roll it up manually.

Wednesday, December 16, 2015

Overheard unnerving conversation between elevator repair people, part 1

(Riding the remaining elevator)
A. I'm surprised they don't put that formula in the book.
B: Is it (looking at phone) ... point five, times mass, times velocity squared?
A: So, mass, you'd have to know the weight of the empty car ....

Saturday, November 21, 2015

Hat 58

This pattern is just the tiniest bit tricky because the written pattern is for flat knitting, and has offsets of an extra stitch or two for some rows, but I wasn't paying attention as I converted it to the round, so I got all the offsets backwards.  It looks a little wierd but I don't think babies notice these things.


Hat 59

 Finally caught up with all the babies at work, now making hats for fetuses.


Two possibilities regarding this bottle of High Life, almost full of amber liquid

Either someone got interrupted early into their process of living their best life, or someone really had a good time and now it's full of urine.

Thursday, October 22, 2015

A rare sentiment

I heart email marketing

Although I think very few people actually love spam, it does seem likely that most of the people who do, and who might be the market for this billboard, live here in San Francisco.

Tuesday, October 20, 2015

Thursday, October 15, 2015

BMWs getting tickets, part 10

Ticket, leaf, and bird poop.  And I just saw the owner washing this car the other day.  So sad.  At least it wasn't damaged from the time the other week that it parked in the middle of a marked construction zone, forcing the crew to work around it the next morning.

Wednesday, October 14, 2015

The limits of canine intelligence

I think she's altogether a smart dog.  But this was not her finest hour.  I tossed her a treat coming out of the store, and she missed it and it bounced through the railing.  I unclipped her leash, but she refused to walk around the railing (like we've done hundreds of times) because she was fixated on the treat on the ground (that I was trying to walk past once she came around the railing).

Saturday, October 3, 2015

I feel pretty confident that this is the least essential information you will acquire today

Why is the Enjolras/Grantaire ship known as E/R?

 in the book, it’s mentioned that grantaire likes to sign his name as “R” (big/uppercase r). in french, the letter r is prounounced “aire”, and the word for “big” is “grand” (pronounced “grahn”). so therefore, grantaire = “grahn-tehr” = grand r = big r = uppercase r = R. it’s a pun. oh hugo.
Via A Linguist Explains the Grammar of Shipping.  I confess that I briefly imagined the article would somehow be about the semiotics of cardboard boxes and was disappointed that it was not.

Monday, July 6, 2015

Saturday, July 4, 2015

Amateur programming: one error after another

I want to give non-programmers a taste of what programmers are actually doing all day long.  In this post, I'll show what sloppy trial and error programming looks like.  Specifically, I wanted to add a new feature to Whatnext, the nihilistic task management system.  When I start a time, I want to see the project in Toggl. Instead of this:
I want this:
This should be pretty straightforward.  I already had code that did something very similar, so I used it as a model and wrote out all of the code that I thought would be sufficient to do this.  I treated it like the first draft of prose, and didn't go back to test any of it until I had the whole thing expressed.  Altogether, it was about seventy lines of code. Presented here, for your entertainment, are all of the errors. One at a time.  First error:
'Task' object has no attribute 'tag_set'
Why did I write tag_set? Because, according to the documentation:
By default, this Manager is named FOO_set
So why the error? Because
You can override the FOO_set name by setting the related_name parameter in the ForeignKey definition.
Did I in fact set the related_name paramater in the ForeignKey definition, months ago? Yes, to tags.  I fix that and see the second error:
'NameError' object has no attribute 'message'
Long story short, this is actually an error about how the code that is supposed to handle errors is having an error while handling an error.  I'm lazy and make a guess as to what the underlying error is.  I guessed correctly; the third error is
'MissingSchema' object has no attribute 'message'
This is still the superficial error.  This time, I take a moment to fix the error-handling code, so that it will share the real error instead of masking it behind a new error. Now I can see the fourth error:
Failed to create Toggl project. Invalid URL 'x/projects': No schema supplied. Perhaps you meant http://x/projects?
This is happening because the code I wrote assumes that some information is in the database, but I didn't remember to actually put that information in the database.  I add that information to the database, and get the fifth error:
Failed to create Toggl project. 'tuple' object is not callable
This one takes a second; I put a debugger command into the code so that, at the moment of the error, I can poke around and see what's happening.  It turns out that when I was copying some of my own code I ended up with an extra comma.  I remove the comma and reveal the sixth error:
local variable 'toggl_project_id' referenced before assignment
The problem here is that my code makes a (clearly) false assumption about what could go wrong.  I educate it about some more things that could go wrong and get the seventh error:
local variable 'e' referenced before assignment
This is another sloppy self-copy.  I fix it and get the eighth error:
Failed to create Toggl project. 404 page not found
I make a stab in the dark that this has something to do with the double-slashes in I take out the extra slash and get the ninth error:
Failed to create Toggl project. invalid character 'w' looking for beginning of value
This draws my attention to some what-was-I-thinking code, which I fix. Error number ten:
Looking at the code I was copying from, I play a hunch and change something, but I'm wrong and get the eleventh error:
Failed to create Toggl project. invalid character '{' looking for beginning of object key string
Okay, no hunches, time to re-learn exactly what all of these curly brackets are doing. I'm going to skip past five or six more errors that represent trial and error without progress.  I ultimately sort out the bracket situation and get the twelfth error:  
Failed to create Toggl project. Name has already been taken
That reveals a profound conceptual error with my design. If anyone ever has a Toggl account and has set up Projects in their Toggl, and then starts using Whatnext and recreates their Toggl Projects as Whatnext Tags, and sets up Toggl integration, and starts the clock on a task that uses one of those Projects/Tags, they will get an error.  I'm not going to spend an extra hour tonight to deal with that hypothetical, so I make a quick manual update to the database to avoid this problem.  I reload and get the same error, but now for a different reason. Another coding error is causing the code to skip the manual entry I just made. I guess that's error thirteen. I fix that but introduce another error in the process, error fourteen.  
Cannot resolve keyword 'system' into field. Choices are: id, remote_system, remote_system_id, remote_value, tag, tag_id
I fix that and am up to error fifteen: 'QuerySet' object has no attribute 'remote_value'
I fix that, and now my new feature executes without an error.  It does not, however, actually do what it's supposed to, add a Project in Toggl:

Sunday, June 28, 2015

Some more upgrades to the Sit/Stand/Walk Desk: Speaker, Laptop, Phone, Shelf

I realized that I was never putting the Sit/Stand/Walk/Flowerpot desk into Sit mode. Since the sliding bar can be locked into place by tightening the set screws, I didn't need the counterweight or its clearance, which freed up a lot of space within the desk.  So I moved the free-standing computer stack, which is an elfa mesh shelf stack on wheels, inside the desk behind the treadmill. Also, I could mount more things to the poles since I wasn't going to move the mouse and keyboard much. Hence, a flurry of additions.

First, a plywood box to hold my laptop at a good angle to be visible while standing.  As a bonus, a mount for the phone as well:

A little messy from the side.  The phone is in a ProClip mount, bolted to a Panavise arm which is screwed to the back of the plywood box for the laptop.

The plywood box (which is two sheets of plywood screwed to a thin strip, with no sides) is screwed to a Kee Klamp M58 Base Plate, which in turn is bolted, with locking washers sandwiched in there, to one flange of an F50 Female Single Swivel Socket, though I now realize a MH50 or M50 would have been simpler, since the second flange is useless for this application and makes it a bit trickier to assemble.  The whole thing goes onto a short piece of pipe, which then mounts to an A10 Single Socket Tee on one of the front pipes.

I also put up another small shelf, similar to the mouse pad and using a similar combination of Kee Klamps, on the opposite side of the keyboard from the mouse pad.

Here's how the F58, M50, and plywood all connect.

While the right speaker sits on a nearby shelf by the wall, the left speaker was hanging out on top of the computer shelf stack, eating up tabletop.  I suspended it from another pole:

The speaker had a mounting screw hole at the top, but that's intended to hold the speaker against a wall.  Without a flat surface behind it, the speaker wouldn't hang properly.  A strip of plywood screwed to a Kee Klamp 70-5 Rail Support fixed that.  It also got me wondering why I didn't use the 70-5 instead of the M58 + M50 combo for the four other places with plywood (keyboard tray, mouse tray, laptop box, and shelf).  There is actually a reason: the front poles are sloped around thirty degrees, and the trays need to be positioned and level at arbitrary locations in space to line up with the ends of my arms, whereas the rear pole that the speaker is attached to is almost vertical and the speaker simply has to hang in space.

I'm going to try to go a few months without adding anything else.  Oh, and I gave away the flowerpot, since the muehlenbeckia was barely hanging in there, possibly due to the northern exposure.

Sunday, June 21, 2015

good customer service from Container Store

One of the wheels on my laundry cart initiated preparations to fall off:

caster wheel attached to torn steel post
I contacted the Container Store and they sent a new cart and sent UPS to pick up the old, broken cart.  I didn't have to pay anything more.  I was happy.  Then I saw someone in the elevator with a better cart.  I am still happy about the customer service but I am sad that I don't have the best cart.

Wednesday, June 17, 2015

Tuesday, June 16, 2015

One problem with listening to Meatloaf ...

... is that you have to prioritize very carefully right as you realize you are entering a Meatloaf mood, because a mood for Meatloaf never lasts more than three songs.

Thursday, June 11, 2015

Brilliant idea

After passing on the news that Chris Hemsworth will play the receptionist in the new Ghostbusters, The Dissolve asks

Who is going to be his Louise Tully? We nominate Tina or Amy or whoever else is around.
A better answer: Mayim Bialik.

Monday, June 8, 2015

Monday, May 18, 2015

Bureaucracy and Violence

This essay is not just ... about bureaucracy.  It is primarily about violence.  What I would like to argue is that situations created by violenceparticularly structural violence, by which I mean forms of pervasive social inequality that are ultimately backed up by the threat of physical harminvariably tend to create the kinds of willful blindness we normally associate with bureaucratic procedures.  To put it crudely: it is not so much that bureaucratic procedures are inherently stupid, or even that they tend to produce behaviour that they themselves define as stupidthough they do do thatbut rather, that they are invariably ways of managing social situations that are already stupid because they are founded on structural violence.

David Graeber, The Utopia of Rules, p57

Sunday, May 10, 2015

Rain-shortened games screw up the graphs

The Dodgers held a 2-1 lead from the first inning, and did not score again, so the only thing they did in the sixth to push their win chance to 100% was continue to exist while the umpires called the game.

Friday, May 8, 2015

Pomona College, the future, and (the) Doms Lounge

I enjoyed my college reunion. Pomona runs a very thorough and all-encompassing reunion program and makes everything easy and comfortable. And I have plenty of nostalgia for the campus. I did have misgivings, perhaps best expressed by Freddy deBoer:

And I am even more upset by their parents, who crowd the halls on the endless campus tours and constantly ooh and ahh over the 55-vertical feet of climbing wall but seem not to care about the fiscal future of their children. ...  

I am amazed that these appear to be the two options now: Disneyworld plus maybe some classes if you feel like it, or sweating in your basement while you cheat on a test “proctored” by a beleaguered adjunct teaching 5,000 students a semester for $11 an hour. Why hasn’t some established college decided to make its reputation as a stripped-down, efficient, inexpensive place where teaching and learning are valued ahead of a luxury dorm experience? Where are the colleges saying “Look, we won’t have the badminton team or the lazy river pool ... but ... we’ll get you out of here on time with minimal loans, ready to start your young life with a quality education and without crushing debt”?

Our class dinner was in Doms Lounge (not Dom's Lounge, mind you.  It's a good thing it was built after my time on campus or I would have had to mention Doms Lounge at least once a day for four years), part of the sprawling mass of brutalist-detailed, neo-classical-styled concrete comprising the Smith Campus Center.  Here are the bookable spaces:

Hart Room 201 (Capacity: 60)

Available only for very special functions, this grand room has a vaulted ceiling, large tables which can seat up to a total of 60, depending upon arrangement, and an informal seating area. Various setups available. Some built-in A/V.

Room 208 (Capacity: 100)

This lecture style room has movable seating and is ideal for presentations or lectures. Various setups. Built-in A/V.

Room 212 (Capacity: 20)

This formal room is designed for intimate gatherings and has a mix of tables and chairs and soft furniture ideal for small receptions or meals.

Room 217 (Capacity: 25)

This room features a large hollow-square table with seating.  There is a built-in screen, video projector and computer input, along with a corkboard/white board.

Room 218 (Capacity 12)

This room features a conference table and seating and includes a built-in screen, video projector and computer input, along with a corkboard/white board.  The room also has an upright piano for rehearsal and practice.

Room 235 (Capacity: 40)

A mix of soft furniture and tables in this room can allow for comfortable receptions, small meetings or larger meetings. Various configurations available.

SCC Social Room - Room 018 (Capacity: 165)

This large space in the lower level of the Smith Campus Center is ideal for parties, social events, and small band performances. The space is furnished with soft furniture and a small stage.

Doms Lounge (Capacity: 185)

The room contains a stage, intricate lighting, a "plug and play" sound system, as well as a built-in bar. The Lounge is accessible through a stairwell off of the Campus Center's main breezeway, Ulf Walk, as well as from the south side of the building (Stover Walk). An outdoor patio features tables and chairs, tiered seating and an inclined grassy area.

Rose Hills Theatre/Rose Hills Theatre Lobby - Room 015 (Capacity: 200)

The Located in the lower level of the Smith Campus Center, this state of the art presentation space features video, 35 mm film, slide and computer projection as well as a built in sound system. This is an ideal space for lectures, films or multi-media presentations. The lobby offers a convenient location for pre or post-event receptions. Audience seating. Built in A/V.

Edmunds Ballroom - Room 155 (Capacity: 350 - 900)

The largest space in the center, the Edmunds Ballroom can seat 300 at round tables for dining events, 500 in audience row seating and up to 900 if cleared. There is also a portable stage available for performance. Please be sure to discuss setup needs with a staff member of the Smith Campus Center. Various setups available.

Courtyard (Capacity: 800)

This beautiful courtyard features outdoor umbrella tables and chairs. Elegant aspects of the space include landscaping, the Smith Fountain and a commanding view of Marston Quad. Please note however, that this is a public space and although it can be reserved, access to the Sagehen Café, the Coop Fountain, the Coop Store, student mailboxes, and the ATM cannot be restricted.

Steele Forum (Capacity: 50)

This two story space is located just outside the entrance to the Edmunds Ballroom and is perfect as a reception area for large events in the ballroom. It is located along one of the main traffic pathways through the building making it an ideal location for presentations or vendor fairs as well.

Lower Level Lobby (Capacity: 50)

This is a spectacular space with stunning art pieces. It is located on the west end of the building, just outside the entrance to the Rose Hills Theatre. Please note that this too is a public area and often a busy traffic route.

Thursday, May 7, 2015

Print is dead

photo of Matier and Ross in pompous poses
The last straw for my Sunday San Francisco Chronicle subscription was the literal love letter to Chevron (actual title: "The power of love: Despite everything, we heart Chevron").  That they publish Willie Brown's self-parody of corruption didn't help.  Nor did the tone-deaf editorials by middle-aged white men.  And the generally shoddy journalism was not so compelling.  Ultimately, the problem with the Chronicle, though, is that as far as I can tell it's anti-journalism, comforting the powerful.  San Francisco liberalism is largely, though not completely, phony. The San Francisco establishment is about money and power the same as anywhere else, with progressivism kept in strict boundaries; "liberal" Jerry Brown's power base seems to be real estate developers; "liberal" Feinstein rubber-stamped everything the NSA and CIA did until they attacked her personally, etc etc etc.

So I tried to get the Sunday San Jose Mercury News, which did at least publish the series about the CIA dealing crack cocaine, even if they later betrayed their reporter.  Sadly, they only actually managed to deliver a Sunday newspaper two or three times out of seven Sundays or so.  I reported all the missed deliveries and I think they succesfully redelivered once.  I finally called, was assured it would be taken care of, never got the redelivery, and when the following Sunday was missed, I cancelled.  Print is dying because print is incompetent.

A few days later, a sales rep called.  Roughly:

"Hi, I'm calling to see if we can get you the San Jose Mercury News!"
"Historical evidence suggests you cannot."
"... I'm looking at the record ... seems like you had some delivery problems ... how about the digital edition!"
"No, thanks, I specifically wanted a physical paper for Sunday mornings and you missed five out of seven deliveries."
"I can get you a reduced rate!"
"So I can pay less to not get the paper?"

photo of Matier and Ross in pompous poses
Full disclosure: Since the call was (allegedly) recorded, I should mention that this reconstruction may be slightly improved from the original.  Also, I do pay for the NY Times Sunday, although it presents deeply flawed journalism on its best days.  I did pay for Andrew Sullivan's Daily Dish (also deeply flawed, albeit amazing in some ways) until he shut it down, and I paid for Talking Points Memo until they started publishing advertorials, and I still pay for the San Francisco Public Press, although they print maybe quarterly.  I will pay for quality journalism.  Anybody got some to sell?

Tuesday, May 5, 2015

Sex = Death

This skit from Inside Amy Schumer
Louis-Dreyfus: Like, believe me, no one was more surprised than me that they let me stay fuckable throughout my 40s and the fact that it continued into my 50s.
made me think of this data:

(source of data)

Monday, May 4, 2015

BMWs getting tickets, #5

So this isn't a BMW and maybe it's time to rename this series "luxury car drivers getting their just desserts".  But I'm not ready to go into the semiotics of brand selection just yet, so here's a pretty yellow Porsche getting service from a pretty yellow AAA truck.

Sunday, May 3, 2015

Taxi registration

Whenever I see a black SUV or Prius make an especially aggresive and dangerous maneuver I check the bumper to see if it has a TCP number.  I can't remember what TCP stands for, but it's for limos and such and it means the driver is probably going to do something illegal.  Staring at bad drivers is definitely a bad habit that serves me ill and doesn't improve the world, but I have trouble letting go of my astonishment at drivers trying to, for example, turn left across three lanes of heavy traffic.  I'm not quite enough of a busybody to call in complaints or anything, but in the case of this vehicle it would have been futile anyway:

Maybe a) they shouldn't allow cursive script for TCP license numbers and b) they shouldn't let the drivers apply it themselves, lest they do as bad a job applying stickers as they do navigating traffic.

Saturday, May 2, 2015

Notes on Capital in the 21st Century

I started reading it six months ago, I'm finally halfway, and here's a notes dump.

  • Income from labor and income from capital are both very unevenly distributed in every society at every time in history
  • Income from capital is always more unevenly distributed than income from labor
  • Typically, the top 10% of laborers earn 25 to 30% of all labor income, whereas the top 10% of wealthy always own at least 50% of all wealth in a society.
  • The bottom 50% of laborers always "receives a significant share of total labor income (generally, between one-quarter and one-third) but typically owns between 0% and 5% of the wealth.
  • "Wealth is so concentrated that a large segment of society is virtually unaware of its existence" [in a typical rich European country today] p225
  • In Europe 1900-1910, "there was no middle class in the specific sense that the middle 40 percent of the wealth distribution were almost as poor as the bottom 50 percent" p227.  This is a typical distribution throughout history.
  • The relative equality of the post-world-war 20th century in many countries is a historical aberration, probably caused by a combination of external factors unlikely to repeat.  The most equal societies have had a middle 40% that actually earned 35 to 40% of the income, e.g., a fair share, a middle class, but this is very rare historically.
  • Historically, r, the rate of return on capital, has almost always been about 5%.  g, growth, has almost always been about 1 to 1.5%.  During much of the 20th century, r was much lower and g was much higher.
  • Piketty theorizes that the discrepency between these two numbers explains or correlates with inequality.

Friday, May 1, 2015

Pop Quiz

Who needs the biggest hug?

a) Someone who is alone and forsaken by fate and by man
b) Someone who just realized she'd never ride/Through Paris in a sports car/With the warm wind in her hair
c) Trent Reznor

Thursday, April 30, 2015

Things that Microsoft Outlook does better than Gmail

I am quite surprised that this is not an empty list.

1. In Outlook, it's easy (if slow, and wasteful of screen real estate) to switch between mail, contacts, and the calendar.  In Gmail, it takes an extra click, it's still slow, and Calendar is off on another planet.

2. Suggest a new time for a scheduled meeting
As far as I know, you can't do that in Gmail.

3. See a list of viable meeting times
Never mind, you can do that in Gmail too.

4. Write an email to everybody invited to a meeting
Never mind, you can do that in Gmail too.