Posts tagged with tech
xRIM: The Virtuous Cycle
Posted on January 10, 2012 at 01:56 AM
Categories: tech, theories, mobile, business, barcamp, startupcamp, jobs
What would happen if a handful of ex-RIM employees started up new companies? Food for thought. Thousands have been laid off, we could get dozens of new startups. The groups would be experienced, knowledgeable, compatible, the ideal for a founding team. They would be connected to former colleagues wealthy from stocks from RIM's early days, making it easy to raise seed capital.
On the other hand, the RIM "diaspora" could drift away, getting jobs in the US, seattle, silicon valley… pulling valuable human connections, knowledge, and experience out of the local loop.
It's not hard to see that the first scenario is better for the region. The existing cluster grew because individuals, once they get a taste of the industry, cycle through many companies. In fact, this region has been an entrepreneurial centre since the industrial age. Electrohome for example, a major electronics company in the mid-20th century, was founded in Kitchener. While Toronto has more tech and sheer scale, KW has a greater concentration, and it's concentrated groups of entrepreneurs that create the upwards spiral.
I can't go without mentioning silicon valley, because I spent a significant part of my formative career time there. Around the time of Electrohome, there started a lovely chain of diasporas and virtuous cycles in the bay area. Shockley left Bell Labs to start his new company. The "Traitorous Eight" left Shockley to form National Semi. More left to start Intel and AMD. At SRI, Engelbart's employees skipped out to join PARC. PARC people left in many directions–including the Mac division at Apple, as well as Adobe and 3Com. Ex-3Com people are all over the place. More recently, there's the Xoogler effect, leading even to specialized ex-google-only VCs.
My point is this: if we can keep the xRIM in the area, then cool tech will be created, the cluster will expand, and new startups will grow. That's a good thing. So, let's see if we can see the silver lining in the cloud and open up some doors.
Oh yeah, and come out to StartupCampWaterloo12.
How to interview well at Google
Posted on August 29, 2011 at 10:11 PM
Categories: tech, code, infographics, jobs
Some friends of mine have been interviewing at Google and I've been helping them prepare. After some practice interviews, I drew up this flowchart for them to take with them (mentally) to the interviews.
Google uses "oral exam" type interviews:
- The best preparation guide is by Steve Yegge.
- You can pretty much ignore all the official guides that Google provides.
- Expect tough questions of the type that you would have received in your advanced CS classes.
- You can also mine programming contests for good questions.
- Another good source of questions is this mathNews question list.
For another strategy, pull out your copy of CLR(S) (you do have a copy, right?) and re-learn everything. It's all fair game in a google interview.
After you start reviewing, you must do practice interviews. Invite a friend over to ask you questions. Here is what they have to do:
- Pick a challenging question and read it to you.
- Not give you any help at all.
- Ask for a solution in pseudo-code. When you provide it, ask for the order of magnitude runtime analysis.
- If you make a mistake, after a while, they should say "are you sure that's correct?"
- If you don't give the optimal solution, they should let you develop it, and when you're done, say "do you think there's a better way to do it?"
Believe it or not, interviewing someone isn't a fun as you think, so provide them with beer and/or pizza. Meanwhile you must do your work on a whiteboard. If you don't have one, use a flip-chart or as a last resort paper.
Trust me, answering questions in real time on a white board isn't like doing them in your head. You must practice this or you're going to mess up the interview. Practice with a friend!
Finally, use the interview flowchart to answer the questions:
- The first, simplest solution just has to work. Don't worry about runtime at this point.
- Start with pseudocode. Only real code if they ask for it.
- Do a bunch of examples. Make up some sample data and run through it by hand. This will help you understand the problem better, even if you think you already do.
- Once you complete a simple (slow) solution, prove it works and then move on to making it faster.
If you do well, the interviewer will tell you you're done before you run out of time. Good luck!
Maybe Nokia just can't make good software?
Posted on April 28, 2010 at 04:20 PM
Categories: tech, theories, symbian, mobile, predictions, nokia
Nokia looks to be in serious trouble. They've delayed Symbian^3, which was supposed to be the sort or basic catch-up version of their main smartphone OS. Symbian^4 is supposed to be the move ahead again version and who knows when they'll release it. Meanwhile, Maemo or whatever they're calling it these days is more like vaporware even though theoretically it's out on a couple of devices.
Hey, you know what? Maybe Nokia just can't write good software.
Think about it ... when was the last great release of software from Nokia. The first version of Symbian S60. Which, if you remember your history, was actually written by PSION. Symbian has not improved in any major way since then. The first Symbian smart phones were epic—the Nokia 7650 was way ahead of its time in 2002 and make Nokia the smartphone kings. But after that they didn't seem to be able to put out a really substantial upgrade.
Big companies have a long history of not being able to complete operating system upgrades. Back in the late 80s early 90s Apple managed to fail to create a new OS not once but twice—Pink and Copland—were both epic failures of massive proportion. Making software is hard.
The question is, can Nokia learn how to do it. One option - which I have advocated in the past - is to simply ditch Symbian and get on to the Maemo train full stop. But it's not clear if Nokia has the guts to do something so drastic.
Well, they'd better grow some, because they haven't put out a competitive smartphone since the N95 three years ago. Their current offerings are jokes. Android, Blackberry and iPhone are way ahead of them. And, the investors are starting to figure it out. Hopefully Nokia's shareholders will beat them up until they take the drastic measure before it's too late.
Review of Resonance by Daniel Stepp (mac os x/windows)
Posted on April 25, 2010 at 09:51 PM
Categories: music, tech
Once upon a time while tripping across the 'net I stumbled upon a piece of software called Resonance. The web site is cryptic:
resonance includes a mathematically-precise binaural tone generator, capable of producing fifteen hundred unique binaural frequencies.
What is a binaural tone? Why would I want to listen to one? I downloaded it to find out.
The interface is equally mysterious, but fortunately it has some presets which immerse you into audio soundscape that defies clear description. Those binaural tones were pulsating, interacting stereo waves that gave me a tingly feeling, the kind of feeling that you get when you're learning something profound. Maybe some people would call it a spiritual feeling.
If you look up binaural tones, the great wiki has some descriptions of odd and perhaps unbelievable effects they can have on your body and brain. I don't know if I believe a word of it. But I do believe there is something odd happening when I listed to Resonance.
The author does because he created the program to help him concentrate:
I personally use it when I am programming or writing, basically whenever I need a lot of concentration. Others use it for relaxation, sleep aid, meditation, yoga, background noise...etc. [via email]
He also pointed out that for best effect you should use headphones with no other sound or music playing. Even though, Resonance does include a variety of natural sounds effects from the Earth Recordings library—which accounts for the large size.
This is definitely an odd program, but I have a feeling that it would be a great candidate for conversion to the iPhone, where I think it could gain a cult following.
Bottom line: if you're interested in audio phenomena or unusual interface design, check it out. Resonance.
It's getting harder to tell. Be sure to watch it in fullscreen:
The Third & The Seventh from Alex Roman on Vimeo.
Not only that but Alex Roman did a fantastic job on this. The Third & the Seventh homepage. Thanks to Tinselman.
Previous related entry: Fake or Real?
Mobile phones access agricultural market price information in developing nations
Posted on January 09, 2010 at 09:46 PM
Categories: tech, mobile, future
The most critical piece of information for any farmer is what to grow. What grains are going for good prices at the market. What is overproduced and what is underproduced. What is in demand. Farmers must know this information in order to make a living, hopefully a profit.
Let's say you're a farmer in rural part of western Africa. You have very little in the way of communications—the roads are poor, telephone lines are poor or non-existent, internet access is not there. In fact, your village may only contain a few people with literacy to even use the internet. Aside from travelling for hours or days the only way to access market information could be through a shared mobile phone.
Then you need a trust-worthy source of information on the other end. Preferably one that can communicate via SMS text messaging, because it's much cheaper than making a voice call. I've been collecting some information about these kinds of services in Africa and intending to write up what I found for quite a while, so here it is, a summary of the agricultural market information providers operating in Africa that I am aware of.
Esoko
Esoko is the easiest to find on the internet. It was founded by Mark Davies, a serial entrepreneur who started up a number of successful internet companies including CitySearch in the UK before transplanting to Ghana where he founded BusyInternet, an internet café, ICT centre, and business incubator in Accra. In 2005 he started TradeNet which is now renamed to Esoko.
I've played around a bit with Esoko and it looks like the real deal. I viewed prices for a variety of produce for a wide variety of markets in Ghana, for example. The data seemed to be fairly up to date. I was able to set up an alert for myself on prices for certain commodities in certain markets, so the system would SMS the prices to me on certain days of the week. You can also 2-way SMS into the system with different code and they will send you back the info you are looking for by return text message.
I couldn't actually test the SMS because I don't have an African cell phone # but assuming that works (and I'm sure it does) this looks like a great system with tons of accessible and useful information. They currently have at least some data for Afghanistan, Burkina Faso, Côte d'Ivoire, Cameroon, Mali, Mozambique, Ghana, South Africa, and Sudan so if you're operating in any of those countries, check it out.
They also seem to be looking to expand their platform as a service into other parts of the world, see: esokonetworks.
Others
Another service is Trade at Hand, which operates in Senegal, Mali and Burkina Faso. I haven't been able to try this service, but their representative Raphaël Dard tells me via email that they are oriented towards international exporters in those countries, and provide prices in the major agricultural market in Rungis, France. They distribute information via SMS to farmers who sign up at federated agencies within the country.
Hans Hesse tells me on his blog that Zambian National Farmers Union runs a service for that country at http://www.farmprices.co.zm/, unfortunately the site is down as I write. There is some information on the ZNFU site, which appears to be right up to date, and have an SMS interface with short-code 4455 (from inside Zambia). Good stuff.
Last but not least, Engineers Without Borders's Megan Putnam shared with me a report from an EWB volunteer who examined a project called ECAMIC which facilitated the use of Esoko. One issue they noted was charging the phones in the many locations where no grid power is available. Another is dealing with the metrics for quantity and quality of each commoditiy, which may not be easy to transmit over SMS (some might be weighed, others rated by size and quality).
To summarize. It's important to be skeptical of any technologically driven development initiative. That said, I'm quite keen on this one because it is based on mobile phones, which are a huge and expanding business concern in Africa, a huge force for development, and probably the continent's biggest success story right now. They are also durable, cheap, and run on very little power. The information systems I've mentioned here are early days, but they seem to work and provide value to their users. I won't link to testimonials and success stories because I'm too skeptical about them as marketing for development agencies. But reading between the lines there are enough different people trying this out and getting positive results that I would encourage everyone involved to stick with it and keep pushing the boundaries.
Light + Music
Posted on December 21, 2009 at 04:12 AM
Categories: graphics, music, tech, theories, film, future
I'm proposing a talk for TEDx Waterloo. The subject is Light + Music, an overview of visual music, the past and future, of this wonderful field where two of your senses get together and jam and have a good time.
The theme of TEDxWaterloo this year is Tomorrow Started Yesterday, which is pretty appropriate for this subject. The visualization of music certainly started with dance, which was probably one of the most ancient of human arts, although we cannot say for certain when it started. Music certainly existed over 50,000 years ago. On the other side, the future of music is certainly digital, and the digital signal lends itself to being interpreted in multiple ways—witness mp3 visualizers and VJs.
But I want to start with what is sound. In 1904 Heinrich Rubens created a tube to see the sound as light—literally—glowing from the flames of his curious contraption:
Sound is a wave through the air, and like all waves you can reduce it to a sum of waves at different frequencies. I won't get into sine waves and circles and cycles and oscillators because I don't have the time. But take waves of different speeds, some large and slow, others small and fast—just like in water—and add them up, you get sound. The rube's tube simply shows the amplitude and pitch of the wave as it creates a standing wave inside the tube.
An oscilloscope does the same thing!
Guess what, your iTunes visualizer does the same thing too. It just jazzes up that information into prettier pictures. The basic ones show an oscilloscope like the ruben's tube, or a "spectrogram" which provides much more information—it actually breaks down the signal into the component sine waves, and shows the strength of each. Usually frequency is vertical, time is horizontal, and the intensity of colour is the intensity of sound at that pitch. Here's a spectrogram of a violin:
And here's a video of a whiz-bang mp3 visualizer. It may look crazy but it's just oscilloscope + spectrograph driving it:
.
Maybe you can look at the spectrogram and tell a flute from an electric guitar, but most people can't. That's why Anita Lillie made a program that tries to show the timbre of different instruments in colour against the notes of the scale. This is where the future of direct visualization is going:
Visualizing Music by Anita Lillie from S Woodside on Vimeo.
.
All of that said… there is more to visual music than can be imagined by computers. Artists will surely have a word to say. And we can go back to the early days of film to find inspiration from Len Lye, famous for his abstract film, A Colour Box (1935):
And you might have already seen this one. Fantasia: Toccata and Fugue in D-Minor, by Oskar Fischinger in 1940!
There is much more, such as the Star Gate sequence in Kubrick's 2001, Lapis by James Whitney, The Bead Game by Ishu Patel, Synchromy No. 4: Escape by Mary Ellen Bute in 1938. Bret Battey's Luna Series #3: Sinus Aestum is more recent—2009. After three quarters of a century, the art is being revived.
.
Tomorrow though, it will be the other way around. Instead of looking at sound, you can go the other way, you make light and get sound.
The most significant entry in this green field is surely TENORI-ON, a completely new form of digital instrument created by Toshio Iwai and Yu Nishibori for Yamaha in Japan. It's being used in concert by artists such as Little Boots. I would like to leave you with these two examples, which might blow your mind.
Little Boots .. watch her set it up :-) :
Jim O'Rourke ... a little deeper, but stick with it and your mind will expand. Steve Reich needed 18 musicians! :
.
I've skipped over a lot of really cool stuff, so if you want to see more in a fast, wide-ranging and crazy presentation, head over to TEDx Waterloo and nominate me for the show :-) I might even do some live demos :-)
A little ToneMatrix Music
Posted on December 05, 2009 at 10:45 PM
Categories: graphics, tech, links, art, infographics, film, iphone
André Michelle, inspired by the TENORI-ON, created a grid-sequencer called ToneMatrix. It's an interactive experience written in Flash 10 that merges graphics, visualization, interactivity, and music. There are also iPhone knock-offs such as the free TonePad. As for ToneMatrix, click here to check it out and create your own tunes. Here's one of mine.
Eine Kleine ToneMatrixMusik from S Woodside on Vimeo.
You can also right-click on the ToneMatrix flash app and copy/paste numerical sequences to load and save your music. The sequence for the above is:
98386,1024,4096,1024,67474,96,65540,32768,65618,1024,64,0,65618,4,65600,0
Share and enjoy.
What happens when you don't understand open source licenses?
Posted on September 17, 2009 at 12:20 AM
Categories: tech, code, opensource
I was just checking out a TextMate-like editor for Windows called E Text Editor. It looks pretty good, but I was a bit surprised when I read about his "Open Company License".
To be clear, this is something he came up with himself, and it's not a bad idea. To be double clear, it's NOT open source. And he says that up front. He added "just one" clause to the standard BSD license:
Any redistribution, in whole or in part, must retain full licensing functionality, without any attempt to change, obscure or in other ways circumvent its intent.
Not bad. Users gain because they can modify the software and use the modified version all they want for in house purposes, and they don't have to share those changes with anyone. But they still have to pay him, and that's why it's not open source.
Unfortunately for him, he made a little mistake, because the clause only stipulates on redistribution.
So if you want E Text Editor for free, just download the source, modify it to remove the licensing code, build and use it. As long as you use it only yourself, you're perfectly legit and don't have to pay.
In addition, he left open a rather major hole. Anyone can now make a completely separate small program which downloads the source code, automatically applies a patch which removes the licensing code, builds it and installs on the local computer. This is the way in which many applications include GPL software into non-free, just in reverse. To be clear, my hypothetical program does this:
- You download my program, FreeE and run it on your computer.
- FreeE goes online and grabs the source code for E Text Editor.
- FreeE applies a patch to remove the code that makes you pay.
- FreeE builds—on your local machine—a new copy of E Text Editor without the pay code.
- FreeE quits and you delete it.
As long as you never distribute your copy of E Text Editor that you get this way, you're totally clear and legally able to use it without paying.
Alexander Stigsen, the author of E, might want to consider changing his license. But even if he does so, the versions he released under the current license will always have this hole. So go ahead, get some free as-in-beer software :-)
So according to what everybody is saying, Nokia is going to start using the Maemo operating system + SDK in their high-end smartphones. This is good news. Symbian is basically a smoking pile of junk. It's too old, and too crap, to be fixed. Toss it out the window and good riddance.
I realize this won't happen overnight, but the sooner we can get a more modern, well-documented, programmer-usable SDK available for Nokia phones the better. Maemo looks good at first blush. You develop on Linux instead of horrible, horrible windows, which is good and means that a proper SDK for Mac is probably possible. You use Qt which is apparently pretty good. So, good news all around.
Nokia needs to fix a lot of other things to keep their game going in the smartphone market. They need to stop messing around with resistive touch screens for one thing. But without a great OS they can't make anything else happen. So, I hope that they follow this up with more symbian abandonment and more alternative awesomeness.
UPDATE: And here it is (video of N900).
Apparently it's 1.15463195 * 10^-14.
Some people's deaths hit me harder than others. When Douglas Adams died in 2001 I was devastated. I also took it pretty bad when Guido Sohne died last year. I'm glad that he's now been rewarded with a post-humous award—in his name—and triggered a belated reaction to the original news.
Guido Sohne was an African software developer and open-source proponent who grew up in Ghana, went to Princeton, and then—amazingly—returned to his native land. Why did he do it? It's awfully tempting to stay where wages are high, where computer products are easy to get, peers are easy to meet ... he would have had no problem there. But instead he chose to return to Accra, and later Nairobi (Kenya).
I met Guido on a mailing list called PubSoft, focused on global issues around open source software. I've been an open-source nut for a long time. I've also been interested in international development and especially Africa since I lived for 6 months in a rural development project in Lesotho at an early age.
Guido and I struck up a cyber-relationship—we never met in person and only talked a few times on the phone. I was really interested in his views on the development of internet and computer technology in Africa. I can go and read what people are saying, but Guido was "one of us"—a CS grad from a big school—and a really nice guy and had a lot of credibility. I learned a lot from him about the realities. And, also, lets face it he was ahead of me in terms of exploring the boundaries of web technology—introduced me to Ruby on Rails for example.
Somehow or other I wound up hiring him to do some work for my company Semacode—I needed software written, didn't have many connections at that time, and he was looking for work. He did some himself and also managed another African native who he managed very effectively. We had a great business relationship which is especially important since he's on the other side of the world, and trust in business is so critical. He was totally reliable.
The source code by the way is still in the Semacode barcode decoding source base and is good code—has been built on over the years (since 2004 or 2005??).
And I know that Semacode was a great opportunity for him too as it has great web presence and is (still) really cool up-and-coming technology.
He had some business ideas that we discussed, we exchanged I don't know how many emails, and finally he got a job at Microsoft. Crazy, I know, because he was a Linux fan and always used a Mac. But I know other people who are otherwise good people who wind up at Microsoft and anyway: (a) MS is much less evil now and (b) this is Africa we're talking about ... how many major software companies have significant operations there?
(As an aside, did you know that there is only one major software company with HQ outside the USA?)
And then... I got an email that he died. At 34. In his sleep. There was no warning that I knew of. He always looked and sounded healthy. Maybe he had a heart condition or something. I don't know.
I often wonder if the reason he went back to Africa was because he had been diagnosed with some kind of "eventually-will-kill-you" illness and had a sort of revelation, to do something more meaningful than the traditional CS job. Well, that's looking for a reason for someone to be so extraordinary. I know good programmers and he was well up there. But he also had a vision, great people skills, drive, energy, communication and a good heart. So. I still can't believe he's gone.
- IEEE Spectrum article from 2008
- The Guido Sohne Fellowship, another award in his name
- Princeton obituary
- Blog post by G. Pascal Zachary
- You can still see sohne.net at the WayBack Machine although without the cool skin he had.
How many programming languages do you know?
Posted on June 16, 2009 at 10:31 PM
Categories: tech, meta, code
List of programming languages that I know* that appear on the Official Wikipedia List of Programming Languages**.
- * Or once knew... but I could pick it up again, I swear. It's like riding a bicycle. I don't include languages that I tried to learn but failed... like Scheme and Prolog.
- ** Commonly recognized as the standard in Lists of Things. Let it be known that I only include those languages that are turing complete, so CSS and HTML don't count.
Begin listing:
- AppleScript
- BASIC (Apple ][+)
- Bourne Shell
- C
- C++
- DLX Assembler (not listed, but it's a language...)
- HyperTalk (my first, favourite language!)
- Java
- JavaScript
- Lingo
- MATLAB
- Modula-3 (and don't I wish I didn't?)
- Objective-C
- Pascal
- Perl (and don't I wish I didn't?)
- PHP
- Python (and don't I wish I didn't? :-)
- Ruby (my third, favourite language!)
- μC++ (is it really a separate language? Well, it requires a separate compiler...)
- Visual Basic (sufficiently different from basic BASIC)
- XSLT (yes it's turing complete) (my second, favourite language)
So. Thoughts. FIrst, I can say that I know more than 20 languages. Second, my # of languages isn't going up as slowly these days, but the depth is. Third, my big hole is functional languages. Only XSLT is really functional-ish (people get mad when I say that).
I'd like to learn oCaml.
All of this work courtesy of procrastion and needing to quote a number of languages on my updated Custom Software Development page.
Rails "core team" fucks up big time
Posted on June 07, 2009 at 11:03 PM
Categories: tech, code, rails
Hey, if you have a rails app that uses the recently introduced authenticate_or_request_with_http_digest Rails 2.3 / http_authentication.rb, you've got a big fucking security hole. Anyone can log in if they provide a wrong username and no password, or a nil username & password.
Kind of terrible, right?
So Nate posts it on his blog after a week of trying to get the attention of the Rails security people, and they blame him in their security alert:
Due to communication difficulties and a mis-understanding between the reporter and the security team. This vulnerability has been publicly disclosed on several websites, users are advised to update their applications immediately. Steps are being taken to ensure that the security email is more reliable in the future. We regret the nature of this disclosure and will endeavor to ensure it doesn’t happen again in the future.
And they give him no credit. Most of the RCT idiosyncracies I can write off but don't fuck with security.
Nokia blows it on the N97
Posted on June 04, 2009 at 03:17 PM
Categories: tech, symbian, mobile, nokia
Nokia's new N97, I was hoping it would be the next great phone. But looking at a review in AAS, it looks like they totally blew it on the keyboard. There are only three rows of keys, which means that the space bar is in completely the wrong place. Gak!
ZDNet UK notes that the touchscreen is resistive instead of capacitative and apparently this results in a substantially less appealing touch compared to the iPhone. Yet another strike against.
Finally, I note that the camera is still the 5MP unit in the N95. I have that camera. It's good, but it's not great.
Despite the fact that the new home screen looks really cool (and much better than iPhone) and that it actually has keys, this means that we're not looking at the next great Nokia device that I was expecting. My search for a great device that combines a huge touchscreen and a decent keyboard/keypad apparently will have to continue.
% uptime
00:59:46 up 607 days, 14:13, 2 users, load average: 0.06, 0.17, 0.36
no wonder I found a lot of wacky old processes running on there...
Don't use porn in your slides at a tech conference
Posted on May 15, 2009 at 09:47 PM
Categories: tech, rails, theories, ruby
So Merb developer Matt Aimonetti made a presentation at GoGaRoCu heavily laden with soft-core pornography and some people got upset. In particular, a woman got upset—Sarah Allen. It didn't help that she was one of only six women at a 200 person conference. Holy shit!
Don't put sexual images of women in your slides. If you must do it, then put just as many sexual images of men in your slides. Be fair. Unless of course you're presenting to a club that only allows male members. Which in a way is what pisses off the women who are reacting to this incident—because it implies that Ruby/Rails/whatever is a men-wanted-only club.
If I had been there, I suspect I would have walked out. I've walked out of presentations, movies, plays, etc. for less. I have low patience no pride.
Why the lucky stiff posted a summary of women rubyist's reactions, and there's discussion aplenty there and elsewhere on the net. Hopefully the positive outcome will be a community that is more aware of issues that differ between men and women, and therefore has more women in the future.
sudo apachectl stop && sudo apt-get remove apache2 && sudo apt-get install nginx
Posted on April 30, 2009 at 12:56 AM
Categories: tech, code, rails, internet
I binned apache finally on semacode.com. It was easy. A little bit of "this is really the last straw" frustration with mod_rewrite and I ditched it.
I've been threatening to leave you, apache, for years. Ever since I first cursed your horrid rewriterules, I knew that it would never be the same between us. You were good, once. You weren't just "a patchy" web server, but a scrappy one... once. But 2.0 you just didn't live up. You didn't fix your big warts. You got flabby. Even the decision by your developer team to finally remove the default MIME type didn't redeem you in my eyes.
No, it was just one poke in my eye too many, when you insisted on unencoding my percent encoded URLs before passing them to the rails/mongrel proxy, and there was just no way to make you stop doing it, no matter how many googles I searched. And so I said: enough is enough. Everyone on Rails uses nginx now, and I will too. I'm tired of learning how to sacrifice chickens to the apache configuration gods. Bring me something new, clean, shiny, fast, and easy to configure!
Learning how to configure nginx took an hour on the outside—it's very easy and keeps all the good parts of apache's syntax and throws away the complete crap. It even allows me to compress stupid blocks into one-liners! :
if (-f $document_root/system/maintenance.html) { rewrite ^(.*)$ /system/maintenance.html last; break; }Isn't that gorgeous! I agree. And so the "engine x" russians get my love now. It's all over. Sayanora. End communication.
Yup.
Got a new server.
The old box, was a Penguin Computing rack-mount purchased in 1999 or 2000. It had a PIII and was totally maxed out RAM-wise—at 512 MB. Anyone who's tried to run rails on a box with that much ram might understand why I had occasional downtime. mongrel would just give up sometimes. Trying to install new gems was fun as well. Still, the old box had a good run.
The new box is a Dell R300... Core 2 Duo... RAM is at 4GB right now, max 24. And we've gone with RAID-1 since we don't really need the space but like the redundancy.
Also, we switched from debian to ubuntu. Ubuntu is a bit less secure but a hell of a lot easier to deal with in terms of package management and installation.
Welcome to the World of Tomorrow!
Posted on March 29, 2009 at 01:18 AM
Categories: tech, art, future
When I was just a young tyke, getting beat up by my peers every day, I retreated to the little school library to immerse myself in visions of the future. Little did I know that some day the mythical year "2001" would come and pass in a blaze of ... nothing spectacular. Well anyway, I think it's fun to look back at those visions of the future and look in awe at the coolness of how we should now be living.
My absolute favorite of all time series was called "World of Tommorow" by Neil Ardley, who also collaborated on the famous "How Things Work" with another of my favorites, David Macaulay (see him talk at TED!).
I love how Ardley saw us with huge gigantic wall-sized computers completely taking over our houses:

Or maybe you'd prefer to see what the tank of the future will look like (n.b., it's robotic!)

Playing holographic games could also be fun...

And there's more—two whole books are online: World of Tomorrow - Health and Medicine, and World of Tomorrow - School, Work and Play. I want my wall-screen TV.
Under the lid of a power line conditioner, the APC H15
Posted on March 25, 2009 at 06:24 PM
Categories: tech, photos
I just acquired an "APC AV H15 Home Theater 1500VA Power Filter and Power Conditioner", which is usually just called the APC H15. It's a pretty popular device basically to smooth out the AC power for home theatre type systems, and also protect your equipment from any kind of bad power juju. Some people buy these kinds of things to make their speakers sound better, but my system probably isn't good enough to notice at this point. My concern was that my apartment has bad power, and I've been having random computer shutdowns, blown lightbulbs, and even weird lines in my new LCD TV. Fortunately I got this silver H15 less than half price because they're moving from silver case to black case.
To me the most impressive thing about this kit is that it's HEAVY. 25 pounds as a matter of fact. So naturally I wanted to crack it open to see what the hell was inside.
Here's the front and back. Click on any of these pictures and on flickr click "All Sizes" to see 5 megapixel full resolution versions (ID parts to your heart's delight).
Three easy screws gets the top off. NB If you've been using it there might be "hot" components inside (electrically speaking) even if it's unplugged. This one was fresh out of the box. Don't touch anything unless you know what you're doing.
So, not just an empty case then. What the hell is that huge thing in the middle?
Looks like a massive toroidal core transformer operating as a constant-voltage transformer if you ask me. Provides voltage regulation and surge protection at the same time.
Some ceramic capacitors. Don't know what they do, beyond storing power.
The yellow/green toroidal things are Common Mode Chokes and reduce line noise. The red box is a surge cube relay (surge protection) and the blue boxes are Interference Suppression Film Capacitors for EM noise. I googled it.
And finally, here's the back panel.
If you must have more, you can visit my flickr photoset with 37 detailed images...
The StartupCamp Report - StartupCampWaterloo5
Posted on February 26, 2009 at 06:34 PM
Categories: tech, links, business, barcamp, startupcamp
So last night was StartupCampWaterloo5—the Original Startup Camp with the Best Format(tm). We had on the order of 60-80 people in attendance. We didn't do formal count of startups this time, but there were 12 proposed demos on the whiteboard, and I know of at least 3 other groups that were represented. As usual we had a keynote speaker: Mark Evans, who among other things runs the mesh conference in Toronto. He usually talks about social media, but he focused for us on communication, highlighting good and poor first impressions and public communications strategies of various websites.
Twelve people/groups put themselves up for doing a session, and gave 30 second pitches about what they wanted to discuss on the theme of starting up. We did our approval voting, ate food (thanks sponsors!) and had time for the top 4:
Kareem Shehata showed us his new Aeryon Labs Unmanned Aerial Vehicle—sadly he did not yet have government clearance to fly it, but it's a serious piece of kit and he had some kick ass videos. It's controlled via a Google Maps style interface. We talked about business models. http://www.aeryon.com/
I led a discussion on the subject of where to get Free Money from the government. Suggestions included SR&ED, NSERC USRA, Various OCE programs, Youth Employment Strategy, Ontario Interactive Digital Media Tax Credit, MS BizSpark, Youth.gc.ca - $15K for employee < 30, OMDC, Ontario Interactive Tax Credit, Services Canada (summer jobs)... and to look at the recent techcapital blog post.
Avery Pennarun "eql=data" a project he's working on to make MS Access databases web accessible. Business model was a bit of a question mark but interesting technology and Avery gives good talks. http://eqldata.com/
Grigory Kruglov—a UBC student current on co-op at RIM - talked about his business venture Outwick.com. It's aimed at collecting information about events like concerts, cultural events, public parties etc. and making it easy for people to find events at the time & place of their choosing using data mining, tagging etc. Very interesting, and we had a cool talk about viability, how to commercialize, etc. http://outwick.com/
We also ran a live twitter stream on the main display using #watcmp. Afterwards many of us adjourned to Molly Blooms to imbibe the beverages of our choice.
Thanks to my co-instigators Jesse Rodgers and Mic Berman, and to our sponsors: Accelerator Centre, WatStart, Sun Microsystems, and Tech Capital Partners who provided space, support, and food!
PS And I almost forgot—Graham Hardie shot video and promises to put it online!
Nokia N97 - the form factor that RIM should have used in Storm, and Apple never will use in iPhone
Posted on December 04, 2008 at 04:57 PM
Categories: tech, symbian, mobile
So Nokia has announced the N97 touch screen device with real keyboard—the form factor that RIM should have used for the Storm, and the Steve Jobs will never allow at Apple.
Getting a "Secure Rip" (a perfect/high-quality mp3 rip of a CD) on a Mac
Posted on November 25, 2008 at 12:29 AM
Categories: music, tech, mac, bittorrent
I've been trying to figure out how to get a perfect CD rip on my mac. The problem in a nutshell is that ripping CDs is "unreliable", in other words, it is impossible to be sure when you rip a CD that you have the correct digital data. How good a copy you get depends on your drive and the software you use.
Why care? In the most extreme cases you can literally get blips and pops in your MP3 file. This might occur even with a totally unscratched disc. But more likely you will get a subtle degradation of quality which will be noticeable if you have a good sound system, and that sucks. So.
The gold standard in secure ripping is Exact Audio Copy, a Windows-only program and likely to stay that way forever. Why? Because you can run it in boot camp or Parallels or whatever. If you want to use EAC definitely follow a how-to guide such as Exact Audio Copy Guide. EAC does not come preconfigured properly.
If you must use a Mac-native program, check out Max, and have look online in how to set it up for maximum secure mode, because it doesn't come in that mode by default. Max was originally written more as a transcoding program (converting between formats) but now supports a linux-originating cd ripper called cdparanoia. Audiophiles still prefer EAC to cdparanoia, and I'm not going to tell them they're wrong, even though they are occasionally insane and overly conservative, so I would say stick with EAC.
Oh yeah, and I would also say, rip into FLAC format. Then, use something like Max to convert from FLAC to MP3 320 Kbps (using LAME "insane" mode) for import into iTunes, use on your ipod/phone/mp3 player, etc. In practise it's unlikely you will be able to hear the difference between a lossless format and a 320 mp3. If you REALLY need to you can use Apple Lossless until Apple supports FLAC, but I like FLAC better as it's the open standard and everyone uses it. Archive the FLAC files for the future. You get to keep a perfect copy but not waste GBs of space on your mobile device.
And by the way, if you download music from BitTorrent, you might as well get FLACs, and they are almost always ripped with EAC.
UPDATE: Actually X Lossless Decoder looks like a good replacement for Max. It has the added ability to split a single huge FLAC/CUE combination into multiple MP3s (or any other format) automatically. Just drag the .cue file onto XLD and you're away.
BarCampWaterloo (November 2008 Edition) roundup
Posted on November 25, 2008 at 12:18 AM
Categories: tech
Yet another BarCamp in Waterloo came and went. Phun. Saturday we talked about Windows 7, what's the best platform for mobile development, and a wide ranging debate on programming languages. Learned more about Haskell. A little bit. Was possibly only person to have heard of Scala or Groovy. Wild. Also there were other discussions too, including a nice chat I had with Ali A. (missed a presentation for that one).
Myself and Jesse Rodgers run BarCampWaterloo totally on a voluntary basis, we don't get any money, and the sponsors pay directly for whatever they are buying for us. In this case, Gary Will's WatStart bought lunch (pizza—good quality too). Waterloo Accelerator Centre donated the space! And, Tech Capital VC bought us snacks and drinks (non-alcoholic) in a wide variety of persuasions.
What I love about BarCamp is that it's totally in the hands of the people that show up. Jesse & I and the sponsors merely provide a forum and a teensy tiny bit of structure, everything else is in the hands of the participants. You arrive, if you feel like talking about something, showing something, or just raising a discussion topic (e.g. programming languages) you just write it on the whiteboard at any time. It's so freeing and wonderful.
As for who was there, we went around the room and I didn't have paper to take notes with. There was the usual ~ 30 people, including a few peeps from AideRSS (current darling of waterloo tech startups :-), other startups such as FossFactory (cool idea, and we talked about how they will make the business model work a bit), Well.ca, CastRoller, and a couple others I missed.
In addition one of the students from VeloCity, UW's experiment in high-tech oriented student residence (or else, a new metropolis for bicycle fanatics). A smart and lucky fellow. And other students, professionals at larger firms, and other authentic techies. And we had in the audience both an eeePC and the latest macbook pro, made from a single solid block of diamond.
And if all of that sounds like fun, make sure to join our BarCampWaterloo FB group to find out about the next one (or if you hate Facebook, look at the wiki page).
One of my biggest dislikes with touch-screen devices is the total lack of tactile feedback. There are other things I don't like about them, but that's a biggy. So when I played around with the BB Storm's clickable screen. I liked it. I only played with the browser, which was competent, actually quite good, and very close to as good as the iPhone. So I can't provide an overall review of the Storm. But the clicking, that's good.
What the hell is the Loudness War? It's music business, baby. Put it this way. Everything is getting LOUDER.
IF YOU'RE LOUD YOU GET NOTICED PEOPLE READ YOU FIRST BUT EVERYTHING STARTS TO SOUND THE SAME.
That's just a simple "visualization" of what the loudness war is doing to music (recorded music anyway).
You could perhaps lay the blame on 5-CD changers. If you had one back in the 90s, you probably noticed that whenever it switches discs, you had to adjust the volume. And then MP3 players didn't help, although now the software will automatically adjust the loudness of tracks to match each other. And car CD players, where everything has to be loud to even hear it. But really, it's the fault of computers, and in particular a device called a digital compressor.
Basically here's the problem in a nutshell. Music has variations in volume, between the quiet parts and the loud parts. If you're in a movie theatre, concert hall, or at home with a good stereo, this is exciting, it's dynamics. The music can start out quiet, and then build up and then reach out and grab you by the throat in the exciting bits. This is GOOD.
But psychological studies have shown that people subconsciously think that louder is better, and the problem comes in when you are moving from one song to another. If you go from a loud song to one that starts out really quiet, your subconscious brain is going to tell you that the quality of music just went down, and you're going to hit the skip button or change radio stations.
So the producers use the compressor to "compress" (yeah, that's why it's called a compressor...) the dynamic range so that the difference between the quiet parts and the loud parts is minute. Basically, they make everything LOUD.
A few years ago Rolling Stone had an article called The Death of High Fidelity, it's about the Loudness War, and you can see a sort-of good video about it on YouTube.
There also a a great article from IEEE Spectrum magazine: Tearing Down the Wall of Noise. Good reading.
All in all these stories demonstrate without a grain of doubt that (a) the Loudness War is real and (b) it's causing damage to the music. Constantly loud music makes you tired and ultimately isn't satisfying or good. The subconscious thing is temporary, but the damage to the music is permanent.
What can you do about it? Buy music that isn't compressed, for starters. Some artists are fighting back, like Norah Jones with Not Too Late and Dylan's Modern Times. Or, just buy OLD albums, like CDs from the 80s, the time before compressors existed. Or buy vinyl, which for physical reasons doesn't really allow compression, but to me, having to go back to old tech like that is just silly. The music industry needs to fix this on the new technology. Even if they can crank up the volume, they shouldn't turn it into pure noise.
PS: Seems that you can use "Average RMS Power" to get a rough idea of the dynamic range of a tune. And you can measure that using various tools, e.g. Amadeus Pro (Analyze > Waveform Statistics). Here are some values from my library:
- Norah Jones, Feels Like Home, Sunrise: -13.5 dB .... that's not great but it's not as bad as it could be ... I don't really listen to this much any more though, and I think it's partly because it's tiring to listen to.
- Decca Georg Solti Nibelung, Walkure Act I: -25 dB... I have no trouble with ear fatigue listenging to this one.
- Beatles, Revolver, Taxman (no idea what edition): -16 dB ... I find it a bit loud, but I guess partly that's intentional?
- Cowboy Junkies, Trinity Sessions, Blue Moon: -21 dB .... what can I say? niiiiice.
OK, so I guess pretty much everything in my collection is OK at least. Probably because I delete anything that has crap dynamics. For comparison here's some stuff I wouldn't listen to.
- Coldplay, Viva la Vida:-12.3 dB ... well, it could be worse.... a bit... this would be a lot better with better dynamics.
- Rihanna, Disturbia: -11 dB ... just looking at the waveform for this makes my ears hurt in advance.
Yeah, those are fairly hard to listen to.
Someone ought to make an average RMS database.
Azureus's stunning visualizations (Vuze)
Posted on July 18, 2008 at 07:51 PM
Categories: graphics, tech
In order to get around Bell Sympatico's bittorrent throttling I recently switched to Azureus (aka Vuze). If you switch to the "classic" UI mode, it has some stunning visualizations of what's happening with your torrents.
The main screen contains a bit more information than you might need, but if you play with the columns that are visible (right click on the headers) you can get something like this:

What you've got there is downloading torrents at the top and finished ones at the bottom. Green happy faces are currently in progress. Gray ones are queued. In the bottom right corner you can see that my total download speed is 311 kilobytes per second, and total upload is 50kB/s (I'm on ADSL).

Suppose I want to zoom in on one particular torrent — double click on it. This shows each of the peers I'm connected to. What pieces of the file do they have? How far complete are they in total? Bittorrent downloads files in chunks and it does the chunks randomly, not from start to end, so this information can be interesting.

The above shows me EVEN MORE details if I really want it (OK, some of this stuff is really excessive). It shows which of the pieces I've got (blue) and which ones are downloading (in red). Just in case you wanted to know...

Swarm (above) is an actual animation of the pieces of the file as each of your peers around the edges send the bits to you in the middle. And it also shows the reverse as well. And the pie charts show how much of the torrent each peer has. Wild stuff.
So, that's if you want to know what's happening with one particular torrent. But what if you want to know about your overall connection with all the different peers and torrents? Well, Azureus gives loads of graphs and charts for that as well.
This one is your overall bandwidth monitor:

Nice. I love staring at this one. It's a really good example about how to cleanly show multiple related variables in a time-based chart (aka histogram). For the top one, the blue filled area is your download speed. Really interesting is the gray line, which is the average download speed of the SWARM. In other words, what is your average peer getting? If you're below this line, then you're getting screwed — or there's something wrong with your configuration. If you're above it, you're doing well. It's a good way to get a quick fix on the health of your downloads as compared to other users. It also makes it really easy to see if you're being rate-limited by your ISP.
On the bottom half, you can see that I've enabled Auto-Speed and it's automatically cranking the max upload speed up and down based on measuring my bandwidth and other factors that I'm not too clear on.
There's other visualizations but those are my favourites. Some of them aren't really documented and I don't really understand exactly what they mean (transfers and vivaldi for example). Still, obviously one of the azureus open source developers is a data viz keener and s/he's done some fine work.
Hacking the java compiler: using anonymous subclasses as closures
Posted on July 10, 2008 at 11:17 PM
Categories: tech, code, java
UPDATE: new more comprehensive post on this subject: Closures with return values in Java.
In Java, closures/first-order functions are not a language feature. However, as everyone knows, you can effectively get a first-order function by using an anonymous subclass instead. Something like this:
class MyClosure {
void run() {} // override this
}
void doSomethingClosureLike() {
MyClosure closure = new MyClosure() { void run() { System.out.println("We're inside a closure!"); }};
runTheClosure(closure);
}
void runTheClosure(MyClosure closure) {
closure.run();
}
// will print We're inside a closure!
Anyway, it's simple enough, you pass the class instead of the function and there's a little extra verbage but it works!
Also you get closure-like functionality, because inside run() you can access variables from outwhere where you created it. E.g.:
void doSomethingCooler() {
final String myString = "Foo!";
MyClosure closure = new MyClosure() { void run() { System.out.println("The string is: " + myString); }};
runTheClosure(closure);
}
// will print The string is: Foo!
You can also access global variables that change over time, and the closure will use whatever is the current value WHEN THE CLOSURE RUNS.
There's just one small annoying thing, which is this particularly annoying compiler message:
local variable (WHATEVER) is accessed from within inner class; needs to be declared final
If you were do change myString to not be final, you'd get that error. Bummer. You could make myString a global variable and that would work, but that's stupid. There is a better way. Try this: UPDATE: This doesn't work, see new version at the bottom, thanks commenter the.d-stro.
void doSomethingCooler() {
String myString = "Foo!";
final String myStringFinal = myString;
myString.concat(" Bar!");
MyClosure closure = new MyClosure() { void run() { System.out.println("The string is:" + myStringFinal); }};
runTheClosure(closure);
}
// will print Foo! Bar!Now you can even change myString after you assign myStringFinal, because Java, although they say it doesn't use pointers, really does use pointers. I.e. it passes by reference. So, myStringFinal is actually just a reference to myString, and keeps pointing to it even when you change the contents of myString.
You can CHANGE it (like using concat()) but you CAN'T reassign it. That will break the pointers. It makes sense if you think about it—myString will have a new memory address, and myStringFinal will still be pointing to the old memory address (and the old string value). So, this won't work:
myString = "won't work"; // breaks myStringFinal
You can use this technique with any object (but not primitives like int).
UPDATE
The last source block is wrong because java Strings are immutable. Here's an example that will work as advertised:
void doSomethingCoolest() {
StringBuffer myString = new StringBuffer("Foo!");
final StringBuffer myStringFinal = myString;
myString.append(" Bar!");
MyClosure closure = new MyClosure() { void run() { System.out.println("The string is: " + myStringFinal); }};
runTheClosure(closure);
}
// will print The string is: Foo! Bar!
ALL NEW "Simon Says" content RIGHT HERE
Posted on July 10, 2008 at 02:52 PM
Categories: tech, meta, links, art
Wow, WYM Editor is so cool that I can just like type in a new blog post whenever I want to. Wild!
So anyway, I've been saving up a whole load of links and stuff for months until I had this new site all sorted out. So here's something.
Hmm... where did my "stuff to blog about" folder go?
Oh, here's an awesome one. Nikkei Electronics Teardown Squad. These guys kick ass. Watch as they take apart a MacBook Air and declare "No Waste Outside, Nothing but Waste Inside".
About 30 screws were used to attach the keyboard alone. "The total number of screws in the MacBook Air was several times the number used in a PC we make," one of the engineers said.
Burn, baby, burn!
OK, here's another one from the files. Nathan Fawkes Art. He's part of a network of film animators and illustrators and concept artists who all have their stuff up on blogspot.
And I'd like to remind myself particularly about this post about science fiction.
OK, here's a test of how WYMeditor works, because I'm going to try to copy/paste some code in here. I just had a little foray into my past with XSLT. I had 344 old blog posts (starting year 2000!) to convert from XML to SQL. Nothing better than XSL for the job! Here it is.
NB: I haven't restored images as of this writing.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" encoding="ASCII"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ- </xsl:variable>
<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz-_</xsl:variable>
<xsl:variable name="allowed_letters">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_ </xsl:variable>
<xsl:template match="/">
<xsl:text> USE `sw-blog-dev`;
</xsl:text>
<xsl:apply-templates select="weblog/entry"/>
</xsl:template>
<xsl:template match="entry">
<xsl:text>INSERT INTO `sw-blog-dev`.`posts` (`author_id`,`created_at`,`modified_at`,`permalink`,`title`,`synd_title`,`summary`,`body_raw`,`extended_raw`,`body`,`extended`,`is_active`,`custom_field_1`,`custom_field_2`,`custom_field_3`,`body_searchable`,`extended_searchable`,`text_filter`,`comment_status`) VALUES
</xsl:text>
<xsl:text> (2,</xsl:text> <!— author_id —>
<xsl:text>'</xsl:text><xsl:apply-templates select="date"/><xsl:text> 12:00:00',</xsl:text> <!— created_at —>
<xsl:text>'</xsl:text><xsl:apply-templates select="date"/><xsl:text> 12:00:00',</xsl:text> <!— modified_at —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="PERMALINK" select="title"/><xsl:text>',</xsl:text><!— permalink —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="XHTML" select="title/text()"/><xsl:text>',</xsl:text><!— title —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="SYND_TITLE" select="content"/><xsl:text>',</xsl:text><!— synd_title —>
<xsl:text>'',</xsl:text><!— summary —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="XHTML" select="content"/><xsl:text>',</xsl:text><!— body_raw —>
<xsl:text>'',</xsl:text><!— extended_raw —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="XHTML" select="content"/><xsl:text>',</xsl:text><!— body —>
<xsl:text>'',</xsl:text><!— extended —>
<xsl:text>1,</xsl:text><!— is_active —>
<xsl:text>'',</xsl:text> <!— custom_field_1 —>
<xsl:text>'',</xsl:text> <!— custom_field_2 —>
<xsl:text>'',</xsl:text> <!— custom_field_3 —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="TEXT_ONLY" select="content"/><xsl:text>',</xsl:text><!— body_searchable —>
<xsl:text>'',</xsl:text><!— extended_searchable —>
<xsl:text>'markdown',</xsl:text><!— text_filter —>
<xsl:text>1);
</xsl:text><!— comment_status —>
</xsl:template>
<!— must remember to backslash all single quotes —>
<xsl:template match="date">
<xsl:value-of select="translate(.,'/','-')" />
</xsl:template>
<xsl:template mode="PERMALINK" match="title">
<xsl:value-of select="substring(
translate(
translate(., translate(., $allowed_letters, ''), ''),
$ucletters,
$lcletters
),
0,42)"/>
</xsl:template>
<xsl:template mode="SYND_TITLE" match="content">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space( substring(.,0,42) )"/></xsl:with-param>
</xsl:call-template>
<xsl:text>...</xsl:text>
</xsl:template>
<xsl:template mode="TEXT_ONLY" match="content">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space(.)"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template mode="XHTML" match="content">
<xsl:apply-templates mode="XHTML"/>
</xsl:template>
<xsl:template mode="XHTML" match="node()|@*">
<xsl:copy>
<xsl:apply-templates mode="XHTML" select="@*"/>
<xsl:apply-templates mode="XHTML"/>
</xsl:copy>
</xsl:template>
<xsl:template mode="XHTML" match="text()">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space(.)"/></xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template mode="XHTML" match="@*">
<xsl:attribute name="{name()}">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space(.)"/></xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</xsl:template>
<xsl:template name="escapesinglequotes">
<xsl:param name="arg1"/>
<xsl:variable name="apostrophe">'</xsl:variable>
<xsl:choose>
<!— this string has at least on single quote —>
<xsl:when test="contains($arg1, $apostrophe)">
<xsl:if test="string-length(normalize-space(substring-before($arg1, $apostrophe))) > 0"><xsl:value-of select="substring-before($arg1, $apostrophe)" disable-output-escaping="yes"/>\'</xsl:if>
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="substring-after($arg1, $apostrophe)" disable-output-escaping="yes"/></xsl:with-param>
</xsl:call-template>
</xsl:when>
<!— no quotes found in string, just print it —>
<xsl:when test="string-length(normalize-space($arg1)) > 0"><xsl:value-of select="normalize-space($arg1)"/></xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Niiiiiiice.
Hi there.
Well, I'm back. I was running this site on really ancient technology — AxKit — so 2001. Now I'm running it on modern technology, i.e. Rails 2. And doesn't it rock. Now I have a cool GUI editor to type into, I have easy programming in ruby, and I have of course polished both my design and my CSS/XHTML skillz considerably in the mean time, hopefully making this all easier to look at and navigate.
So I'm running on SimpleLog here, but it's not "stock". Oh no. Stock SimpleLog right doesn't run on Rails 2, but this one does. Also, I made it even MORE simple than it used to be:
- Support Rails 2.0 (no need to freeze an old rails)
- no themes—annoying to use anyway, and no one was publishing themes either
- replaced the editor/preview panel with WYM on Rails, which is by FAR the best WYSIWYG / GUI editor I've ever found, and the end of a long search for me
...and so on.
What do you get when you mix HTML, CSS, Javascript, Asynchronous Javascript, a web server, a web browser, interprocess communication, and native application views?
I was on "vacation" during August. I only got to have 5 days of "real" vacation because some stuff cropped up for work but I did do some sort of recreational programming. And I had this idea that seemed like a good idea, and my programmer buddies didn't immediately shoot it down as being completely stupid, so, I did up a demonstration in Objective-C and it's called Bottlenose.
Bottlenose is a way to enable graphic designers, and HTML/CSS/Javascript designers, to directly create the interface for a native application. Where a "native application" is something that runs right on the computer, like a work processor (not a web app, ASP, or applet).
I might have used pure java but (a) there's no good web browser API available for free and (b) Apple's WebKit is sooo easy to use and well documented. But still - Bottlenose could easily be ported to other platforms. In fact, I want to see it especially on Linux. Because I think that on Linux it could make a big improvement in the UIs if the graphics people could write it themselves. That is, after all, the Linux philosophy.
Anyway, I have this idea of running a contest to develop UIs for the demo that are better than the one I made. I'll probably even throw in a valuable prize of some sort (some books?) for the winner, and post all of the good entries.
If you have any comments at all, or think it's a good/bad idea, feel free to contact me .
TELL THE WORLD! I was Mr. Marklar
Posted on June 06, 2005 at 12:00 PM
Categories: tech, meta, code, mac
OK, I've been waiting for four long, long years to tell you this. My "Secret Project" at Apple was Marklar aka OS X on x86, finally announced today! I'm not going to say today whether I think it's a good idea or a bad idea, or what, but I will say this. In 2001, my job at Apple was Program Manager for the Marklar project. When I started, Marklar was relatively moribund, being nursed by a handful of Core OS engineers. Lots and lots of new code had been introduced in OS X from the old Mac side, and new code written, since the last release of Rhapsody worked on Intel.
My job was to get the system working on x86 again and that's what I did. I traced dependencies like there was no tomorrow. I worked with engineers in a dozen different divisions, each time making first contact with the division manager, then finding just the right person for the job. Each time the same drill: "I'm going to tell you about a project that is Need To Know only. You can't tell anyone about this, even inside Apple. I'm not even going to tell you everything, just the minimum that you need to know in order for us to continue. If you're wondering who the hell I am and why you should listen to me, ask you manager who will just tell you to do it."
I went on leave in fall 2001 after the WTC thing, but by the time I left the Marklar team gave a demo to something like the top 100 managers of the company with a working Marklar system complete with Finder running and a whole range of apps. I kicked ass!
Obviously such an important part of my professional history, but until TODAY I haven't been allowed to breathe a word. A very SENSITIVE project, of all sensitive projects! But now, tell everyone, tell your friends!
Massive Change is a web site + travelling museum exhibit (currently in Toronto!) about ... well ...
They say it's the Future of Global Design but a lot of what's in there I wouldn't say falls under design. They talk for example about dealing with internalization in manufacturing and they also take a walk through the light spectrum and what different kinds of images are good for. The whole thing is very scientific.
More to the point, while it at first appears superficial, it rewards a deep look at any of the subjects.
I was dreaming about Apple again last night (which I often do, since I worked there in my capacity as a busybody). If I were in charge of apple, here's what I would do.
- their core business is selling computers. the main competition to computers is smartphones but apple is safe because smartphones have small screens. until roll-up large screens are made, apple is safe.
- they pick small markets with low-hanging fruit. Easy pickings. what's next? a video camera is next. the video cameras on the market suck. apple already has experience with optics from the iSight. they'll make a video camera
- they lose tons of money on Mac OS X. they spend upwards of $100 mil a year on it, but make almost none of it back. instead they make money from the computers. OS X is a loss leader.
- they aren't doing squat with weblogs. that needs to change.
- they will not make a cell phone. cell phones are fine, there's lots of good cellphones already on the market
iMovie to ffmpegX to DivX encoding
Posted on November 17, 2004 at 12:00 PM
Categories: tech, unix, film
How to properly use the kick-ass ffmpegX (for OS X, a wrapper for all kinds of open source tools) to encode your iMovie movies.
It is very important, that you do NOT choose the "Full Quality DV" Setting when exporting from iMovie. This just makes iMovie glueing the 2GB chunks together in which it records movies. Mencoder can't handle that. Here's what to do: Choose "Expert settings". Click "Export". Choose "Movie to Quicktime Movie". Click "Options". In "Video Settings" choose "DV PAL" (or NTSC, if you are on that TV System). In the Audio settings, choose uncompressed 48khz Stereo. Uncheck "Prepare for Internet streaming". Make sure the output file has .mov as extender. Now the recording is reencoded as a single movie which Mencoder will encode completely as AVI.
I just downloaded the Myst IV Revelation demo (it's free there) and it's very cool. It brings back memories of Myst and maybe (I can hope) it will be as good as Riven was. Anyway, I guess I'm going to buy it as soon as I'm done writing this, but first, some obligatory info on hacking the sound files out of the demo.
We're talking about the OS X version here, presumably the PC version is analogous. Go into the .app package and look for sound/data. Ignore the .snd files, they are metadata. Inside "data" you will see files with three different extensions. Here's my guide to what they are.
- .LS0 - inside the "English" folder - these are easy, they are straight OGG vorbis, just rename them with the .ogg extension and play in your favorite player.
- .SS0 - music and some backgrounds. Three of these are straight OGG vorbis files, rename as above. Some of them are ADPCM - see below.
- .SB0 - many of these are 44100 Hz, 2 channel (stereo), 4-Bit 4:1 IMA DVI ADPCM files (a common format in WAV/wave files). You can listen to them using SoundHack a free program for OS X and there's probably similar soft for PCs. Open as unknown format. Set the format to the above. Save Info. Save as. The resulting file should be listenable. NB: Many of these files contain multiple sounds. NB2: Some of them won't work using this technique, I don't know why.
Have fun.
Update: Revelator will extract just the ogg files automatically.
PS: Why all the work? They're probably just trying to make it difficult to extract the audio by stripping the normal headers from these files. They could have left the WAV headers in place and made it a lot easier.
Check out this sunset picture I snapped with my Nokia 7610. Not bad eh? The large sized image is HUGE... it's amazing that megapixel really does mean big. Now, it has artifacts in the dark parts of the image which I attribute to low light. I can't remember if I had night mode on or not (I think not, it seems to be geared towards REALLY dark shots). For the small sized one here, I applied some blur before I shrunk the image to make the house look better.
First, it's nowhere near as simple as I thought. Second, it's nowhere near as complex as I thought. Well, here's how it works. MPEG-4 is a way to define a codec. So, when you go into quicktime and it says, save as MPEG4, you're not saving as MPEG4, you're saving as "Apple's MPEG-4 codec". Which, by the way, sucks compared to basically any other option . There's actually a whole bunch of MPEG-4 codecs, including Divx, Xvid, 3ivx, and a whole bunch of high end professional codecs that cost a lot of money. In theory, any MPEG-4 player can play any MPEG-4 codec. In practice, not so much. But also, in practice, VLC and MPlayer can play them all.
Following all that, here's an enlightening discussion thread comparing various formats and explaining MPEG-4 .
The word on the street says subversion is finally ready for prime time . You may recall some bizarre IP disputes—apparently these have been resolved at this point. Apparently it's much like CVS, basically designed to be "a better CVS" and they've kept the CVS syntax except in areas where it really needed to be fixed. They've fixed versioning to work across file renames, directories, binary files, improved merging and branch support. Comparisons to the best commercial products come out favorably.
There's an OS X gui client as well : svnX from la chose interactive.
Why lisp .
I don't know Lisp, ever since the middle years of my CS degree. I was forced to learn Scheme in a week, and it didn't take. I failed miserably. I never understood it, and generated a program that looked to me like a sea of parantheses that did I didn't know what.
But every once and a while I hear people who seem to be great programmers say that Lisp is the best thing ever. I've never heard good reasons why this should be so, but I was sucked into reading about Lisp because of this article Revenge of the Nerds about pointy haired bosses (PHBs) vs. programmers.
This Scopetime is a nifty flash gizmo. It's like a new way of displaying time. I like the presentation as much as the idea. I don't think we really need new ways of displaying time, but on the other hand, I think this idea does actually work, which is pretty unique in this category of "inventions". In other words, I could actually see having a clock that works like this. Anyway, I like the flash.
ACCESS ... check this out! by Marie Sester
explanation of how Mail.app's LSA-based spam filter works
Posted on May 25, 2004 at 12:00 PM
Categories: tech, links
How Mail.app's LSA-based spam filter works . Finally an explanation I was able to comprehend. It's data mining after all :-)
I found a solution to my long-standing VPC problem today. The trick was to add "airport" to my google queries. That quickly turned up this useful posting on macosxhints. It's a little bit complicated. You have to remember to go into VPC preferences and specify "built-in ethernet" for the network connection. For me, it's worked perfectly for both Windows 2000 and Linux (debian). I run smbd on linux, mount_smbfs the share onto the mac side, load up an XCode project for my symbian development projects, open an SSH window into the debian virtual machine to run 'make' and I'm all set with an environment that's almost like having everything on the mac.
I just got off the phone with "Daniel M."* from Microsoft technical support. I called them because I was having trouble setting up a network connection between VPC and the host Mac OS X machine. Specifically, Windows 2000 and Panther. But I also had the same problem with a Linux (debian) system I also set up on Virtual PC.
I figure Daniel is second-tier support because he called me and he doesn't have any way for me to call him back. I asked because my cell phone has a new area code and a lot of PBX systems are unable to dial it. I wanted to call him back from the cell phone so I could use the speaker-phone support it has but—no, this was not possible.
What Daniel told me is that networking is not supported by Virtual PC. "Virtual PC", he said (this conversation took place just a few minutes ago) "was only originally designed to connect to the web, the internet. Virtual Switch, for local networking, was just something added by Connectix but when Microsoft bought it, it's not really supported any more. We just left it in as a convenience. But it's not within our support boundaries. There's too many different possible network configurations."
I said, "so are you telling me that Virtual PC does not support local-area network connections?" His answer, "Yes."
Daniel is not the first tech support person I talked to. First I spoke with Michael, yesterday. Michael gave me my case number, SRX 0403 22605 XXX. For about an hour I tried to explain my problem to Michael. What I wanted to do, I said, was to do networking between the "guest" and the "host" computer. The "host" is my powerbook running OS X. The "guest" is Windows 2000 running inside Virtual PC. It seems (to me...) that it's a no-brainer that you should be able to connect between the two. But you can't. Even with Virtual Switch, you get two different IP addresses, and VPC fakes out the system with a fake ethernet address, and other computers (such as the iMac) see them as two separate machines. But you can't connect between them on my powerbook.
In fact currently in order to ssh between OS X and VPC I have to ssh first to my iMac, then back to VPC.
Not that anyone at Microsoft technical support has ever heard of ssh. They've heard of telnet though, and it just happens that Windows 2000 comes with a built-in telnet server. I could prove to Michael that it wasn't working because I could telnet from iMac to Windows 2000, but I COULD NOT telnet from powerbook OS X to powerbook Windows 2000.
Eventually, after about an hour, Michael tried to punt me to the Windows networking team. Now, I already know this is not a windows problem. Why? Because I tried the same thing in Linux and had the same problem. I knew he was trying to get rid of me and Windows people would not be able to help so I asked to speak to his supervisor. He connected me quickly. Finally, I thought, I was getting somewhere.
The supervisor's name is Kal "manager for support". Kal had the mistaken impression from Michael's write- up, that all I wanted to do was telnet. No, I patiently explained, I want to be able to do full networking back and forth between guest and host — file sharing, telnet, even browsing web servers I would set up on the opposite virtual system. Kal said he'd look into it and call me back.
That takes me to today with the call back from Daniel. Daniel was pessimistic from the start. He'd never heard of ssh either, and he wanted to try something "simpler" — windows networking. At this point I realized I wasn't going to get anywhere. He then proceeded to disclaim for a while that it wasn't really supported anyway.
So, Virtual PC doesn't support networking. Who knew? I should ask for my money back.
* last name removed to protect the maybe innocent.
Update 2004/03/23: Virtual PC Help says: "Under Mac OS X, a PC may communicate with the host Macintosh, with other PCs using the Virtual Switch, and with other computers on the network."
Update 2004/03/24: I talked to Daniel again today. He said he'd brought it up in a meeting and so I think he meant to say he was taking it seriously. I told him about reports I'd read on their own newsgroups that wireless networking was responsible for the problem. Later, I found a solution .
After years, years of avoiding serious Windows use I'm finally having to wrestle with two Microsoft products. Windows 2000 and Virtual PC. Although the "Virtual Switch" mode of VPC is specifically intended to allow you to log into the windows box as a separate entity from the host Mac OS X box, this only kinda sorta works. I can log into VPC from a different computer—the iMac in the other room for example. No problem. But I can't log in from the same machine (the host). So for now my workaround is to create a circular connection where I mount the windows drive on my iMac and then mount that on my powerbook.
I'm also running cygwin in Windows and logging into that. Layers.
The case of the monopolized undersea cable . Fibre optic undersea cables are the backbones of the internet (and the whole telecommunications structure of the world). So what happens when they build a new one but one single company controls a monopoly over the landing station where sea meets land? Read this to find out. This same situation is occuring in Africa as well, but it's not as well documented.
Civil Society flexes its muscles at the WSIS
Posted on November 16, 2003 at 12:00 PM
Categories: tech
The Civil Society group at the World Summit on Information Society issued a powerful media statement today. Read it here . They basically say that the governments aren't going anywhere and that CS is going to go off and do it's own thing as a response to that. They don't need the governments ;-) For those of you just joining us, there are three main groups at WSIS: business, government, and civil society.
This should be required reading about IXPs (internet eXchange points): L2_Route_Reflector_IXP_v0.4.pdf
Connectivity is not the right word
Posted on November 07, 2003 at 12:00 PM
Categories: tech, theories
I was thinking recently about fate sharing in a number of contexts. One of them is this server. It goes down occasionally. What's nice is that a number of people who all have the technical expertise to make repairs share the use of the server. So, when something happens, any one of us can step in to make repairs. Each one of us is motivated because we all share the same fate. If the server is down, it's down for all of us.
Next is the context of a technology incubator. In Waterloo, there has for a long time been a desire to build a technology incubator, which is basically a building or a small campus with lots of small technology companies at one shared location. There's all kinds of good reasons for doing this. One is because all of the people and companies start to share their fate. Small technology companies fail all the time for reasons that are just "because". Not because the people weren't good enough, but just because the market is random and lots of good ideas don't work out. But, with a shared fate situation, people can graduate from one company to another easily. Reputations are known through the social networks that build up in a close environment. In addition, things like internet connections, server rooms, IT infrastructure in general can be shared and you get the same reliability gains that I get with my server.
MIT's Media Lab has a weblog by interactive cinema group , where they use Nokia 3650 camera phones to make little videos. The videos are stored in a format that ends with .3gp and thus presumably has something to do with 3GPP. But they use the H.263 codec. The video is tiny, and the sound is poor, but it's a start.
The MMC card is a new alterative to CompactFlact and Secure Disk (SD) cards. It's a tiny little card that is designed for the cell phone market, and currently you can get up to 128MB cards. Incidentally, the Nokia 3650 accepts MMC cards. Someone uses it for something I consider a little odd Loud Thinking uses a 128MB MMC card to load simpsons and seinfeld onto the card, plugs it into the phone and watches them on the phone, on the train.
Wi-Fi networking is also creeping into the cell phone space. With 3G still in vaporware stage, people are trying to make do with 2.5G standards like EV-DO and 1xRTT. The speeds on these cell phone data standards aren't so great, and upload is quite low, maybe 40Kbps. (Thanks to Alan Reiter for some of this info and stimulating discussion). With hot spots spreading, and companies installing blanket Wi-Fi networks, people are starting to add Wi-Fi support to cell phones. Mostly these days it's for VoIP purposes, but data is data. In fact, at least one article already mentions video applications.
3GP is in my opinion too poor quality to be interesting. But, MPEG-4 ISMA layer-1 is a better looking video codec/format. I used it myself for the videos here. It runs at 50KBytes/s which is too much for a 2.5G network to handle, but fine for a Wi-Fi hot spot backed on a business DSL line. Also, the data rate is small enough that the previously mentioned 128MB MMC card could hold 45 minutes of video.
Put it all together and what you have is a "video phone" a cell phone with video capability. People might use them to capture moments on the street, with friends, at the club, etc. I don't personally have any interest in that. But lots of people already do this with their camera phones, so it seems reasonable to think they'd add video.
Moreover, as software is often built on the achievements of others, writing code could become a legal hurdle race. By analogy, if Haydn had patented the symphony form, Mozart would have been in trouble.
The VoIP paradox . Voice over IP is paradoxically both internet and telephony at the same time. Presents the paradox and background information.
Not only does this virus generate annoying quantities of spam from a single source, but it also causes stupid virus scanners to generate annoying replies to the wrong people. Something along the line of "your email was rejected because it contained a virus". Don't they realize that the sender address was forged? Grr.
But then I wasn't hit so bad. I "only" got about 100 messages when the virus hit. I've seen others who got thousands. Also I'm immune since it's a microsoft email virus only.
I've been trying to grok the VSAT alphabet soup lately. This post on isp-satellites seems like a pretty decent summary of the different two-way VSAT flavours. Basically it sounds like SCPC and DAMA are connection-oriented protocols with call set up and dedicated bandwidth during the lifetime of the connection. Of course I'm translating into internet terminology here ;-) On the other hand, MF-TDMA, which other people call FTMDA and which is used by DVB-RCS, is more like a packet-oriented connectionless protocol. The mapping onto the cell phone networks makes sense.
Two video streamed lectures by Jun Takei also helped me understand the basics. Takei-san clearly is an expert and has lots of interesting things to say. lecture 1 is an introduction to satellite data comm. lecture 2 gets into more internet over satellite detail. His english is not fantastic but good enough. And it's a high-quality, 250Kbps stream, and you can follow along with the slides on the web. Takei has his name on a couple of RFCs as well.
So I kinda sorta have a computer that's finally capable of running WinCrap32 on my powerbook, and what do you know I need to install service packs. Galore. It's so precise that it tells me exactly how many and how big they will be:
Total: 19 = 10.600000000000001 MB
What the hell is that???
Basic transit and IXP peering . Just the facts, ma'am.
What is the different between internet peering and internet transit? Peering is when you connect with another ISP for the SOLE purpose of exchanging traffic that is going DIRECTLY to that other ISP. On the other hand, Transit is a connection that will carry traffic anywhere on the internet. So, how do you choose which one, or what mix and match of the two to use? Try this 127 page thesis .
I might as well have called this entry voice chat != IP telephony. I've been think about Voice over IP for a while now and reflecting that the IP telephony people are kind of wandering around in the giggly weeds because they keep taking about crazy things like sending DTMF tones over the internet, and needing special hardware and all kinds of crazy stuff that totally goes against the e2e (end-to-end) principles of the internet. I mean, why bother with all that when you can just set up an e2e connection between two computers and start talking? Finally I got the answer, which is that internet telephony people are not talking about voice chat, they are talking about telephones.
Whoa, slow down. Telephones are not a best effort network, they are a guaranteed service network. The internet, if you use it, will try its best to do what you want but if it can't, hey, too bad buddy. That's a fundamental operating assumption, you can't change that without changing the nature of the internet. If you want to build a guaranteed-service network over top of the internet you're going to have a lot of trouble, because the internet is build up and down on best-effort systems — like ethernet for example.
So I think that when people talk about "Voice over IP" they need to be really clear about whether they mean a best-effort system or a telephone-like system. Some people seem to think that VoIP should keep working if the power fails. And so on, there's a lot of assumptions built in when you talk about telephony. The other side of the coin would be something more like a voice chat, where you are able to talk to someone anywhere at any time on the internet, but it's just like any other internet services, so you can expect there to be glitches. That's a fundamental part of best-effort networking, and it's also part of why it's so efficient and inexpensive.
So can VoIP be done over the internet without all kinds of crazy hacks to make it act more like the telephone system? I think so. The codecs are finally here to do reasonable voice quality over a modem connection, using Speex . IPv6 will hopefully help us get around the NAT barrier.
I just read Soekris Router Project . Soekris in case you haven't probably heard of it is a little company that makes these fantastic little PC-compatible chipsets that are totally solid-state, no moving parts, DC power, just the basics, a couple of ethernet ports, a PC card slot or two, a CompactFlash slot for the media, and a nifty-looking box.
And I am very impressed. I can get a Soekris , net4511 , for about $170, and a vpn1201 for about $70 and a CF card for about $50, all told, $300 for the hardware and it comes with a nifty looking box ( inside ) from Soekris. This is going to be with an extra twist from me because I want to install 6to4 support. I'll tell you why in a minute ;-)
OK, so first of all this slackwerks HOWTO is going to get me up and running with a totally secure IPSec based WiFi network. That's just cool. Instead of all this WEP/WPA/802.1x stuff I will have real end-to-end encryption running between me and my internet gateway (did I mention this magic box is going to be my gateway?). Then I set up IPv4 NAT on the soekris, and an IPv6 firewall as well, so it's now the ultimate gateway box. And, I set up 6to4 on the gateway, and configure my powerbook running OS X with ipv6. I've got a free ethernet port on the soekris to connect up local wired computers, and the wireless ethernet interface for my powerbook. What next?
Now I pull up ohPhoneX , an implementation of ohphone from the OpenH323 group which just happens to support IPv6. Since my powerbook is running over 6to4 it's not behind a NAT in IPv6, so I can send my overseas relatives and friends my powerbook's IPv6 address and they can directly connect to me. No more NAT nastiness, messing around with the DMZ, or whatever, it's a direct connection straight into my powerbook's globally addressable 6to4 address. Now I'm doing internet telephony, for free, over a wireless interface, and it's all totally autoconfigure.
It would be very sweet if lots of people got up and running with a gateway like this :-) Forget about Free World Dialup , forget about Vonage , forget about any kind of silly voice gateway. This is the end-to-end internet, not the InterNAT (or NAPT). I pay for my internet service provider to push the bits, and everything else is free. Even though most of the internet isn't running IPv6 yet, we can all use this setup (or a similar one) to build out the next-generation internet :-)
Reboot is a tiny little conference held in Denmark somewhere, but they got all kinds of cool speakers this year and made videos of them all. Based on the cartoon summary I I wanted to watch the video of Tim O'Reilly s talk. It was good .. I recommend it. He talked about open source, and the move from software- oriented world to a data-oriented world. (via multiplicity )








