 |

 |
| |
 |
 |
 |
 |
|
 |
 |
It's shiny. It's fast. It's stable. The UI is nice and unobtrusive. It works with almost everything I've tried, with the exception of Pogo (because their java check is failing). I'm hoping Pogo fixes their check soon, because it's the one site that would most benefit from the separate processes per tab. Java does work, as long as you get the latest ( RC 10). No one seems to mention it, but having separate processes makes it screamingly fast on a multi-processor box. I know it's probably more a WebKit thing then Chrome, but the resizable text boxes are entirely for the win. I hate websites where they give you two lines of text to enter a comment, and now I can just make the box bigger! I drag tabs a lot between windows, but today sgillbee mentioned at lunch that you can also take a window, add a tab to it, and dock it in a another windows. This make Mvelopes a lot less annoying, because I can tab it and not have it as it's own window all the time. I like the one-box control. It makes sense - I put what I want in the box, whether it's a search string or a direct URL. And it's tidying multi-line URLs - I copied a URL from an email that had split it between two lines, and the box was smart enough to join it. There are some downsides. I wanted the bookmarks to at least have the option of integrating with Google Bookmarks, and that's just not available yet. Without that, it's going to be hard to keep my bookmarks synced between the 5 machines I keep synced with Google Bookmarks. There's no Mac or Linux version yet. Of course, my server has lynx, which should be good enough for anyone! RSS feeds don't seem to be handled right. I just get the raw RSS, not a "Add to Google Reader..."-type interface. I'm really surprised so many of the Google services aren't integrated, honestly. The other downside is that I'm a heavy Greasemonkey user. Now I've got to have IE for the 3 websites in the world which don't run on anything but IE (and everyone seems to have at least one of them in their bookmarks!), and Firefox for GreaseMonkey, and now Chrome. Without an extension model in Chrome, GreaseMonkey isn't going to be available anytime soon, which is a shame, because the improved JS engine would really make it scream. It feels like a Google product - free, open source, lots of nice developer features (right-click and "inspect element" is going to make my web coding so much easier to debug!), but still missing a few things. Still, it's going to become my default browser on the PC for now. Tags: chrome, geeky Current Mood: impressed
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
I couldn't tell you the last time I updated my web page. I think of LiveJournal as my primary website these days, and the old one has languished. I knew what I wanted to do with it, though. There are basically 3 RSS feeds that define my online life: my flickr photo feed, my public LJ feed, and my Google shared items feed. I wanted to combine them all into one webpage that kept itself updated. Google and Flickr are easy - they have javascript badges that I could just plop down. But I wanted to style the information from my LJ myself, so I actually went out and grabbed the RSS, parsed it, and re-rendered it. Turns out that the DOM parser in PHP is incredibly slow - it's taking multiple seconds to get the feed, parse it, and re-render it. I can live with that - I just set it to cache and only update twice a day, but I might look into it at some point and see if there's something I can do to speed it up. Anyway, I'm happy with it for now. http://www.skywhisperer.com/Tags: geeky Current Mood: geeky
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
This summer, spiders built a giant web around Lake Tawakoni. If you missed the coverage, it's all linked from here. In a nutshell, heavy rains this summer filled the lake and encouraged the breeding of mosquitoes and other water bugs. 12 different families of spiders cooperated to build a giant web, covering several mature trees, and thick enough in places to block the sun. From the Dallas Morning News coverage: "Normally they are cannibalistic and their webs are separated," said Allen Dean, a Texas A&M University entomologist who examined 250 specimens collected at the site along a trail at Lake Tawakoni State Park. "They live in harmony because there's so much food available." This isn't really a revolutionary concept - it's been known for years that the primary cause of war is a shortage of resources, real or imagined. But I think it's also why software projects fail. The process usually goes something like this: - Someone comes up with a cool idea.
- They start working on it.
- Management hears of it, and agrees that it's a great idea.
- They tell the developers that it's vital that the new product be the first to market, and present them with an aggressive schedule.
- Eventually, the product ships, months late, over-budget, and under-quality, and no one is happy.
This cycle repeats indefinitely. Management can make resources scarce in two primary ways - excessively aggressive schedules, and excessive external reporting. The worst case is when they do both simultaneously: "It's really important that this not slip, so we need to update the schedule twice a week until it ships!". The less resources available, the less each person can spend to help their co-workers, or keep documentation up-to-date, or refactor that troublesome piece of code. The less resources available, the more it becomes important to be sure that your part of the team has enough, and the bickering and infighting escalate, taking away more resources and making it worse. It's a spiral dive, and I'm not sure it's possible to recover once the pattern is established. The solution is obvious - don't start the pattern. I suspect that for most projects, a month or two difference in time-to-market really doesn't matter. And if you make the schedule too aggressive to begin with, it's just going to slip anyway. If you have to control time tightly, make the other resources flexible - minimize the features, or reduce the amount of status-reporting overhead. There's a name for that: Agile Development. It seems like such a simple concept - why does everyone continue to do it so wrong? Tags: geeky Current Mood: cranky
|
 |
 |
 |
 |
|
 |
 |



 |
| |
 |
 |
 |
 |
From wired today: http://blog.wired.com/27bstroke6/2007/07/atm-reprogrammi.htmlThe store owner summarized up exactly the reason we have security holes in software: "I'm not a technical person," he says. " I cut meat and I sell groceries. That's my job. I don't know anything about an ATM. I put money into it, people take it out, and I get a reading at the end of the day." Why should he need to know to change not one but two passwords? How does is help him do his job, which is to put money into the ATM, let people get it out, and get a reading at the end of the day? We have technology to solve this problem, but we don't use it. Maybe the problem was a lazy developer who didn't want to put thought into security. Maybe the developer came up with a wonderful security proposal, and his manager said, 'We don't have time for that! Stick a default password on it and call it good!'. Either way, the user got hurt, and the everyone turned around and blamed him. We sell software as a commodity. We market it as being simple and easy to use. But there are all these hidden loopholes, carefully hidden in the UI, and just one of them can cause major problems. Either we say "The connected world is dangerous, and the software to manage that danger isn't always easy to use. You need a bit of knowledge and training to put a computer on the Internet", or we write software where developers have taken responsibility for writing secure code and managers have taken responsibility for funding secure code. There are no other choices. Or we could just keep blaming the user. Tags: geeky Current Mood: annoyed
|
 |
 |
 |
 |
|
 |
 |



 |
| |
 |
 |
 |
 |
|
 |
 |
In one of my RSS feeds today, there was an interview with one of the Twitter developers. He said, amongst other things: None of these scaling approaches are as fun and easy as developing for Rails. All the convenience methods and syntactical sugar that makes Rails such a pleasure for coders ends up being absolutely punishing, performance-wise. Once you hit a certain threshold of traffic, either you need to strip out all the costly neat stuff that Rails does for you (RJS, ActiveRecord, ActiveSupport, etc.) or move the slow parts of your application out of Rails, or both. I've not done anything with Ruby or Rails besides install it, but my first thought was, "Duh! You expected Rails to scale?". Someone tried to talk me into a Rails project a year or so ago, and I did a lot of reading about it, but decided not to take the project for other reasons. Every level of indirection that you put on top of the CPU costs you something. If you want blazing speed, write in assembly. One level up from that is something like C, which used to be considered a high-level language, but now people write drivers in it. By the time you go from C to Rails, you've added dozens of levels of indirection. You've got all the overhead of Rails, the overhead of Ruby, the overhead of an interpreter, the overhead of your database, not to mention all the levels of error handling that you need to keep this all working. What's the payoff? Ease of development. Apple has it right - "Easy is hard". It's the Law of Conservation Of Developer Energy. If you want fast, scalable, and stable, you have to work hard at it. If you want really fast, really scalable, and really stable, you have to work really hard at it. Do you always need that? No. If I'm writing a photo manager to share with my relatives that's going to run on a server class machine, why do I care how fast it is (within reason)? It will be fast enough. That's where things like Rails shine - I want to put something together quickly, and I can throw some reasonable hardware at it. I don't want to pay the cost of coding it in cgi-bin Perl - I just want it to work. And this is where people get into problems with things like Rails. They want to create something. And here's this framework that promises them that it'll make it just work, with no need to worry about all those little details. They put it together, it works for a while, and then they hit a limit. You can code around the minor ones, or throw more hardware at it, but eventually you'll hit a major limitation, and then you either have to live with that limit or go back to the drawing board. Scalability, speed, and security are all in the details. Any language or framework that speeds development by hiding those details from you is not going to be feasible for a large-scale application. There is no such thing as a free lunch. Except maybe at Google.Tags: geeky Current Mood: sleepy
|
 |
 |
 |
 |
|
 |
 |


 |
| |
 |
 |
 |
 |
In my never-ending search for the perfect task manager, I'm currently playing with Remember The Milk. Nice clean interface, and like everything else these days, you don't actually have to use the web page to use it. You can add tasks by email, or it's got a Google or Netvibes plugin. It can add your tasks to Google Calender, or you can get an RSS feed. It can send out reminder emails, and it has one big feature I really wanted in Tasks Pro - in one of the programs I looked at ( driftingfocus, you recommended it, but I can't remember what it was called), there was the ability to say "do this one week after the last time I did it". So if I planned to wash towels on Monday, but didn't get around to it until Wednesday, it won't remind me again until the following Wednesday. I'm impressed so far. I'm even probably impressed enough to pay for it if they ever decide to start charging money. Tags: geeky Current Mood: accomplished
|
 |
 |
 |
 |
|
 |
 |




 |
| |
 |
 |
 |
 |
|
 |
 |
Anybody on my friends list know anything about digital cable? I've got a local digital cable provider (TVMax). They include a digital cable box in their subscription package, but it's really awful. In particular, sometimes the TiVo can't get the channel to change using the IR transmitter, and it won't accept a direct serial input. It's a GE digital cable box. I called TVMax this morning, and they tell me I'm out of luck. I have the latest version of the box, and they're "working on" a new type of box that takes the serial input, but can't give me an ETA. They don't have Cable Cards (although I thought they were federally required to have them), so upgrading the TiVo won't help. I can't change cable companies. But I see lots of places online that sell digital cable boxes, many of them by reputable manufacturers. Several of the boxes I looked at had statements like "This chip contains a digital receiver compatible with North American digital cable and digital terrestrial broadcast television standards". However, when I asked TVMax if I could just go out and buy my own box, they told me it "wouldn't be compatible" with their service. I don't see how this could be, because there's got to be a standard, and if they're giving out GE boxes, I have to assume they're following the standard and not wrapping their own. They didn't say "If you buy your own box, your violating our TOS" or anything like that, they just said it wouldn't work. Am I right? Can I just go buy a new box and hook it up? If I bought one with a return guarantee, the worst that would happen would be that it wouldn't work, right? I'm not likely to blow up the entire neighborhood's cable service, I don't think. And if it did work, how would it benefit TVMax to tell me it wouldn't? I'm confused. Tags: geeky Current Mood: busy
|
 |
 |
 |
 |
|
 |
 |


 |
| |
 |
 |
 |
 |
|
 |
 |
I'm rolling out the new version of my recipe database, and I've run into a wierd issue. I want to have a link at the bottom of a recipe that allows you to click on it and have a .mx2 (Mastercook) file automatically download and import. Now, I know other sites do this, and if you download a .mx2 file from, say, CDKitchen, it launches Mastercook and imports it. But when I try it like this, when you click on the link it doesn't download - it tries to display it in Firefox as an XML file, and fails horribly (because it looks like XML but isn't really). There's got to be some way to tell apache to always force a download of an .mx2 file, right? No amount of googling would tell me what that way is. Anyone got any ideas? I'd very, very strongly prefer not to use JavaScript (what CDKitchen does) unless there are no other options. Tags: geeky Current Mood: confused
|
 |
 |
 |
 |
|
 |
 |
|
 |
|
 |