![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Saturday, June 02, 2007Open-source sync technology: The Harmony Project. There's a lot of heavy theory here, and a whole new programming paradigm to learn. But there's a payoff: Harmony can sync arbitrary XML data—even across multiple formats! Client-side JavaScript in a world of Gears Thanks to Google Gears, I now have a major incentive to write client-side JavaScript applications. And this means that Rails + Script.aculo.us just won't cut it anymore. So I consulted with a bunch of friends, and looked at a half-dozen popular JavaScript libraries. The conclusion: Ext JS stands head-and-shoulders above the competition. It particular, it already has most of the pieces you'd need to build an outliner widget. Friday, June 01, 2007I'm back in OPML land for a bit. I missed my outliner! Cory Doctorow explains how the latest HD-DVD key got leaked. It's an amusing story. Current project: Turning my 5 probability monad posts into a paper. Warning: Heavy geeking ahead. Why Google Gears is interesting Google Gears is a new cross-platform, cross-browser plugin which supplies (1) a local persistent web cache, (2) client-side data storage using the excellent SQLite database, and (3) support for JavaScript threads. Using these features, you can write client-side applications that run inside a browser. Unlike the previous generation of desktop web servers, the user doesn't need to install any software--they just visit an ordinary website and click a single button. The most obvious application of Google Gears is adding an offline mode to Gmail. But Google has released the entire framework as open source, and is encouraging other companies to use it. Unfortunately, Gears has some pretty big downsides: You'll have to build your entire application using an AJAX framework or two, and you'll have to synchronize data between the client and the server. There's some really sweet potential here. But to take advantage of it, I'll have to learn another new way to write web applications. Give me a few weeks to wrap up some other projects, and we'll see. :-) How to restore an old OPML site 1. When asked to register, enter your original e-mail address, password and subdomain. If you've forgotten these, you're probably out of luck. 2. Open dotOpml.root, navigate to folderWatcher.getFilesChangedSince, and run it. This should download your old blog posts, blogroll, etc. Tuesday, August 02, 2005Joel on Software: "The more you feel that you can control your environment, and that the things you do are actually working, the happier you are. When you find yourself frustrated, angry, and upset, it's probably because of something that happened that you could not control: even something small." Even small user-interface problems make users frustrated and unhappy. I like happy users, so I believe in fixing the tiniest inconsistencies and stumbling blocks. Polish matters. Cory Doctorow on Apple's new DRM plans: "If this 'feature' appears in a commercial, shipping version of Apple's OS, they'll lose me as a customer -- I've used Apple computers since 1979 and have a Mac tattooed on my right bicep, but this is a deal-breaker." See yesterday's post on Windows Vista DRM for related information. Dave Winer on adding commands to the right-click menu. Monday, August 01, 2005Seth Schoen on Windows Vista: "In the near future, when you try to install software to time-shift your favorite Real Audio webcast, your PC might disable all media player applications. Until you remove the software, your PC will remain crippled. Or perhaps you want to watch a downloaded movie on a wide-screen TV, but your PC might turn off its video card's analog output. Welcome to the world of Windows Longhorn (now known as Vista) and the Protected Media Path, where Microsoft, copyright holders, and DRM licensors may grant or revoke permission to use your own computer and digital media." (Via Linux Weekly News.) Lisa Williams: "I'd love to have this as an optional interface to my existing blog." This is doable, but somebody will need to build an OPML editor plugin. This may take a few months to occur naturally. Kosso: "[W]hat script I would need to create to add custom (but fairly 'standard') attributes to my OPML?" The solution will almost certainly involve "Tools > Edit Right Click Menu", and the verbs in op.attributes. Sorry I don't know more. Outlines and programmer productivity Programming requires a good memory. You need a good short-term memory to keep all the details in your head at once. You need a good long-term memory to store 10,000 pieces of professional knowledge. And you need a weird kind of memory that lets you snarf big, badly-written books you don't understand, and puzzle them out over the next week. When you're 21, completely obsessive, and you only work on things that inspire you, memory is easy. But as you get older--or start managing teams--you have to multitask more. And if you ever want to ship software, you'll need to work on things which don't inspire you at all. Memory gets harder. I keep my memory in outlines. My professional life is consumed by them: Big text files in Emacs, where two spaces indicate a subheading. Ancient Frontier outlines from before the dawn of time. And now, shiny new OPML outlines. The outlines let me task-switch. I can stop in the middle of a debugging session, deal with another problem, and then pick up where I left off. Sure, I could use "to do" lists instead of outlines, but outlines store more context, and organize it better. The outlines also keep track of stuff I need to fix. I'll be coding along, wrestling with some nasty problem, and I'll notice a related issue. No problem--I'll just write it down, and keep moving. At the end of the day, I read through my outlines, fixing the small issues, and logging the tricky ones in the bug tracker. A bug tracker acts a group memory. It's a bit more detailed, and it knows how to manage workflow. Joel Spolsky explains. Of course, a good bug tracker should support RSS. But could a bug tracker support outlines, too? |
Last modified: Friday, October 31, 2008 at 10:18 PM.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||