Friday, November 20, 2009

Appetisers, prior art and patents

Over the last year I’ve read many articles about how software patents are bad and evil and whatnot. Most of them give an example of a big evil company (often Microsoft) applying for some obvious patent and them laughing their heads about how incredibly stupid the whole thing is.

The problem is that most of these people do not understand how legal documents work. They read the brief and think, oh, wow, I could have thought of that!

BTW: I am not a lawyer and this doesn’t constitute as legal advice.

The brief is not the whole document

Briefs are not meant to cover the entire claim. That’s what the patent claim does. Instead, the brief just gives a short, general idea of the claim. Patents are not accepted, rejected or prosecuted on based on the brief.

Think of the brief as the appetiser in a meal. If all you have is an appetiser, you’re not going to get very full.

In other words, a brief is just that, brief.

Patents are all about implementation

If the patent applicant finds a novel way of doing something commonplace, they can still apply for a patent. Prior art doesn’t work if the methodology is completely different; likewise, you can’t sue someone if the method they used was completely different.

In other words, just because the idea is obvious doesn’t mean the method is also obvious.

If it’s mentioned in the patent, chances are it’s different

If you see the prior art you were thinking of acknowledged or mentioned in the patent, then that usually means that the applicant recognises that that art does something functionally related to the patent, however they still think that it’s different enough to warrant a patent.

To name one that has recently popped up in the geek news: In patent 7,617,530 (Rights elevator), the applicants specifically mention sudo as a prior art for process escalation, however consider the patent to be different.

Consider the patent in full

Finding prior art for some of the patent does not invalidate the entire thing. If it did, we could stop someone getting a patent for a tire engineered to grip tighter on pavements using a specific method with “prior art: tire.”

Legal language is not English

Patents are not written so that normal people can understand them; they’re written so that lawyers can understand them. Think of programming in BASIC – the language is based on English, but is extremely strict, and someone may find it confusing if they have no prior training. Similarly, legal language may be confusing to those not doctrined to the strict meaning of words in legal language.

Above all, READ THE PATENT IN FULL. Do not EVER go on just the brief alone. Seriously. It can save you a lot of trouble, and stop you from looking reeeally stupid. (*cough*Groklaw*cough*)

Hope this clears up some confusion!
--MarkKB

Thursday, October 22, 2009

In Case of Earthquake

Just to take a break from the monotony…

This sign is made of pure, unmitigated WIN:

Look me in the eye and tell me you didn’t crack up laughing like I did when I saw it. I won’t believe you. ^^

(Via Oregon Live’s Earthquake News.)

Tuesday, September 29, 2009

Corkboard 1.0 Build 03 and Gibraltar 1.0 Build 05

OK, basically I’ve just remembered there’s a bunch of stuff I forgot to upload! ^^;

So, anyway…

Corkboard 1.0 Build 03

For those who don’t know what Corkboard is, the way I envisioned it is a digital version of your fridge or (yes) corkboard – reminders, phone numbers, schedules ect. I plan to also include messaging, calendar/scheduling and gaming capabilities, but for now we just hove post-it style notes.

This build basically fixes a bunch of bugs, including a few to do with Vista, and also allows deleting notes.

Corkboard home page 
Corkboard download page
Build 03 readme
Build 03 changelog

Gibraltar 1.0 Build 05

Gibraltar is an easily configurable and flexible installer – in fact, I use it for all my programs.

It originally started life as Project Nelson’s setup program, but I thought it’d be much better as a general-purpose installer.

Build 05 fixes some bugs, and also outputs a log file, which is viewable by using the /d command line switch.

Gibraltar home page 
Gibraltar download page
Build 05 readme
Build 05 changelog

I also hope to release Comic Strip 1.0 Build 09 within the week.

--MarkKB

OpenCity vs. “Microzoft”: Why Are Linux Developers Jerks?

OpenCity is an awesoem free city simulation that I came across back in 2007, but since I moved to Windows Vista, I haven’t been able to run it.

OK, let me backtrack a little. I have been an avid Linux fan since 2001, when I ran a Red Hat 7 box. But one of the things that’s always bugged me is the attitudes of some people. Don’t get me wrong, it’s not everyone, but even one sour response can spoil the broth, so to speak.

There’s a long story behind my usage of OpenCity on Windows Vista, however I’m not going to tell it right now, seeing as it’s, well, long.

Anyway, I decided to try to run OpenCity again recently. No problem: go to the website, download the install binaries.

And then I saw this:

Please note that Windows platform is a secondary target. It's mainly because Microzoft[sic] doesn't support OpenGL correctly. Blame Microzoft not us !

Sigh.

There are two things wrong with this statement:

  • It’s fine if Windows is a secondary platform and you don’t/can’t devote resources to it. What’s not fine is blaming Microsoft for the fact. Microsoft didn’t make you not care.
  • OpenGL is supported just fine on Windows. Microsoft provides a bare minimum base ICD (like most of its’ drivers), and expects the manufacturer to provide its’ own ICD, as it knows how to properly support OpenGL best.
  • Oh, and there seems to be something wrong with your “s” key; it keeps randomly generating “z”s. :D

Now, I could put this down as simply being misinformed. The OpenCity development team may be repeating common “knowledge” that has been parroted without checking. But then there’s this:

In case where OpenCity doesn't start under Vista, blame Microzoft again, not us ! We've worked hard to make OpenCity as portable as possible but Microzoft always tries to make open source developer's life harder and harder.

I’m sure Microsoft employees have nothing better to do than dream up ways to make your porting attempts fail. I can just hear them now: “Hmm, how can we annoy those OpenCity guys today?” “I know, lets break their build again!”

Seriously, you need to step back and examine what you just said. You said Microsoft is always looking for ways to stop you from making Windows apps (albeit free/open source and/or ported from Linux.) In other words, they are trying to stop people from using Windows.

It doesn’t matter whether the software is FOSS or not – its’ still Windows software, and while because a program is on Linux and Windows may not make someone buy Windows (though it probably will influence them in that direction), not having a favourite program on the platform may mean loss of a customer.

Microsoft simply doesn’t care what philosophy your app has, as long as you use Windows to run it. That’s the simple truth.

It’s important as a developer that you be as unbiased in your code as you can, because, in the end, the customer does not care what the specifics are. They will, however, care that your application doesn’t work, and, rightfully so, they will complain to you. If you must work around some OS bug, so be it, but remember, you chose to build for that platform.

(And no, OpenCity still doesn’t work. :( )

Sunday, September 13, 2009

9/11: A Retrospective

Originally posted to my deviantART Journal.

What was I doing on the day the Twin Towers fell?

Honestly, I can't remember. Is that a bad thing? Keep in mind that I was only ten years old.

I'll dedicate this space, instead, on what I remember afterwards.

I remember echoes of rumours that an aeroplane had crashed into a building, maybe at lunchtime. I remember a small television on a dolly; whether or not we watched the news reports or not I don't remember.

I remember seeing the news early the next day on CNN.

I remember clearly the photograph of the South Tower, engulfed in smoke, that was displayed predominately on the front page of the Western Leader (our local newspaper), captured by a photographer from Laingholm.

Photographs of young, sad children waving the American flag. Photographs of the rescuers, with the haunting imagery of the smouldering ruins as their backdrop.

Photographs of the hole in the Pentagon, and of the remains of United Airlines Flight 93 in a field in Pennsylvania.

I have all these in a scrapbook. I tried to collect newspapers, as many as I could find, and paste anything about the disaster I could find into it. Even though the pages are yellowing, I still have that scrapbook on my bookshelf, tucked away with a few issues of TIME. Perhaps I did it for a school project? ... I don't know.

At the time, I don't think I realised what had really happened. How do you explain death to a ten year old? It was an abstract concept, far removed from the minds of the young. I just knew something bad had happened, and people were hurt. People were no longer alive.

On that terrible day, eight years and two days ago, we lost many people. Many lives were changed. And so, come September 11th, we morn the lost. Not only that, we celebrate their lives. We wish them and their families peace. We lower our flags to half-mast to honour their memory.

A hundred years from now, when few are still alive who remember the disaster, would we still morn? Maybe. I certainly hope that we remember what happened, at least.

That day was a day of sorrow, a shadow that hovers over us, even though the shadows of the Towers hovers no longer. A blight, a smudge in the manuscript of human history.

But we can't let that stop us.

So, rest in peace, those soaring souls that were joined with the ground and sky. Wherever they may be, we have to hope they are finally at rest.

And as we stand, sit, walk and run, drive or fly or swim or boat, we remember them on that day.

We need to remember.

Wednesday, August 19, 2009

Mark Guesses the Origin of Words #1: inflammable

The word flammable, meaning easy to set on fire, derives from the word inflammable, meaning… easy to set on fire. The reason flammable was created was because people thought inflammable meant not-flame-able.

But where did inflammable come from?

My guess would be that it derives from the word inflame, meaning… to set on fire. This use of the in- prefix is similar to inflate and increase. The reason inflate and increase didn’t get a similar treatment is probably because flate is far enough from float to be considered different words, and we associate crease with a different meaning (to fold neatly) then we did back then (probably “divide” or “make greater”. Apparently, crease actually derives from the Latin word crea, meaning to create.)

--MarkKB

Tuesday, August 18, 2009

Update on SiteSled Issues

You may have noticed some regular outages over the last half-year of my website at http://makk-b.sitesled.com/. There seems to be major problems up at SiteSled’s end, and I’ve been hoping that they’d get ironed out if I just weather the tide.

The most recent problem hasn’t limited your ability to look at it, but my ability to upload stuff – in fact, most stuff seems to be broken – FTP, HTTP upload, the forums, their wiki…

Apparently, hopefully, they’re fixing their ongoing problems:

It is true that we've experienced several extended outages, and communication has been spotty. The current software has been in use on SiteSled and our other free hosts since 1998, and is no longer supported with updates. This has caused several issues, which we are still working to solve.

[…]

We have been installing a new software suite that will allow us to offer a wide range of additional features on SiteSled.com and it's new sister site. We hope to be able to port over the old sites, but this has not been confirmed yet.

We will try to keep you informed, but again, our current software has very limited communication abilities.

We appreciate your support through the rough times, and hope to provide you with additional services in the future.

Thanks,
SS

[From the comments of this blog post – scroll to the end to see it.]

If this is true, it’s much appreciated (and a long time coming :D). Hopefully, this will all sort itself out, but if not, I’ve been researching both free and paid hosts. Although moving really is a last resort (since I’m lazy and don’t want to have to send everyone along to the new site. ^^)

--MarkKB

Monday, August 10, 2009

App Paths? What App Paths?

This article is part of Bad Things Programmers Do, a laundry list of common mistakes that catch even the best developers.

One of the most annoying things I’ve come across while developing Project Nelson is the dreadful support for App Paths in other applications. Now, for most devs it would probably be only slightly annoying, but it’s especially aggravating for me seeing as Project Nelson is dependant on them being there to work (efficiently).

What are app paths anyway?

Short answer: The term “App Paths” refers to the registry key located at HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\App Paths.

Long answer: Since Windows lets people install software where-ever they please (and good-neighbour apps should never assume they know where an app lives), App Paths provides a central lookup for the locations of any given app. Think of it as an application address book.

What’s the big deal?

While most of the big/popular/old programs register their paths, some of the newer/smaller/unpopular apps don’t. I find this happens most among independent developers (for example, IRC clients and RSS readers are dominated by these people) and open source apps or Linux-ports.

But even big, powerful, closed source companies can do this – for example, Safari (yes, the web browser) doesn’t do it, despite the fact that iTunes does. Whisky Tango Foxtrot.

Why should I use App Paths?

Say I wanted to launch Firefox. I could assume that I’d find it at C:\Program Files\Mozilla Firefox\firefox.exe, and for 90% of the English-speaking world that’d be alright. However, then my program would break for:

  • People who installed Windows on a drive other than C:.
  • People who moved their Program Files directory to a drive other than C:.
  • People who installed Firefox in a directory other than the default.
  • People who don’t speak English.

Nice going, you just angered an 30-year-old Brazilian who installs his software to a network drive and has his Windows directory on D:\. Pray he’s not a mobster with contacts in your town.

Long story short, if you expect other developers to run your program, you’ve got to tell them where it is first. :D

How do I use App Paths?

Look up the default value in the key HKLM\Software\Microsoft\Windows\App Paths\%filename%, where %filename% represents the filename of the executable (e.g.firefox.exe).

  • You should also look up the “Path” value (in the same key) so you know what CurrentDirectory you should run it under; if none exits, simply use the parent directory.
  • Some apps (for some odd reason) use HKEY_CURRENT_USER instead of HKLM. It’s best to check both places, just to be sure, but you won’t be missing much by only using HKLM.
    • If you're developing an app, never store your app path under HKCU unless you know your app will only be used by one user on each computer or you install in the users’ AppData directory (*cough*Google Chrome*cough*). The reason for this is because you then have to set it for each user (e.g. at first start), and when you uninstall the app, the old references will still linger.

Setting up shop

You should register yourself in App Paths as part of your installation script.

Register the following values under the key HKLM\Software\Microsoft\Windows\App Paths\%filename%:

Value name Type Value
(Default) String value (REG_SZ) The path to the executable (e.g. “C:\Program Files\Mozilla Firefox\firefox.exe” for firefox.exe
Path String value (REG_SZ) The CurrentDirectory you want to open the executable under (optional)

What about Linux/Mac OS X?

  • Mac OS X uses fat binaries, so all you need to do is look in /Applications.
  • Linux will store the program in either /bin, /sbin, /usr/bin or /usr/sbin (most likely in /usr/bin), so search those directories and you should find it.

Either way, these locations should be in your $PATH, so you shouldn’t have much trouble finding programs, and programs shouldn’t have any trouble finding you.

Friday, July 17, 2009

Delivering Papers (Or, Is There A Birdie Heaven?)

Time to write one of those anecdote thingies I’ve been promising. ^^; Well, here goes…

If you guys don’t know by now, I make a living[1] delivering papers. And, as you guys also know, I’m rather lacking in what I call “good judgement” – brash, rude, lazy, a procrastinator, not looking where I leap, don’t know when to quit, always got to be right…

Wait, where was I?

Oh yeah, delivering papers.

One night[2], I saw one of the usual cats[3] sitting in the middle of a driveway. Now, this kitten was (one might say unusually) voracious/eager, so to see her just sitting in the driveway seemed, well, odd. Still, I walked up and stroked her head. Even more unusually, she didn’t move at all.

Then I noticed what was in front of her.Sparrow at its' last vestiges of life.

There was this poor little sparrow, lying sprawled against he pavement. It’s eyes were still open, and for a moment I stared at it, not realising I was still stroking the kitten.

And then they blinked, and I realised with horror what had happened – that it was still alive, and the last thing this poor magnificent creature would ever see is big evil Man congratulating his proud pet on another kill.[4]

Crud.

If you’ve ever looked into a small birds’ eyes, you’d know they contain in them a sort of wonder, a curiosity, a spark in their beadyness that few others posses. I guess you have to be observant when the world is out to get you and your food’s smaller than your head. To see that spark there, even at the last vestiges of life, really gives this feeling of… great sadness, I guess. It sobers someone to the reality of things that we ignore day-to-day.

But there’s also another thing I saw in that little birds’ eye: hope. A hope for the future, that there’ll be no more death and killing and disease and poverty…

A hope that tomorrow’s going to be better.

Do not go gentle into that good Night,
Rage, rage against the dying of the light.

-- Dylan Thomas

--MarkKB

Footnotes:

[1] Of course, I don’t mean a proper living (I get to board free with my 'parents :D), but $20 each week isn’t too shabby IMHO.
[2] Oh, um, Boss, did I say night? I meant day! At 4:30p.m., even! ^^;
[3] It’s odd - some cats like me, some are scared of me, and some like to put stitches in my hand. ^^ Just kidding about that last part, that’s what my doctor does.
[4] “Man” here is the same Man who killed Bambi’s mother. Yeah, we’re a horrible bunch. (And that it’s not my pet is beside the point, we’re talking about the sparrow’s perspective.)

Tuesday, July 07, 2009

Comic Strip 1.0 Build 08

Comic Strip

Another day, another build of Comic Strip. Ah.

The main change between this and the previous version is that it can extract the comic location from files given the right parameters. I also added some advanced options to the Add/Edit Comic dialog, so you don’t have to edit your comic list manually to add them. Lastly, I fixed the Author Notes problem present in the last build.

Be warned that the program will seem unresponsive when traversing long periods of time, or when downloading comics, so it’s not recommended for a slow internet connection. Also, remember to back up your comic list before installing because it will be reset when you install.

So, try out The Wotch and El Goonish Shive (the two example comics that use location extraction) and send any bugs to my email address (markkeyb@gmail.com).

Comic Strip home page
Comic Strip download page
Build 08 home page

Monday, June 22, 2009

Slow Internet and Trackbacks

On a sad note, due to a screw-up with the guy who wanted to change us to Telstra Clear broadband, we’ve been on dial-up this last week. (And, due to another screw-up with technical support, it was all unnecessary – Vodafone hadn’t disconnected us yet!) Fun.

In other news, this blog now has trackbacks (thanks to JS-Kit), so if you want to show your readers what a blog with no readers looks like, I’ll know about your blog post. Yays!

--MarkKB

Sunday, June 14, 2009

UAC is not (that) broken in Windows 7

A few days back, Long Zheng (who has my upmost respect as a blogger) published (another) article about UAC. Before we discuss that, let’s summarise the article linked at the top of his, written by Microsoft’s Mark Russinovich:

  • UAC was made primarily to make life easier for standard users. Ergo, standard users could use Vista with relative ease, as opposed to, you know, pretty much not at all.
    • It does so by using a split token – users would run in standard mode, and get a prompt to elevate when needing admin privs.
    • In this way, people could set up an admin account for big swabs of admin fun, while using standard accounts normally without having to switch to the admin account for e.g. installing stuff.
  • Many people were complaining that they still had to get great swabs of prompts to elevate to admin while they were using an admin account. Still others complained about redundant and unneeded prompts.
    • Microsoft responded to this by cutting down on multiple prompts and removing unnecessary prompts.
    • They also added a security token to some programs that will make those programs autoelevate some tasks in admin mode. That way, admins can do their great swabs of admin stuff without getting a prompt every minute or so. Pre-emptive comment: that was an exaggeration to make a point. I know their must be something seriously wrong with my computer to get a prompt a minute.
  • UAC is not a security boundary. In the end, it is up to the user to decide whether or not to run that program.

Zheng’s primary point of contention is that programs will inject code into other programs to elevate themselves to avoid the hassle of doing it themselves. This ignores several things:

  • It is actually harder to inject code into another service than to set up an elevated COM interface (or autoelevate your program.)
  • People doing this are just begging for their programs to be broken in the next release of Windows.
  • It is unlikely that any major software developer is going to do this, since they usually submit their programs through WHQL, which are sure to pick up on this practice.
  • Programs can do this anyway – that is, piggyback on some other programs’ UAC prompt using injected code. Once someone else's code is running, “your system” isn’t *your* system anymore.
  • If you’re a virus writer, it’s easier to tell your users to elevate first than to go through the hassle of code injection.
  • Finally, standard user will still get the prompt. If you are running as admin, you either a) should know what you’re doing, or b) shouldn’t be admin in the first place.

I’ve also seen some people claim that this allows Microsoft to parrot “make your programs UACified” without doing it themselves. Er, no, because they still have to make it work in standard user. The whole admin thing is to make it easier to set up your computer, then set up a standard account.

Having said all that, I do think Microsoft is making a mistake, and I for one will be pushing the UAC bar all the way to eleven. However, treating it as some inherent flaw in UAC is missing the whole point, which was to run as standard user without switching accounts.

As an added bonus, Rafael Rivera (who I also have a lot of respect for) asks why the icon is a shield if it’s not protecting users. I can think of a few reasons:

  • Its use steams from the Security Center in Windows XP which was (shock horror!) a shield. Although Security Center is no longer in Windows 7 (replaced by the Action Center), the icon remains for non-confusion.
  • (submitted by Bad Analogy Guy:) Like a proper shield, it’s up to the bearer to decide whether or not to hold it up or down. However, knights don’t wear shields when they’re hunting, nor do lords when they’re beating up peasants *ahem*, making proclamations and laws and whatnot, because they can be reasonably sure that they’d be safe.
  • Marketing and programmers don’t talk very well to each other.

Have a great day, I’ll be here all week. Try the veal.

--MarkKB