Learn Things
[Recent Entries][Archive][Friends][User Info]
Below are the 20 most recent journal entries recorded in the "shack_a_nerd" journal:[<< Previous 20 entries]
08:48 pm
[Link] |
Recycling electronics In the spirit of "a paper is a progress report, not a finished story", here's my incomplete efforts at recycling electronics and broken nerd toys in NYC. The relevant objects were:- circuit boards --expansion cards, motherboards
- a few old CD-ROM drives
- hard drives
- an old CRT monitor with "fuzzy guns"
- lots of cordless phones + base stations (N.B. not cell phones, which I'd send to Cell Phones for Soldiers)
- a cordless phone (i.e. a telephone receiver not attached to a base unit)
- an old digital camera in pretty terrible condition
- a pair of earphones
- an old pair of speakers
and other miscellaneous junk.
My procedure was to consult the Department of Sanitation's guide for recycling electronics. There I found out about the RECONNECT partnership between Goodwill and Dell. From the description I somehow got the impression that all kinds of electronic junk would be accepted -- why not, right? It's gonna get turned into raw materials anyhow. However, if you look at the full list of acceptable items, you'll see that it includes hard drives but not a lot else. Additionally, Goodwill's mission (to sell second-hand goods) confuses the issue -- if you actually go to a Goodwill location with electronic junk, they may not be willing to take it since it's "broken" or "just parts".
I ended up talking them into taking the hard drives, circuit boards, speakers and CD-ROM drives, as well as the monitor, but I think they're gonna try to resell the monitor (which frankly does a disservice to both vendor and vendee) and the circuit boards will probably end up in the garbage unless the list of acceptable items has more wiggle room than I thought. I decided to keep the digital camera, cordless phones, and other crap.
Following this rebuff, I went back to DSNY's site and followed the link to take it back nyc!, a collection of manufacturer/retailer takeback programs. Most of the crap I wanted to get rid of were not from "reputable manufacturers" (the kind who have takeback programs), so that pretty much left me with the retailer programs. Most of those were easy to rule out too:- I wasn't buying new equipment, so PC Richard and Son's program was out.
- It wasn't computers or even computer parts any more, so the Mac Support Store (N.B.: not Apple, but an Apple-certified repair shop) and Staples programs were out.
- Mostly it wasn't still working, so the TigerDirect program was out.
- I couldn't find "cordless phone" on the RadioShack or Costco "online appraisal tools", so those were out.
That left the Office Depot (N.B. not Office Max) "pay for a box of crap" program and the Best Buy "two items per day" program. I had a bag of crap, so I went to Office Depot. The basic idea here is that you buy a box for $5, $10, or $15 depending on size, and then they ship it off and recycle it. I never actually got to see the box, which they were sold out of (or something?) but they charged me $5 for half a plastic shopping bag full of crap. According to their site, there is one Office Depot location in New York City, in Times Square.
What I find annoying about all of this is how difficult it is to do the right thing. If I had my druthers, you could just throw this stuff in normal "blue-bag" (i.e. metal/glass/plastic/aluminum foil) recycling and the government would have an agreement with a recycling vendor to do-the-right-thing with the kind of crap I throw out. Instead I have to figure out what I can do with each of my individual objects, none of which are functional or salable and have negligible value as anything but scrap. And it's all the same scrap! You think there aren't circuit boards in my cordless phones? Sigh.
Next time I intend to pay closer attention to the concept of a recycling vendor. It turns out there are a couple in NYC, depending on what you want to get rid of. I bet they keep normal business hours, though, which makes it more complicated. It looks like the major player here is Gazelle, which involves shipping things and doesn't even cope with cordless (i.e. non-cell) phones. It's like the state of the art in recycling, like in electronics itself, moved on, and now you need to buy all new stuff to recycle..
Ethan
Current Music: Barcelona - Obsolete Tags: hacking, hardware, life
|
11:40 pm
[Link] |
Submerged
Sunday I spent a number of hours head-deep in Nerd Affairs -- buying speakers, playing with software, stuff like that -- and when I came up for air I felt a little dishabituated. Fun times. Speakers I used Newegg because I wanted to get rid of some money I had in my Paypal account, and it turns out Newegg has speakers located in two different places, depending on whether they're "computer speakers" (i.e. amp + eq + speakers in one device) or "real speakers" (i.e. suitable for use in a P.A. system -- no amp or eq, only high-power audio signal). This made things confusing until I realized I didn't recognize the specs much less understand them, and that speakers weren't this complicated (or expensive!) last time I looked at them. It makes sense to differentiate the categories, though, so I don't really know who's at fault. I ended up getting these, not least because I was playing with Hunch. Surprisingly enough, Hunch's top three picks included two that I was torn between, without asking any of the questions I would have expected a human salesman to ask (like "What kind of music do you listen to?"). Also not surprisingly, I spent wayyy too long on a decision I wasn't qualified to make and for which I have no way to judge the outcome. So, uh, yay? rst2wp My newest weekend hack is a script to convert ReStructured Text to HTML and post it to a Wordpress blog, while also doing some custom stuff like uploading images to the blog so they aren't hotlinked. This involved interacting with two pieces of software: the docutils package (the only implementation of RST yet AFAIK) and the Wordpress API. The program is called rst2wp. The Wordpress API is implemented in a Python module I found/hacked up a bit, and it turns out the XML-RPC API is awkward in the extreme -- there are four different namespaces for methods, some methods duplicate functionality, some functionality isn't covered at all, the names aren't always maximally useful (i.e. editPost is what you call when you want to SAVE an existing post). Docutils is such a contrast here. Everything is where you'd expect to find it. Everything has a clear function. Maybe it's just because this is my second or third time reading the code, but everything is clear and easy to understand. If you forget to implement something, you generally get a helpful error message. It's a mature codebase, and contrary to WP which is hindered with backwards-compatibility constraints, inferior language, etc., it's aged like a fine wine. The only things that might have made my life easier with regard to docutils are: - If you make an inline reference like |foo| to a non-inline element like .. |foo| title:: Hi there, you get a crappy error message like "invalid inline reference" without explanation for why it's invalid.
- I wish I could easily round-trip RST so I could modify the document's syntax tree and write it back out without resorting to hacks like writing text into the file (which wasn't hard but is a little annoying). It looks like some people were working on this without much success.
Also, I wish RST was a little bit easier to edit/remember. But I guess you can't have everything. Altogether the tool took about 14 hours to write over a couple weekends, and (apart from the WP library) fits in one file (721 lines total -- approx 500 LOC, the rest comments/docs). One thing that I found interesting is how complicated it is to just be a well-behaved citizen of your environment -- to parse command-line arguments, read settings from a dot-rc file stored in a directory specified by XDG Base Directory -- it's not trivial, and it's not as much fun as "just" doing the fun stuff and letting your users tweak constants at the top of your program. Just reading a config file/writing a skeleton if you can't find one is about 25 lines of code. With that I should probably announce that as part of my Personal Information Interface I have a Wordpress blog, but I'm still going to keep my actual blogging here. Synchronous Communication (AIM) When last we left our heroes, we found that Pidgin was gradually alienating its userbase but no real competitor had yet arrived. I'm happy to say that Empathy and Kopete are much more plausible rivals now, even though neither is quite there yet. Both have better logging than Pidgin does (XML-based data format instead of HTML transcripts). Both store passwords in your keyring, which is awesome. And neither has yet demonstrated the same weird bugs Pidgin has had lately with mis-handling status messages on AIM (I'm always shown as "Away" or something). Empathy (2.26.1): I didn't even know this was a real program, instead of just a framework. The main complaints I have with it are that: - you only get "one line" status messages, which means no song quotes. The ability to save/manage old statuses isn't good for that sort of use either.
- auto-responses are not visually distinguishable from normal messages (although they do get logged differently) and, this being Gnome, there's no way to, you know, change the color or something.
Kopete (0.70.2 with KDE 4.2.2): The appeal of a thorough KDE PIM suite is great indeed. Additionally I saw something that said "identities", a concept in messaging software that automatically garners my interest (although I didn't read the docs yet). But: - I can't easily mouse-over people on my list to check their statuses -- they come through as un-processed HTML (should be filtered or, ideally, interpreted) and hovering has to happen for too long (.75 of a second?)
- the "sensing that someone is typing" code is totally wrong. The correct behaviors are: "Ethan is typing" when I start typing, no "is typing" status as soon as I delete the whole message, and "Ethan has stopped typing" if I stop typing for a few seconds but there is still text.
- Auto-replies don't come through at all.. something weird is going on here.
In both cases, a real man would have patches and sadly I don't. Still, I expect that they'll both be better than Pidgin next time I check. Reading I really enjoyed "Halting State" by Charles Stross and I just finished a short story called "The Policeman's Daughter" by Wil McCarthy which I enjoyed very much. I also read and enjoyed the compilation (excuse me -- anthology) "Distant Early Warnings", it's full of great stories. I also just read "The Jenna Set" by Daniel Kaysen which was laugh-out-loud-on-the-subway funny. Ethan
Tags: hacking, life
|
10:16 pm
[Link] |
Health Insurance Horror Show! There's an ongoing discussion between me and Beekey about health insurance, the medical system in this country, and how fucked up everything is. I think he agrees that everything's fucked up, but to make sure that point is made clear, I want to talk about mom for a bit. I'm not whining -- we're all big kids and we can take care of ourselves -- but you may detect a note of nonplussedness in my tone tonight.
Mom has six artificial joints -- both shoulders, both knees, and both hips have been replaced. She's had them done over the last decade or so due to various organic failures (perhaps summarizable with the term fibromyalgia). We did not "buy one get one free". As medical treatments, I believe her experience with the joint replacements has been really positive -- previously, shrieking agony and inability to do more than hobble; now, walking short distances and increased independence. Her range of motion is pretty limited, but compared with, uh, no range of motion, we'll take what we can get, thanks.
Her left hip has been giving her trouble for about a year or two now. Dr. D is the doctor that replaced the hips and knees and thus the specialist she visits. She visits him regularly to keep track of her state. He's not our favorite doctor for a variety of reasons, but (as mom says) there comes a time when a doctor who knows your history has an appeal all his own. Since mom started complaining about her hip, he has been taking X-rays every four months. The first X-ray showed something like a dark spot just behind the joint, but that isn't really diagnostic. At first his prognosis was that perhaps the screw heads in the "cup" part of the joint were wearing away part of the "ball", and that the shavings were, perhaps, accumulating behind the cup, doing all kinds of exciting things. Or perhaps it was an infection. God knows mom's basically a hobbling petri dish, who knows what's going on in there. But the X-rays weren't changing, so he really couldn't do much.
Mom urged him that if he were going to do any surgery, sooner would be better than later, because of the thing about the insurance. Oh, right -- about the insurance.
My parents are both on my father's insurance. He's retired now, but as part of the retirement package he gets coverage under his former employer's health insurance (Oxford) so long as he lives or something. Except that he got a note saying that at the end of 2008, he was being changed over to a new insurance; he got his choice of two or three, and after confirming that the entire menagerie of doctors was covered by it, chose to switch to CIGNA. Only, fun fact, last time I was at Dr. D's office with Mom, we were informed numerous times very clearly by Dr. D's staff that Dr. D is *not* covered by CIGNA, no matter what CIGNA staff were saying. CIGNA staff, equally helpfully, informed us that yes, in fact, Dr. D WAS covered, no matter what Dr. D's staff were saying (which seemed to be something like "we don't care; we're still not treating you"). Dr. D's staff clarified that in fact, they've had dealings with CIGNA in the past, along the lines of: CIGNA tells Dr. D that they are part of The Network or something; Dr. D attempts to bill CIGNA or however it works; CIGNA says, "Oh, sorry, we meant the OTHER Dr. D, whose name is identical with yours, only he's not an orthopedist he's something else, only he might actually also be an orthopedist", I don't remember exactly how it goes. To which CIGNA replied that no, the doctor whose office you are standing in right at this moment is in fact covered, and if you let us talk to the accountant or whoever, we will make sure it gets fixed.
This was about when the receptionists became "even more less than unhelpful".
Dr. D's waiting room is horrendous -- waits of five or six hours are the norm -- and we had sat through those fucking hours and by god we were going to see Dr. D. So we were standing there trying to get ahold of the accountants, who are in an office downstairs, and offering to pay out of pocket, since CIGNA said we could do that and they'd reimburse us later, and while I was waiting for the receptionists to cope with both of these novel ideas at once, I am sorry to say mom may have uttered a few unprintable words. This sent the younger, waifier receptionist downstairs to fetch Diane, the office coordinator or god-knows-what really (we learned later that she said "Diane, Donna is being mean to me" -- to which Diane said "What did you do to Donna to make her be mean to you? Because I've known Donna for a long time and she had to be pretty upset in order to let loose on you" -- which, as anyone who knows mom can attest, is completely false, because mom is not, by any stretch of the imagination, a diplomat). Anyhow, eventually we got that mess straightened out. Only much, much later did we discover that in fact, the plan my parents are on isn't garden-variety CIGNA; it's a little plan I like to call CIGNA*, where the star indicates "with some differences". One such difference appears to be that Dr. D IS covered by CIGNA* where he is not covered by CIGNA-no-star.
So anyhow mom says "Gosh it sure would be nice, before any of this stuff actually happens, that you do whatever surgery you're going to do so that I don't have to try to juggle insurance companies on top of all the other stuff." And Dr. D, perhaps thinking of liability, or perhaps merely thinking Doctor Thoughts about how the X-rays haven't changed visibly, says he can't operate yet.
Over the last few months mom's pain has continued, maybe even gotten worse, and it hasn't been clear why, but the most recent X-ray showed a visible change in her hip joint. It looks, Dr. D says, as though the joint has been moving. This is bad. The procedure in such cases is as follows: aspirate the joint (extract fluid and see what's in it). Maybe it will turn out to be infected all along, in which case: antibiotics the fuck out that bitch and hope it gets better. Antibiotics for deep-tissue crap like bone can take six weeks or so. If that hasn't helped, then open her up and replace the joint. I don't remember whether they have to take the joint out, let her recover from the surgery, and then put the new one in, or whether they can do both at once, but either way we're talking Doing Time in the Big House. At first Dr. D said "wait until you're over whatever UTI you're working on right now, then go on in", and he said "try to protect the hip from weight-bearing", but then after a few weeks he said "actually you should go in Sunday" and "you might have a fracture" and "don't put any weight on the hip at all". (Again it isn't clear if the change in story reflects liability, Doctor Thoughts, or something else.)
So Sunday evening we went in to HJD to get mom admitted. She had a prescription to get the hip aspirated and then presumably to be pre-operated or whatever, and we explained this to the Sunday-evening hospital staff as we tried to navigate the relentless bureaucracy. They tried to call Dr. D to figure out what they were supposed to be doing, but may not have actually gotten ahold of him (it isn't clear). After only four hours, we were able to get her situated in the hospital. Yesterday they did the aspiration, which looked "a little cloudy" (according to Dr. W).
Today they told mom that she has to go home. Nobody's telling her why. We tried calling Dr. D's office, only to learn that - "Actually Dr. D isn't here and we've been trying to reach him too."
- "Wait you're in the hospital? Why are you in the hospital? Nobody told us you were going in to the hospital."
- "CIGNA's been giving us grief or vice versa again."
We think the hospital may have become hopelessly confused about insurance details and (rather than coming to us for guidance) is messily dumping core. Despite the fact that they're basically throwing us out, they are telling us that we cannot drive mom home (which is how we got her in there Sunday) but that she must be taken home by ambulette (ambulettes are not covered by CIGNA*). Of course, mom could just sign out AMA and go home however she wants (and mom, being mom, is no stranger to signing out of hospitals AMA). Of course this is all proceeding at hospital speed, meaning I can write 1500 words about it and then sleep the full night without worrying that anything's going to happen. It is not clear how any of this impacts her treatment.
Beekey has said that one thing he does not like about socialized health care is that it increases accessibility at the cost of quality. He would rather have good health care for a few rather than shitty health care for everyone. My response is that if the current system provides good health care for a few, I haven't heard about it. My parents are well-off. Medically mom's case may be complicated, but that's no reason for her case to be complicated administratively too. When I look at the mess of crap going on, a nerd like me only thinks of one thing: refactoring. This mess could be a lot SIMPLER with a public option. I don't know if socially or fiscally it would be an improvement -- but I'm pretty sure it couldn't be much worse.
Ethan
Tags: life, politics, writing
|
12:53 am
[Link] |
Organization I've been interested in heavy use of org-mode for a while, and I've had too much in my head to get anything done lately, so I spent a bit of time today putting into action the first of a number of moves to restructure my information processing setup. This entailed refiling a bunch of crap into a set of org files in a new git repo that'll be hosted on my laptop and exported to my work computer. Overall I probably spent about 6 hrs on it. It feels good in the way that only someone with OCD can really appreciate. Yay, I finished alphabetizing the fish, good job!
The problem that kicked all this off is that I'm constantly submerged in the Internet. I've been using Google Reader's "keep unread" and similar functionality in a bunch of email programs to create markers to remind me which objects need further processing, but then you still need to remember not to reread the items or let them get marked read. As a process, it doesn't really scale well. I'm hoping that by adding an extra channel (dumping crap into org files) I can beat the system.
Ideally I'd be migrating off of Google Reader. I want something less resource-intensive, plus I want a more flexible interface. The killer features for Google Reader are:
- Centralized. Read an item once, it's read everywhere. Don't have to sync which items are read/unread across machines.
- Share with friends.
I'm hoping to replace the "Share with friends" functionality with something on a real blog. That's probably the next step. I'm thinking one of the out-of-the-box blogging setups on a new dreamhost subdomain.
As for the centralization problem, I don't really have any great ideas. I could SSH into my home computer and use a console-based RSS reader; I could use something like rss2email to translate into another medium; or I could try to roll my own, using some clever combination of software. Well, later-for-that, I guess.
Ethan
Tags: hacking, life
|
12:02 am
[Link] |
Dreaming Tuesday morning, in a dream: I and my co-workers are working the whole night through at the client office. One of them writes in an internet chat that he "<2"s something. As a lark, I decide to file a bug report on the conversation. Bug reports at the client location apparently involve filling out an actual paper form. On the first half of the second page, I summarize: "Your <3 was mistakenly decremented. Please amend."
Monday night, in reality: My phone buzzes. I have received a text from a number neither I nor my phone recognize. The text reads: "Sweat into my mouth you delicious golden retriever".
I guess it's really no surprise that my grasp on reality is so tenuous.
Today I mistakenly let my guard down. I don't really know what happened, but I definitely said "Don't leave" in a pitiful, pathetic voice. Then: "There's chocolate over there," to which she replied: "Yes." "Have some," I said, with some intensity. Then I turned away. The only time I'm truly open any more is when I'm really tired. I enjoy staying up late with friends for exactly this reason, but it turns out that it can be scary too. I guess maybe this is why people drink -- because they want to get over the rules they have to live with during the day.
The whole episode was pretty embarrassing, so I need to be sure to sleep hard tonight, so I can be tough again tomorrow. But first I'm going to press submit, before I reread this post and think better of it.
Ethan
Tags: personal, tired, writing
|
02:12 pm
[Link] |
Disappearance Discovered today that for a couple weeks famed Internet hacker _why the Lucky Stiff has been missing. Source. I'm kind of in shock. _why's Poignant Guide was, I don't know how to explain it, a fixture in my heart. I've read it dozens of times. When I was sad I would often return to the Poignant Guide and reread it, just pick it up from any chapter and start reading, and it would never fail to cheer me up, to remind me that there are wonderful things out there, and to inspire me to try to contribute something of my own.
Once I commented on the poignant-stiffs mailing list that I thought it was less of a useful programming guide for people who didn't know how to program already, and more like a novel for computer programmers. In response, _why mailed me a picture of a duck -- snail mailed me a cardboard frame, with a picture of one of his ducks with trumpet beaks glued on to some other picture. I still have it.
Here is a _why story that I love to tell. Spoilers if you haven't read the Poignant Guide.
sidebar!
In chapter 1, the narrator tells a story to "get you in the mood" for the Poignant Guide. "Here's something poignant to get you started." It's a story about a dog who he found and adopted, named Bigelow, only to lose him right away.
In chapter 5, the narrator reveals that he is a Preeventualist. Preeventualism seems like a fairly new philosophical doctrine, asserting that the nature of all predictive thought is optimistic -- even dystopian futures are "optimistically" predicted to come true. Therefore preeventualists just "focus... on the understanding that hope will always prevail in any sort of thought". I'd never heard of preeventualism before, but it made sense that someone on the cutting edge of Internet programming would also be on the cutting edge of philosophical discourse. And it was cutting edge -- no wikipedia articles, no podcasts, nothing. Just one page of actual information on the preeventualist homepage, and that shout-out in the Poignant Guide.
But it's a pretty compelling philosophy on the face of it, and they have a preeventualist youth group responsible for maintaining the web page (which is probably why it went down with such frequency). You can see other examples of preeventualist thought if you know what you're looking for: Anathem is pretty preeventualist, and if you start to think seriously about Long-Now style timescales I bet you'll become somewhat preeventualist yourself. (You'll start to mix up words like "molding" and "embroidery".) And of course there's always Ashley Raymond's blog, which sadly doesn't get updated at all. In fact, there's only the one entry, in which Ashley Raymond talks about his time with his dog, whom he called Biggles, whose "accusatory gaze often hinted at how wrong my pronounciation must have been".
Wait. Biggles? Bigelow?
So I did a whois on preeventualist.net, and sure enough, it was registered to _why the Lucky Stiff. Conclusion: the dude FABRICATED AN ENTIRE PHILOSOPHY FOR A THROWAWAY JOKE IN HIS STUPID BOOK. And it wouldn't be so stunning except that I BECAME a preeventualist in the time between discovering the philosophy and discovering that it was "fake" (if such a thing can be said of an idea).
sidebar!
I imagine that _why wove dense tapestries of ideas like this in all things, that you could pick any facet of his work and explore it, and there would turn out to be layers upon layers of meanings and jokes. Even the works I don't understand are still sort of magical. To borrow a phrase: if Amazon ever publishes THE LAUNDRY LISTS OF WHY THE LUCKY STIFF I will be the first person on earth to pre-order a copy. Legendary projects like "The Least Surprised", "Hoodwink'd", "Hackety Hack" -- these will inspire us for a long time to come.
I've gone on for way too long already, so I'll close with some quotes from people who said it way better than me, and then go read the Poignant Guide for a much-needed pick-me-up. If you'll excuse me.
Ethan
His virtual suicide, like the self-induced death of a friend or loved one, leaves an indescribable hole inside me. I don't like it, I wasn't ready for it, and I don't think its fair that he did it. --Dr Nic on the rubyinside threadI know I will try to continue your legacy, somehow. This is absolutely not an end, just a change. It is all our jobs now to finish what he started. --Jenna "Bluebie" Fox on the Eulogy to _why
Tags: eulogy, long now, personal, sadness, writing
|
11:00 pm
[Link] |
Development One day I am going to be tasked with the design of a system and I am going to come up with design goals like:
- It should be embarrassing to talk about in public. - Efficiency of specification is more important than efficiency of implementation. - The reference implementation should make it to the Slashdot front page.
And out will come some wacky shit like an IPC mechanism where nobody can figure out which messages are Spanks and which are Booty Calls. I just want to apologize in advance.
Ethan
Tags: writing
|
10:09 pm
[Link] |
Online Banking, and it doesn't work In lieu of being creative this evening I tried to at least be productive and set up Gnucash to automagically talk to my financial institutions using Direct Connect. There are two I really care about, HSBC for my checking account and CapitalOne for my credit card. Neither support Direct Connect "any more", although they seem to have in the past[*]. It seems the "preferred" mechanism these days is Web Connect, which entails logging in using your browser, selecting an "export" function, specifying a date range, saving a file to disk, and importing that file into your financial software. In other words, it's pretty damn far from being automatic. (AFAICS this is true even in commercial financial software such as Quicken or MS Money.)
But that can't make sense.. can it? Why would they just drop an obviously useful function like that?
Does anyone have any experience in this area? It looks like there are online services like Mint.com and Yodlee MoneyCenter which claim to connect to lots of financial institutions -- perhaps even these -- but I can't tell for sure with my primitive Google skills. Is Direct Connect a feature worth looking for in a financial institution? What's the right approach for a nerd with a bank account in 2009?
Ethan
[*] The story for CapitalOne is of course more complicated -- see msmoneycaponesupport.blogspot.com for the full story.
Tags: hacking, technical
|
11:11 pm
[Link] |
Incoming story I have been working for a week or two on a new short story. The working title is "Salesmen" but really that's arbitrary. (Comes from the first line of the story.) I'm hoping to submit it to SHINE. Right now it's about 3000 usable words, most of which is crap. I've been writing almost entirely on my N810, and it's been an interesting experience. When you're clicking out sentences one letter at a time, you spend a lot of time with each sentence, and you find out that most of them are terrible -- warped reflections of the intents you had. The first draft isn't even done yet, and I've written at least 800 unusable words that veered off into the weeds very badly, so it's been bumpy going.
I'm writing this note for two reasons:
One, it would be cool if people I knew submitted stuff to SHINE too. It would be even cooler if they were published. I know at least one person reading this harbors vaguely literary ambitions. I hope this note will spur them to write, because hey, even Ethan's trying his hand at this crap. (Ordinarily I would wait until I was done, but I don't think that will give anyone else enough time.)
Two, I am realizing that the story doesn't really have "conflict". I am not sure how to feel about this. There are themes in the story. Things happen. Progress is made. Eventually I think a climax is reached. That all seems like enough to me -- maybe that's what "conflict" really is. Maybe not; secretly, in my heart of hearts, I think I'm just having fun writing about some characters I care about.
Ethan
Tags: life, writing
|
11:40 pm
[Link] |
Optimistic Science Fiction I just saw a post about optimistic science fiction, including mention of a compilation due out called "Cheer Up, Universe", and one that's still soliciting stories called SHINE ("an anthology of optimistic near-future SF").
Those of you who have hung around me long enough have probably heard me mention Science Fiction Without the Future, an essay criticizing Science Fiction as a whole for tending towards darker stories of the future, musing that this might reflect a larger alienation with technology on the part of the Baby Boomers who still read Asimov's, etc. This essay really resonates with me, and as a card-carrying elitist I have no choice but to love the thing that isn't done as often. (Best new authors to produce optimistic sci fi: Cory Doctorow and Charles Stross.) Besides, I try to be an optimist in my day-to-day dealings, so it's kind of a foregone conclusion that I'd like to write a story for SHINE. I'd like it even more if people I knew wrote stories for SHINE. If you have a short story you've been waiting to write, now might be your chance. (Guidelines: "Convincing and optimistic: Imagine that we are the biggest skeptics on the planet, then show us how things can change for the better, and persuade us.")
Mom suggests that people of my generation don't really get our science fictional "jollies" from pulps/books any more, but instead from somewhere else. I think that's an interesting idea -- perhaps we draw that same "sensawunda" or sense of "progress" from reading blogs, buying new gadgets, lifehacking -- and P.S. also you can get them from tor.com, the best watering hole for science fiction discussion today. Art forms are changing all over -- as you may know from reading the Thoughtcrime Experiments anthology, "It’s well known that there’s an oversupply of stories relative to readers", and the repercussions are still being felt.
Ethan
Tags: memetics, writing
|
07:54 pm
[Link] |
G1 support for external keyboards I got a few adapters to convert the mini-USB connector on my G1 to a USB-A female port (suitable for plugging in a keyboard or other peripheral. It doesn't work; my suspicion is that the phoe doesn't have an actual USB host chipset. Live and learn I guess.
I also grabbed a Bluetooth keyboard, which seems to pair with the phone, but doesn't actually send keystrokes. As far as I can tell, Android still doesn't support the keyboard Bluetooth device profile, even in cupcake.
Ethan
Tags: review, technical
|
11:59 pm
[Link] |
Want a pony? It's a well-known meme that software developers will say "I want a pony" to indicate that a just-made request is unreasonable -- either theirs, or someone else's. My guess is that the meme is based on images of young girls unreasonably asking for a pony as a present (completely ignoring the cost to purchase or maintain a pony).
Geek culture, internet culture, and several other such associated cultures are sexist to varying degrees. But a prejudiced person typically does not borrow memes from the target of their prejudice. Where did this meme come from?
Relatedly, Slashdot has (as an April Fool's joke) changed color scheme from dark green to pink, and changed tagline from "News for Nerds" to "OMG Ponies". Response was generally pretty positive.
I'd also like to suggest that it seems that computer programmer nerds tend to joke a little more freely about their sexual orientation. No numbers, just offhand observation, and I'd love to be proven wrong (since it could be some kind of observer bias).
Ethan
Tags: life, memetics
|
09:49 pm
[Link] |
Flipping burgers again Started my first day of school today. I played nice with the other kids (and the other teachers?). Didn't insult anyone, although I did almost. (I said PC, not Mac; how hard can that be to get right??) I shouldn't bitch -- they gave me a bar of chocolate (dark, by happy accident), plus the "Operations Team" (i.e. receptionists/paperworkers/general make-everything-work people) are very attractive [hah! Proof I'm getting back to normal]. One thing is that they kept saying things like "We're happy to have you join us" -- how can you be happy when you don't even know what I'm like yet?
Of course, starting a new job means I have things to bitch about w.r.t. OS X. Today's:
* No support for ext2/ext3?? How can you possibly justify this???
* This hasn't reached the level of furious rant yet, but I do think the way environment variables are handled on OS X is a little fucked. Individual shells run /usr/libexec/paths_helper or whatever, but applications that are run directly from the GUI get a completely different environment -- to wit, one with the wrong $PATH. Why?
* Terminal.app still sucks. Fucking god, you have Control, Option, AND Command! You'd think one of them would be an Alt key.
* No pageup/pagedown keys. No forward-delete. And a NO-BUTTON touchpad. A new high or something.
Ugh. That's all. Time for bed (like an hour ago).
Ethan
Tags: life, technical
|
08:26 pm
[Link] |
Reset my G1 again -- or did I? Friday I dropped my phone on the sidewalk. Friday night I had contacted Asurion, who handles the warranty/insurance for the phone. I pay $6 a month so that I don't worry about dropping it, but it turns out there's a $130 deductible, so that's what I paid. I had my new phone Sunday or Monday, I can't recall. I had to send in my old one, of course, but I had taken a backup using nandroid before I did, so then it was just a matter of getting the data onto the new phone.
It turns out there are a couple of gotchas to pay attention to here. The restore is much more complicated than the backup. You can verify, if you like, that the restore worked by untarring data.tar -- it'll create a data directory. Received text messages are in data/data/com.android.providers.telephony/databases/mmssms.db, call log is in data/data/com.tmobile.myfaves/databases/contacts.db, etc. However, in order to successfully restore:
- The android SDK builds a mkyaffs2image which creates a different image from the mkyaffs2image-$ARCH precompiled in nandroid. I didn't spend a lot of time looking at the differences; I doubt they're significant, but to be sure, I ended up using the precompiled one.
- You have to untar the file AS ROOT, in order to get permissions right. If you do this wrong, you will have fascinating crashes from certain applications, wifi won't work, and so on. (If you have just restored and have weird misc failures that seem to go away when you erase userdata, this is your problem! Other miscellaneous failures I encountered like this: my accelerometer wouldn't work in Bubble Level application, ringtones got set to random values,...) You should be able to use fakeroot or something like it if running as root bothers you, though. Someone should submit patches..
- You have to be sure to run mkyaffs2image or mkyaffs2image-$ARCH on the right directory -- /tmp/-data-tmp/data instead of /tmp/-data-tmp, or /tmp/-system-tmp/system instead of /tmp/-system-tmp. If you get this wrong, your phone won't boot.
- fastboot flash userdata ~/path/to/data.img as discussed elsewhere.
- You may also have to rm /data/misc/akmd_set.txt to erase previous calibration of the accelerometer if it still isn't working.
So now I have my phone back, only missing three calls from my call log. Good enough for now.
It seems that the de-jure standard way to do backups is "in userspace", using something like MyBackup Pro. But having a rooted phone allows you to use "commodity software" like nandroid to backup everything, even including applications (which something like MyBackup Pro can't do). For this reason I would advise anyone to root their G1 the first thing they do. [Insert spiel here about how Google sucks for making a non-open source phone, pulling the wool over our eyes, etc.]
In other news, there is a lot of interesting activity going on in the Android community re: the production of illicit images. JesusFreke has a "brand name" for having been the first to produce rooted images, but now there's someone else (Haykuro) who seems to be producing a competing series of images based on Cupcake. ALL I WANT IS MY emacs, my python, my git, my bzr -- it's REALLY NOT SO HARD!
Ethan
[Edit: hmm, fakeroot should work too, right?] [Edit: 10:13 AM the next morning: added the part about how you have to specify the right directory to mkyaffs2image, since I struggled with that for a while.] [Edit: 11:39 PM: last thing about the accelerometer.]
Tags: life, technical
|
04:24 am
[Link] |
8-Bit Tarot Why wasn't I informed?????
Ethan
Tags: found
|
07:32 pm
[Link] |
Singularity I'm sure it's clear to you that I must still be unemployed, since the frequency of my postings is back to once-every-four-days. With luck this won't be true for long, but who can say?
Lately I have been taking an interest in "the long view". You may have heard about the Long Now Foundation; they have a Long Bets project. Today I'd like to write a few words about the Singularity. Background reading might consist of the Hob story arc on Dresden Codak, but then again that might only confuse you.
"The upheavals of the last twenty years have been unbelievable: the kingdoms of England, Holland and Spain have been transformed as fast as scenery in a theatre. When later generations come to read about our history they will think they are reading a romance, and not believe a word of it." --Liselotte in a letter to Sophie, 10 June 1706 [quoted in The Confusion by Neal Stephenson, p.811]
One argument in favor of the Singularity is that the pace of technological and also sociological change seems to be increasing. After all, we now have the Internet, with all that entails: Craigslist kills newspaper classifieds, the blogosphere and Google News kill AP, open source software kills Microsoft, etc. ad infinitum. There are other changes too: netbooks are introduced; smartphone techonology has taken off -- hell, even mobile phones are a pretty big deal -- and others from your own field, I'm sure. A graph of paradigm shifts shows that they seem to be happening closer and closer together. But are changes accelerating, or are our perceptions skewed?
For example, consider an educated person's worldview in 1800. In the last 25 years, there have been revolutions aplenty. Something called democracy is making a big splash; elections are held in America, the Netherlands. Napoleon Bonaparte is rising to the top of the new Republic of France, which is invading Italy. A vaccine for smallpox is administered for the first time. The cotton gin has just been invented; so has the optical telegraph. Wouldn't things be new, fresh, and exciting? Wouldn't you predict a world just around the corner that was free from tyranny, disease, famine?
Developments are always happening, and I bet a list of "paradigm shifts" from 1800 would show a lot of events that we now think of as insignificant or minor. My bet is that progress isn't really increasing -- only that it seems that way, because the developments we understand best, care about most, and therefore list as most relevant, are the ones that just happened.
Professor Ingalls, when I took his class on networking in 2006, said something like "When I taught this class in 2004, I said IPv6 was Just Around The Corner.. and that's just as true now as it was then." I laughed out loud, because to me the forgone conclusion was: "And in 2008, it'll still be just as true." I'm not convinced that a new world is just around the corner. The data might show that, or we might just be compiling it wrong.
Ethan
[Edit, 22 April 1:13 AM: The essential point of this post, which I'm sure I didn't make clear, is this. Imagine you compiled a list of all the important social changes that have taken place throughout history. Now imagine that 70% of the changes on your list happened in the last 100 years, and about half of them happened in your lifetime. Would you conclude that the pace of social change was changing, or merely that you have a statistical bias in your data collection techniques?]
Tags: life, long now
|
04:22 pm
[Link] |
HTTP Caching My preliminary testing suggests that if an HTTP response is cached, then as long as that response is cached, the browser won't even ask the server if anything's changed (no HEAD method, no conditional request, nothing). In other words: the cache can get arbitrarily stale and the browser will never know. Sometimes the user can "force" the browser to get a new version using their "refresh" command, but I've definitely had trouble lately with stale CSS files.
More information than you ever wanted to know about caching, which browsers do it, and under what circumstances, can be found here.
In theory, you should be able to invalidate an item in a user's browser cache by making them POST to that URL, but 1. this doesn't work in current versions of FF, but it should soon, and 2. this doesn't affect OTHER users who might need their browser caches invalidated too.
For a web application developer, this raises some questions. It seems as though you don't get an opportunity to tell the browser that its cache is invalid -- AFAICT conditional requests are only issued under certain rare circumstances, when the browser already thinks its cache is stale. So if you have volatile information, you have to disable caching, or severely constrain it (Expires: five minutes from now), or you can work around it entirely. At 10gen, the application server we worked on had code that would read HTML and rewrite <img> tags to include an ?lm= "freshness" parameter, thereby working around the browser cache using knowledge of the filesystem. This would be pretty trivial to do in Lockers, since all URL generation goes through one method (Node.url_to), but it seems like a hugely ham-handed technique, plus it leads to fugly URLs (but only for <img> tags).
I did a little poking around on Flickr and Picasa, and I think they both use a variant of this technique. A Picasa image preview might look like
<img src="http://lh4.ggpht.com/_p3ZL1muhkaU/SeZKiTZ0YhI/AAAAAAAAABI/SUu5t8M7Klk/s720/DSCN0397.JPG" />
I have bolded the parts that change when the image changes (i.e. I rotated the image, and img tags changed). More of the URL might change too, if I played with it more. These tags therefore seem to be generated on-the-fly when rendering a photo gallery, based on information in the database. If you try to fetch one directly, you get an ETag like "v12" or "v17" and an Expires: about a day into the future.
Ethan
Tags: hacking, technical
|
12:54 am
[Link] |
Secret Project: delays FTW I originally expected that I could save some time by implementing a shitty file uploader for the here-and-now in Lockers and it would be a fine stopgap until someone "did things right" (which meant writing an F-Spot plugin that would upload tags and shit). So I implemented an upload handler that would accept a zip file, git-add it, and then unpack it, and git-add all the unpacked files, and turn that bitch into a photo album. It turns out this is a REMARKABLY STUPID idea because although I may want a user to download a zipped version of a photo album, I'll probably want to generate it on the fly, and memoize it (which I do and works great) so there's really no use for the original zipped file WITH THE ADDITIONAL overhead of sticking that bitch into git. That's approx a 4x overhead for each image uploaded, when it really should be 2x. Not to mention that git-add mmap()s the file, which causes DreamHost to gun git ("you're using too much memory") once you cross approx 80 MB. Gunned git processes leave dead locks and so on. It's a bad scene. Additionally this means re-uploading the file, which at 400K/s upstream takes FOR-GODDAMN-EVER.
This dovetails nicely with the limit on FCGI processes running for longer than about 10 minutes without getting gunned.
This is just one of about four MAJOR, CRITICAL SHORTCOMINGS that I really should have addressed before trying to put Lockers into production. Instead now I am thinking I should spend another couple days polishing the thing, until I have at least ONE of the following:
- a multi-file album uploader, or an image upload API, or, god, ANYTHING
- ETags
- ?lm=foo on CSS/JS files so that I'm not stuck with weird caching failures when I want to make my layout a little less dysfunctional
- a link to view an image fullsize!
Of course, this doesn't even cover the MAJOR ESSENTIAL missing features like tags, user registration, a layout that doesn't make you want to eat kittens, and I'm sure you get the picture.
MAINLY this post is an apology to Beekey, who has been waiting patiently for me to upload photos from a couple weekends ago. Well, I'm not there yet. But I HAVE uploaded approx 750 MB of photos from roughly 2008-05 to 2008-06. Please feel free to visit them until I have found the patience to wipe the DB and start over.
Ethan
[Edit, 2:02 AM: and don't actually TRY to download a zip of any of the albums, because that process will get gunned after 5 minutes like the rest. Thanks for nothing, Dreamhost! I have no idea how I'm going to fix THAT..]
Tags: hacking, life
|
12:03 am
[Link] |
Rails plugins It turns out you don't have to do anything in particular to "activate" a Rails plugin -- but you do have to restart WEBrick.
Ethan
Tags: hacking, life
|
11:56 am
[Link] |
Printing using Samba and CUPS It turns out CUPS can print to a SMB-hosted printer using smbspool. It worked for me pretty much out of the box. First:
- Configure CUPS. On Debian the easiest way is probably to point a browser at http://localhost:631/
- Add printer. Name, Location, Description are up to you.
- Device: select "Windows Printer via SAMBA"
- Device URI: something like smb://machine-name/printer-name. Spaces are OK.
- Providing a PPD file: you actually have to do this, even for an SMB printer! smbspool fills in the role of lpr or equivalent -- a "dumb" transport to get data to the printer. Fortunately the CUPS database is pretty thorough these days, and if you get it wrong, you'll know.
Once the printer is set up using CUPS, Firefox et al will see it automagically. All in all, I got things working in like 15 minutes. Pretty impressive for what was once a huge weakness in the Linux platform.
Ethan
Tags: hacking, life
|
[<< Previous 20 entries] |