elfs: (Default)
To the nurses, I am the bed whisperer!

Unfortunately, Not like that. But it’s still cool.

During my recent hospitalization, I was stranded on a hospital bed. Since I had fainted due to blood loss, I wasn’t allowed to get out of bed without an attendent. They even had frickin’s lasers watching and if the lasers sensed both feet on the floor an alarm would go off.



Nurse’s panel

Worse, the beds were broken. But, as someone else said recently, “I have ADHD, an internet connection, excellent research skills and poor self-regulation.” I took photos of the nurse’s side panel and underside to identify the make and model, downloaded the manual, discovered that it was no help at all, but ultimately found MedWrench, where nursing home technicians exchange gripes, complaints, and potential solutions. They hate this particular bed, but it’s popular because it’s cheap. Quelle surprise.

At one point, the nurse was struggling to make the bed go up. “Let me,” I said. “I’m the bed whisperer.” I reached through the handle, pressed the Global Lock + All Lift Locks buttons simultaneously, then pressed the specific lift she was looking for (raising the head of the bed).

“You are the bed whisperer! How did you do that?” She looked incredulous.

I explained, and I said I didn’t know how long that hack would last before the bed failed entirely. MedWrench says after that, you have to dig a panel open and re-seat a chip on the control board; it’s poorly held in and falls out if you move the bed too often. The most approved technique is to drill an 8mm hole at a location shown in various images and push the chip back in with a pencil eraser.

A little later, a nurse was checking on my roommate. She shuffled over to me and said, “Can you show me how to unlock the bed. The other nurse said you know how.”

“I can’t unlock it if that’s not working. But I can show you how to override the lock while you’re using the bed.” I showed her the trick (Hmm, two in the front, one in the back… I should nickname it The Shocker!), she went to the other patient, I heard the whirring and she shouted, “It worked! Thank you!”

Pretty much by the end of the day the nurses had all taught that trick to each other.

As I said, I have excellent research skills. But I refuse to believe that an entire hospital full of professional nurses had no one with curiosity and mediocre research skills to relieve a serious, ongoing problem. It boggles my mind that no one at that hospital had done what I’d done– downloaded the manual for a thing they use every day, then looked further when the instructions in the manual didn’t work!

A friend of mine suggested I have a programmer’s mindset– we get libraries and toolkits with crappy documentation and are used to supporting each other by giving out tips and tricks when we ask. But surely that’s not unique to my profession? Are we the last bastion of problem solvers in our species? No, I don’t believe that at all. But what to make of the fact that a patient had to solve one of their most commonplace irritations?
elfs: (Default)
I recently bought a new e-reader, the Kobo Aura 2 waterproof edition with the e-paper sheet and not a full-on LCD screen, with the intention of experimenting with its open-source nature, but I've also discovered something else: I've started to clear out my backlog of unread non-technical articles.

I have a list of bookmarks, hundreds long, of articles that I someday intend to read. Calibre is an e-book management program that runs nicely on Linux, although it's only usable with DRM-free books. Calibre has a number of plug-ins to help you manage your collections, some of those plug-ins will automatically collect news from a variety of sites, build them into EPUB documents, and notify you that they're ready to be transferred to your device of choice.

But if you want to read just one article on the web off-line, there are a few options: Pocket, Instapaper, Wallabag. But all of these seem to be, still, read it while you've got either a browser or a phone in hand. And as someone with a terrible distractability issue, having the browser or device available is a problem.

The Kobo has no web browser1, and the response time for flipping pages is about the same as actually flipping a physical page. Moving articles onto the Kobo was a chore that involved a lot of hand-steps.

Then I discovered Niklas Gollenstede's EPub Creator. This has been utterly life-changing. It's a browser plug-in that works fantastically with Firefox. If I find an article I want to read later (or have to, because it came across my feed while I'm at work), I just click the EPub Creator button and it automatically bundles the article and feeds it into Calibre, which sees the origin and automatically puts it onto the Kobo's "Articles To Read" shelf. The next time I plug in the Kobo, which has to happen regularly just to charge it, it syncs that shelf and the articles are there, ready to read.

And there's nothing else on the Kobo to distract me (except for, well, other books and articles, of course). So I've been plowing through them, highlighting the details I want to review (which, by the way, syncs back to the desktop so I can review them there and add them to my notebook manager). It's been nothing short of life-changing to actually make progress on my tsundoku pile, and to turn unassimilated information into working knowledge.



1 The Kobo actually does have a built-in browser, supposedly built on top of WebKit, the same engine in Chrome, but it's slow, terrible, and just does not do Javascript; it's mostly to help you get past the "sign up for X" pages on various libraries and bookstores.
elfs: (Default)
Yesterday I had a chance to try out two of the "better" head-mounted displays, the Avegant Glypth, and the Moverio BT-300, and I'm disappointed to say that neither is quite ready to be a desktop replacement.

I write smut. As you can see from my office, I often write in public, and as public transportation has gotten much more reliable, it has also gotten much more crowded. I'd like to have a heads-up display that I can reliably use to write in public without having to share my thoughts with the person sitting next to me.

The Avegant Glyph is an entertainment headset. There's no two ways to put it. It's a bit like sitting in the middle of a theater, and for my vision a bit too far away from the screen. It's fine for watching movies, but it lacks the resolution and close-up vision work necessary to make it a desktop replacement. It does, however, have an HDMI input line.

The Moverio BT-300 is at the other end of the spectrum: it's a workhorse. While you can see through the bifocal screens, if you focus on the screen it looks great, the resolution is high and crisp. The glasses are a bit odd looking, but nothing too horrific.

Unfortunately, the Moverio isn't a display; it's a full-on Android box with its own set of software and apps. One of those is Mira, an HDMI-over-WiFi standard that I'm told works pretty well, and in that case I could theoretically use it as a second display for my laptop, but the chipset in my laptop is too old to support it; I'd have to spring for a second WiFi dongle to support the WiFi Direct standard. That's not horrible, but it's annoying. On the other hand, if it works I could wear the BT-300 and I could probably figure out how to make it automagically mate with the laptop on-demand. I managed it with my bluetooth headphones, even thoough that actually took some hacking.

Still, I don't think head-mounted displays are really ready for the present. And that disappoints me. Maybe with the next generation Moverio, or maybe the new ODG R-9, will fit the bill. For the moment, though, I guess I'll just have to wait.

Sad, but true.
elfs: (Default)
It occurs to me that there are algorithms that can map common objects from photographs, extrapolate the shape of the common object from a library, and render a 3D model of the object.

There is not (yet) a library of millions of 3D scanned human bodies, furniture shapes, and cloth deformations, but the odds are good that we will have one very soon. We could get clothing stores to start scanning clients for custom fits; that would give us a corpus of anonymized human morphologies. Eventually, that library will exist; at which point, the CMU algorithms, image repair, and scene extrapolation will all combine to create perfect 3D worlds. Using Microsoft's "depixelating" algorithm, even the graniest of old movies could be smoothed out, at least at the haptic levels, into something convincing.

Which basically means we're all less than a decade away from being able to get our virtual, but tactile, hands on Christy Canyon and Jeff Stryker.

But for this project, I'll need $12 million.
elfs: (Default)
The other day, I stumbled upon Extrapolated Art, which uses machine learning to assess the contents of an image and extrapolate out from there what the image would be like if the canvas had been bigger. The results are often convincing, although sometimes not so much.

This reminds me greatly of Scene Completion using millions of photographs, which purports to "fix" damaged images by analyzing millions of similar photographs, finding one that would fit into the damaged portion of the image, color-matching the image within a given range, and producing a new image.

Why can't we do this with movie frames?

So, my startup idea is simple: Many guys who were college age in the 80s have a strong nostalgia for the porn of that era, most of which is utterly inaccessible due to the loss of original, the utterly crap quality of VHS formats and the slow degradation of VHS tape.

So use the algorithms available to fix it all. Various detection algorithms could identify "damage" in any given frame (including black-box and pixelation censorship). There is a library of zillions of hours of High Definition porn out there. Porn films don't typically have that many scenes and don't typically move the cameras around much; a human would have to vouch for just the very first frame of any given scene, and may have to do some tuning, and then the algorithm would "repair" the movie using each previous frame as a weighted source of quality, turning all those old "classics" into modern, HD versions with balanced colors and crystal clear genitals.

So, all I need is four million dollars, and a couple of other programmers to help me stitch this thing together, and maybe we could tolerate a manager of some kind, and we'll rake in billions, people, billions!.

High Brony

Dec. 28th, 2013 12:04 am
elfs: (Default)
So, in a fit of high broniness, I downloaded all 14 of Shawnyall's My Little Pony ships. He didn't draw the originals, for that we look to Anti Anders work; he just composited them together into the 14 possible pairings of the Mane Six.

In an equally high fit of high geekiness, I hacked together a little script to change the wallpaper every ten minutes. And yes, I'm sufficiently a brony that I think that every ten minutes this is awesome and adorable and sigh-worthy.

Unfortunately, I may have to disable it. It's incompatible with the Gnome terminal program, which crashes every once in a while, unable to handle the changing background. Which disappoints me greatly, as it's pretty enough stuff to inspire all sorts of creative endeavors.
elfs: (Default)
It's hot in Seattle this weekend. 94°F is pretty hot for a place that's supposedly at the northern border of the United States.

My laptop has been running hot recently. Like, 80C to 85C internally on a regular basis. Thinkpads typically do run hot-- Lenovo stuffed overpowered video processors into them long before they were ready. But recently the region above the keyboard had turned into an oven for my fingers.

This afternoon, I turned the laptop off and let it cool, then turned it over and took out five screws: four that hold the bezel frame down, and one that holds down the keyboard inside the frame. Both came off easily. I didn't even unplug the keyboard, which is attached to the motherboard by a ribbon. I just lifted it up and exposed the motherboard and CPU complex, along with the fan that sits above it. (The complex consists of the CPU, GPU, and WiFi components, with a big chunk of copper heatsink above it and a fan).

I blew compressed air all through the unit. With my finger gently keeping the fan from spinning, I then blew air into the vents, then blew away the resultant dust bunnies.

I then closed it up and restarted it. Now my laptop is running a nice 57C internally, which is far more tolerable, and doesn't get get through the keyboard insulation and burn my fingers.

I put the keyboard and bezel back and screwed them down. The whole operation took 15 minutes. So, yeah, if you can, clean the inside of your laptop.
elfs: (Default)
An interesting note about the paper I linked to in my last post: I've never seen a Ph.D. dissertation with a dedication before. This one was noted:
Full of pride, this thesis is dedicated to: the souls of the Egyptian January 2011 revolution martyrs, the souls of my mother and brother, my father and brothers, my great wife and life partner, and my children.
That's kinda cool.
elfs: (Default)
My current work assignment involves dynamically rendering a directed graph with potentially both cycles and disconnects. A "graph" in this case is a mathematical construct of nodes and connectors; "directed" means the connectors go in one direction, from one node to another. A "disconnected" graph means there may be subgraphs for which one cannot, starting from an arbitrary node, traverse the list of nodes to reach another arbitrary node; there isn't a connector between the two subgraphs. A graph with "cycles" is one where it's possible to end up in a loop, going around and around and around.

Drawing this beast on the screen aesthetically is considered a Hard Problem, but fortunately, there are a number of papers on it with "good enough" solutions. The best seems to be Alaa K. Ismaeel's Dynamic Hierarchical Graph Drawing.

According to the book, there are a few steps one must take: (1) figure out all of the disconnected subgraphs; (2) figure out if any of the subgraphs have cycles; (3) break the cycles, but remember what you broke so you can put it back; (4) figure out at what "depth" each node should be; (5) re-arrange the nodes such that you minimize the number of connectors that "cross" each other; (6) lay out the nodes with enough distance between them. I'm up to (3), and even managed to get it to successfully and correctly break the cycles in a Petersen Graph without damaging the graph's internal logic.

Man, that was fun. Well, on to the rest of it tomorrow.
elfs: (Default)
Last week I read an article in the Harvard Business Review entitled "Two Lists You Should Look At Every Morning." I decided that the lists made a nice coda to my priorities reminder, Right Now!, so I spent a little time this weekend and hacked it together.

This is probably some of the cleanest code I've ever written: the HAML is inlined directly into Javascript templates by the build process, the CSS is compiled via Recess, and the coffeescript is short, sweet, and to the point. There are a few issues left: the LESS file is a bit of mess because of all the Bootstrap drop-ins; I suspect there might be a bit of repetition in identifying which object is being edited at any given time; the Boostrap LESS doesn't work well on smaller monitors yet; and I gave an Easter Egg I'd like to sneak in eventually.

But it's a fun toy, and it makes a nice replacement for RightNow!

Priority/Ignore

elfs: (Default)
We all know that MP3 encoders have quality controls: that when you encode an MP3, you choose how much of the original to keep, how much to throw away, and how much to "model," that is, how much can be restored to the outgoing audio stream by inserting modeled sounds into the psychoacoustic profile of the stored MP3.

Do MP3 decoders have a similar process? That is, when turning an MP3 back into music, do MP3 decoders make decisions about how much CPU and bandwidth they have, and maybe throw out the lower-priority models, creating a muddier sound?

Because I swear that ever since I turned on RTPRIO (Real Time Priority) for audio processing on my laptop, I've been able to hear more details on many tracks played through Audacious: snare drums rattle more, saxaphone keys click, feet shuffle in live recordings. I didn't think such post-processing was the case, but every once in a while now, while listening to a track, I'll think, "Huh, I don't remember hearing those subtle sounds before."

'S verra strange.
elfs: (Default)
For reasons I'm not going to go into, I need to two different HTML parsers. One needs to accept almost any arbitrary HTML5 input without the concomitant javascript processing, and then spit out a stripped down, whitelist-tags-and-attributes-only version for storage; the other needs to recognize the full suite, plus a completely alien set of tags into which I'll be throwing some, er, extra functionality.

I need this all written in coffeescript.

Nobody's done anything like this before, at least not in Coffeescript. My brain is spinning; I haven't worked with real parsers since my days at F5. Nothing like this was necessary for Isilon or IndieFlix. And, oh my gods, the HTML5 parsing standard is explicit, easy to implement, and huge.

I can use some of the existing Javascript or Python parsers as starting points, but they're not terribly easy to extend. I'd also like to try and use a parser-combinator, because my experience has been that PC grammars are easier to understand. But try as I might, my head explodes when trying to grasp whatever it is I'm trying to do. Still, we'll see. After fridgemagnets, I need a bigger project.
elfs: (Default)
This is a small, public announcement. Please don't spread this around too much, but I want to announce that HTML5 Fridgemagnets has reached the alpha stage. The client works well-- it detects poems more or less correctly, the shuffle button works, and the music works-- and yes, there's a mute button.

But more than that, the server works too. When your poem meets some mininum standards (two lines, less that 140 characters), you'll be offered a Tweet This button, and when you do, your work of art will be sent off to a Twitter feed.

Even as I sit here, I'm aware of some heavy-duty security issues with the twitter feed. It ought to accept only poems that are possible from the wordlists, but I haven't instituted that yet. I'm running this under Forever(Express), so theoretically it'll restart if there's a problem, but who knows? I'm new to Express.

Feel free to post poems, though! And tell me what you think.
elfs: (Default)
So, I'm in the middle of writing a supposed action/adventure SF lesbian romance mash-up thing with a couple of fairly good love scenes and one really nice "coming out" scene that makes me happy. Since I have real trouble with typos, I side-loaded the current WIP onto my Nooks (yes, I own two of them, a pocket-sized one for my phone and a full-sized Nook Color) and started noting down different things about the story. It's got a great beginning, a muddle, and a terrible ending. I had an idea about the ending, but it'll take some work. I was using the Nook Color last night. This morning, I had an errand to run and while waiting in line pulled out my phone to contine. What it gave me was this: "You are on page 1, but on your other Nook you were last on page 39. Do you want to go to page 39? Yes/No."

I felt genuinely creeped out that this information was rolling around the Internet like that. If I'd owned the mechanism of synchronization, I'd probably be comfortable with it, but I don't: Barnes & Noble does. Now, B&N has generally been pretty good, but given that 95% of the books I have on my Nook are side-loaded stuff that are either ripped copies of MS-LIT books (legitimately purchased, but still, I had to crack them to get them onto my Palm, and now my Nook), Calibre-encoded stuff downloaded from my old hangouts at alt.sex.stories and the like, or grey-market yuri manga, I feel a little uncomfortable with anyone tracking what I read like that.

More to the point, does this mean that a pre-release copy of Honest Impulses is rolling around on a Barnes & Noble server? Are they illegitimately copying and tracking everything I've got on my Nook, not just the downloaded stuff but the sideloaded stuff as well?

I asked a B&N representative about that and he assured me, no, they don't. When I asked what information the Nook does send to B&N about my reading habits, he couldn't tell me. Which makes me wonder even more.
elfs: (Default)
I rarely regret not spending money. When I went to finally upgrade my phone, I blanched at the MSRP of an unlocked Galaxy Nexus GSM, which at $659 was a lot of cash. Especially since my provider, AT&T, was basically offering me the Galaxy SII (not the "Note" or "S+", mind you) for basically nothing more than a promise to stay with them for another two years.

Since I needed a network provider anyway, I went with the Galaxy SII. I am now regretting that decision. This is a terrible, terrible phone.

Battery life is less than 11 hours with no use. If you have a regular work schedule with some commute, and maybe get some texts and emails and phone calls through the day, this phone is likely to die before you get home. There are services you can "disable," such as Tethering, Wi-Fi Hotspotting, and AT&T "Navigation Help" services, but the processes never shut down. The phone always restarts them. I have no idea what interrupts they're banging on inside the OS, but it's probably eating the battery alive along with everything else.

I even took it back to the AT&T store and complained about it. I said the phone's behavior isn't matching the claimed specifications or the popular reviews, that the phone would last for at least a full day with "typical" use. With no use this phone doesn't last through the regular workday, much less the evening. This is not acceptable. When I started to get loud enough that other customers were becoming uncomfortable, the saleshole told me, "You'll just have to get used to recharging it twice a day. I'm sorry, that's what Android phones are like."

Bleah.

Some people have said that new phones take a while to calibrate their batteries. I have my doubts.

I also looked at a lot of timers to replace Pocket Doan, the beautiful meditation timer for the Palm. Nothing like it exists for Android. I used it for meditation, but also as a productivity app, since it has a lovely pomodoro setting. The first time I used it, it worked fine until the end, at which point it said: "Congratulations on meditating for 25 minutes. 70 other people are meditating right now." I didn't want to know that; I also didn't want to share my own meditation (or whatever) sessions. Genuinely creeped out, I deleted the app when I realized I couldn't turn that "feature" off.

Bleah twice.

I'm annoyed because I let a financial consideration that, really, was not all that big a deal, compromise my sense of ownership of an electronic device. I owned my Palm Pilot and my iPod. I pwned my last phone, and my Nook. I do not own this phone.

And that means It is leasing Me.

Sigh.
elfs: (Default)
Looking through a raft of timers, clocks, stopwatches and the like for the Android, I've come to realize that many of the great Human Interface Design lessons of the early 90s, of the original Blackberries and Palms, have been sacrificed to the "ooh, shiny!" of AMOLED screens and better CPUs. The Android "anything goes" guidelines have resulted in tragedy.

For example: it takes THREE gestures to get to the "last app" on your Android. It takes FIVE to get to the Home page. It takes six to get to a "frequently used application," seven to to nine for less frequently used applications.

Contrast that with the Palm: ONE gesture to the last app, ONE gesture to the home, ONE gesture to your top three applications, TWO to FOUR gestures for all other applications.

Another example: the typical timer application on the Android has a "tap-and-hold" method for setting a countdown. If you're trying to get to 45 seconds, you tap-and-hold the "up" button, a very non-tactile experience-under-glass in which you have to guesstimate when you're "close" to 45, then stop and tap to your target one second at a time, all the while your big hand may well be obscuring the input.

Contrast this with two different timers for the Palm. Big Clock had an individual tap for seconds and tens of seconds. 45 seconds is nine taps above the number, with big haptic regions of affordance and an easy count in your head-- no guessing there at all, and you can't make a mistake even if your hand is in the way. Pocket Doan, my meditation timer, was pure minutes-- in an in-page drop down! Tap for drop down, tap for 15 minutes. Or 20, or 25. If you needed something weird, like "17" minutes, the bottom of the menu was "Custom," which not only went to a pop-up for big haptic taps like Big Clock, but let you use the keyboard to input the time as well.

Hands do things. They hold, manipulate, touch, grasp, grab, push, shove. The Palm Pilot understood this, making initial contact tactile and fast, emphasizing reading over input, and making input absolutely simple when necessary.

Android phones with motion sensors can now tell when you're holding one up to your face. The SOAP project was an experiment in having the device automatically start some apps after certain motions, like the camera if you held it like a camera. More of that needs to be done.

But more than that, manufacturers need to not be afraid to put physical buttons on the outside of the phone. Why is "volume" privileged with external buttons, but "calendar," "note pad," "ebooks," and "productivity timer" not? It would be easy to set the buttons to all be "power" to begin with, and then let users discover, using a standard gamification & DITA algorithm, that they could program those buttons to go straight to their favorite apps.

Anyway, I'd like to see programs like Big Clock and Pocket Doan on the Android. I hate the Eclipse integrated development environment, have never seen the Android API, and haven't programmed in Java in 14 years. I understand a lot has changed.

This shouldn't take long.
elfs: (Default)
All that wittering on about poems and collisions recently makes more sense when you gaze upon my most recent work:

Fridge Magnets.

It's very much a work in progress. I've been working on it on and off for a few weeks. I think it's got about 40 hours of work into it. This is only half the battle (the other half involves red lasers and blue lasers, right?). I still have to get the server working, alternative word lists, and reloading segments of the current wordlist onto the page. Right now it shows an average of 60 words per cycle, but there are about 300 words in my working list, and I'd like people to be able to shuffle them on demand.

But it's been fun. When this is done, I might get either Ptah or Three Hours done. Or Narrator 4.0. Or goddess knows what else.
elfs: (Default)
A poem is:
A collection of words all of which are in collision with each other.
When a word is moved:
If it belonged to the poem, we must decide if it has left the poem.
If it does not belong to the poem, we must decide if it has joined the poem.
When the last two words of a poem are pulled apart
We must see if where the last word to be moved landed starts a new poem
Seems simple enough. Annoying that it's nonetheless broken.

It probably needs unit testing.
elfs: (Default)
Yes, it's true: when you release early, release often, your users tell you what they need.

Here's the saddest thing: I've installed Internet Explorer 8 on my Linux Laptop. It works great, and using only a 1024x768 subdisplay has been really useful. Here's what's new:
  • IE8+ Compatibility. Sadly, to acheive this, I had to add 60KB (really... and that's very, very sad) of library calls.
  • The "How To Use" screen can now be banished with a button at the bottom of the instruction page, in case you're in a small screen where the instructions obscure the "Wouldn't you rather be:" button.
  • IndexDB support dropped. It was a really good storage scheme but the API for it was terrible and IE hated working with it.
elfs: (Default)
I have much improve Right Now! It has a new helpful startup feature, the hover-overs that lead to actions now have the action indicator cursor for better affordance, and I've given it a new home:

rightnow.elfsternberg.com

Profile

elfs: (Default)
Elf Sternberg

August 2025

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 17th, 2025 08:47 pm
Powered by Dreamwidth Studios