|
|
|
November 7th, 2009
07:56 pm - Patentable(?) idea day Patentable ideas for you! (Or maybe business ideas, or both.)
Computers
- Lossy zip (aka LLZW: lossy-lempel-ziv-welch).
- 3rd-party file compression. Automatic distribution of file chunks via a CDN, using block checksums, ala ZFS de-duplication (this might be what BitTorrent is already doing; this just uses a CDN instead of p2p)
- the coolest part about 3rd-party file compression is that it could be calculated automatically and common chunks be replicated more broadly or moved to where they are most frequently used. Actually, I think Freenet does this already. Akamai should too.
- Windows OS fractal compression. File compression via matching blocks in standard Windows install files. Or in any OS. Or in the browser itself (requires client to accurately represent browser/version/OS combo). Ala fractal image compression.
- Shared strings compression. Google could publish a dict of most common strings appearing on the web. The browser would publish its version as an Accept header, and if the client/server dicts matched, the common-strings-compressed version could be delivered. Similar to 3rd-party auto-CDN compression, but the nearest CDN is actually cached on your local computer.
Arts- Flower imprinted images, ala laser etched fruit and Japanese apples. Flowers would have to be etched after budding. Longer-lived plants could be imprinted early and allowed to grow (like carving names into bark).
|
November 4th, 2009
11:00 pm - Code snippet of the day
Handling exceptions is tricky. Opinions vary on whether you should catch and report to a central error handler, only catch exceptions you know how to recover from, or fail-fast and allow exceptions to bubble up until the program exits.
Our email management API takes a different tack:
void CEmailManagerExtension::CMDCreateMailbox()
{
try {
// ...do some work...
} catch (...) {
rCtxt.Redirect("http://www.ebay.com");
}
}
Obviously if something goes wrong with the create-mailbox API call, the correct response is to send the client to eBay. Maybe they can buy error handling that doesn't suck.
This code has existed since 2002 - no word on whether eBay pays us a revshare for traffic.
|
August 12th, 2009
03:42 pm - HDTR Sculpture Admittedly I think these are CG renderings rather than physical statues, but I've been wanting someone to do this for a while!
Sculptures in Motion by Peter Jensen

|
August 11th, 2009
05:07 pm - Code snippet of the day Ran across this in the heppkat codebase today. I believe the comments come from MFranklin.
// This is the best reason not to use this class. What the hell is going on here? // Nobody knows, as evidenced by the fact that its most prominent use until recently // was wrapping things that weren't AWT components. AWTComponentWrapper acw = new AWTComponentWrapper();
... // This is another good reason not to use this class. This line should instead // be changed to System.out.println("I give up!"); System.exit(1); return acw;
In case you're wondering, we don't use this class anymore. I think.
|
July 2nd, 2009
07:45 am - Yellowstone

I know what you're thinking: "Yellowstone has some of the most magnificent scenery ever, up there with the Golden Gate and the Swiss Alps? Isn't that exaggerating a little bit?"
This steam tornado forming over a geothermal hot spring proves otherwise.
Many more pics to come, I'm still working through them all. Some quick words: buffalo, buffalo walking on the road, elk, pronghorn antelope, deer, black bears, moose, bighorn sheep, osprey, golden eagles, herons, marmots, chipmunks; geysers, hot springs, waterfalls, mountains, lakes; snow, hail, rain, wind, sunburn.
|
May 15th, 2009
06:22 pm - Homestead Video Game Throw-Down 'Lympics 2009

My team lost the week-long competition by 1 game. (Not Rock Band though! We won that one.) There will be a next time though. Oh yes, there will be a next time. They will rue the day!
|
May 11th, 2009
May 4th, 2009
01:28 pm - Hyperbagging: A New Innovation In Gameplay I would like to introduce the concept of hyperbagging, a.k.a. fourth-dimensional teabagging.
In first-person shooter games, teabagging is the act of killing another player and then rapidly crouching up/down on top of their corpse, in order to humiliate the target. 4th-dimensional teabagging is the same act performed in a higher dimension. Most game engines do not support higher-dimensional gameplay, but this can be approximated by distributing the teabagging over time.
For example: a player might crouch/uncrouch repeatedly in a certain area, then lie in wait to ambush someone on that point. Later, the player may stop to teabag in spots where they had previously killed opponents.
The full measure of the target's humiliation is hard to visualize, but can be approximated by a time-lapse video or an composite image. These lower-dimensional projections of hyperbagging allow us to grasp facets of the player's shame without requiring visualization of the entire act (a.k.a, tessersack).
The implications of hyperbagging include some surprising outcomes, such as allowing players to be teabagged from all directions simultaneously, including inside themselves.
 2D projection of 4D hyperbagging.
|
April 10th, 2009
12:08 am - You Have Lost Karma

In reference to my Fallout 3 Bug Report (giving teddy bears to orphans should not cause the player to lose Karma).
I received this after picking the lock on the snack cart at work to donate some bananas. :) Props to Keith - I lol every time I look at it.
|
March 30th, 2009
12:03 am - Technological Decay in One Week
- Vista box at work can't talk to any printers.
- HP printer won't print black, even though its ink cartridge is full.
- XP box has an endlessly-installing update.
- Linksys router needs to be power-cycled daily.
- Flash card reader lost an entire day's worth of photos
- MSJVM can't be installed OR uninstalled on some Vista machines. Windows 7 won't install it at all.
- VC6 programs can't be rebuilt under VC8 due to reliance on MFC80.dll and complexity of side-by-side Windows DLL installs
- Buildr VPS was wiped and reinstalled by tech support after Win2k3/ASP.NET went t*ts-up.
This is just the technology that is not under my control.
|
March 17th, 2009
05:13 am - Moody printers Printers are moody and tempermental like artists. After installing Vista at work, my computer can no longer talk to any of our shared printers.
ME: Damn, I need to print a boarding pass! I guess I'll try my HP C4480 Photo Printer/Scanner at home.
HP C4480: Black is such a dreary color! I prefer bright bold vibrant colors, full of life and anticipation! Greens, reds, yellows: they are the springtime! Speak not to me of black.
ME: But I need a boarding pass.
HP C4480: If you were to paint it on a flower, I would print it for thee.
ME: I don't think the United scanners read flowers.
HP C4480: I will not compromise my art! I shall print it in a pale grey-blue, which is the color of the skeleton THAT IS ALL I SEE WHEN I LOOK AT YOUR FACE.
I really hope United's gate scanners are high-contrast.
|
March 12th, 2009
04:13 am - Dvorak creates new words Since upgrading to a new computer at work (now with less crashing! 4th time's the charm -- thanks, Vista64), I've had to revert to a plain 101-key keyboard. Sadly my old Kinesis is PS2 only.
I'm so used to typing Dvorak on the Kinesis that it's a learning process all over again. Because the keyboard is flat, I often end up transposing my right hand over by one key. Because Dvorak is laid out with vowels on the left-hand home row and consonants on the right, this has the effect of making words that almost look like they should be English.
Some examples:
"Seriously" => "Neciounry" "Malevolent" => "Bareworeth" "Human" => "Dubat" "Werewolf" => "Mecemory"
Of course I end up typoing all sorts of more mundane things: "Derro hdece. Youc daic nberrn pcehhy."
If I ever want to write a fantasy novel, I can use this as my language on the cheap. Imo it looks a little bit like Welsh. Maybe I should trademark some campany names made this way. Bigconoyh (tm)!
|
March 2nd, 2009
12:03 am - Adventures in Clojure and Python Previously I wrote about Python as an excuse to complain about names of functions that I didn't agree with. Recently I ran across a couple more.
Python - join vs. split
In Python the join operator is a defined on strings, not lists. You call it like so: ",".join(["a", "b"]).
This avoids forcing every new collection class to redefine join(). I get that. The semantics read backward to me as a Java programmer, but I realize that's my problem. However, given that that's the way things work are supposed to work, why aren't split and join called in the same way?
",".join(["a", "b"])
"a,b".split(",") # why is this backwards?
Reading this code snippet makes me dizzy. Please pick a word order and stick with it. English is SVO and reads left-to-right, so I'd recommend that.
Clojure - some vs. any?
Clojure defines several methods for querying lists about their elements:
(every? ...)
(not-every? ...)
(some ...) ; why not 'any?'
(not-any? ...)
Anyone care to explain how "some" got its name? Why not call it "any?"? The naming and the punctuation both manage to be asymmetric.
Clojure - pop but no push
In Clojure, lists and vectors support both pop and peek, but not push. I understand that objects are immutable in Clojure, but if you can have a pop, you can also have push. In fact, the existence of one pretty much implies the existence of the other.
Principle of least surprise
Asymmetries occur when there is More Than One Way To Do Things. I understand that language designers don't want to clutter things up with duplicate operators, but I don't think Clojure has any excuse. It already has first/second/nth and last/butlast/drop-last. There's plenty of duplication (don't get me started on why "drop-last" isn't called "but-nthlast").
The principle of least surprise should be observed at all times. As a developer, if I see that a list implements pop(), I'm going to expect it to implement push() as well.
|
January 29th, 2009
11:57 am - Zombie beetles OMG Zombie beetles.

Though I'm a fan of cybernetics, this picture is somehow disturbing. I think it's the moral aspect of zombification — that the purpose of the electronics is to subvert the beetle's free will or self-control. It would actually be better if the beetles were dead, then there wouldn't be a moral component to the interaction (ignoring beetle next-of-kin).
On the other hand, this may be closer to remote-controlled rats, who are trained via stimulus-response conditioning. Humans have been doing that to dogs, horses, and each other since the dawn of time. Remote control just means the stimulus (pleasure) can be triggered by a radio instead of requiring immediate physical access; sort of like a shock collar in reverse, or a cell phone call from your S.O.
|
January 5th, 2009
12:05 am - Twin Peaks cyberpunk There is something very cyberpunk about San Francisco. From Twin Peaks tonight it looked like a Blade Runner matte painting.

I spent Christmas in Massachusetts with my family, buried under a couple feet of snow. In a nutshell, my nephew loves trains and my niece is addicted to anything involving dairy. The kids are adorable and the family is doing well; there are plenty of pictures on Flickr that I won't bore you with (it's like watching someone else's vacation slides).
I hope everyone enjoyed the holidays, and I wish you all a happy new year!
|
December 7th, 2008
02:38 pm - Fallout 3 Bug Report Sneaking up behind the little girl in Megaton and using pickpocket to give her a Teddy Bear should not cause the player to lose Karma. That is all.
|
November 21st, 2008
01:41 am - Your Darkest Hour Jolene and Brian point out that by the same math, 11,665 people will count any given hour as their darkest, the one that lives forever in infamy.
It is interesting to note that everyone has a finest hour so far. Whether or not this is your finest hour ever depends on what happens in your time remaining. However, this means that even more people may consider this their finest hour so far (especially newborns!). The exact number of people is left as an exercise to the reader.
|
November 19th, 2008
10:49 pm - Your Finest Hour
I felt the urge to do some math and calculate how many people are currently experiencing their finest hour. For any given hour, how many people around the world will count it as their finest?
11,665 people will count this hour as their finest.
Of course there are lots of caveats:
- Age is not evenly distributed.
- Population is not evenly distributed. Fewer people are awake during some hours, so the number of people likely to have their finest hour is smaller.
- "Finest hour" is a relative term. Your finest hour may not compare to someone else's. Infants who die young will find their choice of hour unfairly limited ("You lived what anybody gets, Bernie. You got a lifetime. No more. No less." --Gaiman).
- "Finest hours" are not evenly distributed over lifetime. Many older people feel that their golden years are behind them. However, this feeling might just be based on the probability of their finest hour occurring in the past vs. the time remaining.
- "Finest hours" are influenced by external events. Depending on whether you believe the world is progressing or imploding, opportunities for finest hours might be better in the future or the past. Wars, elections, the space race, etc., also bring out "finest hours" for many people at once (cf. 1938-1945).
This makes me feel better when I look at Natural Geographic photos. There are millions of photographers out there, any one one of them could have just taken the greatest photo of their life.
|
November 1st, 2008
03:48 pm - Happy Halloween! Went to a great Halloween party thrown by gclarke, stiill, and a bunch of other awesome people. The theme was a supervillain convention called 'VillCon'. There was a trophy display table with Unobtanium, the Sword of Sorrows, 'The Real Starry Night', and the Crown Jewels of Noobtania. There was a death-ray making station with water guns, paint, and stick-on jewelry. Zombie Lenin (Geoff) tended bar while Dr. Horrible (JMJ) ran turntables and a light show.
The crowning achievement was the bluescreen room, where pics of people were taken as they came in and automatically turned into comic-book frames. This is me as Mecha Stalin (the preserved head of Stalin on a robot body):

The the chroma-keying sometimes likes to eat people's clothing, but the net result is amazing. The chill-out room had photos rotating as a slideshow so party-goers could see themselves up on the screen.
More supervillain pictures are up on Matt & Ruth's site.
Edit: Original bluescreen pics are up too!

|
October 29th, 2008
02:19 pm - LolCats Art Show OMFG, how did I miss this?! There was a LolCats Art Show in San Francisco last weekend. I'm so happy that this exists, but also angry that I didn't hear about it! The Cheezburger guys were there too... ah, it kills me. There's so much I want to talk with them about.
|
|
|