Do you like scary, I mean really really scary movies? I do, and Hollywood is seriously letting me down. Compare anything that you saw in the last five years with The Shining and you’ll see what I’m talking about. If Hollywood wants nerds and geeks to flock to the theater, they’ll have to do better than Harry Potter. We want stuff to watch that offers us little choice but the reward of our undivided attention for a brief time.
I realize that it is entirely conceivable that we’re soon to run out of thriller plots. Believe it or not, the ways that someone could meet with demise that they might object to are quite limited, given the fact that lightning strikes and other phenomenon are quite rare. This brings me to Final Destination (and sequels). The creativity rocked, but it just wasn’t plausible enough to be scary.
Hollywood and Indie producers, I’m begging you .. come up with a plot that could be applied to the person at the end of your finger once you have stood on an average street, closed your eyes and spun around while pointing a dozen or so times. I know the creativity is there, and I’m sick of marveling at special effects while forgiving a shallow plot. Could I do better? Probably not, but I’m not paid to write plots, I just pay to watch them unfold on a big screen.
This is an open challenge. Come up with the next best thriller that will unseat everything that any popular director has ever done. Gore, social taboo and shocking gratuitous scenes are up to you. Just ensure that I walk away inspired by the plot.
If the actors aren’t incidental, you’re doing it wrong.
I’ve spent the better part of two days tracking down what turned out to be a very stupid and avoidable bug in a library (that shall remain nameless).
Examine the following piece of seemingly innocent code:
str = realloc(str, len);
assert(str != NULL);
Some of you are probably howling at your monitor by now. Guess what, there’s more, ‘len’ turned out to be a signed integer.
When you build a production release of something, you usually do it with NDEBUG defined, which also turns off assertions completely. So, you guessed it .. passing a signed integer to realloc() resulted in failure, which wasn’t handled because nothing was asserted. Additionally, various incarnations of realloc() just return the original pointer if they weren’t able to allocate a new one and copy the contents of the old.
When you language has facilities to check for failures, you should probably be checking. If, in my example ‘str’ was checked for being NULL and a meaningful error was reported if that was the case, I would not have needed to dig through a mountain of someone else’s library code. A lot of programmers use preprocessor directives to be much more verbose if NDEBUG is not set, that is why we have NDEBUG.
This is why assertions got a bad reputation. People use them as a quick and easy way to handle errors that are actually likely to happen, rather than to assert something they feel is impossible to happen. This is what Google was talking about when they refused to include assertions in “Go”.
At this point, my thoughts most likely dwindle on becoming obsolete, but I’ll post them anyway.
When a sensational glob of information is posted, I’m thrown back to the Nixon era. George Wiley is technically my uncle, though, unfortunately he met his demise long before our familial relationship began. When I hear the word “scandal”, I expect that a hard working journalist has devoted a significant amount of their life, despite personal loss, to uncovering something that has value beyond sensation and shock. This sort of devotion demands a level and understanding of ethics that is far superior to the person(s) named in the report, no? Nixon had a ‘hit list’ and my uncle did meet his death under rather curious circumstances. I’m not beyond the scope of conspiracy, but it was a boating accident.
I then look at the leaked cables that are reported in the news, it is quite difficult to avoid them. Aside from a very few that make me (as a US citizen) wonder if we’re doing fair business around the world, I see nothing short of an episode of Jerry Springer coming to light while delighting media outlets that profit from sensationalism and the subsequent page views. I also see a man who was, until recently in hiding to avoid charges pressed against him, determined at all costs to embarrass as many people as possible while under “journalistic” oversight.
Every day, I get at least 10 human submitted e-mails through my contact form that promise my blog can become #1 on the Internet. I’m sorry, and I don’t want to offend my visitors from India, but this is very typical for ISP’s in India. So long as a client pays and doesn’t attract government attention, let them do what they do .. seems to be the motto of that company. Every time it comes not only from another IP, but a whole new /20. Thankfully, their IP ranges are reversed.
In 24 hours, if airtelbroadband.in is your ISP, some parts of this web site will not work. I’m sorry, I have no other recourse.
I have contacted the listed abuse e-mail for airtelbroadband.in no less than ten times in two months. Radio silence.
Eat my string-matching fu, you spamming (but hard working) call center agents!
I am known to be extremely pedantic when it comes to security. Why? I help to safe guard personally identifiable information. I’ve often said that proper security can almost never be convenient. In some instances, not following proper practices is effectively breaking the law (HIPAA). Yet, some users – in particular non technical managers, can not seem to grasp the fact that I can’t allow them access to certain things on their iPhone from a beach in Tahiti over open WiFi. More often than not, people only consider what they are trying to accomplish, not what any given system sees them as doing.
I’ve come up with a great analogy that some of you might find helpful in explaining why we can’t ‘change the system’ to allow certain things:
It is midnight. Inside of a locked bank is a locked bank vault. The vault contains two things, a giant stack of money and a starving kitten that is crying out for help. Two people are attempting to enter the bank – one of them a bank robber, the other one an animal lover. One wants the cash, the other wants to save the kitten.
There is no security system that is sufficiently complex to identify additional variables that may make threatening patterns seem benign. Additionally, if there were such a system, how would it distinguish between two entities with identical behavior? Sure, we could make our vault smarter in the first example to realize that it contained a starving kitten that someone would want to rescue. Now, which one of the two people trying to break in is the animal lover?
If you need money out of a bank’s vault – just apply for a loan. If you notice a kitten starving overnight, report it so someone with a key and the proper combination that can rectify the problem.
It is so very difficult to explain to non technical people the perils of adjusting the system to permit untrusted feline rescue efforts.
The thing is, you never really know with Google. From the outside looking in, guessing at the internals of Google technology is just that, guessing. However, reports of some Google employees claiming that the giant is ditching Windows completely over security concerns following the incident in China are surfacing. I think that reporting is once again coming out way too early, and too much emphasis is being placed on the security aspect of what may or may not be an actual decision of the Google higher ups.
Lets take a look at what we know about Google, mostly from the code that they give us and what they’ve said in talks:
A significant amount of their search infrastructure is powered by the Linux kernel and some sort of compatible OS. We can consider this the first time they took what was available, made it fit their needs and rolled it into happy production.
Andriod uses the Linux kernel. This is the second time they took Linux, modified it to suit their needs and built a product around it.
Chrome OS uses the Linux kernel. This is the third time they took Linux, modified it to suit their needs and built a product around it.
Google is pro free/open source. The number of lines of code contributed to the world written by Google employees is staggering.
People age and then forget. That applies equally to individuals and societies in general, though individuals seem to do a better job of retaining wisdom. The Great Depression began in 1929 for most Americans. By the end of 1930, the entire world was suffering from the effects. For the sake of this short essay, let us presume that in order to have experienced the depression, one must have been both in an economic position to be disposed by its effect as well as able to understand the complexities of survival at the time. Agreeably, a depression survivor would have been at least six years of age in 1929. This means, any remaining survivors of that time in history are now at least eighty seven years old. A frugal, sensible and generally contentful way of living for many people is coming to an end, society is once again forgetting its wisdom.
After weeks of searching, you finally found it .. the killer application that adapts to your business perfectly and requires a minimal initial investment in the form of a license fee. You can’t wait to seal the deal, your job is about to become infinitely easier because support will be handled by the vendor. The initial in house estimates said developing the same thing would cost almost $20,000.00 and would take months to develop building on open source. You solved the problem with a yearly payment of $1500 and you get to stop working weekends. Or do you?
Unless you own or have a perpetual unconditional license to use the code, you are living in someone else’s place while renting the privilege to use it. Lets imagine a hypothetical, you rent your office space from me. You were a new start up, I had a great location. I did not mind allowing you to improve the place, I even gave you some credit to your rent to do so, under the condition that I own the improvements. You thought we had a great thing going and based critical business decisions on what my location afforded. Sure, the lease would expire in a year, but who would think that it could not be renewed after you planted roots in my place? After all, you’re sure I’m a great guy, right?
Now, imagine that I got sick of the real estate business, I sold everything I had to some big holding company for a big fat check.
I’ve been having a very interesting discussion with a California CS professor. I happened to catch one of his students red handed putting their homework out for bid on a freelance programmer service. The irony is, the assignment was so simple that a quick search on any search engine would yield over twenty ways to accomplish it. What programmer can’t teach a cursor to navigate a simple maze? This is more code golf than actual work and it was worth $50 to one student to get out of it.
It seems to me that more and more CS students are in it for the money that a degree will earn them, not because they love to solve problems. Anyone that had any experience in nearly any language prior to entering a university could have solved this assignment. Anyone who loved to program would have seen the opportunity to demonstrate their cleverness. This is stuff that most good programmers do in their spare time anyway. Yet, this kid was ready to pay fifty bucks to be rid of the responsibility yet reap the reward. When employed, will the kid just broker their work to outsourcing companies? Lets look at a hypothetical interview:
Interviewer: “Ah, I see you have a CS degree!”
Interviewee: “Yes, I outsourced all of my homework and coursework and passed with flying colors. It was more expensive, but I was able to plan my own start up, acquire eleven patents and gained real experience in project management and economics. I now speak four languages and continue to employ a small staff that handles most of by busywork”
Interviewer: “Yes, we have an opening for you. You applied for programmer, perhaps we should be considering you for project manager. You do have a NDA with the guys you use, right?”
That is scary on so many levels only because its actually likely to happen. I fired up the RSS crawlers, grabbed some available database dumps (mostly from Stack Overflow) and affirmed my theory. I’m going to confirm it, then publish it, I’m actually irritated enough to write a white paper. I hate white papers.
I stumbled across some news that made my mostly overcast/cloudy afternoon an absolute delight. Tim Bray has joined Google as the resident android pundit. The gloves come off, immediately out of the gate, quoting his blog:
The iPhone vision of the mobile Internet’s future omits controversy, sex, and freedom, but includes strict limits on who can know what and who can say what. It’s a sterile Disney-fied walled garden surrounded by sharp-toothed lawyers. The people who create the apps serve at the landlord’s pleasure and fear his anger.
I hate it.
The decision to sit down and actually learn a mobile SDK for the purposes of (eventually) making some money in the process was one that I did not take lightly. I was excited about the iPhone until I saw the NDA required to even study how to write applications. The idea of an AppStore seemed great until Apple got involved. The market seemed lucrative, but I just had a bad feeling about hopping on that train.
Android needed a front. It needed someone who is actually willing to write code in order to honestly advocate the platform. It needed someone who could explain in less than a normal paragraph what some hour long speeches try to convey: Apple just doesn’t get it. Google did.
I had already decided that I wasn’t going near an iPhone. I don’t need to reiterate lots of sensational press, what remained consistent was that Apple was extremely inconsistent and just too flaky to deal with. I kept thinking about Android, but I held off. I wanted to see that Google was really serious about pushing it before investing time and money into getting proficient. This was enough of a nudge to convince me that its not going to be a waste of time.
Only one problem remains. If I even so much as LOOK at my wife’s HTC Hero with a USB cable in my hand, daggers come flying through the air and ninjas start coming through the windows.