Apr 07 2013

Extending the Fifth Ammendment

There is this thing that has always bothered me about criminals – the real bad ones who get sent to prison for long periods of time for doing real bad things. What bothers me is the fact doing what they do isn’t just morally bad, it is stupid. Really, really stupid.

I’m not talking about the kind of ‘stupid criminal stories‘ Jay Leno snarks about. No, I’m talking about an inability to assess risk/reward ratios so entire and complete that I can only assume these people are brain damaged in some severe way.

Think about it, the risks of being a felon are considerable. There are the risks you take when committing the act, whether it be burglary or armed robbery or dealing drugs. Then there are the risks associated with the criminal justice system, from interactions with cops to time in prison; along with all that entails. Finally there are the risks of association; criminals often perform their criminal acts in conjunction with other criminals; surrounding themselves with others unable to properly assess all that accumulated risk against a relatively minor reward. (How much do burglars make, anyway? I’m guessing I make more per hour than most of them.)

And the risks I’m talking about go beyond the potential for jail time. No these risks often constitute grave, even mortal, danger to the criminal. And these elevated risks appear at every stage of the process; from committing the act, to getting aprehended, to the actual time behind bars–trapped there with the other criminals.

Studies indicate that criminals may not be stupid per se, but they may have exactly the kind of brain damage I mentioned earlier. In fact ADHD drugs, which reduce impulsivity, may reduce criminal behavior.

But there is more to it than that. Being impulsive does not a criminal make. By the same token, having ADHD does not make you a likely criminal. Nor does thrill seeking or any of the other kinds of behaviors exhibiting a different way of calculating risk against reward than the average.

Clearly the problem is a deeper one. I expect that, like everything else about human beings, criminal behavior is a soup of genetics and environment and no two people arrive at their destination exactly the same way. One can be wildly impulsive and not become a forger or a mob enforcer. In fact, for those latter two pursuits, I’m thinking impulsivivity is counter-indicated. Those people may have skewed math, but it isn’t because they don’t stop to think about what they are doing.

But what about those in-between? Those who commit criminal acts on impulse and learn their lesson? This might well be just about all of us. I know a few people who never drive too fast or cross the street against the light, but most of us don’t follow the laws exactly. And, for that great majority of us, if we get caught we pay the price. We deal with the consequences. We change our ways.

And there is the problem. For every drunk driver who kills someone’s family there are hundreds who never got caught or did get caught and never did it again. Drunk drivers who harmed no one, but most certainly had the potential. Are they equally bad people as the one with blood on his hands?

Well, yeah. There is that potential, right? Killing someone is bad, even when it is an accident. Same with injuring. Same with only harming property. These are bad things. And yet… And yet…

We can go back and forth all day, but it really comes down to a general rule in the USA that doing something bad once doesn’t make you a bad person, so long as you make up for it. So long as you accept the consequences. Whereas continuing to do bad things indicates something entirely different.

Which brings me to Facebook. Yeah, this whole essay (the bulk of which is seemingly entirely off subject) is really about kids doing stupid stuff and saying stupid stuff and then finding they are paying the consequences years later because it was all frozen in digital amber. They acted impulsively, as children do, and the adult them might be facing a lack of job prospects as a result.

So, Facebook. But not just Facebook; take all the existing social media and add in the constant recording of everything you do that is coming. Everything. Everything we say. Every move we make. All of it is going to be in a database. Now add in Google Glass, security video, and the coming age of spy drones everywhere; seasoning that database with video proof.

Then accept the fact it will be possible to forge or modify that proof in ways which might be undetectable.

And I’m not just talking about kids here, but everyone. The panopticon future is really going to happen. We stand no chance at all of stopping it. We are basically fucked because we are all liable for the stupid things we did on impulse. Those things that we will never repeat, but which will dog us anyway. All of it available for data mining. Any of it possible to fake.

Having said that, let me add this: I think there is a way out.

That way is simple: we become more forgiving. We modify the rule slightly. We say, ‘everyone is stupid sometimes, so we insist they pay the consequences only if they get unlucky and hurt someone or they keep doing it.’ In other words we keep the current status quo of letting people get away with things because they don’t get caught, but we do it in a world where they will get caught. Where everyone will get caught.

And the way we do this? In the USA we need a constitutional amendment that, effectively, extends the Fifth Amendment to the digital realm. In other places you need to add need similar protections to your legal systems. I don’t know how it would read, but I would put it this way:

Digital data at any kind can not be used in a court of law to prove guilt unless the collection of that digital data was approved by the court before the data is collected and where the order to collect specifies each source of data to be collected in detail and where a judge signs off on each source separately and where extensive and audit-able records are kept of the data as it is collected. However, digital data proving innocence may always be introduced in any court proceeding.

Mar 17 2013

Object Oriented Programming is actually simple

Go to the Wikipedia page for Object Oriented Programming (OOP) and you might be forgiven for thinking it is a complex subject. Read any of the criticisms of OOP and you might think it engenders both overly complex designs and overly simplistic designs. Paul Graham not only has it both ways, he once famously described OOP as a ”herding mechanism” that keeps mediocre programmers in mediocre organizations from “doing too much damage”.

The truth, as usual, is somewhere between the poles of thought. Yes, psychotic adherence to OOP principles results in enormously complicated ziggurats of code like the Java Framework. But it doesn’t have to be that way. OOP is a programming tool in the form of a way of thinking about problems. Like all tools you can use it where it is appropriate and choose a different tool where it isn’t. The truth is, you can make anything into a ‘Golden Hammer‘ and OOP is no exception.

The title of this essay claims ‘Object Oriented Programming is actually simple’ and OOP really can be simple. Let’s start with some goals common to all computer programming tasks:

  • Increase the extent to which code can use other code (Cohesion)
  • Reduce the extent to which code needs to know about code it relies on (Coupling)

OOP does these things by:

  • Making code easily reusable, while also . . .
  • Hiding the details of how the code you are reusing works

To do this OOP lets you break a problem into things that can do stuff. A thing is called an ‘object’ and the stuff an object can do is called the object’s ‘methods’. A program written using OOP consists of a bunch of objects calling each other’s methods. To increase reusability even more, OOP says that one thing can inherit the stuff from another thing, but change it up a little bit so it becomes a new kind of thing.

Got all that? OK, so how does OOP deliver on this? Let’s think of OOP as a three-legged stool. Without all three legs the stool falls over, and although any those legs might be useful as part of a chair or a table you can’t call it OOP without all three. These legs are (in decreasing order of general usefulness):

  1. Polymorphism
  2. Encapsulation
  3. Inheritance

If anyone with a programming background is reading this, they are probably exclaiming “Hey! Inheritance should be most important, not least!”

Nope. Not at all. Let’s go over what each of those terms mean and I will clarify.

Polymorphism

Polymorphism refers to the ability for one thing to be pulled out and replaced with another thing, without changing anything else. Remember our goals? For increasing Cohesion this ability to plug and play is hitting the ball out of the park! Done properly, Polymorphism means you can change the other code your code relies on any way you like and everything just works.

The real win is being able to do this at runtime, making your code into something that is just a bunch of co-operating things who know how to use certain of the other of things to do stuff, but do not care how the things they use do this or even where those things came from. This is really powerful stuff and, without Polymorphism, you can forget a lot of other cool ways of thinking about programming problems; like Software Design Patterns.

Encapsulation

Encapsulation is also called ‘data hiding’. Basically each of our things hides the details of what it does and only exposes to other things the stuff those things need to use. Encapsulation is like a power boost for Polymorphism, enforcing a separation between what a thing does and how it does it.

Sadly, although Encapsulation reduces Coupling by merely being there it isn’t as inherently powerful in reducing Coupling as Polymorphism is for increasing Cohesion. Everything comes down to how well you design the stuff for a thing. (In OOP we call the stuff for a thing ‘the Interfaces for an object’.) Do it wrong and the Law of Leaky Abstractions raises its head. This is because those hidden details can still affect how one thing uses another when those details have side-effects.

Inheritance

Inheritance is the weakest leg of our stool and the one most easily done without. Basically it provides a way for a thing to get some of its stuff from another thing without the programmer having to do anything except say ‘Inherit from that thing over there.’ Used wisely this allows you to easily build a neat and contained taxonomy of things which are similar Polymorphically but otherwise different. Used unwisely you get those ziggurats of code I mentioned earlier.

Most often Inheritance is used unwisely. This is sad, because just about all the criticisms against OOP can be laid against mis-use or over-use of Inheritance.

In Conclusion

OOP really is simple. OOP is merely a way of thinking about solving problems that breaks those problems into a collection of things that do stuff. And you don’t  even need an Object Oriented Language to do OOP; in the past I’ve written OOP programs in plain C and even COBOL 85. In fact you could probably apply OOP as a problem-solving tool in non-software solutions, although no examples of such come to mind.

OOP isn’t the only way to solve computer programming problems and it can easily be applied in ways that create more problems than it solves. But this is true of anything! Just make sure OOP is only another tool in your belt and you will be fine.

Mar 16 2013

RSS is dead. Long live RSS!

It’s rather obvious isn’t it? For the social media companies any open and well supported standard way of sharing information streams between individuals is rather antithetical to a business built around a walled garden. RSS was such a standard and thus they avoided using it in preference to their own, controlled, streams. Two years ago TechCrunch noted the level of success they had already achieved.

Funny thing about that, but RSS was not originally intended for personal use. In the beginning RSS was meant to provide existing news sources a way to automatically syndicate articles; RSS is an acronym for Really Simple Syndication. RSS just turned out to be such an excellent way of weaving together blogs (in conjunction with Pingbacks) that it became the de-facto standard. (To give credit; Dave Winer, the creator of RSS 2.0, was one of the biggest proponents of using it broadly for things like personal blogs.)

Thing is, two years ago was about the time we first saw claims that RSS is dead. Others pointed out the simple truth, it was fading into the background. Becoming plumbing. It was everywhere and, except for us old bloggies, people didn’t notice.

Now there are rumblings on the Net claiming that, by killing Reader, Google is trying to harm RSS in some way. That Google has its own walled garden and open systems need not apply. The call “RSS is dead.” Is going out over the domains once more.

Most likely this is crap. Yeah, Google is dropping other support for RSS too, but I am joining the ranks of those who think this might be a good thing for RSS. Dave Winer agrees.

I wanted to say that it’s possible to use RSS without being dependent on Google Reader. And since GR is going away, that should probably be seen as good news, not bad.

Winer even has some good advice for those trying to write Reader replacements. To paraphrase his recent ravings on the subject into bullet points:

  • Development on RSS stalled when Google rolled out Reader
  • This was because Reader didn’t work with the more advanced RSS streams and Google never updated it to do so
  • Therefore, when Reader became the big dog on the block no one wanted to break their feeds by making them incompatible with Reader
  • Therefore, end to RSS innovation
  • But now we are free to reboot RSS and RSS readers in interesting ways

So, can we look at this from an engineering point of view? RSS already exists as a spec with excellent support across nearly every open Internet system/language/framework/whatever. The RSS 2.0 spec includes a way to extend RSS without breaking any software that doesn’t recognize the extension. People like me already know how it works.

RSS 2.0 is also ugly as ten miles of dirt road and contains a butt-load of cruft. (Sorry Dave, but it’s true.)

We can go multiple routes here:

  1. We can extend RSS as it sits.
  2. We can do a RSS 3.0 spec. (Yeah, I know what happened with RSS 2.0.)
  3. We can let it go altogether and invent something new.
  4. Or we can just let the big companies in the business of leasing access to your soul win.

Your pick. After all, nothing is going to happen unless you get involved. But I’d like to point out that we are looking at the problem like Engineers here and we have an installed base to start from. This means the only responsible choice is (1). Ugly and crufty do not win this argument (as much as each of us would like to prove we know a better way) and doing nothing isn’t going to happen.

RSS is dead. LONG LIVE RSS!

Jan 05 2013

Potlatch 22 Programming Questionnaire

(I am leading the programming sub-committee for Potlatch 22 this year. What follows is the questionnaire we are sending out to all current and past members of the convention. Are you interested? If yes, buy a membership at the link above and fill out and return the questionnaire as soon as possible.)

(Potlatch is a Science Fiction Convention with a twist: it is aimed at readers and writers of the genre and focuses on the written form so monomaniacally that, instead of a guest of honor, we have a book of honor. In fact we have no guests at all! Everyone, even famous authors, buys their own membership and everyone is eligible to participate on any panel discussion they can bring a unique perspective to.)

Read the rest of this entry »

Aug 19 2012

Come on, baby don’t you want to go?

I had every intention of skipping the Science Fiction World Convention this year. Yeah, I have a membership, have had for a year. No, I don’t have anything against Chicago. At least not anything that would keep me from going there for a couple of days.

The problem is time: I don’t have it. I put myself into negative vacation time territory this year by going to Peru. The thing is, although it is traditionally held over a three day weekend (Labor Day), to really do a Worldcon requires a minimum of six days on the ground. I mean, just look at the schedule for Ghu’s sake! And I’ve done this before, I even skipped the Worldcon in L.A. (damn near in my own backyard) because I didn’t have the time that year.

So I wasn’t going. Then I maybe wasn’t going, but if I did it would just be for the three-day weekend. Then I might go, but I kept dragging my feet on actually buying a plane ticket. Because, well, I can only go for half the convention and that hardly seems worth it.

Just now I pulled that trigger: my flight is booked. I still need to find a hotel I can afford or a room share. But I’m going to Chicago, Sweet Home Chicago

Will I see you there?

Aug 19 2012

LiveJournal Import

Earlier I had started moving over posts one at a time; fixing up the links, marking them as ‘originally posted on LJ’, and what-not. I was also being fairly selective and not moving over the crap posts and the memes.

The problem was simple: it was a lot of work. As a result the effort stalled and I kept not getting around to finishing it. So, instead, I just whomped the whole thing over, pretty much willy nilly. I did go through and delete some of the crappier of the crap posts, like when I was reflecting over my Tweets as LJ posts daily. But the rest of it is on here, unmarked as originally from LJ and with links that might go back to LJ or even nowhere in particular. Not perfect, but it is done.

(Another annoying thing about the bulk import: It imported the comments, but made them all anonymous. Not displaying who said what removes a lot of important context to those conversations. I don’t like it, but I am unlikely to try and fix it.) [EDIT: Whoops. Wrong. It looks like it did preserve the user names on most of the comments.] [EDIT 2: Hah! Fixed the 'unmarked as from LJ' problem! I renamed 'Uncatergorized' to 'LiveJournal Posts' and then ran the tool to convert a category into a tag!]

Of course it isn’t really done done. I do want to properly categorize all those LJ posts. But that will take me a while and might require reading each one. The one good thing about doing that is I get a chance to delete the rest of the crap posts and memes and the like.

In the meantime, the spiders that have been crawling this site can go nuts. The rest of you can go back through the archives if you like, there is actually some pretty good writing there!

Aug 12 2012

Perfectly Pleasing Perseids

One of the advantages of owning property in the mountains is the dark skies at night; just the thing for observing celestial events. This is the kind of place where, if the moon isn’t drowning out everything with its light, you can see the milky way blaze across the heavens in all its glory.

So it was that, with a forecast of clear skies and weekend-timing that could not be better, I decided to hold a party for the peak of the Perseids meteor shower last night (Saturday the 11th of August). It was a bit late notice, so I didn’t get very many people out here. Nonetheless we had an good group for eating (BBQ chicken and buffalo burgers), drinking (of home brew ale), and meteor watching; followed by a pancake breakfast this morning before the party broke up and everyone went their separate ways. (Thanks to Amanda for picking some huckleberries in my forest to add to the pancakes!)

The meteor watching itself really could not have gone much better. The peak was actually scheduled to start around 2:00 this morning and continue on to dawn; which wasn’t great timing considering the moon was supposed to rise around 1:00, although the moon is a waning crescent right now and not as big a problem as it was last year. Yet we got a surprise–the peak seemed to start around 10:00 and continue to 1:00!

We were seeing meteors as soon as it got dark. By 11:30 they were averaging more than one a minute and we were getting two or three in a row. Once we got three at the same time, spread out in a fan shape. Many of them left these amazing smoky-looking trails in the sky. Best guess, we saw more than a hundred larger meteors and a lot of smaller ones that flashed and disappeared in your peripheral vision before you could turn your head and get a good look. We also saw a slew of satellites and had fun picking out constellations and the like.

However, after 1:00 AM it kind of trailed off and by 2:00 AM I gave up and went to sleep. I set an alarm to wake me every hour so I could go outside and check, but it never really seemed to pick up again after that. I did get this dramatic view of Jupiter, the crescent moon, and Venus–all lined up about 15 degrees apart around 4:00 AM.

I really couldn’t have asked for a more fun night and I’m so glad I got to share it with such a copacetic group! Maybe you, dear reader, will want to join us next year?

Aug 08 2012

Welcome to the Group Mind

Today John Scalzi opined “. . . if I want to have a thought of mine preserved for eternity, I put it on my blog; if I don’t care if I ever see it again, I put it on Twitter.

I rarely comment on ‘Whatever’, but this time I did have something to say. In fact, this is something I’ve given quite a lot of thought to. As a result I managed to whip out something relatively cogent in the heat of the moment:

This is true of both Twitter and Facebook: they are ephemeral. Of the two, Facebook is more like a conversation–albeit not a comfortable one. Think of those parties where nearly everyone ends up in the kitchen having six simultaneous conversations on different subjects while showing their baby pictures.

Twitter, on the other hand, is like a stream of consciousness. Except it is like a stream of consciousness in a world with limited telepathy or with group minds. So this stream is a river of thought, shared among a self-selected coterie, into which you can dip at will.

As I describe them, neither is meant for ‘the ages’. Think about it; a party conversation or a passing thought are not things you put a great deal of effort into creating, nor do you expect to retain them and discuss them over the long term. They might spark a more durable work, an essay or a story or a blog post, but they themselves are the moths and butterflies of the noosphere.

Read the rest of this entry »

Jul 22 2012

Red Robin makes good

Last week I wrote an open letter to the CEO of Red Robin complaining about how they handled a bad situation I was involved with at their Seattle location. I’m tardy writing this update, but the general manager of that Red Robin location phoned me a few days later. She was pleasant, apologized without making excuses, and explained they will be doing more employee training on this kind of thing.

Then she offered me a $40 gift card for Red Robin, which arrived this week, along with a very nice letter by the manager re-iterating what she had said on the phone. But you see, I don’t really care about the gift card. It was the apology I wanted and what I received satisfied me fully.

Why? Well, basically that is what you are supposed to do. Funny thing is, that’s how the whole thing started. My sneezing, getting some of it on someone, and he not accepting my apology; instead going into full-lunatic raving mode and threatening me. But that’s not how it is supposed to work. When something goes wrong, and you are the responsible party, you make a sincere apology combined with a willingness to make whatever changes (within reason) are needed to make it right. Then the other person accepts the apology with as much grace as they can muster. Shit happens, but that doesn’t mean you have to leave it stinking on the floor.

So, props to Red Robin! They did it how you are supposed to do it. This is refreshing coming from a corporate entity in modern America. They didn’t try to cover themselves. They didn’t avoid admitting a mistake in order to reduce potential liability. They didn’t just ignore the problem and hope it would go away.

Heck, she even apologized for the bar being out of Elysian that day!

Jul 11 2012

Open letter to Red Robin

[UPDATE: Red Robin makes good!]

To: Steve Carley, CEO Red Robin

From: Jack William Bell, an ex customer

Subject: Your staff put me in danger

Read the rest of this entry »

Older posts «