jonasbn's Journal jonasbn'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-25T01:59:20+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 jonasbn's Journal Moving day... my journal has a new home <p><a href=""></a></p><p>I wrote my first entry here back in June 2002 on the 30th. Time to move on...</p><p>Take care and thanks for all the good, funny and insightful comments...</p> jonasbn 2008-11-18T21:46:36+00:00 journal use.perl - giving up? <p>I am experiencing serious trouble attempting to post journal entries to use.perl.</p><p>Somebody else complained about this and somebody else responded, but I cannot find the entry again<nobr> <wbr></nobr>:-/</p><p>use.perl has been my primary blog for a long time, perhaps it is time to move on...</p> jonasbn 2008-11-10T09:26:47+00:00 journal Project Evaluation: PDF Contract <p>This assignment was a small one, estimated to about 20 hours, it did however go a bit over estimate. The project scope was to develop a form to collect data to populate a PDF page.</p><p>I know that the PDF format has a form technology integrated, but I did not have the time to investigate this any further. so I spent a friday evening prototyping different PDF modules from CPAN and settled PDF::API2. Developing it in Perl would allow me to integrate with the existing framework - a new technology from Adobe or similar was too much of a risk for such a small task.</p><p>We started out two developers, this backfired a bit when we got to integrate the two parts we had developed and we spent a lot of time testing and debugging. I ended up wrapping up the project myself.</p><ul><li>+ Good prototyping</li><li>+ PDF::API2</li><li>Best practice: component separation</li><li>- Lack of focus, too much on the table</li><li>+ Two developers</li><li>- Lack of communication between developers</li><li>+ Good additions to new application super class</li><li>- UTF-8 problems, we always have issues with UTF-8, see also below</li><li>+ UTF-8 problems, we are getting very good and solving UTF-8 issues, some time in the future we will not experience UTF-8 issues I hope</li><li>- Too many iterations and bugs, I do not mind many iterations, but in this case it was getting silly since the iterations became necessary due to bugs introduced during development and bug fixing, lacking automated test could perhaps have addressed this</li><li>+ Lacking human test in development phase, we just delivered stuff to test, which contained rookie mistakes - lack of focus and automated tests too blame (developers)</li><li>- Lacking automated test, almost no automated test (see below)</li><li>- Non-testable code, the application was designed so it was hard to test programatically, the output was a PDF. This gave me the idea for PDF::Template (see below). The idea would be to use a Data::FormValidator (DFV) like strategy where the actual rendering of the PDF would respond with a result set much like DFV, so data written to PDF and not-written would be reported back as return value for evaluation. This would be a shallow, but useful evaluation of the process. Re-processing the PDF post-rending would of course also be an option, but much more heavy-weight.</li><li>Reflection: Hash::Util (lock_keys), this module (see Perl Hacks #87 Lock Down Your Hashes), this could have helped us connecting the two components developed so we would not have experienced so many bugs</li><li>TODO: Add support for additional headers in existing Response class</li><li>Possible TODO: PDF::Template (see above)</li><li>- Diversity in platform (air-bubble bugs?), a really bothering thing, when moving from test to production, other bugs appeared. this would leave us to test in production, a practice which is bad in my opinion. Environments should be as uniform as possible</li></ul> jonasbn 2008-11-10T09:17:48+00:00 journal Standing a little taller <p>I do not quite understand why the court ruling involving the Artistic License has not got more blogging time in the Perl community.</p><p>I read an article on the case in <a href="">Dr. Dobbs</a>, after seeing it mentioned in non-perl RSS feeds.</p><p>The article mentions members of the Perl community I have met and our very own Perl Foundation.</p><p>So from here a huge cheer and congratulations on the outcome as the author of the article writes:</p><p><cite>It's a big deal.</cite></p> jonasbn 2008-11-10T08:34:50+00:00 journal iPod+Nikeplus+, plans implemented in Perl <p>So I sat down with the training plans I (somewhat) followed preparing for last years Copenhagen Marathon and attempted to layout a plan, but lazyness got me so I wrote a <a href="">script</a>.</p><p>The date for next years Copenhagen Marathon in 24th. of May 2009 (the argument to the script).</p><p>Here is the output (the training plan):</p><p><div class="quote"><p>hoarfrost<nobr> <wbr></nobr>/Users/jonasbn/Desktop<br>; perl 24052009<br>Week: 01 Week number: 50 Distance: 35<br>Week: 02 Week number: 51 Distance: 30<br>Week: 03 Week number: 52 Distance: 40<br>Week: 04 Week number: 1 Distance: 40<br>Week: 05 Week number: 2 Distance: 40<br>Week: 06 Week number: 3 Distance: 35<br>Week: 07 Week number: 4 Distance: 45<br>Week: 08 Week number: 5 Distance: 45<br>Week: 09 Week number: 6 Distance: 45<br>Week: 10 Week number: 7 Distance: 40<br>Week: 11 Week number: 8 Distance: 50<br>Week: 12 Week number: 9 Distance: 50<br>Week: 13 Week number: 10 Distance: 50<br>Week: 14 Week number: 11 Distance: 45<br>Week: 15 Week number: 12 Distance: 55<br>Week: 16 Week number: 13 Distance: 55<br>Week: 17 Week number: 14 Distance: 55<br>Week: 18 Week number: 15 Distance: 50<br>Week: 19 Week number: 16 Distance: 60<br>Week: 20 Week number: 17 Distance: 65<br>Week: 21 Week number: 18 Distance: 65<br>Week: 22 Week number: 19 Distance: 50<br>Week: 23 Week number: 20 Distance: 45<br>Week: 24 Week number: 21 Distance: 20</p></div><p>And here is the script:</p><blockquote><div><p> <tt>&nbsp; &nbsp; #!/usr/bin/perl<br> &nbsp; <br>&nbsp; &nbsp; # $Id$<br> &nbsp; <br>&nbsp; &nbsp; use strict;<br>&nbsp; &nbsp; use warnings;<br>&nbsp; &nbsp; use DateTime;<br> &nbsp; <br>&nbsp; &nbsp; use constant DAYS_IN_WEEK =&gt; 7;<br>&nbsp; &nbsp; our $VERSION = '0.01';<br> &nbsp; <br>&nbsp; &nbsp; my @distances<br>&nbsp; &nbsp; &nbsp; &nbsp; = qw(20 45 50 65 65 60 50 55 55 55 45 50 50 50 40 45 45 45 35 40 40 40 30 35);<br> &nbsp; <br>&nbsp; &nbsp; if ( !$ARGV[0] ) {<br>&nbsp; &nbsp; &nbsp; &nbsp; die 'Usage: &lt;date of marathon ddmmyyyy&gt;';<br>&nbsp; &nbsp; }<br> &nbsp; <br>&nbsp; &nbsp; #parsing argument<br>&nbsp; &nbsp; my ( $day, $month, $year ) = $ARGV[0] =~ m{<br>&nbsp; &nbsp; &nbsp; &nbsp; (\d{2})&nbsp; #day (two digits)<br>&nbsp; &nbsp; &nbsp; &nbsp; (\d{2}) #month (two digits)<br>&nbsp; &nbsp; &nbsp; &nbsp; (\d{4}) #year (four digits)<br>&nbsp; &nbsp; }mx;<br> &nbsp; <br>&nbsp; &nbsp; #DT does it own dying<br>&nbsp; &nbsp; my $dt = new DateTime(<br>&nbsp; &nbsp; &nbsp; &nbsp; year&nbsp; &nbsp; &nbsp; =&gt; $year,<br>&nbsp; &nbsp; &nbsp; &nbsp; month&nbsp; &nbsp; &nbsp;=&gt; $month,<br>&nbsp; &nbsp; &nbsp; &nbsp; day&nbsp; &nbsp; &nbsp; &nbsp;=&gt; $day,<br>&nbsp; &nbsp; &nbsp; &nbsp; time_zone =&gt; 'UTC',<br>&nbsp; &nbsp; );<br> &nbsp; <br>&nbsp; &nbsp; #Using DateTime (machine) to go back the number of weeks scheduled in distances<br>&nbsp; &nbsp; #minus one of be of by one week when we get to the marathon, eventhough an<br>&nbsp; &nbsp; #extra week of preparation might not hurt<br>&nbsp; &nbsp; $dt = $dt-&gt;subtract(<br>&nbsp; &nbsp; &nbsp; &nbsp; DateTime::Duration-&gt;new(<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; days =&gt; ( DAYS_IN_WEEK * scalar @distances ) - DAYS_IN_WEEK<br>&nbsp; &nbsp; &nbsp; &nbsp; )<br>&nbsp; &nbsp; );<br> &nbsp; <br>&nbsp; &nbsp; #Print the plan from the beginning and on...<br>&nbsp; &nbsp; my $i = 0;<br>&nbsp; &nbsp; while (@distances) {<br>&nbsp; &nbsp; &nbsp; &nbsp; printf 'Week: %02d', ++$i;<br>&nbsp; &nbsp; &nbsp; &nbsp; print "\tWeek number: " . $dt-&gt;week_number();<br>&nbsp; &nbsp; &nbsp; &nbsp; $dt = $dt-&gt;add( DateTime::Duration-&gt;new( days =&gt; DAYS_IN_WEEK ) );<br>&nbsp; &nbsp; &nbsp; &nbsp; print "\tDistance: " . pop @distances;<br>&nbsp; &nbsp; &nbsp; &nbsp; print "\n";<br>&nbsp; &nbsp; }<br> &nbsp; <br>&nbsp; &nbsp; exit 0;</tt></p></div> </blockquote><p>Of course the scripts TODO list would be long, things like localization etc. should be taken into consideration.</p> jonasbn 2008-11-09T20:19:50+00:00 journal iPod+Nike+, skipping <p>I skipped the Sparta training 13 km. run. My legs are sore after doing 30 km. last week and cleaning/emptying our attic Saturday (which is on the 5th. floor).</p><p>Tomorrow night I will do my regular 10 km. and next Sunday I think I am up for something a bit longer.</p><p>Soreness and everything taken into consideration it feels really good to be running again and I am aiming for doing 10 km. in 45 minutes.</p> jonasbn 2008-11-09T16:06:24+00:00 journal iPod+Nike+, new chip <p>Made 10 km. again yesterday. My time was about 50 minutes, which I think is quite good after such a long break.</p><p><a href=",runs,1755202461,runID,808694827">,runs,1755202461,runID,808694827</a></p><p>I bought a new chip from Nike/Apple the day before and it just works out perfectly, so now I can start logging some kilometers again - yay!</p> jonasbn 2008-11-06T10:22:24+00:00 journal Business-DK-CPR 0.04 released <p>Finally I was able to get this release uploaded.</p><p><a href=""></a></p><p>The list of changes is long, mosy important change is that by now I support the new CPR numbers issued in Denmark.</p><p>Should be at your local mirror shortly.</p> jonasbn 2008-11-06T10:17:56+00:00 journal iPod+Nike+, running plans and getting started <p>Ok, yesterday I got my running schedule laid out.</p><p>I have not applied kilometer goals etc. I will do that later on, for now I just need to get into a regular interval.</p><p>And guess what! - I did 10 km. last night in 50 minutes. My left leg is hurting a bit today, but I think I will be ready for Wednesday where my next run is scheduled.</p><p>Update: And my chip died so I need to get a new set before Wednesday and I have no record of this run anywhere...</p> jonasbn 2008-11-04T09:09:13+00:00 journal ipod+nike+, missing out <p>Sparta had their first marathon practice run yesterday. I did not participate<nobr> <wbr></nobr>:-/</p><p>I had planned to get up to speed so I could run 13 km, but I have not run a single kilometer.</p><p>So my plan is to get ready for next sunday, I feel fat, lazy and weak - I have to get back on track. Running is so good in so many ways.</p> jonasbn 2008-11-03T09:04:34+00:00 journal Project Evaluation; packages <p>I have been doing a lot of small projects lately so I have decided to do some evaluations of these here, this is the first. I have evaluated projects here before, but I think I am going to do this on a more regular basis.</p><p>The first project has been given the title: packages.</p><ul><li>- lack of focus, too much on the table</li><li>- bad or lacking requirements, too much interpretation of assignment</li><li>+ new super class</li><li>+ good additions to existing class</li><li>- project frozen/terminated due to technical issues in the back end (it would never work), project might however be revisited later. As written earlier other things could have been worked on instead, if this has been known from the start</li><li>+ introduction to Test::Class</li><li>- ancient XSLT engine on platform, parts of the implemented XSLT could be done more nicely with a more contemporary tool</li><li>- assignment procedure, the assignment should never have been initiated</li></ul><p>Update: Evaluating this entry made me think - I should write some more about the contents of the project to put it in perspective, so here goes...</p><p>Packages was a small web application implemented in a proprietary frameword used with one of my clients. The concept in the application was to give the user the ability to add and remove certain services to his/her mobile subscription.</p><p>The backend did do parts of the stuff, but not all the business logic related to make this work for the customers. We could implement the business logic in the frontend but decided it was a bad idea and we would much rather await another project which would address this.</p> jonasbn 2008-10-28T19:48:13+00:00 journal Hoarfrost <p>Ever since I encountered my first Unix hosts (Ask and Embla) at the University of Copenhagen and I learned about the concept of host names I have always put effort into naming my hosts with good poetic and in my opinion cool names. I recall Rosenkrantz being my first private Linux server, I cannot remember what my first Linux workstation was called - perhaps I should dig into this. Later I have had Golem and Shelob running as FreeBSD servers on an intranet. My public server Leela suffered a disc crash, the other day (more on this in another journal entry) many hosts and many good names from many different resources.</p><p>Back when I was working at DTV I was once travelling with the train when I heard two guys about my own age discussing the naming policy of the servers at their place of work, I think they might have been students at DTU. The naming policy was the known planets, but one of them wondered why they had a machine named LV-426. They simply could not figure what it was and whether it was a moon or something - I remember smiling to myself, because I knew what LV-426 was.</p><p>Anyway for a long time used the name Hyperstation, taken from a song by Sonic Youth. I gave new host names to the machine I no longer used. Picking names from a accumulated list of good names taken from novels, movies and diverse other places.</p><p>But after changing to a 17" inch Mac Book Pro. I gathered it was time for a host name change also because Hyperstation is still in use, being a fairly new machine.</p><p>So I looked at my Sonic Youth song collection and <b>hoarfrost</b> stood out, so my new workstation has been named Hoarfrost.</p> jonasbn 2008-10-19T06:13:04+00:00 journal Promptly <p>I have for a long time used the following prompt in my bash shell:</p><blockquote><div><p> <tt>S1="\h \w\n\r% "</tt></p></div> </blockquote><p> <cite><br>hoarfrost<nobr> <wbr></nobr>/Users/jonasbn<br>%<br></cite></p><p>I do however sometimes resort to wanting to copy a path and command to another terminal, where I would just write <code>cd</code></p><p>The % would however give the following error message when pasted:</p><p><cite><br>-bash: fg: %: no such job<br></cite></p><p>So I changed it to:</p><blockquote><div><p> <tt>PS1="\h \w\n\r; "</tt></p></div> </blockquote><p>Warning gone, I could remove the hostname to make it easier to copy it.</p><blockquote><div><p> <tt>PS1="\h\n\w\n\r; "</tt></p></div> </blockquote><p>Suggestions welcome:</p><p>In addition to the bash prompt, I find the following to prompt useful:</p><p>For MySQL:</p><blockquote><div><p> <tt>MYSQL_PS1="(\u@\h) [\d]&gt; "</tt></p></div> </blockquote><p>For PostgreSQL (from<nobr> <wbr></nobr>.psqlrc)</p><blockquote><div><p> <tt>\set PROMPT1 '(%n@%m) [%/]&gt;'</tt></p></div> </blockquote><p>These show the user, hostname and database. Having the two database engine prompt being uniform, is quite nice.</p><p>I found the <a href="">following tip</a> however, which includes transactional state in the prompt. This could prove quite useful.</p><p>prompt suggestions and examples welcome</p> jonasbn 2008-10-17T06:51:39+00:00 journal ipod+nike+, post-hiatus <p>I have not been running for 2 months, I only ran a 10 km. for the DHL race in Copenhagen in September.</p><p>I am not sure whether I want to run Copenhagen Marathon next year, the amount of time for preparation<br>is really hard to find. But I need to get running again.</p><p>We are spending a short holiday in the summer house so I planned to run some trips while here. So after a 5 km. today, where I found out that my Nikeplus+ chip no longer is working I am attempting to figure out my plans for reaching a level where I can run 10 km comfortably and 13 km before the Sparta marathon preparation training begins on the 2nd. of November.</p><p>Man, it is tough to get started after such a long hiatus</p> jonasbn 2008-10-14T15:39:24+00:00 journal I am on Facebook! and on <p>I heard on IRC many years ago that it was not a good thing to Google yourself.</p><p>But the other day I <i>accidently</i>, wrote my full name in the Google search field in Firefox and hit carriage return.</p><p>The list of results was not particularly interesting or surprising and I had to go through several pages before something I did not expect appeared.</p><p>- <a href=";hl=en&amp;ct=clnk&amp;cd=22&amp;gl=dk&amp;lr=lang_da%7Clang_en&amp;client=firefox-a"><nobr>t<wbr></nobr> oformat_article.pdf+Jonas+Br%C3%B8ms%C3%B8+Nielsen&amp;hl=en&amp;ct=clnk&amp;cd=22&amp;gl=dk&amp;lr<nobr>=<wbr></nobr> lang_da%7Clang_en&amp;client=firefox-a</a></p><p>I clicked and apparently it was an article by Damian Conway, back from when we raised money for him to do cool Perl stuff, man those were the days.</p><p>Trying 'jonasbn'(I think it was), I got:</p><p><a href=""></a></p><p>Which we found quite amuzing on, since a lot of the references where to our fellow monger kaare. There was also a mentioning of me being beaten:</p><p><div class="quote"><p>'jonasb seems to be unliked too. He/She got beaten 1 times.'</p></div><p>, if only the stats would tell me who did it. Everything points to claco, who apparently is a very aggresive person, which kind of surprises me, but if it is on the Internet it must be true, even though I actually worked with Kaare and he is not as stupid as the page suggests.</p><p>Same day my other fellow Perl monger, Peter Makholm had <a href="">a blog entry</a> (in Danish) on Version2, he mentioned the <i>self-googling</i> and he discovered some interesting things about himself, so I guess it is okay to <i>google</i> yourself once in while, you might get a good laugh.</p> jonasbn 2008-09-24T21:30:27+00:00 journal Weird filename <p>I have been writing a service for a client to put information onto an PDF template, PDF::API2, proved to be the tool I need for this.</p><p>In addition I use File::Temp and File::Slurp, to good CPAN modules. So after a certain amount of attempts I was able to stick a PDF file through the web framework we are utilizing using MIME::Base64. The attempts had various degrees of success my favorite mistake was when I received a plaintext file, which contained something, which looked like it was Base64 encoded. That was actually the first success, but the mistake was Base64 encoding it twice, to both the parcel and the contents where encoded, heh.</p><p>I got it worked out and started downloading PDFs. I had prototyped the PDF rendering step and if no input was inserted I would only receive the template - and I did, but the file names looked all weird. They had done so all the time, but this had not really taken my focus away from getting the right data through. So with names ranging from 3o3DveJS.pdf.part to JxSXbq_e.pdf.part and aIt2gdng.pdf.part, I received a file, which caught my eye: J0nasvN9.pdf.part</p><p>I still need to find out why the files are post-fixed with<nobr> <wbr></nobr>.part and the names are all weird and perhaps, this investigation will shed some light on the similarity between the filename and my preferred unix username and nick.</p><p>Hints are welcome,</p> jonasbn 2008-09-24T20:52:08+00:00 journal Gained 2 inches in one day <p>I just moved all my stuff from a 15" inch MacBook Pro to a 17" using the <a href="">migration assistant</a>, I skimmed <a href="">an article on the subject</a> briefly.</p><p>I have attempted to use it earlier on older versions of OSX without much luck, but this time it worked out.</p><p>I bought the 17" for a temp doing work for me. He moved on to another job. I had seen brian d foy's 17" MacBook Pro in Oslo, which he placed in the middle of the sole desk there and left on - a very nice machine. I have sworn to the 15" since my first TiBook, the 15" machine being leftout now is my third 15" inch - I wonder if I will ever be able to go back to that series again.</p><p>The screen is very powerful and the resolution matches my external display, so I do not experience the <i>hard</i> edges, that stop me from moving the mouse pointer between the display.</p><p>I did do one mistake and that was creating a user with the same name as on my 15", so I ended up with two users (jonasbn and jonasbn2), so I had to pull some stunts to get jonasbn2 to become jonasbn, like <a href="">ChangeShortName</a> has become easier and the tool is not necessary.</p><p>It seems as if everything got transferred, the only thing causing some confusion was a new<nobr> <wbr></nobr><code>/etc/hosts</code>. I do wonder however why Unix was never gifted with the possibility of using a <code>~/.hosts</code>, who do you write to get this feature?</p><p>Anyway, the 17" works magnificently and it incredibly fast. The 15" might be donated to my wife who is running on a PowerPC based iBook, which I bought for her a loooooong time ago, I mean, in case she reads this, not so long ago...</p> jonasbn 2008-09-23T09:12:41+00:00 journal Spammer Spanking? <p>I just got a piece of spam with the following subject:</p><p><div class="quote"><p>Good afternoon - My ass wait you here</p></div><p>I am really inclined to respond:</p><p><div class="quote"><p>Yes and I will spank it with my Oxford English Dictionary</p></div><p>But that is exactly what the spammers are aiming for, is it not - so I will not respond or click the link.</p><p>Damn those clever spammers and their mind games. they almost got me this time...</p> jonasbn 2008-09-15T12:11:07+00:00 journal Notification of Limited Account Access - huh? <p>I just got the following mail (unedited).</p><p><div class="quote"><p>Notification of Limited Account Access</p><p>Dear Customer,</p><p>This e-mail is the notification of recent innovations taken by PayPal to detect inactive customers and non-functioning mailboxes.<br>The inactive customers are subject to restriction and removal in the next 3 days.<br>You must click the link to complete the process.</p><p></p><p>This notification expires September 14, 2008.<br>Thank you for using PayPal! The PayPal Team</p><p>PayPal Email ID PP-141-663-845.</p></div><p>So the spammers/fishers do not even bother to hide things anymore - I know lazy is good, but this is just ridiculous.</p> jonasbn 2008-09-12T12:12:14+00:00 journal cvs2svn2ohloh, finally <p>When I started out with my company a good friend and fellow Perl monger, set up a CVS repository on one of his machines.</p><p>I have since then become quite happy about Subversion and I signed up with an external Subversion provider, which works really well for me. It is easy to use and it gives me what I need.</p><p>So I wanted to migrate the active stuff from CVS to Subversion - primarily my CPAN modules, so the term active is perhaps not the best description. Anyway - not having these in a repository I can access from everywhere have started to become problematic, so I decided to move the stuff to Subversion so I could at least pretend to be active.</p><p>So I started by making a tar-ball of the old repository directory on the CVS server.</p><p>I setup CVS on my workstation (<a href=""></a>)</p><p>I <i>untarred</i> the tar-ball in the new directory and I was able to check stuff out.</p><p>So I checked out everything relevant (other stuff can just stay in CVS, no problem).</p><p>I copied my old working directories into the newly checked out working directories and commit the changes to my new local CVS server.</p><p>I then made a subversion dump using <code>cvs2svn</code>.</p><p>I sat up the projects with my provider each with a dump file.</p><p>So now I can move on and get some distributions released, which I should have shipped long ago (they are starting to sneak into production code with one of my clients).</p><p>I added an ohloh user to some of the repositories with read permission and added two projects to Ohloh.</p><p>I know people are all crazy about git these days and perhaps I will end up all excited about git as well and I know I am some years behind with my use of Subversion, but believe me I am behind with most things I do.</p><p>I do however like Subversion a lot and the tools available seem to quite good. So for now Subversion is what I am using.</p> jonasbn 2008-09-11T07:34:24+00:00 journal Caving in to twitter... <p>I know I tried to <a href="">cut down</a>, but I caved, <a href="">I signed up to twitter</a>... I am enjoying myself.</p><p>I can update both from my iPhone, but I would really love for the status in Facebook to be updated from Twitter, so I only would have to microblog in one place.</p> jonasbn 2008-09-11T07:28:23+00:00 journal Jigabachis circling my house? <p>Apparently the Jigabachis of Ghost in the Shell, 2nd. GIG are <a href="">not all that science fiction</a>.</p><p>I have just ordered <a href="">Ghost in the Shell - Solid State Society</a>, to complete my collection.</p><p>Any recommendations on manga along the lines of Ghost in the Shell, would be appreciated...</p> jonasbn 2008-09-11T07:18:54+00:00 journal The Internet looks ugly! (me doing CSS) <p>I got an assignment from somebody with my client who did not have time to do it.</p><p>The assignment was to port a flash site (bought and implemented in all haste) to HTML, so maintenance could be done locally and more cheaply - and of course for SEO activities a.s.o.</p><p>So I started out and I have spent a significant amount of time on this, simply because I am a moron when it comes to CSS.</p><p>I have mailed several of the involved parties as I have made progress to get feedback and so on. Two days ago I came to a milestone where all I needed was some graphics, so I ordered these from the local photoshop hotshot.</p><p>So I mailed the involved parties and the product manager responded.</p><p>She wondered if something was bad with the test environment, because it did not look good.</p><p>I have continuously tested in Safari/Firefox/IE7 and IE6. IE6 is the installed browser on the company machines here - and I tend to think I succeeded in getting the layout to be somewhat identical in the different browsers.</p><p>So I went and talked to her. I told her that it made no difference whether it was test or production and she informed me that the site was of no use to her in its current state, since it was too ugly and the texts looked like rugged and there where not beautiful enough.</p><p>I wrote a new mail to all the involved parties saying that I was unable to address the actual rendering of text in IE6 (and other browsers) and I would put the last images on the site and regard the assignment as finished.</p><p>I have not heard anything...</p><p>I am still waiting for the graphics and I really really want to get this out of the way so I can write an invoice and focus on my other assignments... I think it is the last time I take a layout assignment. There are too many opinions and I am not the best qualified person to do CSS and layout in different browsers. Whether the Internet is ugly and all texts should be replaced with graphics is not for me to decide, I completed the assignment and I need to move on.</p><p>I did learn a lot, but I am a programmer and programming practices are somewhat applicable to CSS and HTML work, but there is so much more to that field and I am simply not experienced enough in this particular field.</p> jonasbn 2008-09-04T08:10:49+00:00 journal Workflow 0.32_4 released <p>I made a rapid release of Workflow (Workflow 0.32_4) - which should address some of our problems, but the number of failing tests are still very high and I see more and more of the same diagnostics.</p><p><a href=""></a></p><p>So I started to dig into the problems.</p><ul><li>Processing workflow_action.xml: No _parse_* routine defined on this driver (If it is a filter, remember to set the Parent property. If you call the parse() method, make sure to set a Source. You may want to call parse_uri, parse_string or parse_file instead.) [XML::SAX::RTF=HASH(0x8721d18)] at<nobr> <wbr></nobr>/home/stro/perl510/lib/site_perl/5.10.0/XML/SAX/ line 2616.</li><li>Cannot read '/home/david/cpantesting/perl-5.10.0/.cpan/build/Workflow-0.32_4-qVqkc9/t/struc<nobr>t<wbr></nobr> /workflow_sqlite.sql': No such file or directory at line 93.</li><li>A third one was a failure to build XML::Simple, but I cannot consider that a failure on my side, I think this particular problem of test reports on fails not related to the distribution being testing is being discussed quite intensively on the perl-testers-discuss mailing list right now.</li></ul><p>Since none of these are emitted from the Workflow code base I did some <i>googling</i> in the first one.</p><p><a href="">One of the links I found</a> <i>googling</i> was at <a href="">Perlmonks</a> so I clicked that right away</p><p>Here is the explanation, snipped from Perlmonks, it does however originate from <a href="">a test report</a>:</p><p><div class="quote"><p>The problem in this case is a bug in the XML::SAX::RTF installer,<br>which registers itself in<nobr> <wbr></nobr>...lib.../XML/SAX/ParserDetails.ini.<br>This ini file is used to determine the default SAX parser and<br>since XML::SAX::RTF was installed most recently, it is the default.<br>Unfortunately, XML::SAX::RTF is not an XML parser (despite<br>generating SAX events) so it should be removed from the<br>ParserDetails.ini file.</p><p>I have reported this problem to the module maintainer some time<br>ago, but I will try again and submit a patch this time.</p><p>Thanks for the test.<br>Grant</p></div><p>I wrote Grant to inquire on the status of the problem. Referring to <a href="">the RT ticket</a></p><p>I installed <a href="">XML::SAX::RTF</a> and I could reproduce the error.</p><p>I wrote Andreas K&#246;enig, whom I had just recently met at YAPC::Europe because he had sent me some test reports indicating failure as well and asked him to send me his: <code>XML/SAX/ParserDetails.ini</code></p><p>His file did however look different from mine, but the reports looked somewhat the same. Since he did not have XML::SAX::RTF installed. So I started to examine <a href="">XML::SAX</a> and I came to the conclusion that this particular snippet is the problem (from <a href="">XML::SAX::ParserFactory</a>).</p><p> &nbsp; &nbsp; &nbsp; &nbsp; if (@{$self-&gt;{KnownParsers}}) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $self-&gt;{KnownParsers}[-1]{Name};<br> &nbsp; &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp; &nbsp; else {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "XML::SAX::PurePerl"; # backup plan!<br> &nbsp; &nbsp; &nbsp; &nbsp; }</p><p>So as Grant stated earlier, the most recent <a href="">XML::SAX</a> parser installation is the parser used. It is quite an easy fix, take the <a href="">XML::SAX::PurePerl</a> (the topmost in the <code>XML/SAX/ParserDetails.ini</code>) so we do not get behavior based on installation behavior.</p><p>The problem is then how do we fix this?</p><p>I discussed with another Workflow developer on our mailing list about indicating requirements for modules not used directly by Workflow and that solution is not good and since <a href="">XML::SAX</a> is well encapsulated inside <a href="">XML::Simple</a> and the parser is well encapsulated within <a href="">XML::SAX</a>, we cannot really control this, since it is all a matter of configuration.</p><p>So what we might have to do is write a test, which attempts to find out what parser is used and then bail (fail) or continue... this will however still result in failing tests indicating that Workflow fails.</p><p>Installation of modules is mostly done by people so the <a href="">XML::SAX</a> configuration is our weakest link, I would prefer to rewrite the above snippet to be:</p><p> &nbsp; &nbsp; &nbsp; &nbsp; if (@{$self-&gt;{KnownParsers}}) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #defaults to XML::SAX::PurePerl<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $self-&gt;{KnownParsers}[0]{Name};<br> &nbsp; &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp; &nbsp; else {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "XML::SAX::PurePerl"; # backup plan!<br> &nbsp; &nbsp; &nbsp; &nbsp; }</p><p>So we know we always get <a href="">XML::SAX::PurePerl</a> unless the user has changed the precedence in his/her <code>XML/SAX/ParserDetails.ini</code>.</p><p>This will however break a lot of <a href="">XML::SAX</a> installations, but the current implementation is stupid and yields unpredictable behavior - and we do not like unpredictable do we?</p><p>I have not gotten my head around the <a href="">XML::SAX</a> feature system, perhaps this could be used to tweak <a href="">XML::SAX</a> into behaving more predictably, but that will require patches to all parser distributions, <a href="">XML::Simple</a> and other places beyond my control and I feel like a I am straying from what I intentionally wanted to do, which was releasing Workflow 0.32.</p><p>About the other problem, I think this might have to be related to a definition of <i>root</i> directory, but I have not investigated this any further...</p><p>This situation calls for a quote from the Coneheads movie trailer (I have never seen the movie)</p><p>Coast guard using megaphone addressing refugees on a boat:</p><p><div class="quote"><p>We appreciate your situation, but we have problems of our own</p></div><p>I am not sure the quote is correct, but it always pop to mind when situations like this occur.</p> jonasbn 2008-09-04T07:23:17+00:00 journal Nordic Perl Workshop, surplus and donations <p>I have just received confirmation from <a href="">DKUUG</a> that our surplus from <a href="">Nordic Perl Workshop 2007</a> will be transferred this forthcoming Monday to:</p><ul><li> <a href="">The Perl Foundation</a> (TPF)</li><li> <a href="">YAPC Europe Foundation</a> (YEF)</li><li> <a href="">Foreningen Fri Software</a> (FoFS)</li></ul><p>It is not huge amounts, but hopefully it will do good in the three organizations.</p><p>The surplus was divided into 3 equal parts and for FoFs and YEF, we are paying back money we applied for (+some).</p> jonasbn 2008-08-29T12:48:38+00:00 journal Podcast on developerWorks about Perl and GoogleEarth <p>Oh, there is a podcast on developerWorks on Perl and GoogleEarth entitled: '<a href="">On Time and Availability</a>'</p><p>I should take time to hear it, but this sweet music from, does not seem to want to stop - I guess that is the nature of streams, so developerWorks will have to wait, until something crappy comes down the stream...</p><p>Whenever I have the time and availability.</p> jonasbn 2008-08-28T08:09:21+00:00 journal YAPC::Europe, Day 3 <p>This is one of those journal entries, which should have been published a long time ago. Well the day after the last day of YAPC::Europe 2008 it should have been published, but the last day took a turn for the worse, which made me hesitate writing anything about the YAPC and the YAPC::Europe 2008 in particular until I had time to find out what to write.</p><p>I have been thinking this journal entry over and over again and I finally decided to sit down and just get it out of my system, the writing process would probably be good for me and for structuring my thoughts.</p><p>Day 3 went okay, I for one started feeling weary from the many days of conference. My dreams had begun to be extremely vivid, not your usual YAPC organizer nightmares, but just colorful crazy dreams, I expect to be a product to the exposure of so many people and inputs over such short time span. Anyway sleep was not sufficient and the organizing work is draining.</p><p>My wife call just after lunch, that they had called from the nursery that our youngest kid had a fever. We agreed she should pick him up, but I should come home as early as possible. I talked to tagg one of the other organizers and we agreed that I would leave in the afternoon, when things were slowing down.</p><p>The rest of the day went with practical duties and talking to attendees and speakers.</p><p>When I got home and the kids were activated and things was running smoothly I logged on to IRC so hear how things where going at the conference. The auction was still on and it just kept going... I was more focused on my fellow organizers being in charge of the clean up, so I phoned tagg and defekt and I was informed that it looked okay, there had cleaned up in the unused rooms and things did not look as if I was needed they were enough hands to close the venue down as soon as things died out.</p><p>The following days I was intensely scanning my RSS feeds for anything on YAPC::Europe, I skipped attending brian d foy's tutorial for which I was signed up, Sylvester was still having a fever and I was pretty tired too. I found <a href="">this blog entry</a> at first I thought, "What the guy never attended a YAPC before?", but it still bothered me, I heard that the auction had taken way too long and now this so I read some more blogs and talked to a few people attempting to get a picture of what had happened at the auction.</p><p>Attending Josh McAdams' 'Test Driven Development' tutorial I talked to some of the conference attendees and I got to see some pictures of the incident. A thread on Act users was also discussing the problem with the auction.</p><p>I have attended several YAPCs and I am of that opinion that the problems with auction has just been growing over the years. I am just incredibly saddened that it peaked at my YAPC. I will come back to the difficulties of being an YAPC organizer in a later journal entry.</p><p>I hope the 2008 auction does not scare people away from attending future YAPCs. It seems the Perl community itself is addressing the problems and nobody blames the organizers, as written earlier I will get back to this in a later journal entry.</p><p>I finally got to put face on some people from the Perl community I have not met before. There were also people attending whom I would have loved to talk to, but never got the time.</p><p>I also got to meet a lot of old friends and there where friend not attending that I hope I will see next year or perhaps at some other Perl community event, a lot of these seem to be popping up all over the landscape.</p><p>In general I had a marvelous conference, we made a lot of mistakes and there were many things we could/should have done differently or at least done and I have a large responsibility in this.</p><p>I personally enjoyed the conference in the extent possible (practically not seeing any talks) and it seemed like most people had a good time. I attempted to talk to as many people I could using people I already know as hooks in the crowd.</p> jonasbn 2008-08-27T07:18:05+00:00 journal Note to self: Communicating with kids <p>I reflected over a conversation I have ever so often with my oldest kid, since it resembled something I picked up when reading about GUI dialog design.</p><p>The conversation normally takes place at the dinner table.</p><p>Me: <cite>Do you want more dinner?</cite></p><p>Villads: <cite>No</cite></p><p>Me: <cite>Are you sure?</cite></p><p>Villads: <i>silence</i></p><p>Villads silence has many reasons, it can be that he has started to play LEGOs or watch TV.</p><p>If I continue inquiring he will most likely respond: <cite>No</cite></p><p>Which is of course not what he means, but it is the easy response.</p><p>So I need to practice dialogue with him to I can give him a proper chance to respond correctly to my questions.</p><p>Same pattern is important for graphical GUIs where I sometimes find myself confused about a certain dialogue, where positive and negative answers are required to complete a certain action. You often click the wrong button because of this.</p><p>So I do not blame Villads for giving misleading answers - I blame myself for confusing him.</p> jonasbn 2008-08-26T10:55:42+00:00 journal Workflow 0.32_3 released <p>I have just uploaded Workflow release 0.32_3, I had hoped to release 0.32 over the summer, but we received some bug reports, which need addressing prior to this.</p><p>I also got some more tests added to the distribution, which I apparently not had gotten packaged with last release, so having these tested in a more wide audience (CPAN-testers) would also be nice.</p><p>Anyway a new release will soon be in it's way.</p> jonasbn 2008-08-16T19:41:34+00:00 journal YAPC::Europe, Day 2 <p>Day 2 had no registration so things just started smoothly and continued all day quite smoothly.</p><p>tagg and I got invited to a YEF meeting and I signed up to the PR committee, I will write some more about this when I find out what it is all going to be about, I have plenty of ideas, but I better wait.</p><p>The conference dinner was to take place, so we had a lot of questions on how to get there. We had put the information in the Wiki, but all organizers and later helpful attendees did a lot of map pointing.</p><p>We tried to explain to the attendees that they should go via the metro, but not at a time since the metro here in Copenhagen is quite small. I went to pick up my wife and when I got to the restaurant, a lot of people was there and the party seemed to be on.</p><p>I got to talk to a lot of people and most people seemed to enjoy themselves.</p><p>I left a little early to be ready for the following day</p> jonasbn 2008-08-15T11:49:19+00:00 journal