Well there it is, our house is on the market. We're packing up and we're getting out of Dodge. For certain values of "Dodge". "Utah", mainly.
Wisconsin, you've gone nuts since we left you. You're full of roundabouts and corrupt politicians.
Minnesota, here we come! Well, soon. :^)
update:
...and Sold! Well, under contact, anyway. The midwest and its boundless bouquet of cheeses, sausages and beers feels closer already!
Monday, July 14, 2014
Monday, May 19, 2014
Always Look on the Bright Side of Life
*whistles*
I was a bit bummed about my old server dying when it happened, but it has quickly gone from sad to funny. In preparing to take that machine (and a bunch of other old stuff) to a nearby electronics recycling event, I removed its hard disks and a few other parts. During its autopsy, onslow reminded me about its storied history and gave me a few farewell chuckles.
Finally, the unused drive bay which served as onslow's name plate had damaged clips. It was held in place by duct tape.
I was a bit bummed about my old server dying when it happened, but it has quickly gone from sad to funny. In preparing to take that machine (and a bunch of other old stuff) to a nearby electronics recycling event, I removed its hard disks and a few other parts. During its autopsy, onslow reminded me about its storied history and gave me a few farewell chuckles.
- Huge case, no room at all inside it. Crunchy SCSI cables everywhere.
- Nothing I removed had an even number of screws holding it in place.
- Of the odd number of screws I removed, none matched each other.
- The rear fan had a big chunk smashed off of its outer brace.
- The rear fan was twisty-tied to vent holes in the case.
- The CPU fan was not a CPU fan.
- The CPU fan was twisty-tied to cables that sort of ran by the CPUs.
- Three CD drives (including a caddy loader) were installed.
- Only one CD drive remained attached to the power supply.
Finally, the unused drive bay which served as onslow's name plate had damaged clips. It was held in place by duct tape.
Saturday, May 03, 2014
R.I.P. onslow
The oldest computer I still had running stopped last night after a power failure. It was known early on as "fatbastard" and, in its final hardware configuration, "onslow". It's the biggest computer I've had (and I've had some doozies), it's heavy, and it's packed with parts that modern computers can't use. After running almost continuously for 14 years, it's time to say goodbye.
(Yes, I'm enough of a geek that I'm eulogizing a computer. I'm also retiring its internal IP address. Just give me this one. :^)
Onslow started out as a streaming server for RealAudio, if I remember right. A friend from UWRF's student center went on to work there and bought or inherited some hardware, and I bought or inherited that machine from him. It was the first PC I owned which never ran Windows - by then I'd fully become a Linux guy. It was my first multi-CPU machine. (Back when that was worth noting.) It had such ridiculous high-end specs in 2000 that it was still worth running now.
Onslow lived with me in two college dorm rooms, my parents' basement, two apartments in two states, and in my first house. It was part of what made a place home. Over the university's broadband and a series of awful DSL connections, it has served up my home shell as well as a bunch of websites. Most of those were of no real consequence, and I'll probably restore at least a few of them on my newer webserver. But accessing my home network remotely and being greeted by a machine other than onslow, that will take some getting used to.
When the power came on again and I was checking that all my servers and drives were coming online, a few pokes of onslow's power button told me what I knew had to be coming. I had to echo its namesake in sarcastic disappointment...
"Oh, nice."
(Yes, I'm enough of a geek that I'm eulogizing a computer. I'm also retiring its internal IP address. Just give me this one. :^)
Onslow started out as a streaming server for RealAudio, if I remember right. A friend from UWRF's student center went on to work there and bought or inherited some hardware, and I bought or inherited that machine from him. It was the first PC I owned which never ran Windows - by then I'd fully become a Linux guy. It was my first multi-CPU machine. (Back when that was worth noting.) It had such ridiculous high-end specs in 2000 that it was still worth running now.
Onslow lived with me in two college dorm rooms, my parents' basement, two apartments in two states, and in my first house. It was part of what made a place home. Over the university's broadband and a series of awful DSL connections, it has served up my home shell as well as a bunch of websites. Most of those were of no real consequence, and I'll probably restore at least a few of them on my newer webserver. But accessing my home network remotely and being greeted by a machine other than onslow, that will take some getting used to.
When the power came on again and I was checking that all my servers and drives were coming online, a few pokes of onslow's power button told me what I knew had to be coming. I had to echo its namesake in sarcastic disappointment...
"Oh, nice."
Tuesday, April 15, 2014
Eclipse
Photo by John Johnson, creative commons by-nc-sa license.
I took a walk around a nearby park last night, with my gaze mostly fixed on our old pal the moon, during its complete eclipse. I'm very tired today and my neck is as sore as it's ever been, but I'm glad to have done it.
The last eclipse I saw was while I was in college. There was a partial lunar eclipse with some cloud cover, and a handful of fellow students gathered to see it. I impersonated the lecture voice of our astronomy professor and said whatever silly, vaguely-scientific-sounding crap I could think of.
This time was pretty different. Clearer night, no company, and of course a very beautiful and somewhat rare event. No loud English accent or laughter, just my footsteps and my own thoughts.
Everyone should spend some quality one-on-one time with the moon, whether it's putting on a big show or not. I let it be a metaphor for pretty much everything. It's one of life's constants, and it's also always in motion. It's a mirror of our own little sphere, and it's also in stark, alien contrast to our familiar home. That reddish shadow was cast by more area than I'll ever visit, and I could cover it all up with my thumb at arm's length.
I let it represent the end. There have been some tough endings recently. The reason I was walking alone instead of with my wife is that she's away for a friend's mother's funeral. She was in the same hospital as my father-in-law for a while. Both are gone now, but still connected by the people who love them. And there was our cat. She went through her own waxing and waning cycles, and slowly moved her sleeping spot in an arc to keep in the sunlight. We miss her small steps and giant leaps.
I let it represent the beginning. If my wife stays where she is for a little while, she might get to meet our new nephew. His beginning will mark the beginning of two new parents. Great ones, I suspect. Beginnings are what make us explorers, what make us want to understand the things around us. Things like the moon disappearing. Our beginners' ignorance is valuable; it gives us somewhere to test new ideas and build new knowledge. It's also scary, so sometimes we fill it with comforting nonsense too.
While I walked and stared, I let the moon and its eclipse represent inevitable change, immovable resolution, good, bad, fiction, fact, fear, joy, miraculous, mundane, and anything else i could think of.
I also imagined spouting nonsense in a loud English voice.
"Now we can see that the Earth is not particularly good at shadow puppets. Never mind dog or bunny, the Earth is only able to do basic shapes like rock, paper, and scissors. Tonight, it would seem, it has chosen rock."
Wednesday, November 27, 2013
Giving Thanks
This year has been ... well it's sucked. I'm not superstitious, but I'm entirely ready for this particular "13" to be over. Regardless, I have plenty to be thankful about, and I want to give credit where credit is due.
Thank you, smart people.
All kinds, all flavors of smart people. Smart philosophers who ask interesting and hard questions. Smart scientists who seek to understand the nature of the universe. Smart engineers who combine knowledge with craft and create new tools. Smart businesspeople who enable small pockets to afford big ideas. Smart politicians who balance demand with reality, present with future. Smart educators who perpetuate smartness itself.
Everything I'm thankful for leads to some obvious (and many less-obvious) smart people I should thank.
I'm thankful for my wife. A person couldn't ask for a better partner, and I feel lucky every day. The main smart person to thank here is her. Thank you, Kim! Next come the smart people who helped her become who she is - her parents, her teachers, the various professors who helped her earn her various degrees. Thanks to all of you! Then of course there are the smart people responsible for a type-1 diabetic being able to live a normal life. Canadians Frederick Banting and Charles Best were the first to make use of insulin, and a lot of people before and since have helped too. Many thanks are needed to many people I've never heard of, living and dead.
I'm thankful for my work. Programming is both something I enjoy and something I can do well enough that people will pay me to do interesting things. I have my own set of family and teachers to thank, as well as people like the late Dennis Ritchie. He created the C programming language and co-authored Unix. (To me, that's like creating oxygen and co-authoring the atmosphere). Elsewhere in the web of Newton's shoulders-of-giants are today's Linus Torvalds, Richard Stallman, and Patrick Volkerding, back through Alan Turing and Ada Lovelace and beyond. Thanks, all you smart geeks. The fact that I get paid implies I have a string of smart businesspeople to thank too.
Just a couple items in, and already I'm hitting up Wikipedia to figure out whom to thank for what. That means I should probably add Jimmy Wales. Not that he single-handedly runs Wikipedia, let alone researched and wrote up the particular information I'm after. Some "shoulders of giants" are actually "giant collections shoulders". Thank you, giants, and thank you, shoulders. That work rests on the web, which rests on the internet, which rests on TCP, which rests on machines and designs that join back in around Turing or so, giving me another bunch of smart engineers, smart mathematicians, and even smart statesmen (yes, including Al Gore) to thank.
At this rate, I'd never get through all the smart people I'm thankful for. Whether you're a big name smart person whose deeds are clearly visible, an obscure smart person doing interesting things, or you're just smart enough to try and make the world a little better, I'm thankful for you.
Thank you, smart people.
All kinds, all flavors of smart people. Smart philosophers who ask interesting and hard questions. Smart scientists who seek to understand the nature of the universe. Smart engineers who combine knowledge with craft and create new tools. Smart businesspeople who enable small pockets to afford big ideas. Smart politicians who balance demand with reality, present with future. Smart educators who perpetuate smartness itself.
Everything I'm thankful for leads to some obvious (and many less-obvious) smart people I should thank.
I'm thankful for my wife. A person couldn't ask for a better partner, and I feel lucky every day. The main smart person to thank here is her. Thank you, Kim! Next come the smart people who helped her become who she is - her parents, her teachers, the various professors who helped her earn her various degrees. Thanks to all of you! Then of course there are the smart people responsible for a type-1 diabetic being able to live a normal life. Canadians Frederick Banting and Charles Best were the first to make use of insulin, and a lot of people before and since have helped too. Many thanks are needed to many people I've never heard of, living and dead.
I'm thankful for my work. Programming is both something I enjoy and something I can do well enough that people will pay me to do interesting things. I have my own set of family and teachers to thank, as well as people like the late Dennis Ritchie. He created the C programming language and co-authored Unix. (To me, that's like creating oxygen and co-authoring the atmosphere). Elsewhere in the web of Newton's shoulders-of-giants are today's Linus Torvalds, Richard Stallman, and Patrick Volkerding, back through Alan Turing and Ada Lovelace and beyond. Thanks, all you smart geeks. The fact that I get paid implies I have a string of smart businesspeople to thank too.
Just a couple items in, and already I'm hitting up Wikipedia to figure out whom to thank for what. That means I should probably add Jimmy Wales. Not that he single-handedly runs Wikipedia, let alone researched and wrote up the particular information I'm after. Some "shoulders of giants" are actually "giant collections shoulders". Thank you, giants, and thank you, shoulders. That work rests on the web, which rests on the internet, which rests on TCP, which rests on machines and designs that join back in around Turing or so, giving me another bunch of smart engineers, smart mathematicians, and even smart statesmen (yes, including Al Gore) to thank.
At this rate, I'd never get through all the smart people I'm thankful for. Whether you're a big name smart person whose deeds are clearly visible, an obscure smart person doing interesting things, or you're just smart enough to try and make the world a little better, I'm thankful for you.
Thursday, October 31, 2013
Tuesday, October 01, 2013
Halloween Artist, Revisited in Geeky Detail
A while back, I made a little toy that simulates carving pumpkins. http://penduin.blogspot.com/2011/10/halloween-artist.html
It was during that narrow window when the WebOS-running TouchPad was new and hot, and before HP decided they hated success and killed it.
Since then, web browsers have gown up a lot, and nowadays Mozilla is executing Palm's vision of a browser-based operating system even better than Palm did. (Sorry, WebOS, I still love you, I'm just sayin'...) In any case, I've been digging back and dusting off some of my old apps. When you get your app running on FirefoxOS, you don't just port it to yet another device - you port it to the web. So now, Halloween Artist runs on damn near anything, including those awesome (and cheap!) Firefox phones that are starting to spring up everywhere.
The platform-agnostic web app:
http://halloweenartist.penduin.net
Play around with it before reading on, if Halloween Artist is new to you.
But enough history; the point of this post is to dive into the jack-o-lantern guts and talk about how the program actually works!
Before we begin, some links!
To this day, I start here whenever I tinker with canvas:
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial
Back in the day I only used mouse events, and just recently added actual touch support. Nowadays, I'd suggest going the other way 'round, or at least keeping both in mind:
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Events/Touch_events
There are many guides for doing simple drawing programs using canvas. This one is very detailed:
http://dev.opera.com/articles/view/html5-canvas-painting/
The first step is to get ourselves a pumpkin image in the background, and a canvas layered on top. This canvas will track mouse and touch events and let the user trace out shapes.
Next, we need an "inside" image that will show through the carved shapes. Over that, we'll draw the pumpkin but with the user-drawn parts cut out (made transparent). As luck would have it, the canvas API has some handy compositing modes that are perfect for these tasks. The main operation we need is "source-out". Keep the destination image, except where it intersects with the source shape. Then it's just a matter of doing a normal, source-over composite.
It's a start! But to look like an actual carved pumpkin, we need to add some 3D magic to draw the inside edges. Actually, scratch that - we're going to cheat. :^) We'll start with a lower-resolution, slightly-blown-up pumpkin image:
...then we'll lighten it up using canvas's "lighter" globalCompositeOperation and a globalAlpha value of, oh let's say 0.5:
...then we'll "source-out" the face, same as we did with the foreground:
...then shrink it a bit, center it, and draw it between the inside background and the outer face:
We're getting there! But depending on the shape, our corners might not look very convincing.
Fortunately, all this cheating we've been doing - these composite operations and scaling - it's all very fast. Even on mobile browsers. Let's turn up the cheating to maximum and draw that middle layer in a loop, shrinking it less each time.
...While we're at it, each step could lighten up the current layer to a lesser degree than the previous (more "inner") one. And while we're at that, let's lighten it using a more yellow color; our first pass looks a little pinkish.
By putting that middle-layer step inside a loop and making a few tweaks, we get much more realistic edges:
So, we draw a whole bunch of these middle layers, only to draw right over most of it during the next pass. It's a bit wasteful if you think about it that way, but consider how much simpler this is than trying to simulate all these arbitrary cut-out surfaces "for real". Instead, this code builds little bits of pumpkin shell, one layer at a time, from the inside out. It's a fairly elegant illusion if I do say so myself; we can make a passably-realistic image with a sense of depth, without actually doing any complex calculations or intensive processing.
Warning: more history ahead. I'll try to keep it brief and on-point. :^)
Figuring out how "deep" to start (how much to shrink), and how many steps to draw in between, all while keeping the "carve" function reasonably fast, was one of those fun bits of experimentation and compromise. On a high-resolution display, there can still be artifacts if you draw very steep, jagged shapes. But as far as bang per buck, compatibility with low-end devices, and the 99%-of-shapes use cases, I'm pretty pleased.
I wanted this to be pick-up-and-play friendly, so every day I'd load the latest version onto my TouchPad and hand it to my coworkers, giving them no instructions.
Early on, it was suggested that the carved image should flicker as if the candle inside were burning unevenly. Easy! The carve function now produces two images, the normal one and a slightly brighter version, which is positioned (using CSS) right over the main one. It fades in and out using a randomized timeout and CSS animation on the "opacity" property. A few minutes of polish, and the illusion was even better.
I forget who, but one coworker went right for the "Carve" button before drawing anything. Natural enough instinct. So, added some logic to see if any shapes had been drawn yet, and if not, give the user some quick instructions. I'm really glad I caught that, because in showing the app to more people later, about a quarter did the same thing. Much better to show a hint popup than have users wonder why nothing's happening.
What if the user drew outside the pumpkin? All kinds of goofy artifacts, that's what. So, I used that handy canvas compositing and masked the user's input before carving. As a nice side effect, you can now carve all the way out to the edge of a pumpkin, as though you'd chopped it in half.
This solution led to another problem. When people realized they could recklessly carve giant holes, they'd see the empty, glowing inside surface of the pumpkin. Where was the light coming from?
So, between drawing the background and drawing the scaled flesh layers, I dropped in a candle. I actually took some photos of a nice white candle and GIMPed it into the shape of my blocky "penduin" avatar. May as well include some kind of signature in this program, eh? I made two different versions, one for each of the flicker-fading images, and made the flame a bit bigger on the brighter version. It gives a nice little touch of animation, and adds a bit more to the illusion.
Well, that about covers it. You're free and encouraged to poke around in the source if you'd like to learn more or add your own tweaks. (Mind the mess; I left some experimental tweaks and previous-attempts in there, commented out.) Halloween Artist is GPLv3, and since you mignt not feel like scraping down the source from the web app itself (and since my lousy DSL might be down at any given moment) I've made it available on GitHub:
https://github.com/penduin/halloweenartist
Have fun, and Happy Halloween ... season. :^)
It was during that narrow window when the WebOS-running TouchPad was new and hot, and before HP decided they hated success and killed it.
Since then, web browsers have gown up a lot, and nowadays Mozilla is executing Palm's vision of a browser-based operating system even better than Palm did. (Sorry, WebOS, I still love you, I'm just sayin'...) In any case, I've been digging back and dusting off some of my old apps. When you get your app running on FirefoxOS, you don't just port it to yet another device - you port it to the web. So now, Halloween Artist runs on damn near anything, including those awesome (and cheap!) Firefox phones that are starting to spring up everywhere.
The platform-agnostic web app:
http://halloweenartist.penduin.net
Play around with it before reading on, if Halloween Artist is new to you.
But enough history; the point of this post is to dive into the jack-o-lantern guts and talk about how the program actually works!
Before we begin, some links!
To this day, I start here whenever I tinker with canvas:
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial
Back in the day I only used mouse events, and just recently added actual touch support. Nowadays, I'd suggest going the other way 'round, or at least keeping both in mind:
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Events/Touch_events
There are many guides for doing simple drawing programs using canvas. This one is very detailed:
http://dev.opera.com/articles/view/html5-canvas-painting/
The first step is to get ourselves a pumpkin image in the background, and a canvas layered on top. This canvas will track mouse and touch events and let the user trace out shapes.
Next, we need an "inside" image that will show through the carved shapes. Over that, we'll draw the pumpkin but with the user-drawn parts cut out (made transparent). As luck would have it, the canvas API has some handy compositing modes that are perfect for these tasks. The main operation we need is "source-out". Keep the destination image, except where it intersects with the source shape. Then it's just a matter of doing a normal, source-over composite.
It's a start! But to look like an actual carved pumpkin, we need to add some 3D magic to draw the inside edges. Actually, scratch that - we're going to cheat. :^) We'll start with a lower-resolution, slightly-blown-up pumpkin image:
...then we'll lighten it up using canvas's "lighter" globalCompositeOperation and a globalAlpha value of, oh let's say 0.5:
...then we'll "source-out" the face, same as we did with the foreground:
...then shrink it a bit, center it, and draw it between the inside background and the outer face:
We're getting there! But depending on the shape, our corners might not look very convincing.
Fortunately, all this cheating we've been doing - these composite operations and scaling - it's all very fast. Even on mobile browsers. Let's turn up the cheating to maximum and draw that middle layer in a loop, shrinking it less each time.
...While we're at it, each step could lighten up the current layer to a lesser degree than the previous (more "inner") one. And while we're at that, let's lighten it using a more yellow color; our first pass looks a little pinkish.
By putting that middle-layer step inside a loop and making a few tweaks, we get much more realistic edges:
So, we draw a whole bunch of these middle layers, only to draw right over most of it during the next pass. It's a bit wasteful if you think about it that way, but consider how much simpler this is than trying to simulate all these arbitrary cut-out surfaces "for real". Instead, this code builds little bits of pumpkin shell, one layer at a time, from the inside out. It's a fairly elegant illusion if I do say so myself; we can make a passably-realistic image with a sense of depth, without actually doing any complex calculations or intensive processing.
Warning: more history ahead. I'll try to keep it brief and on-point. :^)
Figuring out how "deep" to start (how much to shrink), and how many steps to draw in between, all while keeping the "carve" function reasonably fast, was one of those fun bits of experimentation and compromise. On a high-resolution display, there can still be artifacts if you draw very steep, jagged shapes. But as far as bang per buck, compatibility with low-end devices, and the 99%-of-shapes use cases, I'm pretty pleased.
I wanted this to be pick-up-and-play friendly, so every day I'd load the latest version onto my TouchPad and hand it to my coworkers, giving them no instructions.
Early on, it was suggested that the carved image should flicker as if the candle inside were burning unevenly. Easy! The carve function now produces two images, the normal one and a slightly brighter version, which is positioned (using CSS) right over the main one. It fades in and out using a randomized timeout and CSS animation on the "opacity" property. A few minutes of polish, and the illusion was even better.
I forget who, but one coworker went right for the "Carve" button before drawing anything. Natural enough instinct. So, added some logic to see if any shapes had been drawn yet, and if not, give the user some quick instructions. I'm really glad I caught that, because in showing the app to more people later, about a quarter did the same thing. Much better to show a hint popup than have users wonder why nothing's happening.
What if the user drew outside the pumpkin? All kinds of goofy artifacts, that's what. So, I used that handy canvas compositing and masked the user's input before carving. As a nice side effect, you can now carve all the way out to the edge of a pumpkin, as though you'd chopped it in half.
This solution led to another problem. When people realized they could recklessly carve giant holes, they'd see the empty, glowing inside surface of the pumpkin. Where was the light coming from?
So, between drawing the background and drawing the scaled flesh layers, I dropped in a candle. I actually took some photos of a nice white candle and GIMPed it into the shape of my blocky "penduin" avatar. May as well include some kind of signature in this program, eh? I made two different versions, one for each of the flicker-fading images, and made the flame a bit bigger on the brighter version. It gives a nice little touch of animation, and adds a bit more to the illusion.
Well, that about covers it. You're free and encouraged to poke around in the source if you'd like to learn more or add your own tweaks. (Mind the mess; I left some experimental tweaks and previous-attempts in there, commented out.) Halloween Artist is GPLv3, and since you mignt not feel like scraping down the source from the web app itself (and since my lousy DSL might be down at any given moment) I've made it available on GitHub:
https://github.com/penduin/halloweenartist
Have fun, and Happy Halloween ... season. :^)
Friday, July 12, 2013
Clipface
Here's "Clipface". I don't know his real name yet. He showed up today during a long conference call.
Friday, June 07, 2013
Murphy 2003-2013
Yesterday, after some heartbreaking weeks of decline, we had to have Murphy put to sleep. There were so many things wrong with her, so many organs not working right, and the road before her was full of aggressive treatments - more drugs, strong painkillers, possibly major surgery... We just couldn't put her through that.
It was the hardest decision we've ever made, individually or together. It was the right thing, and the kind thing, but it's left a big hole in our hearts and our home. We've each lost pets before, but Murphy was as much our child as our cat. We miss her dearly, but we've done what she needed us to do. She got to go with those who loved her most right there with her, quietly, quickly, and in comfort. We're hurting now so that she doesn't have to. And we'll never stop loving our baby girl.
It was the hardest decision we've ever made, individually or together. It was the right thing, and the kind thing, but it's left a big hole in our hearts and our home. We've each lost pets before, but Murphy was as much our child as our cat. We miss her dearly, but we've done what she needed us to do. She got to go with those who loved her most right there with her, quietly, quickly, and in comfort. We're hurting now so that she doesn't have to. And we'll never stop loving our baby girl.
Tuesday, November 20, 2012
Googly-eyed Ork
I'm not sure what to do with this yet, but I'd like to share it anyway since it's cute.
Ork is an alien critter I've been scribbling since childhood. This particular version has some good personality to it -- he might need a platformer game or something, someday. :^)
Ork is an alien critter I've been scribbling since childhood. This particular version has some good personality to it -- he might need a platformer game or something, someday. :^)
Tuesday, November 06, 2012
Whew!
Well, it was disgustingly close, but (enough of) the votes are in, and the campaigns are over. We've said "no thank you" to the worst of the regressives. Little by little we've said "we are equal" to gays. And of course, we've said "yes we can" once again.
There's a great deal of work to do to keep this nation great, but we've made some positive moves. Today, I'm relieved. Today, I'm proud.
There's a great deal of work to do to keep this nation great, but we've made some positive moves. Today, I'm relieved. Today, I'm proud.
Voted!
Oh, the polls in Utah. I've seen some crazy stuff here before, but I've never seen a polling place this crowded. We probably have the LDS church to thank for that - gotta make sure all the good little drones go vote to fulfill their prophecy. (Nope, not kidding. Wish I was.)
On our way in, we passed an old couple leaving. The husband wore two "I voted" stickers - his and his wife's. The symbolism was priceless.
We were corralled into two lines by last name: A-E and F-Z. I'll let you guess which one snaked around and out the door while the other actually ran dry a couple of times. This, folks, is Utah planning at its finest. After a while, they changed it to A-H and I-Z. This all took place in a public school, where doubtlessly-stellar alphabet, arithmetic and problem-solving lessons are taught every day.
To everyone who's voted, even the ones whose rationale escapes me: Thank you. To everyone else: What's wrong with you? Get out there already! You'll have no right to whine about the state of things if you don't even try to have a voice.
On our way in, we passed an old couple leaving. The husband wore two "I voted" stickers - his and his wife's. The symbolism was priceless.
We were corralled into two lines by last name: A-E and F-Z. I'll let you guess which one snaked around and out the door while the other actually ran dry a couple of times. This, folks, is Utah planning at its finest. After a while, they changed it to A-H and I-Z. This all took place in a public school, where doubtlessly-stellar alphabet, arithmetic and problem-solving lessons are taught every day.
To everyone who's voted, even the ones whose rationale escapes me: Thank you. To everyone else: What's wrong with you? Get out there already! You'll have no right to whine about the state of things if you don't even try to have a voice.
Monday, November 05, 2012
Vote!
It's time to earn your right to complain, citizens! Get out there and vote!
I won't tell you whom to vote for, but if you support anybody from the anti-equality, anti-science, rape-is-a-gift-from-god party, you really ought to have your head examined.
I won't tell you whom to vote for, but if you support anybody from the anti-equality, anti-science, rape-is-a-gift-from-god party, you really ought to have your head examined.
Friday, September 28, 2012
Open webOS Cameo
Today, Open webOS 1.0 made its way into the world!
http://blog.openwebosproject.org/post/32462950628/open-webos-1-0-edition
This is a big deal to me; it represents a certain kind of immortality for a platform and project that I've got very attached to. Enough pieces are in play to keep webOS alive now in ways never anticipated, despite the heartbreaking series of corporate blunders that nearly destroyed the project. I feel a lot like I did when Blender was rescued and turned open-source.
Anyway, I have a small cameo in the Open webOS announcement video. Not me per se, but my "penduin" symbol, specifically its use in my Picross icon. At about 1:09 in the video, you can spot it near the upper-left of the app launcher.
To the Palm and HP teams and the entire enthusiast webOS community: Thank you. You've made me very happy today. :^)
http://blog.openwebosproject.org/post/32462950628/open-webos-1-0-edition
This is a big deal to me; it represents a certain kind of immortality for a platform and project that I've got very attached to. Enough pieces are in play to keep webOS alive now in ways never anticipated, despite the heartbreaking series of corporate blunders that nearly destroyed the project. I feel a lot like I did when Blender was rescued and turned open-source.
Anyway, I have a small cameo in the Open webOS announcement video. Not me per se, but my "penduin" symbol, specifically its use in my Picross icon. At about 1:09 in the video, you can spot it near the upper-left of the app launcher.
Tuesday, September 18, 2012
Tong on Wii
Well here's another fine mess I've gotten myself into: Tong can now be played on Wii!
It's fitting. Back in ... 1997? Some friends and I came up with the idea, and imagined it as a multiplayer game on Nintendo64, the party machine of choice at the time. That didn't happen, of course, but years later I did finish a single-player PC version. Years after that, I ported it to the GP2X/Wiz handhelds. Now, it's come all the way to a home console, and a Nintendo one at that.
...Plus, the line-breaking sound effect is me saying "Wheeee!"
Now before you go off to the Wii Shop Channel looking for Tong, let me save you some time. Nintendo doesn't endorse this kind of open/free homebrew, but unlike some manufacturers, they don't fight it either. Read up on the Homebrew Channel, then visit this site and use its handy packager to get homebrew running on your Wii (they've made it very easy, you won't break anything!) Once you have the Homebrew Channel, you can grab Tong for Wii here; just unzip it to your SD card.
My favorite bit of feedback about Tong has always been that it's a "bad idea well implemented". Nowhere is that clearer than on Wii, with tilt-controlled paddles. I've gotten pretty good at it, but it's probably the hardest and most insane version yet. Why I would be happy about that is a bit of a mystery.
For anyone interested in the technical details, "devkitPro" and "devkitPPC" are what you're after. Cross-compiling to Wii is mostly painless, and I only ran into a few snags. First, libfat needs to be initialized before doing any file access. That isn't the first thing that occurs to those of us who normally build stuff for OSes instead of raw hardware. Second, the guys who ported SDL to Wii did a pretty good job, but when it came to SDL_mixer, I think they got it working for their own stuff and then moved on. The easiest workaround is to resample your sound data to 32000Hz, which struck me as very odd considering how common 41000 and 20500 are. Also, simultaneously playing a Mix_Music and a Mix_Chunk causes some fascinating interference if they're both using tremor (ogg vorbis decoder). In my case that meant saving the short Mix_Chunk sound effects as raw .wav data instead. Finally, as much as I love to use my own simple-as-possible Makefiles, I had a much easier time working from devkitPro's examples. They're very flexible and general-purpose, I'll give 'em that. Everything's checked in; have at the CVS repository if you're curious.
To non-geeks who waded through all that, I should reward you with something clever and witty. ...Too bad. Play Tong for a few minutes; your brain will forget all about such small-scale confusion. :^)
It's fitting. Back in ... 1997? Some friends and I came up with the idea, and imagined it as a multiplayer game on Nintendo64, the party machine of choice at the time. That didn't happen, of course, but years later I did finish a single-player PC version. Years after that, I ported it to the GP2X/Wiz handhelds. Now, it's come all the way to a home console, and a Nintendo one at that.
...Plus, the line-breaking sound effect is me saying "Wheeee!"
Now before you go off to the Wii Shop Channel looking for Tong, let me save you some time. Nintendo doesn't endorse this kind of open/free homebrew, but unlike some manufacturers, they don't fight it either. Read up on the Homebrew Channel, then visit this site and use its handy packager to get homebrew running on your Wii (they've made it very easy, you won't break anything!) Once you have the Homebrew Channel, you can grab Tong for Wii here; just unzip it to your SD card.
My favorite bit of feedback about Tong has always been that it's a "bad idea well implemented". Nowhere is that clearer than on Wii, with tilt-controlled paddles. I've gotten pretty good at it, but it's probably the hardest and most insane version yet. Why I would be happy about that is a bit of a mystery.
For anyone interested in the technical details, "devkitPro" and "devkitPPC" are what you're after. Cross-compiling to Wii is mostly painless, and I only ran into a few snags. First, libfat needs to be initialized before doing any file access. That isn't the first thing that occurs to those of us who normally build stuff for OSes instead of raw hardware. Second, the guys who ported SDL to Wii did a pretty good job, but when it came to SDL_mixer, I think they got it working for their own stuff and then moved on. The easiest workaround is to resample your sound data to 32000Hz, which struck me as very odd considering how common 41000 and 20500 are. Also, simultaneously playing a Mix_Music and a Mix_Chunk causes some fascinating interference if they're both using tremor (ogg vorbis decoder). In my case that meant saving the short Mix_Chunk sound effects as raw .wav data instead. Finally, as much as I love to use my own simple-as-possible Makefiles, I had a much easier time working from devkitPro's examples. They're very flexible and general-purpose, I'll give 'em that. Everything's checked in; have at the CVS repository if you're curious.
To non-geeks who waded through all that, I should reward you with something clever and witty. ...Too bad. Play Tong for a few minutes; your brain will forget all about such small-scale confusion. :^)
Saturday, June 23, 2012
Evacuations Lifted
This evening, things got well enough under control that officials lifted all evacuations in the area. There's still a raging fire burning up a mountain, and even when it's out, mudslides will now be a problem for people living around there, for years to come. I hope it was worth the thrill of shooting off guns at the dump, whoever you are.
So, our important stuff is back in the house, which I'm told is now as safe as the Subaru it was crammed into. All our servers are alive again, and the rest... will be dealt with in due time. :^)
We have two fundraising suggestions for the mayor, or for... whoever. After all, there's a great deal of effort and treasure being spent fighting this blaze.
- T-shirts: "I survived the great dump fire of o-twelve" etc
- A punching post
...The second one might need some explaining. Basically, we find the dumbass who started this whole mess (before he gets more ammo...) and tie him to a post. All residents of the towns he tried to burn down get one free punch, and additional punches are a dollar a pop. Fire fighters get a full minute free, those who were evacuated get an extra free punch (kids get double!) ...Well the details aren't that important, but you get the idea.
So, our important stuff is back in the house, which I'm told is now as safe as the Subaru it was crammed into. All our servers are alive again, and the rest... will be dealt with in due time. :^)
We have two fundraising suggestions for the mayor, or for... whoever. After all, there's a great deal of effort and treasure being spent fighting this blaze.
- T-shirts: "I survived the great dump fire of o-twelve" etc
- A punching post
...The second one might need some explaining. Basically, we find the dumbass who started this whole mess (before he gets more ammo...) and tie him to a post. All residents of the towns he tried to burn down get one free punch, and additional punches are a dollar a pop. Fire fighters get a full minute free, those who were evacuated get an extra free punch (kids get double!) ...Well the details aren't that important, but you get the idea.
Friday, June 22, 2012
Ready to Evacuate
I've got the reader's-digest version of my life (and my wife's, of course) packed up in the car, and am prepared to grab the cat and flee should the need arise. Whether that actually happens will come down to which way the wind blows. Truly!
http://www.ksl.com/?sid=20945567&nid=148&title=eagle-mountain-fire-expands-to-more-than-4000-acres&s_cid=featured-1
In any case we're safe, the stuff we wouldn't be able to replace is packed, and life's good, just sort of on standby. :^)
update, Saturday afternoon:
No evacuation notice here as of yet. All is still well, if a little smoky-smelling outside. Links to up-to-date information:
http://www.inciweb.org/incident/2928/
https://www.facebook.com/pages/Eagle-Mountain-City-UT/251442428207349?ref=tn_tnmn
http://www.ksl.com/?sid=20945567&nid=148&title=eagle-mountain-fire-expands-to-more-than-4000-acres&s_cid=featured-1
In any case we're safe, the stuff we wouldn't be able to replace is packed, and life's good, just sort of on standby. :^)
update, Saturday afternoon:
No evacuation notice here as of yet. All is still well, if a little smoky-smelling outside. Links to up-to-date information:
http://www.inciweb.org/incident/2928/
https://www.facebook.com/pages/Eagle-Mountain-City-UT/251442428207349?ref=tn_tnmn
Wednesday, June 06, 2012
Dear Restaurant Owners
Stop catering exclusively to rednecks and hillbillies by playing country music and/or hanging TVs on the walls in your establishments. Life is already too easy for these people; they've been wrecking things for the sane for some time now.
I go to your businesses to eat, not to be nauseated by twangy whining and have my peripheral vision harpooned by wrong-aspect-ratio sports talk.
I go to your businesses to eat, not to be nauseated by twangy whining and have my peripheral vision harpooned by wrong-aspect-ratio sports talk.
Dear Technology Columnists
Stop calling webOS "dead". The world of technology is not full of "products", it's full of "projects".
Read and digest the documentation over at http://openwebosproject.org/ or at least play with http://enyojs.com/ for ten minutes. This stuff is very much alive and useful. There aren't any Palm/HP Pre or TouchPad devices to be found in stores right now, and that's a shame, but by the end of the year we're going to see webOS running on more devices than you've ever imagined.
That's the thing about opening a platform - it becomes un-killable. A project doesn't need to burn up sales charts in order to be solid, fascinating, and entirely not-dead.
Read and digest the documentation over at http://openwebosproject.org/ or at least play with http://enyojs.com/ for ten minutes. This stuff is very much alive and useful. There aren't any Palm/HP Pre or TouchPad devices to be found in stores right now, and that's a shame, but by the end of the year we're going to see webOS running on more devices than you've ever imagined.
That's the thing about opening a platform - it becomes un-killable. A project doesn't need to burn up sales charts in order to be solid, fascinating, and entirely not-dead.
Friday, May 04, 2012
Picross
Shameless plug ahead...
I've made a Picross game for webOS devices. (TouchPad, Pre, Pixi, Veer...) It also runs happily in a modern web browser, including those on iBerry and BlackDroid and AnPhone and whatnot.
web demo:
http://penduin.net/bits/picross/
webOS app:
https://developer.palm.com/appredirect/?packageid=net.penduin.picross
The idea behind the game is that the process of solving a puzzle, using numerical clues, creates a pixel-art picture. I didn't invent Picross; someone much more clever did. But, I turned the idea into an HTML5 toy, and spent many insomniac hours thinking up 8x8 pictures, then testing and re-testing them to guess at their difficulty and make sure the clues weren't ambiguous. I recruited some help too; my wife contributed a handful of puzzles, as did a coworker and an enthusiastic early adopter.
Like all my little pet projects, it's open (GPL3) and you're encouraged to peek inside and learn from or build on it. I do sell the 99-cent webOS app with all of the (384, but who's counting) puzzles and the builder tool enabled, but when I say it's open I mean it - it's not hard to enable that stuff anyway if you're broke/cheap/webOS-less. :^) For BlackBerry PlayBook users, I'll probably release the game and demo in the BlackBerry store too at some point, but for now the web version runs very nicely.
Happy Puzzling!
I've made a Picross game for webOS devices. (TouchPad, Pre, Pixi, Veer...) It also runs happily in a modern web browser, including those on iBerry and BlackDroid and AnPhone and whatnot.
web demo:
http://penduin.net/bits/picross/
webOS app:
https://developer.palm.com/appredirect/?packageid=net.penduin.picross
The idea behind the game is that the process of solving a puzzle, using numerical clues, creates a pixel-art picture. I didn't invent Picross; someone much more clever did. But, I turned the idea into an HTML5 toy, and spent many insomniac hours thinking up 8x8 pictures, then testing and re-testing them to guess at their difficulty and make sure the clues weren't ambiguous. I recruited some help too; my wife contributed a handful of puzzles, as did a coworker and an enthusiastic early adopter.
Like all my little pet projects, it's open (GPL3) and you're encouraged to peek inside and learn from or build on it. I do sell the 99-cent webOS app with all of the (384, but who's counting) puzzles and the builder tool enabled, but when I say it's open I mean it - it's not hard to enable that stuff anyway if you're broke/cheap/webOS-less. :^) For BlackBerry PlayBook users, I'll probably release the game and demo in the BlackBerry store too at some point, but for now the web version runs very nicely.
Happy Puzzling!
Subscribe to:
Posts (Atom)


















