|
[2009-01-04 20:30:01]: stak hates timezones.
So as some of you are aware, I've been practicing parkour for a while now (about 16 months, actually).
I started doing it mostly because it looked neat and I was in need of physical activity that involved more than just typing on a keyboard. Parkour is great for staying in shape because a large part of it is physical conditioning to strengthen the body. We tend to use a lot of muscles that don't normally get used and so parkour workouts are a lot more comprehensive than for most other sports. The biggest benefit, though, is that it's a more socially-oriented workout than just going to the gym. This makes it a lot more fun and keeps you motivated to keep going.
The other neat thing about parkour for me personally, is just the sense of freedom I get when I do it. Parkour as a technical discipline is about efficiency of movement, and that's definitely a big part of it. But really, everybody has their own reasons for practicing parkour. For me, it's the sense of physical freedom I get, because the only thing that can hold me back is myself.
That's the other big thing about parkour - a lot of it is mental rather than physical. It's relatively easy to train your body and get stronger, but convincing yourself that you can jump across a 10-foot gap with a big drop is a whole another story. Even if you can do the same distance on level ground, there are huge mental blocks that you have to get past in order to pull it off. Facing (and overcoming) those mental challenges is a pretty exhilarating experience.
And no, I have not played Mirror's Edge.
[ 1 Comment... ]
This blog entry inspired by Stevey's latest post.
So... assume the universe is an embedded system (seems pretty likely, all things considered). What I want to know is: how can we (theoretically) break out of the system?
One of the comments on Stevey's post mentions the buffer overflow exploit as a way of breaking out of a system. However, buffer overflows (at least the traditional cracker-induced ones) are performed by entities outside the system rather than entities inside the system. A traditional buffer overflow results from the cracker feeding in more input to the system than it can handle, and then exploiting the mayhem that results for fun and profit. As humans inside the universe, this avenue isn't really available to us.
How about non-traditional buffer overflow exploits? Are there variations on the theme that might be available to us? Can we push around stuff within the universe in ways that it wasn't designed to handle? Possibly, but in order to do so we need a better idea of how the universe works under the covers.
Another approach, which I think is more promising, is to try to find design and/or implementation flaws in the universe and exploit those. The first comment on the post has a link to this page which describes one example of this. The system had a design flaw that wound up being inadvertently exploited by code inside the system to break out of it. There might be similar implementation flaws that result in exploitable behavior (i.e. what happens if we manage to cool a lump of matter to absolute zero?).
So the next question is: how do we find such flaws? Again, we need to have a better idea of how the universe works in order to locate potential flaws. I'm sure we'll stumble across them anyhow in due time but I don't think I'll still be around when that happens (heck, maybe the universe won't even be around then).
Ok, so let's postulate about the implementation of the universe. If you had to implement a universe, how would you design it?
Personally I would probably use VHDL or a similar language. That allows you define a bunch of rules which get executed in parallel every time increment. The input is the state of all the variables in the system, and the output is the new state of the all the variables. In the universe, I would represent each basic particle's basic properties (mass, n-dimensional position/velocity, etc.) as the variables, and the laws of physics as the rules.
So how to exploit VHDL code? Hmm.. I don't remember nearly enough of ECE 427 to answer that. Need to think about this more...
[ 1 Comment... ]
It seems like most of the companies capitalizing on alternative ("green") sources of energy (e.g. Bullfrog Power) are harnessing wind and water to generate electricity. Definitely an improvement over coal/oil, but I'm wondering if all we're doing is switching to a less evil alternative.
Using the wind to generate electricity necessarily removes energy from the wind, which means the wind can travel less distance. This is bound to have some sort of effect somewhere, and though it may be negligible now, supermassive wind farms may make it less negligible. And even if it's not negligible it's probably really hard to track and measure properly, which means it's going to be ignored.
Just some food for thought.
[ 5 Comments... ]
You know what this means... Facebook groups actually *do* have an impact in the real world! This does not bode well...
[ 3 Comments... ]
Is it just me, or has anybody else noticed that shortly after (within a minute or two) emptying their spam folder in Gmail there will be single new piece of spam? I first noticed this happening early this year, and it seems to happen pretty consistently. Given that I receive ~40 spam/week, the average interval between spam should be 252 minutes so it seems unlikely that this is a coincidence.
[ 10 Comments... ]
I've been thinking more about cloud computing recently. I still believe what I said about the ideal state of computing last year. I'm just more sure now about where specifically it's headed. And I think that most companies are going the wrong way.
The key thing, I think, is the separation between data and logic/computation/processing. Most companies that offer or are planning to offer cloud computing services are focusing on computational power. Amazon EC2, Google's App Engine, and whatever Microsoft Azure is going to turn into all offer cloud-based computation. I think that this is pretty pointless. On the other hand, things like Amazon S3 (i.e. cloud-based data storage) are incredibly useful.
There are very few advantages to using a web-based version of an office suite. The main advantages are: (1) real-time collaboration potential and (2) ability to access it from anywhere. The first is not inherent to cloud applications; any desktop-based application can do the same thing. The second is really a result of cloud storage, which is what I'm advocating. There are disadvantages to cloud computing as well: interacting through a web browser instead of a native app is much slower and more limiting; and there's heavier dependencies on reliable network connectivity. A well-written thick client, can, I think, always beat a well-written web app.
So as I described in my earlier post, a central repository for personal data with version control and transparent backup is important. This data must be accessible from any computing device, and can be manipulated by any number of different applications. Ideally the data storage would be completely independent of the data manipulation. You could sign up for any cloud storage service and access the data from any application. This requires a common data transfer protocol. If each cloud storage service provider uses a custom API, then no application will work with all service providers. If, however, they agree on a standard API, then any application will work with all of them. Imagine having your data accessible via a URI like "cloud://ec2.amazon.com/~username/file.ext#version". Want to switch providers? No problem - just migrate to "cloud://gfs.google.com/~username/file.ext#version". The protocol used to access the "cloud" scheme remains the same, so the app still works just fine.
I imagine that different storage providers will offer different features. Some will undoubtedly be free and advertising-supported. Others may charge you directly. Others may provide storage for free, but charge app developers who connect to their clouds (the app developers would make money by charging you for the app). Some may provide stronger encryption or more reliable backup facilities. There's plenty of differentiators for competitors in this space, and so it becomes important for the user to be able to switch between providers based on their needs.
Another thing is that no application is perfect - we've all run into some feature or another that one app does that we wished was present in some other app. Take the (fictional) example of two presentation editors. One of these makes it really easy to create and edit the presentation, and the other provides support for funky things like simultaneously playing the slideshow on 5 different screens over a network. Naturally you want to be able to use the first app to build your presentation and use the second one to actually present it. This is impossible if both apps use their own proprietary data formats; if they both operate on the same data standard, then it is possible.
Note that the last paragraph applies to desktop-based storage too, so it doesn't really matter if the data is in the cloud or not. But in order for the computing ecosystem to evolve in the way I hope it will, common data storage and transfer standards are immensely important. I think it'll take a while for the big companies to get their heads out of cloud computing and into cloud storage. Until that happens, there's a huge opportunity here for somebody to start developing this ecosystem. There's a lot of problems that need to be solved, particularly to do with efficiently syncing the data with devices that are using it, and allowing extremely fine-grained permissions for access to the data. However, these are not intractable problems; most have actually been solved for specific subcases already, it's just a matter of generalizing and packaging those solutions into a cohesive whole.
Then you just have to (1) provide a storage service that solves these problems (you can probably even piggyback the implementation on S3 or something), (2) publish an API that allows access to the service, and (3) support third-party apps in accessing that data. If you can do this fast enough, and there are enough useful apps using your protocol, then by virtue of being the first one in the space, your API will become the de-facto standard and everybody else will have to follow suit for backwards compatibility with those apps (this is where open data formats are important, since you want those apps to be useful with other data that isn't in cloud storage yet). Once there's a couple of other storage providers in the market, the ecosystem starts growing. This is probably one of those things where you'd end up owning a slice of the market. Your slice would decrease in relative size as the market grows, but the market growth would result in larger absolute value.
[ 2 Comments... ]
Lately I've been finding it harder and harder to read books. Or more specifically, I find it harder and harder to concentrate on reading books. I blame the Internet.
On the web, the vast majority of text is in itty-bitty chunks. Navbars, headlines, blurbs, RSS summaries; they're all bite-sized pieces of text that are designed to give you exactly what you need to know and nothing more. Take a look at the main page of just about any website - it's very rare to find more than a couple of paragraphs of continuous text. News and Wikipedia articles (and Steve Yegge's blog posts) are probably the longest pieces of text I read on the web, and those are fundamentally different from books (i.e. literature).
As a consequence of spending so much time on the web (and I guess around computers in general), my brain seems to be changing. My attention span is much shorter than it used to be. When I read books, I find myself racing through the pages, hunting for the plot thread and throwing the rest away. It's a shame, because a lot of good books have a negligible plot; it's the way they're written that makes them good. It's the small nuggets of character hidden in the language that make you think and imagine. The plot is just the frame on which the rest hangs.
I really need to force myself to slow down when reading and concentrate more. Fortunately, I don't think I'm so far gone that I can't recover. Although, thinking about it some more, I guess this is the kind of change that you can't really stop; it's an evolution of language that's perfectly natural. You just have to adapt as best you can.
It looks like this post runs into the whole spelling/grammar debate that comes up every so often. There was that article a while back about the prof that suggested we adopt degenerate spellings of words as legitimate. There were a lot of people who thought he was off his rocker, but it seems reasonable to me. Some of you are probably sticklers when it comes to spelling and grammar. I don't like seeing improper grammar or misspelt words either, but let's face it: our opinion doesn't matter (or will cease to matter soon). The value of language, much like the value of money, is defined by those that use it. If future generations feel they can communicate without using our outdated ideas of spelling and grammar, then so be it.
Besides, it seems pretty arbitrary to use what we think is "correct grammar." Language has evolved, and will continue to evolve. What is "correct" today wasn't correct a hundred years ago, so saying that everybody in the future should use 2008 grammar is pretty stupid. Why not 1908 grammar? It was just as correct in 1908 as 2008 grammar is today.
[ 9 Comments... ]
Opera seems to be (again) trying to drag the web, kicking and screaming, into the 21st century. According to their study a ridiculously large proportion of web pages aren't standards compliant. It's good to have a hard number to quote now, rather than just complaining vaguely. Hopefully this will prod web developers into putting a little more effort into validating their web pages. It's been a long-standing pet peeve of mine that websites stick on "W3C Validated" buttons on their pages even though the pages are no longer valid.
Anyway, in order to stay ahead of the curve, I've now moved this website along to the next step: switching to the XHTML content-type. This site has always been valid XHTML, but it was always being served under the text/html content-type. It is now served as application/xhtml+xml which is more accurate and strict, since it forces browsers to parse it using an XML parser rather than an HTML parser. Validity is now enforced; if I introduce any errors in the site it will simply fail to render rather than falling into browser-dependent error handling behavior.
This also means that this site will no longer render in IE, which doesn't support the XHTML content-type. I'm not even going to bother with server-side IE detection in order to display an error message; they've had long enough to get their act together. Anybody who's still using IE needs to move on.
As usual, post a comment or send me a message using the contact form (in the "About" section) if you run into any problems. But not if you're using IE.
[ 10 Comments... ]
Turns out that my feedreader hasn't been picking up Paul Graham's essays for quite some time now. I just finished reading all the ones I missed (the last 11 or so), and completely overloaded my brain. The ones I particularly recommend:
Lies We Tell Kids - This one is just pure gold. I think he actually reveals the meaning of life in here somewhere, or at least provides enough clues to figure it out.
[ Add comment here ] Cities and Ambition - This one is also really good. It's sad that after living in Waterloo for ~6 years, I'm still not sure what kind of message it's sending. Maybe I should start learning Chinese again. Or move somewhere else.
[ Add comment here ] You Weren't Meant to have a Boss - This one resonated with me, but may not appeal to a more general audience. In particular, the happiness he refers to is very similar to the one induced by doing parkour. I'll probably post more on that at some point in the future.
[ Add comment here ] Be Good - This one has one paragraph that really hit it home. It eloquently says something that I've been musing about for a while now:
Being good is a particularly useful strategy for making decisions in complex situations because it's stateless. It's like telling the truth. The trouble with lying is that you have to remember everything you've said in the past to make sure you don't contradict yourself. If you tell the truth you don't have to remember anything, and that's a really useful property in domains where things happen fast.
The only thing I want to add is that I think it applies to more than just decisions in complex, fast-moving situations; it really applies everywhere. Everything else I've been thinking about on this topic is already implied by the paragraph above.
[ Add comment here ] Disconnecting Distraction - And finally, this one is to tell you to stop wasting your time reading my blog and go do something useful instead.
[ 4 Comments... ]
So when I added that tag cloud for my news feeds, I complained that "chrome" appeared almost as many times as the word "and". Well, to be fair, I am now complaining that both "blackberry" and "storm" outnumber "and" by a nontrivial margin. My distribution of news sources is biased so as to encourage this, but it's still pretty ridiculous!
[ Add comment here ] Also, it appears that Facebook has modified some of their API so until I get around to fixing it, notifications of new posts/comments will not be appearing in my news feed.
[ 5 Comments... ]
|