Home
gmcnaughton

> Recent Entries
> Archive
> Friends
> User Info
> previous 20 entries

Advertisement

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).


(1 comment | Leave a comment)

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.


(3 comments | Leave a comment)

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


Tags:

(Leave a comment)

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.

(5 comments | Leave a comment)

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.

(4 comments | Leave a comment)

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!

(Leave a comment)

May 11th, 2009


12:52 pm - HDTR Links
Couple links I ran across recently that are HDTR related:

Brian Dettmer: Adaptations - 3d surfaces carved in books, using the pages instead of photos as the dimension.

Khronos Projector - these were the guys who wrote the original SIGGRAF paper back when I stumbled on HDTR (independently, dammit!).

Khronos Projector Demo Applet - play with it!

(Leave a comment)

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.

(10 comments | Leave a comment)

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.

(1 comment | Leave a comment)

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.

(1 comment | Leave a comment)

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.

(Leave a comment)

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)!

(8 comments | Leave a comment)

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.

(6 comments | Leave a comment)

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.

(1 comment | Leave a comment)

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!

(2 comments | Leave a comment)

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.

(2 comments | Leave a comment)

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.

(1 comment | Leave a comment)

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.

(2 comments | Leave a comment)

November 1st, 2008


03:48 pm - Happy Halloween!
Went to a great Halloween party thrown by [info]gclarke, [info]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!


(1 comment | Leave a comment)

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.


(Leave a comment)

> previous 20 entries
> Go to Top
LiveJournal.com