Posted by Chris
Fri, 17 Feb 2006 17:52:51 GMT
I normally don't spread virus warnings, but I'd hate to see this take off. Also, if I didn't know about it and someone sent me this file, I'd probably have opened it, so I'd say the potential for damage is high.
Virus attacking Apple Macintosh PCs found
Posted in software | Tags mac, virus | no comments
Posted by Chris
Fri, 17 Feb 2006 17:50:22 GMT
If you know that John C. Dvorak recently suggested that Apple would be switching to Windows, you should look at this comic.
Posted in software, stupid | Tags apple | 1 comment
Posted by Chris
Sat, 10 Dec 2005 09:06:24 GMT
So when I tried to post the previous entry, I got a 500 error. I don't really know ruby, but there was at least a nice backtrace in the typo log. The operative bit:
RuntimeError (wrong dateTime.iso8601 format):
/lib/xmlrpc_fix.rb:9:in `dateTime'
/usr/local/lib/ruby/1.8/xmlrpc/parser.rb:538:in `tag_end'
It was also nice enough to log the incoming XML-RPC data. The operative bit of that:
{"name"=>"dateCreated",
"value"=>{"dateTime.iso8601"=>"20051210T08:28:40+0000"}}
Now, thanks to open source and all that jazz, I could pretty easily find this code, repeated here since it's short:
def self.dateTime(str)
if str =~ /^(-?\d\d\d\d)(\d\d)(\d\d)T(\d\d):(\d\d):(\d\d)Z?$/ then
a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i}
XMLRPC::DateTime.new(*a)
else
raise "wrong dateTime.iso8601 format"
end
end
For what it's worth, this is overriding a method from ruby's own xmlrpc library, the version of which on my system being very similar but not accepting the final "Z" (for Zulu AKA GMT AKA UTC). That's not good enough, since MarsEdit has chosen to send the time zone, even though it's Zulu, as +0000.
But also on the web, I found this, and if you click on the "Source" bit of the dateTime method, you see a much longer and fancier function that attempts to actually handle ISO8601, including the format MarsEdit sends. There we see:
when /^(-?\d\d\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(?:Z|([+-])(\d\d):?(\d\d))?$/
a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i}
if $7
ofs = $8.to_i*3600 + $9.to_i*60
ofs = -ofs if $7=='+'
utc = Time.utc(a.reverse) + ofs
a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ]
end
XMLRPC::DateTime.new(*a)
Thinking that was what I needed, I updated the overridden method in Typo to use it. But alas:
TypeError (cannot convert Array into Integer):
/lib/xmlrpc_fix.rb:11:in `utc'
/lib/xmlrpc_fix.rb:11:in `dateTime'
What's the deal? A little research, and it turns out that in ruby you write *a to get the list of elements in a, rather than the Array itself. Don't ask me why it's written without the * in what appears to be official ruby library code -- my guess is that it's for a newer version of ruby where you can pass an Array to Time.utc. In any case, I tried:
utc = Time.utc(*a.reverse) + ofs
Behold, a new error!
ArgumentError (argument out of range):
/lib/xmlrpc_fix.rb:11:in `utc'
/lib/xmlrpc_fix.rb:11:in `dateTime'
Looking more closely, that a.reverse falls under suspicion. Time.utc seems to want (year, month, day, hour, min, sec), and that is in fact how it's coming out of the regex. So why reverse it? I haven't the foggiest clue! I took out the reverse:
utc = Time.utc(*a) + ofs
and voila! The post went through. I'm still totally stumped on how that could possibly ever work as written. Maybe some reader will help me out here. Of course, I only have the one reader (hi, Josh!), so maybe not.
Posted in software, meta | Tags bugs, ruby, typo | no comments
Posted by Chris
Sat, 10 Dec 2005 08:28:40 GMT
http://jonobacon.org/viewcomments.php?id=597
Sweet Jesus, who wants to go through that much crap to watch TV? I've lost all interest in being a sysadmin for my computer; I'm not about to turn maintaining a TiVo into a full-time job.
This guy obviously has the motivation and perseverance to deal with every step being "well, this doesn't work yet" or "I tried a few dozen times until I discovered that you simply have to modify the kernel with a hex editor". Me, I'll be over there paying for a box that Just Works. And making the ten-years-younger me cry.
P.S. Posted with the MarsEdit 1.1 beta. Yay MarsEdit.
Posted in software | Tags it, linux, mythtv, PITA | no comments
Posted by Chris
Sun, 02 Oct 2005 05:09:00 GMT
20-Minute Wiki Screencast
This is another "look how easy it is to make the thing we made the framework to make" screencast. This one for a Python-based framework.
You need to watch these because they show modern web app development in action. I have problems with most of them, but that's a topic for my personal blog.
Posted in software | no comments
Posted by Chris
Sat, 01 Oct 2005 03:17:00 GMT
Project management and task management software: Basecamp
This is the project management software with the AJAX and the Ruby on Rails that everyone is talking about.
See related projects from 37signals: Backpack and Ta-da List.
Posted in software | no comments
Posted by Chris
Sat, 01 Oct 2005 03:13:00 GMT
Catalyst Home Page
Catalyst is an Elegant Web Framework, supporting the MVC pattern, as well as a number of experimental web patterns. It's heavily inspired by such frameworks as Ruby On Rails, Maypole, and Spring.
This is the Perl framework you need to know about. It is similar to Maypole.
Posted in software | no comments