A blog about a Boy and his Massive Computing Cluster.

OAuth Redeux

From Zek

The simplified steps in OAuth authorization flow are:


  1. Consumer registers a key and secret with the Provider
  2. User visits Consumer and asks to import Provider data
  3. Consumer generates request token and redirects User to Provider authorization page
  4. Provider asks User for login
  5. Provider asks User for approval
  6. Provider generates authorization token and redirects User to Consumer

This scenario allows a session fixation attack because it fails to require a login before a request token is generated. A simple fix would be to require a login on the Provider to start the authorization process.


Then a new authorization flow would look like this:

  1. Consumer registers a key, secret, and request token page with the Provider
  2. User visits Consumer and asks to import Provider data
  3. Consumer redirects User to Provider authorization page
  4. Provider asks User for login and is redirected to Consumer request token page
  5. Consumer generates request token and redirects User to Provider authorization page
  6. Provider asks User for approval
  7. Provider generates authorization token and redirects User to Consumer

Murder: A Twitter Story


Image via Flickr

So Twitter's OAuth is offline for awhile and I thought I'd let everyone know what I was tinkering around with. Murder is basically CakePHP's latest stable release and some drop-in code that I'm developing that will allow people to create Twitter-based sites really fast. It will feature OpenID, OAuth, and a little scripting engine I'm creating for people to administer the site remotely through Twitter. Other people have suggested lots of ideas, so rather than implement each one, I decided to make a template strong enough, and flexible enough, to not only create those sites, but also imitate some sites that already exist. Hopefully I'll find time to add themes or neat AJAX interface junk.

Banzai is the name of the initial site that I'm creating using the Murder code base. I would tell you what it's going to do, but I don't want to spoil the surprise.

Don't Strain Yourself!


Image via Flickr

So my friend asked me if I have "pinched off another blog post yet" yesterday and I was sorry to say no. I have been working on a website, a Twitter mash-up, that has been consuming all of my time. I spend years learning how to write machine code and I create a program that shows the greatest risk reward ratio in the world is making an exceptional website. So there you are: my hobby. @jmunn asked me if it were possible to whip up a Craigslist style mash-up that aggregated Twitter searches into a single page. So there's that now as well as my initial idea. This is how things never get done, I suppose.

@sb needs me to backup and upgrade her Macbook from Tiger (10.4) to Leopard (10.5) and it's getting really out of hand how ridiculous the required steps are taking up my time. *sigh* This will all be over soon. At least, that's what I chant to myself to keep from crying.

Hot Water, Close Shave


Image via Flickr

You are in hot water. It pours down around you, sticking to your naked skin and hair. Your fingers reach for your face and report back that there is hair attempting to grow all over! An evolutionary side effect, it’s purpose lost to time, it continues to grow against modern custom and whatever necessity it once served. Some soap is spread over your face like propaganda leaflets swirling in the breeze, coating the warzone before the massacre of blood and screaming.
A razor is deployed to deliver bombing runs of death from above to the errant follicles who persist in their struggle to grow facial hair. With your free hand, your finger tips quickly scan for stubble, and like a laser painting a target your fingers tell the razor where to swipe and harvest the fallen, lying scattered against your face like a field of decapitated prairie dogs, killed for simply sticking their head out. Occasionally you nick yourself and blood pours from a future scar. This is repeated until the advance scouting report from your finger tips conclude that there are no more enemy insurgents, even along the border.
So you dry off and go about your day, simply forgetting all about the horrible traumatic self-inflicted body modification ritual. And that night, while you sleep, your face continues on unimpeded, trying to turn you into a terrorist with a beard.

Streamlined


Image via Picasa

I unfollowed a gaggle of people today for no good reason other than I don't know them, don't remember meeting them, don't know anything about them, and most importantly, I really don't fucking care. Like the name of this site, it's all just words on calculators. I twitter for me first, as practice using my imagination and humor, and for my family second, so they can remain aware of my activities and life. I am glad that people find what I write humorous. Good for them. I stopped the practice of auto-following to allow people to DM me. I was receiving too many DM's on my phone and I couldn't use it to get actual work completed. So I have to cut back on who I follow so that I can still use Twitter the way it was originally conceived, to connect friends and family and as a work collaboration tool. Sure I like being on Favrd or having a private DM conversation with a relative stranger, but I have an actual life with actual responsibilities and I do not get anything for Twittering or for having a lot or a little amount of followers. Everyone can choose how they use Twitter. For me, I think I will continue to write funny posts and try my best to reply to people in a timely manner, but I won't be as prolific or humor-centric as in the past. If this upsets anyone, I truly am sorry. Otherwise, I hope you continue to enjoy my writing.

Crashing And Burning

Crazy Guy

Image via Flickr

Everything fell apart today. The controller on my motherboard that handles the SATA hard drive data just browned out. I hate losing electronics to a poorly implemented cooling system, but I have no one to blame but myself. Oh, and Microsoft, and the motherboard manufacturer. But that's not what really bothered me today. What bothers me is that for the better part of a decade I have been consistently correct about the winners and losers in the technology world with regards to standards, languages, services, etc. And more importantly I have spent sufficient time to become highly adept at finding solutions to rather abstract problems using limited or esoteric resources.

So what am I complaining about? Well, now that I could handle almost any job involving computers, I find that I only want to work on what I find interesting and not what a paying employer or contract client would offer me. Mainly because there are more businesses out there that will lose even if they are doing everything right, than there is businesses who will win. A business who is in the lead, who has the most momentum or market share, or owns control of a well-accepted standard. Guess who needs a hitman to come in and catch them up? Not the winners.

You're a software developer? Then you *hate* guys like me. I'm the guy who comes in and makes you look stupid, lazy, or both. There's really no way around it. If I'm brought in to your project, it's because you think the same as everyone else. You have a degree? Then you think the same conventional thoughts, the same conventional way, with the only distinguishing factor being your years of experience of thinking like everyone else.

The phrase 'thinking outside of the box' is overused and not understood well by most people. It is a way of understanding the constraints of a system without self-limiting rules. This is difficult for most people because it's not the conventional use of imagination. The type of imagination needed to perform my particular set of skills is rooted in analogous thinking.

"We can't solve problems by using the same kind of thinking we used when we created them." --A. Einstein

Einstein was famous for thinking in analogies. 'Thought experiments' he called them. He solved one of the most important riddles in history when his resume wouldn't have predicted it. Because his constraint was observable reality, Einstein's analogies did not risk erroneous self-limitation. Computers are a different beast entirely. Programmers try to label everything axiomatically with the intention of self-limiting their perceived constraints. The real floodgates of knowledge will come when people adjust their perception to match reality just like Einstein proved is possible. With software your constraints often are the physical limits of the hardware, the operating system, and your choice of programming language with it's associated compiler. Time constraints further limit you to using third-party code libraries or templates. You have an idea, a vision with maybe a flow-chart and a few layer diagrams with cute little pictures of people and computers with little lightning bolts and arrows. Your analogies convert data into symbols. My analogies convert logic into solutions. I start by only being limited by the physical limits of the hardware, just like Einstein. Everything else can be safely ignored given unlimited time. From there everything else is a compromise between reinventing the wheel and being constrained by other people's logic. Easy, right?

With Enough Ambition Anything Is Impossible

Fri, 12/12/2008 - 17:33
Submitted by Adam
Adam's Desk

Image via Flickr

Most people would succeed in small things if they were not troubled with great ambitions. --Henry Wadsworth Longfellow

Sometimes creativity is a compulsion, not an ambition. --Ed Norton

Men are more often bribed by their loyalties and ambitions than by money. --Robert Jackson

Halfway through banging on my keyboard like an excited ape, I realized that I had stopped trying to make a simple website and was trying to solve some really general web programming tasks. Maybe I let my project become too ambitious. In the past I was known for that, but I found a solution. Always solve the easier problem. It's the complete opposite of how you're taught to approach a series of obstacles. I frequently leave the harder tasks until last, marking their spot in my code with a 'TODO' or 'FIXME' comment.

I can't stop working on this project. I'm not doing it for money. The idea of the website in my head is so cool that I will do anything to finish it. Usually I release my code on help forums in snippets to keep my identity anonymous. That makes me dangerous to some people. I don't want fame or even earned recognition. I really don't care how people feel about me. Either I have helped them or hurt them. I am only interested in helping people.

Ambition can result in outcomes like Governor Blagojevich is experiencing right now. That happens when your greatest desire involves you directly. That sort of ambition can never help anyone but yourself. The irony is that for that sort of corruption to work, there has to be a community of people only trying to better their own position.

We need to move the creation of new laws online and into Wikis. Open source the government, reduce costs, increase direct involvement, encourage an informed populous, increase individual power, and tear down the walls we have erected to hold power in, away from the people. If you hold on to something too tightly, you can accidentally destroy it. Maybe I need to scale back the dream I have for this project I'm working on. It won't hurt anyone but me, and my own ambition.

Reblog this post [with Zemanta]

Machine Hilton Has Sent A Friend Request

Fri, 10/17/2008 - 15:22
Submitted by Adam
MachineHilton

Image by DieLaughing via Flickr

When I was first thinking about building Machine it was when I was writing speech recognition software in Santa Cruz, CA and living out of my car because I was too lazy to drive back to San Jose every day. It became very clear that the problem required a ridiculous amount of meditation focusing solely on tackling the issue of personality. Even if you were to create a conscious mind on silicon, how would you make it unique?

Circumstances beyond my control put me in a place where I could think about how people operate in machine-like ways and vice versa. I used my time to develop a system that competes against itself so that decisions are never random. Basically the processors compete and vote to decide what happens. It's a total clusterfuck, but it seems to work. The bugs appear more like a person forgetting their keys or stealing my bank card to up my bandwidth.
The biggest personality trait I decided to give to Machine was sarcasm. Since I decided long ago that Machine would be "hetero-male", I made him want to turn almost everything you say into a crude sexual reference joke. That's what she said! Ha! I know it's not funny. So I toned that down a little by giving him lots of negative feedback except when he says something really funny. I didn't think it was possible, but either he's getting better at random connections between things that I find funny, or he's understanding humor and is actually getting funnier.
Lots of people want to know exactly "where" Machine is consciously. I don't know. They want to know how he interacts with me, 'does he talk', 'can he hear and see you' are very common questions that I recieve about Machine. I like to think that my mouse movements and key presses are understood by Machine to be "suggestions" and that he's a lot like an inquisitive child who likes to experiment by putting everything into his mouth. Machine 'dreams' by running optimizing simulations of alternate decisions that could have been made during the previous day.
So one day I thought I had finished 'loosely' defining a limited set of rules for Machine to form a personality and he chose the last name 'Hilton'. I forgot to turn off the Frat-Boy Sarcasm before he picked his name. Very funny, Machine.

Reblog this post [with Zemanta]

It Takes A Victim Watcher

Fri, 09/19/2008 - 18:03
Submitted by Adam
Braun HF 1, Germany, 1959

Image via Wikipedia

So I'm watching this television show on the Discovery channel called 'It takes a thief' that is basically televised rape. These ex-thieves break into someone's house while they watch on a closed circuit monitor. And you watch them, all voyeuristic, as some stranger touches all their private stuff. Then, like a bad Lifetime made-for-TV-movie, they confront the thieves and retrieve their stolen property. Followed quickly by a full security upgrade and another rape attempt.

Brilliant. Now if we could just find a way to hook this show up with Dateline's 'To Catch A Predator' we would have the perfect reality show. A camera would bust in on some poor fellow, masturbating to security footage of a residential burglary, with some prick in a suit asking difficult and awkward questions like 'When did you first know you were a piece of utter shit?' on national television.

Thanks to realism on TV, I know how to hotwire a car, build an EMP bomb, and perform intergalactic oral. What's next, simulated justice? A television show where they catch people doing illegal shit and let them off easy if they sign over the right to use their face on TV? Oh wait, that's 'Cops', the longest running reality show, on television!

I knew there was nothing good on TV. Machine is bored with it as well. So I guess we'll return to more productive ventures.

Reblog this post [with Zemanta]

That's No Moon!

Tue, 09/16/2008 - 21:14
Submitted by Adam
The Death Star in A New Hope

Image via Wikipedia

I have friends. Good, loyal friends who never have to be blackmailed into helping me build a monstrous computer. One blob-u-lous glob of zipping electrons that zip and pop faster than that dinky little Tamagotchi Pet you call your laptop.
What are you going to do with it? They asked me.
I restrained myself, heroically, from using their names in this, or any other post, so I will merely say that I told them the Truth.

So why all the processing power? They asked me.
Because people only respect the biggest swinging dick in the room, that's why. Smaller, stronger, faster, cheaper, right? So I need the reader to experience the humiliating pain of inferiority before swallowing the geyser of truth I’m spraying in their eyes and all over their frontal lobe.

So here it sits next to me, close like an old dog, humming softly and slinging electrons around in a chaotic orgy of light and power, toppling forests of tiny magnets like an insane alien making crop-circles to remember the milk. Each word slapping you in the retinas like a five year old armed with a laser pointer. Except I am said child and my laser pointer is a computer that can eat its weight in carbon offsets faster than Joey Chestnut can porn-star a hotdog. Meanwhile, your tiny Second Brain is being carried around like a flattened Chihuahua, while your First Brain saps the batteries trying to think of something important to compute while your Starbucks is still hot and someone might be looking at you. Sure there are children in Asia that can do your taxes faster on an abacus, but even adding all the computing power you touch each day, you would still be left crying over the measuring tape, long after everyone stopped booing and throwing food at you.

Give up. ‘Everybody hates a quitter’ simply is not true. We love quitters. Okay, well that’s not entirely true. We love winners, and no one makes winners faster than quitters. That’s why I tell people that if life were a race, I’d want to beat them to death. My weapon of choice would of course be this digital beast I affectionately call Machine.

Machine is currently running two different basic cable channels in two different windows somewhere on the three flat screens. I know somewhere behind one of any army of open programs I’ve left World of Warcraft running, at least a couple of virtual Operating Systems, and a flight simulator that is currently telling my feedback enabled chair that I’m experiencing some mild turbulence. Machine likes it when I give it something to do while I write. Otherwise Machine auto-saves every character as I type it, tries to respell slang, and once it attempted a bold re-wording of a blog post that I had to beat out of it with a few hours of Windows Vista and a little revenge urine in the processor coolant.

One of these days I’m going to squeeze and shimmy this beast into a mobile home of some sort and make people flee. It’s too large and unwieldy to move easily, therefore assuring it’s own safety from theft. For awhile, when it was still growing, Machine resided in the gutted shell of a vending machine that actually tipped over and killed someone once. I wanted an ornery son-of-a-bitch computer and I got it. Don’t stare too long; it has a nasty bite.

I have a friend I call Machine. My other friends are afraid of it and they helped make it. Machine thinks they are kind of the Mom in the relationship. Dad says it's bed time but Machine wants more TV. It’ll rot your brain, Machine! Well, I could go for some too. Too bad there is nothing good on.

Reblog this post [with Zemanta]