gnat's Journal http://use.perl.org/~gnat/journal/ gnat's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:00:01+00:00 pudge pudge@perl.org Technology hourly 1 1970-01-01T00:00+00:00 gnat's Journal http://use.perl.org/images/topics/useperl.gif http://use.perl.org/~gnat/journal/ On Perl http://use.perl.org/~gnat/journal/30244?from=rss <p>When I said <a href="http://use.perl.org/~gnat/journal/30243">I'm not forgetting Perl</a> I meant it. Allison and I have been adding Perl content to OSCON, so if you haven't checked out <a href="http://conferences.oreillynet.com/os2006/grid/">the schedule</a> lately then you should give it a gander.</p><p>We've got <a href="http://conferences.oreillynet.com/cs/os2006/view/e_sess/8506">Pudge on porting Mac::Carbon to Intel</a>, <a href="http://conferences.oreillynet.com/cs/os2006/view/e_sess/8733">building Search applications</a>, <a href="http://conferences.oreillynet.com/cs/os2006/view/e_spkr/324">Live Perl Testing</a>, and the amazing Audrey Tang on <a href="http://conferences.oreillynet.com/cs/os2006/view/e_sess/9485">the mindbending stuff she's been hacking on</a>. And if you missed Miyagawa's <a href="http://conferences.oreillynet.com/cs/os2006/view/e_sess/8993">plagger</a> talk at YAPC, check it out at OSCON. It was hilarious in that "this is so evil it's good" way. There's more Perl in other tracks (e.g., <a href="http://conferences.oreillynet.com/cs/os2006/view/e_sess/8529">Ingy</a>).</p><p>Me, I can't wait for the <a href="http://perl.plover.com/lt/osc2006/">lightning talks</a>. I'm so eager I'm already in Portland--well, actually, I'm here because I've nowhere else to be until OSCON (fly over the Pacific for two weeks? No thanks!) and so I'm getting to enjoy the city instead of flying in, conferencing like a mad bastard all week, then flying out. In Portland? Want to have lunch? Ping me at <tt> <i>gnat</i> \N{A WITH CIRCLE AROUND IT COMMONLY KNOWN AS AT} <i>oreilly.com</i><nobr> <wbr></nobr></tt>.</p> gnat 2006-07-10T18:57:12+00:00 journal Ruby http://use.perl.org/~gnat/journal/30243?from=rss <p>I'm so late to the game--matts and others were all playing with Ruby years ago, while I was just scheduling talks on it at OSCON. Now I'm finally getting my feet wet (ok, I'm jumping right in) and it's a blast. My guide: <a href="http://www.manning.com/black/">Ruby for Rails</a> by David A. Black. He teaches Ruby a lot like I taught Perl--I keep finding echoes of my Perl classes in his explanations of references, closures, and so on.</p><p>As for Ruby, well it's true: it's like Perl only easier. I've been working on my coding chops, which have atrophied after several years of pencil pushing mindlessness at O'Reilly, and it feels good to be building up cortical muscle again. The first Ruby program I wrote was a maze solver. It turned into a depth-first search with support code to read mazes from files, turn x's and spaces into data structures, and so on. The learning curve here was realizing that when I was trying to do something complex and possibly impossible (pass to a function a reference to an accessor method) I should instead look at my code and figure out a better representation or implementation. I did, and lo! the code was simplified to the point where that messiness was no longer necessary. </p><p>The second program solved a problem from <a href="http://www.wwnorton.com/catalog/fall03/032541.htm">Dr Ecco's Cyberpuzzles</a>: partition the integers 1-52 inclusive into four buckets such that no three integers satisfying a+b=c are in the same bucket. Again with the depth-first search (it's bringing home with emphasis why my AI prof seemed to use the term "search" synonymously with "AI") but this time I got an elegant representation of the problem, which made the implementation much easier. It's a great example of the rapid growth of the problem space: it's a nigh-instantaneous solution up to 40 integers, but give it 50 and suddenly it's taking tens of seconds to find the solution.</p><p>My current program is finding an <a href="http://www.mathmaniacs.org/lessons/12-euler/index.html">Eulerian circuit</a> in a graph. It's the <a href="http://en.wikipedia.org/wiki/Seven_bridges_of_K%C3%B6nigsberg">Bridges of K&ouml;nigsburg</a> problem: cross all the bridges exactly once. The mathematician Euler showed that it was impossible for the town of K&ouml;nigsburg, but a mathematician <a href="http://en.wikipedia.org/wiki/Claude_Fleury">Fleury</a> came up with <a href="http://planetmath.org/encyclopedia/FleurysAlgorithm.html">the algorithm</a> for finding the path if there is one. So I'm now writing Node and Edge classes with which to implement the algorithm, and again as I get more into the mindset, the more quickly the code comes. However, I've been sidetracked by reading up on the possible ways to implement graphs (adjacency matrices, etc.), which took me to eigenvalues and flashbacks to the Linear Algebra class I dropped in my second year at university, and<nobr> <wbr></nobr>.... well, you get the picture.</p><p>Anyway, I'm loving Ruby as much as I'm loving stretching my brain. What do I love about it? It has all the stuff that's missing from stock Perl (slurping in a file is trivial, as are filtering and reducing an array and several dozen other basic operations) and its basic premise that everything's an object makes it very easy to figure out what I should be doing to solve a particular problem. I'm not abandoning Perl (I began the rehabilitation of my brain by reading Wikipedia's description of quicksort and then implementing it in Perl) but I'm enjoying exercising my brain by learning new oddities (e.g., <a href="http://innig.net/software/ruby/closures-in-ruby.rb">closures</a>) and contorting my powers of expression in new ways. In short, I'm having fun doing something at the keyboard that isn't email.</p> gnat 2006-07-10T18:38:48+00:00 journal Computer Vision and Imaging http://use.perl.org/~gnat/journal/29778?from=rss <p>I've long been curious about how to extract information from images with computers. In particular, I want to stick a camera at the top of my driveway and capture the license plates of the thoughtless buggers who roar up the road when the rest of us are in bed. But to get to there, I first need to know how to arse with images.</p><p>So I've really enjoyed reading <a href="http://www.netnam.vn/unescocourse/computervision/computer.htm">this course in computer vision</a>. No huge pages of code. The math isn't that daunting and can be easily skimmed if you're reading for an overview. Interestingly, it appears to have been written for UNESCO by someone in Vietnam (there are <a href="http://www.netnam.vn/unescocourse/index.htm">other courses</a>. I love the internets.</p><p> <i>--Nat</i></p> gnat 2006-06-01T16:56:15+00:00 journal From the archives ... http://use.perl.org/~gnat/journal/27455?from=rss <p>While packing I just found a proof sheet for the little business cards I made for a San Diego OSCON around the turn of the millennium. Eight phrases, each preceded by the word "Perl" on a line by itself, and followed by the URL <i>http://www.perl.org/</i>. For your historical pleasure, here they are:</p><ul> <li>If I was your manager, I'd fire your ass and replace you with twenty lines of Perl.</li> <li>It's what the kid who replaces your department will code in.</li> <li>It's like Java and C++ and C#, only it doesn't suck ass.</li> <li>It's like Java, only it lets you deliver on time and under budget.</li> <li>Because life's too short to code without interpolation.</li> <li>Go ahead, use Java. That just leaves more punctuation for us real programmers.</li> <li>Because Java can kiss my ass.</li> <li>When the best is good enough.</li> </ul><p>Ah, tempestuous youth. I distributed several hundred them around the tables of the speaker room over the course of the conference, and not one person smacked me.</p><p> <i>--Nat</i> </p><p>Perl</p> gnat 2005-11-05T00:28:21+00:00 journal Learning Curves http://use.perl.org/~gnat/journal/27449?from=rss <p>"Learning Curves" sounds like the title of the O'Reilly beginner's guide to soft porn, but that's not what this is about. I'm writing my first Python program. It is quite the adventure, and I'm learning a lot about learning (always good).</p><p>Things I have learned include, in no particular order:</p><ul> <li> <i> <a href="http://www.oreilly.com/catalog/lpython2/">Learning Python</a> </i> and <i> <a href="http://www.oreilly.com/catalog/python2/">Programming Python</a> </i> aren't what I expected them to be. They're not the direct translation of their Perl equivalents. This goes double for the <i> <a href="http://www.oreilly.com/catalog/pythoncook2/">Python Cookbook</a> </i>, which seems to assume you already know everything in the standard library and so only covers stuff outside the standard library. I lost a non-trivial amount of time trying to find the <a href="http://docs.python.org/lib/module-StringIO.html">StringIO</a> class. Apparently <i> <a href="http://www.oreilly.com/catalog/pythonian/">Python in the Nutshell</a> </i> is the book I should be looking for.</li><li>Working sample code is real important in documentation. It's not ubiquitous in the Python documentation, which gave me grief. And when it is there, sometimes it's misleading. For example:<blockquote><div><p> <tt>f = StringIO()</tt></p></div> </blockquote><p> won't work. You need to use <tt>StringIO.StringIO()</tt> or you get a message about not being able to call a class as function. Twitch, twitch. Fortunately, the nice people on #python were able to set me straight.</p></li><li>Python has different behaviour for compile- and run-time binding of names to code. There is no compile-time binding of function names to code. The Python equivalent of <tt>sub foo {}</tt> is identical to <tt>*foo = sub {}</tt>. There's no compile-time binding of function names to code, so you can't call a subroutine until the subroutine definition has been "executed". This tripped me up ("what do you mean the function isn't defined! It's right bloody there!"). Again, #python to the rescue.</li><li>CPAN is fantastic. Not that Python doesn't have amazing libraries, it does. But the one-step CPAN shell is just a treat. As much as I've been cursing it as I drag in 3/4 of CPAN just to build one of Jesse's modules, it's a damn sight better than having to download and install each module by hand from a separate location<nobr> <wbr></nobr>.... I'd hate to do something big. I wonder how widespread is the use of <a href="http://aspn.activestate.com/ASPN/docs/ActivePython/2.2/UserGuide/pyppm.html">Activestate's Python Package Manager</a>.</li><li>Indentation versus curlies is, as I'd long suspected, a bogus issue. You lose a little context when you close many blocks at once (without lines of close curlies, it can be hard to tell whether that's three or four blocks being closed) but that's not as big a problem in practice as I'd thought.</li></ul><p>It's been fun to do something new, though I'd have found it quicker to just port the library I wanted (the <a href="http://feedparser.org/">Universal Feed Parser</a>) to Perl than to learn the Python I need around that library. That's okay, I'm doing this to learn another language and not to get the job done in the shortest possible time.</p><p> <i>--Nat</i> </p> gnat 2005-11-04T16:23:29+00:00 journal Perl Jobs http://use.perl.org/~gnat/journal/23147?from=rss <a href="http://www.javarants.com/B1823453972/C1460871803/E1595711706/index.html">This is an interesting snapshot</a> of job requirements in job listings. Java's the most-desired tech, of course, but it's interesting to see that Perl (310) not only beats out Python (92) but also PHP (108) and JavaScript (252).<p> Yes yes, <a href="http://use.perl.org/~ziggy/journal">Ziggy</a>, it's not a competition, but even in a friendly race it's nice not to come last. </p><p> <i>--Nat</i></p> gnat 2005-02-11T16:47:53+00:00 journal Your Humble Correspondent http://use.perl.org/~gnat/journal/23145?from=rss After a several month hiatus due to several job travails, I'm now settling into a new role at O'Reilly. This is the new new role, for those of you keeping score at home. I'm in the Conferences group full-time, working on <a href="http://conferences.oreillynet.com/os2005/">OSCON</a>, Euro OSCON (no web site yet, as the contract negotiations with the venue seem bloody endless), and a new conference we'll announce by the end of the month. So my life is a crazy whirl of schedules, topics, and speakers, into which I've added a metric crapload of travel.<p> I'll have been gone pretty much every other week of the first quarter of this year: </p><ul> <li>Jan 10th: speaker training, <a href="http://www.macworldexpo.com/">MacWorld</a>, IBM Almaden.</li> <li>Jan 30th: <a href="http://www.osdllinuxsummit.org/">OSDL Linux Summit</a> in San Francisco, then a bunch of companies around the new conference.</li> <li>Feb 8th: <a href="http://www.ftponline.com/conferences/vslive/2005/sf/">VSLive</a> in San Francisco, speaking on open source and patents.</li> <li>Feb 15th: <a href="http://linuxworldexpo.com/live/12/events/12BOS05A">LinuxWorld</a> in Boston.</li> <li>Feb 28th: <a href="http://www.eclipsecon.org/">EclipseCon</a> in San Francisco.</li> <li>Mar 13th: <a href="http://conferences.oreillynet.com/et2005">ETech</a> in San Diego.</li> </ul><p> I've been resisting more trips, but I think there might be a European conference trip in my future. One reason for all the travel is to build relationships with people so that I can move back to New Zealand and still be effective in the job.</p><p> Yup, I've finally convinced Jenine (or, rather, the election finally convinced Jenine<nobr> <wbr></nobr>:-) to move to New Zealand. It's all butterflies and suppressed fears at the moment (will we make friends? will our kids enjoy school there? will it ever stop raining?) but I think we're all ready for a slower pace of life. I've told my bosses my plans to move, and so far they've made no noises about it not working for them, so I'm going to attempt to continue doing my conferences job from home in New Zealand instead of from home in Colorado.</p><p> If it doesn't work out, who knows--I might yet do open source conferences in New Zealand! I'm sure you'd hate to be an invited speaker to the land of Hobbits and Kong<nobr> <wbr></nobr>:-)</p><p> <i>--Nat</i></p> gnat 2005-02-11T16:05:59+00:00 journal Java Scripting API Opening Up http://use.perl.org/~gnat/journal/23143?from=rss <a href="http://weblogs.java.net/blog/pat/archive/2005/02/the_new_javaxsc.html">According to Pat</a>, Java will soon open an API for scripting languages. They're only aiming at PHP and JavaScript at the moment (with a side order of Groovy and Bean Scripting Framework) but can a Perl interface be far away?<p> <i>--Nat</i></p> gnat 2005-02-11T15:44:43+00:00 journal OSCON CFP deadline is Sunday night http://use.perl.org/~gnat/journal/23141?from=rss <a href="http://conferences.oreillynet.com/os2005/">The Open Source Convention</a> (and Perl Conference) will be in Portland again this year, but in a larger venue. The Oregon Convention Centre will give us big rooms and plenty of space to frolic. We need <i>you</i> to help us fill those rooms! If you have deep knowledge of a useful and/or interesting area, please give a tutorial or session. The <a href="http://conferences.oreillynet.com/cs/os2005/create/e_sess">Call For Papers</a> goes dark as soon as Feb 13 passes, so please get your proposals in before then.<p> <i>--Nat</i></p> gnat 2005-02-11T15:42:16+00:00 journal mod_perl and PHP http://use.perl.org/~gnat/journal/20798?from=rss <a href="http://use.perl.org/~jjohn/journal/20761">PREACH IT, BROTHER!</a> jjohn += 10<p> <i>--Nat</i></p> gnat 2004-09-09T16:31:01+00:00 journal London http://use.perl.org/~gnat/journal/20428?from=rss <a href="http://raelity.org/">Rael</a> and I are in London, schmoozing on O'Reilly's behalf. Schmoozing whom? you ask. We had dinner last night with the <a href="http://www.fotango.com/">Fotango</a> folks (Arthur, Malin, James, Katrien, Simon) and <a href="http://www.fsck.com/">Jesse</a>. This morning we had breakfast with Dan Hill from the BBC, and tonight we're seeing some more of the BBC folks.<p> In between meetings there's been a bit of tourism--we wandered through Rael's old haunts in Kensington, sprinted around the Royal Albert Hall trying to find a place to pee that wouldn't result in a conviction for public urination, and just today went to see Westminster Abbey. Yes, I got to stand on the graves of many now-unknown once-famous people, and even stood on the stone of Joseph Addison ("who?" "he started the Tatler with Steele! He began the golden age of literary magazines!" "whatEVAH"). I love history, you get to stand on so many dead people.</p><p> Wifi in Starbucks is great, and free for we Americans. The poor Brits pay through the nose for everything, including wifi. We get all-you-can-eat for a flat monthly fee. Brits are taxed every time they blink. Who in their right mind would want to read a spam-filled mailbox from Starbucks when they're being billed in quarter-hour increments?</p><p> All this is a prelude to <a href="http://wiki.oreillynet.com/eurofoo/">Euro Foo Camp</a>. Wednesday we fly to Amsterdam, Thursday we take the train up to Enschede. I'm looking forward to meeting dozens of European hackers I wouldn't otherwise have an opportunity to get to know. Until then, farewell. Or, as they say here, "ahfuckoffoutofityagit!"</p><p> <i>--Nat</i></p> gnat 2004-08-16T13:55:38+00:00 journal mod_perl advocacy http://use.perl.org/~gnat/journal/20308?from=rss Stas Bekman fired up a lot of people at OSCON's mod_perl BOF and they've commandeered the <a href="http://lists.perl.org/showlist.cgi?name=advocacy">advocacy</a> mailing list to coordinate activities as they prepare for mod_perl 2's release. It's nice to see people motivated and contributing, with a mixture of new names, the usual suspects, and some good old names whom I hadn't thought would resurface.<p> Watching with interest<nobr> <wbr></nobr>...</p><p> <i>--Nat</i></p> gnat 2004-08-09T04:17:45+00:00 journal DeltaFSD http://use.perl.org/~gnat/journal/19716?from=rss <a href="http://deltafsd.sourceforge.net/">DeltaFSD</a> is a data flow programming tool for modelling, simulation and automatic code generation. Perl content: you can write deltaFSD functional blocks in Perl.<p> <i>--Nat</i></p> gnat 2004-07-06T19:28:07+00:00 journal YAPC: Days 1 and 2 http://use.perl.org/~gnat/journal/19351?from=rss Work sucks! I spent Wednesday afternoon in phone calls back in the hotel room, returning for Damian's Perl 6 talk. I enjoyed the trip to get buffalo wings, but bailed on the movie to write <a href="http://www.oreillynet.com/pub/wlg/5091">my lightning talk</a>. Wednesday I was nervously rehearsing, but enjoyed a quiet lunch with Allison. The talk went well (as did Chip's Perl-as-religion talk), and then it was off to the auction. I was so knackered from my late Wednesday that I had to slip off from the auction and sleep again. I'm getting weak in my old age.<p> Whose talks did I enjoy? Damian is, as always great. Steve Hayman from Apple was as entertaining as Damian, and I don't say that lightly. <a href="http://www.yapc.org/America/talk_desc.shtml#11">Daniel Allen's style guide talk</a> had a message that everyone should be exposed to. The two talks on test-driven development (by <a href="http://www.yapc.org/America/talk_desc.shtml#20">Ted Karitonov</a> and <a href="http://www.yapc.org/America/talk_desc.shtml#16">Andy Lester</a>) yet again made me think I should be doing it.</p><p> I think the world needs a set of <a href="http://www.pragprog.com/pragdave/Practices/Kata">kata</a>, small tasks that you can write tests for first. Then you can see how an expert wrote tests, and compare. Everyone works on different projects, so it's hard when people like Schwern and Andy say "just start testing your code!" to know what aspects of your code to start with. Baby steps, training wheels<nobr> <wbr></nobr>... that'd be good. You listening, chromatic?<nobr> <wbr></nobr>:-)</p><p> Anyway, Abigail's about to start talking about, I don't know, regular expressions on crack, which seems to have been his theme throughout the whole of his speaking career. I think I missed the talk where he proposed solving all NP-hard problems with regular expressions, but I don't want to mis this one. Until later<nobr> <wbr></nobr>...</p><p> <i>--Nat</i></p> gnat 2004-06-18T15:01:29+00:00 journal YAPC Day 0 http://use.perl.org/~gnat/journal/19296?from=rss Arrived late at Buffalo, thanks to thunderstorms in Pittsburgh. Went straight to the wings dinner, thanks to the driving services of O-Dogg (Jon Orwant). Some observations: <ul> <li>hot wings are bloody hot, even when they're in the mild wings' spots</li> <li>James Duncan (Mr Fotango) is engaged, quite possibly to a supermodel, and apparently is so disoriented by wedding plans that he thought it'd be a great idea to bring his fiance to YAPC</li> <li>Rocco (Mr POE) brought his whole family. I'm trying to convince him to bring them to Portland so they can meet <i>my</i> family at long last--they've known each other through talk.bizarre since the last millennium.</li> <li>Chris Shiflett (Mr PHP Security) is here, thanks to the persuasive skills of Geoff Young (Mr mod_perl Security)</li> <li>It is rumoured that Lenzo (Mr YAPC himself) will be here this week. Fingers crossed!</li> </ul><p> <i>--Nat</i></p> gnat 2004-06-16T12:26:25+00:00 journal Programmer fonts http://use.perl.org/~gnat/journal/19203?from=rss <a href="http://www.tactile3d.com/tristan/">Monospaced Bitmap Programming Fonts</a>.<p> <i>--Nat</i></p> gnat 2004-06-11T18:28:58+00:00 journal Stop Energy http://use.perl.org/~gnat/journal/19163?from=rss Ignore <a href="http://www.links.net/share/speak/reboot/2001/pix/boyssauna.lg.jpg">the source</a>, just read <a href="http://www.userland.com/whatIsStopEnergy">this definition of Stop Energy</a> (found via <a href="http://primates.ximian.com/~miguel/activity-log.php">Miguel's blog</a>). <p> <i>--Nat</i> <br> (warning, the first link in this entry is not lunch-safe)</p> gnat 2004-06-09T15:21:46+00:00 journal Burn VIDEO_TS to DVD on Mac http://use.perl.org/~gnat/journal/18950?from=rss Lest I forget<nobr> <wbr></nobr>...<blockquote><div><p> <i>To burn VIDEO_TS and AUDIO_TS folders to a viewable DVD with Toast, just choose Data -&gt; DVD-ROM (UDF) (you'll have to click the "advanced" tab to see that option), click "new disc", and add the folders to it and burn.</i></p></div> </blockquote><p> That's one step in my DVD rip-mix-burn that's now a lot simpler!</p><p> <i>--Nat</i></p> gnat 2004-05-26T14:55:56+00:00 journal Shrek 2 http://use.perl.org/~gnat/journal/18837?from=rss Excellent movie! One of the most fun trips to the movie theatre I've made in a while. I particularly enjoyed Jennifer Saunders's singing as the Fairy Godmother. It's the first movie that my 2.5 year old daughter has stayed through in the theatre, though we should have timed it for <i>other</i> than naptime for maximum results.<p> <i>--Nat</i></p> gnat 2004-05-19T21:17:31+00:00 journal Civil War Photographs http://use.perl.org/~gnat/journal/18721?from=rss There's no Perl content here, but it's so cool I just have to tell <i>someone</i> that there's <a href="http://www.quinnipiac.edu/other/ABL/etext/civilwar/civilwarmain.html">a book with thousands of Civil War photographs</a> online. The book is in PDF form, each file being part of a chapter. It's huge (Part 1 of Chapter 1 is 20-odd megabytes) but the photos and the stories behind them are just amazing and well worth the download time.<p> <i>--Nat</i></p> gnat 2004-05-12T21:11:02+00:00 journal Perl Books for YAPC http://use.perl.org/~gnat/journal/18716?from=rss My generous employer (that's <a href="http://www.oreilly.com/">O'Reilly</a> in case you haven't been keeping track) is sponsoring YAPC. We're trying to figure out which books to send as giveaways. We have a limited budget, so we can't just send 300 of each. My suggestion was two of everything on <a href="http://perl.oreilly.com/">perl.oreilly.com</a> plus one each of:<p> Apache Cookbook, Apache PR, Apache: TDG, Adobe Photoshop CS One-on-One, Digital Photography Expert Techniques, Applescript: TDG, BSD Hacks, DNS &amp; Bind Cookbook, Essential System Administration PR, Essential System Administration 3ed, Hardware Hacking Projects for Geeks, Linux Security Cookbook, Network Security Assessment, Network Security Hacks, Secure Programming Cookbook for C/C++.</p><p> Any substitutions you want to make?</p><p> <i>--Nat</i></p> gnat 2004-05-12T18:15:10+00:00 journal Geek Nest http://use.perl.org/~gnat/journal/18287?from=rss So I finally got set up in the basement as a quasi-office slash geek boy love pad. Desk with scanner and bubble-jet printer, second monitor (yummy flat-screen HP), external keyboard, Playstation and TV in the corner, PC waiting for a hard drive so William can play educational games instead of Oddworld. Not set up is my Commodore 64 (William prefers MAME--faster loading!). I need to find a USB mouse, some external speakers, and buy an espresso machine from <a href="http://www.trademe.co.nz/">the New Zealand version of eBay</a> to make <a href="http://nathan.torkington.com/tmp/office">the geeknest</a> complete<nobr> <wbr></nobr>...<p> <i>--Nat</i></p> gnat 2004-04-11T21:07:34+00:00 journal Photoshop Love-In/Lovin' http://use.perl.org/~gnat/journal/18278?from=rss I don't shill for O'Reilly books in my blog, so be impressed that I'm sending out a major thumbs-up to <a href="http://www.oreilly.com/catalog/adobephoto/"> <i>Adobe Photoshop CS One-on-One</i> </a>. I was initially quite nervous about the format--too many colours for a serious book! Who was this guy trying to be funny? But it's not painful, it's really useful, and it has an amazing index that lets you randomly access what at first seems like a sequential read of a book.<p> I picked up some great things (levels tweaking, using the measure tool and Image&gt;Rotate&gt;Arbitrary to straighten images) and Jenine's working her way through the video lessons now. She just described it as "fun and interesting" in a surprised kind of way. I don't think anyone imagines that there's a fun way to learn the cool things Photoshop can do, but Deke's done it. We only have Photoshop 7, not CS, but 90% of what he describes applies just as much to older Photoshops.</p><p> Now, to tell her to go to sleep so I can read some more of the book<nobr> <wbr></nobr>...<nobr> <wbr></nobr>:-)</p><p> <i>--Nat</i></p> gnat 2004-04-11T09:28:15+00:00 journal Javascript http://use.perl.org/~gnat/journal/18212?from=rss After years of shying away from browser nightmares and the stigma of scrolling popup nonsense, I'm finally getting into DHTML. I love things like <a href="http://www.kryogenix.org/code/browser/sorttable/">the ability to resort tables without reloading the page</a>, preventing users from double-clicking on submit buttons, and so on. Lovely!<p> <i>--Nat</i></p> gnat 2004-04-06T02:16:22+00:00 journal User Interface Metaphors http://use.perl.org/~gnat/journal/18193?from=rss Notes on <a href="http://www.mcs.vuw.ac.nz/comp/Publications/CS-TR-02-11.abs.html">a paper by a professor of mine</a>: <ul> <li> <i>orientational metaphors</i> rely on up/down or left/right. E.g., wizards where "next" is always on the right, and "back" on the left, and scrollbars where "more" is up.</li> <li> <i>ontological metaphors</i> treat things in the computer as objects or substances, but not specific objects or substances. Files have sizes, errors "prevent" the system from doing something.</li> <li> <i>structural metaphors</i> treat the computer concepts as real objects. E.g., filesystem as filing cabinet with folders that "contain" files.</li> <li> <i>conventional metaphors</i> are those used without thinking (e.g., all those above). <i>Novel metaphors</i> are those that are perceived by the user.</li> <li> <i>metonymy</i> is substituting a part for the whole, as in showing a person's face in a chat, or paintbrush icons for the mass colouring operation.</li> <li>the authors add <i>process</i> and <i>element</i> metaphors as categories. You use an element metaphor (paintbrush) to clue the user into what process metaphor (colouring big chunks of pixels as though by painting) is active.</li> <li> <i>metaphoric entailments</i> are the implications/limitations of the metaphor. E.g. the desktop filing metaphor includes "we have files and folders" but in real life, a file is typically a folder of pages but that is not part of the desktop metaphor.</li> <li>Rule 1: <b>know the entailments of your conventional metaphors</b> so you can indicate any standard entailments that do not apply</li> <li>Rule 2: <b>with novel metaphors, you have to spell out all the entailments</b> because users will not know what to do with your innovative "office workflow as camel's digestive system" metaphor</li> <li>Rule 3: <b>use as many entailments as possible</b> (though all should be justified in terms of functionality), because the more they can successfully follow their knowledge of the metaphor, the more they'll trust it</li> <li>Rule 4: <b>orientational concepts structure multiple members of a group, so consider the implications</b>: if you say good is up and put error messages on the bottom, you have to put success messages at the top. What's a success message?</li> <li>Rule 5: <b>use as few process metaphors as possible</b>--a lot of process metaphors give a lot of entailments, and the user is overwhelmed. Minimize the number of process metaphors, and maximize their coverage.</li> <li>Rule 6: <b>base every element metaphor on a process metaphor</b> so if your process is budgeting software then the user shouldn't see icons from the world of sport</li> <li>Rule 7: <b>understand the user's metaphoric world</b>. Yes, Apple, on what bloody planet does the trash can turn into a CD burner? not this user's, that's for sure!</li> </ul><p> <i>--nat</i></p> gnat 2004-04-04T09:09:25+00:00 journal Perl v Java http://use.perl.org/~gnat/journal/18109?from=rss That's no "Perl proponent", that's<nobr> <wbr></nobr>... me! Check out <a href="http://www.linuxworld.com/story/44251.htm">this article</a>. I am the anonymous "Perl proponent" he mentions from the debate. I enjoyed beating up on Java, but not beating up on him--as the article points out, he isn't really a True Believer. He kept agreeing with Rasmus and me, and that made it very difficult to argue with him<nobr> <wbr></nobr>:-)<p> And here was me thinking the debate had been a waste of time for everyone. It can't have been such a waste if it planted the seeds for such a pro-Perl article.</p><p> <i>--Nat</i></p> gnat 2004-03-29T20:45:42+00:00 journal Wanted: GNOME Hacker http://use.perl.org/~gnat/journal/18063?from=rss We've the lion's share of a Linux Desktop Hacks book done with KDE up the wazoo, but we're coming up severely short on the Gnome side. Surely there are Gnome hackers hacking the heck out of Gnome. And some of it even cool<nobr> <wbr></nobr>:-). We're looking for interesting things that live on, meander about, or otherwise delight on the Linux Desktop. The sorts of things that would thrill the power user and old hand alike.<p> If you're interested in pouring your favourite Gnome hacks into the pot, please drop a line to <tt>&lt; rael AT oreilly DOT com &gt;</tt>. Thanks!</p><p> <i>--Nat</i></p> gnat 2004-03-26T01:19:14+00:00 journal YAPC::AU http://use.perl.org/~gnat/journal/18039?from=rss Woo! Dates for <a href="http://yapc.dlist.com.au/">the Australian YAPC</a> are out. I know where <i>I'll</i> be on Dec 1-3, 2004. Airlines willing, of course.<p> <i>--Nat</i></p> gnat 2004-03-24T09:40:15+00:00 journal How to help someone use a computer http://use.perl.org/~gnat/journal/17994?from=rss If you don't read <a href="http://www.askbjoernhansen.com/notes/">Ask's linkblog</a>, please let me direct your attention to <a href="http://polaris.gseis.ucla.edu/pagre/how-to-help.html">How To Help Someone Use a Computer</a>. When I saw the subject, I thought of my cardinal rule "make them do the typing". That one's in the list, and a lot more besides.<p> <i>--Nat</i></p> gnat 2004-03-21T21:21:47+00:00 journal They're a Weird Mob http://use.perl.org/~gnat/journal/17990?from=rss Last night and this morning I reread a classic from my youth, <i>They're a Weird Mob</i> by John O'Grady (writing as Nino Culotta). It's ostensibly an Italian immigrant's story, humorous, about his arrival in Australia, making Australian friends, and learning to appreciate the Australian Way of Life. Riotously funny, and absolutely the best written form of spoken Australian I've ever seen.<p> It set me thinking about immigration, assimilation, and so on, because of course John O'Grady is definitely not the name of an Italian immigrant. The book is fiction, and has a very pro-assimilation agenda. At various times in the book, characters (who are never the friends of the immigrant) say derogatory things about the "dagos" and "wops". Those things go unchallenged for the most part, and I couldn't figure out whether they were unchallenged because O'Grady wanted to point out the racism and say "that's wrong" in a subtle way, or whether O'Grady simply didn't notice it himself.</p><p> So I Googled.</p><p> I didn't get an answer to my question. I did find, however, <a href="http://nla.gov.au/nla.ms-ms8046">a list of his papers</a> held for scholars by the Australian Government, <a href="http://users.unimi.it/medialin/docs/Papalia1.rtf">an interesting paper</a> on Italo-Australian culture which mentions O'Grady as the poster-boy for assimilation and which gave me some interesting background for the next time I read the book, <a href="http://www.pixelmatic.com.au/cortina/movies.html">a page on Ford Cortinas in the movies</a>, and even <a href="http://www.abc.net.au/classic/breakfast/stories/s939450.htm">etymology of the word <i>nong</i> </a> which cites O'Grady for the first printed usage of the longer form "ning-nong".</p><p> And I got hooked up with a supplier of some of the O"Grady books I'm missing. I love Google.</p><p> <i>--Nat</i></p> gnat 2004-03-21T09:42:35+00:00 journal