|
So, lots of brouhaha in the news about how some Microsoft employee in Sweden went against corporate policy and ended up bribing a bunch of firms to vote in favor of OOXML becoming an ISO standard. Of course, this is just the latest incident in which Microsoft has allegedly partaken in unethical behavior in their push to get OOXML approved as an ISO standard. For those actually interested in a ODF-biased-but-still-relatively-impartial view of things, stop by Rob Weir's blog. I'm also curious to see how people view this behavior by Microsoft, so it's poll time!
[ 9 Comments... ]
So I was sitting here and staring at my laptop screen while in between tasks, and my eye happened to fall up on Opera's "File" menu. It reminded me of a post I read a while back (I think on Raymond Chen's blog, but I can't find it now) about how the "File" menu is now used in all sorts of applications for all sorts of things that have absolutely nothing to do with files. It was first introduced way back in some earlier version of Windows and actually contained operations to do with files (like "Open", "Save", etc.). Opera's "File" menu, on the other hand, has things like "New Tab", "New Window", "Work Offline" and other things that have nothing to do with files.
I think one of the main reasons this happens is the "look at X" syndrome. This is when people are developing a new product, and instead of just thinking about how they would like their product to look and feel, they decided to take a look and see how other people do it first. It seems innocuous enough, but those quick peeks at other applications tend to have long-lasting effects. If you look at three other applications, each of which has a "File" menu, you're probably more likely to put one in your own application even if you're not conciously aware that's why you're doing it. The human mind has this amazing ability to come up with a justification for just about any decision. In this case, you'll probably convince yourself that having a "File" menu is totally appropriate and justified when it's completely irrelevant. Assuming you do stop and think about it, that is.
This idea/concept/whatever-you-want-to-call-it has come up a number of times for me in the last few days in the various things I'm working on. When I'm developing something, I prefer to not look at how other people have done similar things until I have a fairly concrete idea of what exactly I'm looking for and how I want it to work. There are undoubtedly improvements that can be made based on other people's work, but that shouldn't happen at the cost of original thinking. Being influenced by other people's work too early in the development cycle tends to do just that - any new and innovative ideas you might have had get abandoned in favour of the tried-and-tested route that somebody else has already done. That just works out poorly for everybody.
[ 13 Comments... ]
(Warning: apparently staring at JavaScript addles my English-writing skills. Beware of poor grammar below that I'm too lazy to fix.)
So I haven't posted for a while. Haven't really done much of anything for a while, actually, except work on a mountain of JavaScript code. I haven't really done any serious JavaScript programming since I pushed out my first website back in the late 90's, and back then JavaScript was still in its infancy. By which I mean it sucked. It still kinda sucks, but at the same time it doesn't.
I tend to prefer strongly typed languages, since they catch a lot more errors at compile-time and make it easier to debug at run-time. I also like being able to look at a piece of code and know exactly what type of data a variable contains. JavaScript's not so great in those respects (although I gotta say, Opera's developer and error consoles are really awesome for debugging this stuff. Presumably FireBug would be too, except I'm using a PowerBook and F12 is mapped to the dashboard.)
Another thing I don't like about JavaScript is doesn't have great documentation. The reference at the MDC was the best one I found, and I wouldn't consider it to be all that great. There's also the crummy one at W3CSchools that always manages to beat the MDC one in the Google rankings. Eh well.
Anyway, the good stuff about Javascript is that most of the stuff I wrote that worked in one browser also worked in the others. This happened even with what I considered relatively arcane cases where I thought the browser's JavaScript implementation details might make a difference. The noticeable exception was with Safari - for some reason it just does stuff differently, and I'm still having problems with a dom.appendChild call breaking everything.
Also nice about JavaScript is how it's become a functional language, complete with lexical closures. I'm not sure if it had this way back in the last millenium, but it's definitely new to me, and I quite like it. JavaScript also uses a prototype-based object construction mechanism, which is pretty nifty since you can basically dynamically change the types you're creating instances of, and do all sorts of crazy stuff that ends up backfiring and causing you debugging nightmares. But still, cool.
Steve Yegge claims that JavaScript 2.0 will be the next big language. I'm still on the fence about that one. There are still some serious issues with JavaScript, and unless those are worked out, it's not going anywhere. And of course, as he pointed out in his OSCon keynote, it has a brand problem too. There's still a lot of people out there who dislike JavaScript because of what it used to be, and that isn't going to just disappear even though JavaScript itself has changed. I guess we'll just have to wait and see.
[ 0 Comments... ]
Seems like these days privacy is going straight down the tubes. Ars has a pretty good article on deep packet inspection. This is happening now, and is just one of many trends that seem to be ominously eroding our freedoms.
Here's an idea for keeping prying governments out of your data: build a distributed RAID system where the computers are spread over a number of countries. If you had a cluster of machines spread across, say, 20 countries, with a software RAID that magically shuffled and duplicated the data around as necessary, then you wouldn't exactly know which country the data was in at any given time. So when the government comes a-snooping, they need co-operate with 20 other countries and get warrants in those countries too before they can legally access your data. If some of those countries happen to be sworn enemies and/or highly bureaucratic ones, then all the better (be careful not to use countries that are under embargo, or you'll have another set of problems). Now, if only I had a few million dollars and shady secrets to hide...
[ 4 Comments... ]
So today (well, I guess yesterday, since it's past midnight) I got to help interview a co-op. It was my first time on the other side of the table, and it was a rather.. illuminating experience. It's not as easy to interview somebody as I thought it would be. It helps a lot to be prepared not just with generic interview questions, but questions tailored specifically for the individual interviewees to figure out exactly what their strengths and weaknesses are.
Thinking about after it was over, I realized that if I had been the interviewee in that interview, I would probably not have wanted the job. In fact, I remember having a few interviews of that kind, and walking away quite annoyed for having wasted my time. I also now have a bunch more respect for those interviewers who manage to do a good job, specially if they can do it consistently with all candidates.
On the topic of hiring, I'm wondering how many big companies lose their edge or fail simply because they relax hiring standards. I think it's probably one of those factors that's really hard to pin down, but is probably the root cause for a lot of things. Once a company gets past a certain size, hiring decisions are more distributed. If even one of the people charged with making a hiring decision screws up and hires somebody sub-par, it's a really hard mistake to recover from.
Joel (who, incidentally, might be visiting Waterloo soon) has written about this at length, and I agree with a lot of what he says. If a company is growing, that mistake just ends up snowballing, since the newly hired person also gets to make hiring decisions, and will probably end up hiring people who are even worse.
[ 2 Comments... ]
Well, not "lots". Just two. Feature #1 is the session manager. If you have an account on this site and are logged in, you can click on the "Account" link in the left navbar to see the session manager. It basically lets you view and delete sessions, which gives you better control over your privacy and security.
In case you hadn't noticed, my site lets you log in from multiple different machines simultaneously (unlike sites such as Facebook, where logging in from one machine will log you out from previously logged-in machines (with the exception of mobile users)). What this means is that if you log in from some random computer and don't bother to log out (I know I usually don't), your session information is remembered on the server. Ordinarily, unless you check the "remember me" box, the browser you're using will delete the cookie when you close it, so this isn't really a problem. However, if you're using a public terminal, then it's possible that somebody has installed malware to steal cookies, which means they can pretend to be you when accessing this site.
Anyway, to cut the long story short, you can now delete old sessions from the session manager on the accounts page. The session manager lists the last access time and IP address for each of your sessions; delete any you feel are too old or that you won't use again. If you accidentally delete the session you're currently logged in with, that's not really a problem; you'll just have to log in again. (I suppose you could also do this as an alternative way to logging out.)
And now on to feature #2: protect-o-vision. All of my blog entries already have a permissions value associated with them, so that I can restrict visibility to members/friends. Now, I can further restrict parts of a post. So, for instance, if I have a publicly visible post such as this one, I can include in it some stuff that is only visible to logged-in users. The restricted fragment will be in a slightly different color, just because I can :). This might seem like a rather odd feature to add, but it'll come in handy for some other things I'm planning on adding in the not-too-distant-future. The really awesome thing is that it took exactly 16 lines of code to make the change.
[ 2 Comments... ]
So apparently Parakey, which I mentioned back here just got bought out.. by Facebook. Blake Ross has an amusing post on the topic. :)
In general, this seems like a good move for Facebook - Parakey is still very early in it's development cycle, and Facebook can mold the product more to fit their own vision. Plus, since they don't actually have a released product yet, most other megacorporations probably didn't even consider looking at it, so I'm guessing Facebook didn't have to shell out the big bucks for it.
I just hope that the original vision behind Parakey isn't corrupted too much.
[ 0 Comments... ]
I just finished another batch of backend refactoring for this site, mostly to do with the commenting system. There shouldn't be any visible changes (apart from the comment form looking slightly different), but if you see anything broken/not working, let me know.
[ 0 Comments... ]
For those who use Facebook (I think that includes just about everybody who reads my blog anyway): I didn't really like the way the Notes application pushed blog updates into Facebook - it allowed for commenting on any "note", which included both posts and user comments from my blog. This had the potential to get really confusing, and it was just generally icky... so I wrote my own little Facebook application to display posts/comments on my profile and publish the appropriate stories to my mini-feed.
An additional benefit from this is that although only publicly-visible posts will be displayed in the box on my profile, mini-feed stories will be published for all posts (including my members-only or friends-only posts). It probably sounds kinda confusing, but I'm happier with the way it's working now.. assuming it's working correctly :)
Now if only I could do the same with LJ...
[ 4 Comments... ]
I was reading the Wired article on Hans Reiser (developer of the ReiserFS file system, currently pending trial for allegedly murdering his wife), and a quote from the article jumped out at me...
"Programs are in some sense our children," Reiser tells me. He explains that programs can be discriminated against just like people. That's why he wanted to raise his file system in the open source community, where people and programs are encouraged to interact free of corporate barriers to communication.
I agree with that a lot. It takes a village to raise a child, and it takes a community to raise a program. Sometimes that community can be provided within a corporation itself, if the corporate community is large and diverse enough. This is true in some places, but is false more often than not.
However, this applies to the open source community as well - only a tiny fraction of open source programs (the "superstar children") attract the attention of the community and benefit. The rest are neglected and never really develop to their full potential. The ones that survive are usually the fittest in terms of usefulness and usability, but not always. It's certainly better than the corporate world though, where the specific people involved and politics have as much to do with the success of new ideas as actual usefulness.
I wonder how much of the politics is a result of long convoluted histories between individuals - these tend to develop (and fester) in corporate environments, since you're forced to work with people. In the open source community, there is no such restriction, so people can avoid building up a painful history that screws everybody over. Having a company large enough and giving the employees freedom to move around would solve this problem. It seems to have worked for Google at the developer level, but I'm sure a similar problem exists higher up in the corporate structure, where it's an even smaller group of people who are even more forced to work with each other. Hmm.
This post seems to have diverged quite a bit from my original topic... but something interesting to think about nonetheless.
[ 3 Comments... ]
|