Object oriented versus functional interface
I use DateTime::Format::W3CDTF for parsing my dates: my $w3c = DateTime::Format::W3CDTF->new;my $dt = $w3c->parse_datetime( $date_string );I wish it was: my $dt =...
View ArticleConcentration and Flow or Yet Another Dependency Injection Note
Imagine that you need to do some small home improvement or maintenance work and you have all the needed tools, in good quality, clean and well maintained with all cutting blades sharpened and no...
View ArticleNotes on the Synthesis of Form
According to Wikipedia the origin of Design Patterns lays in the Pattern Language ideas by the unorthodox architect and philosopher Christopher Alexander, but his earlier work also used to be widely...
View ArticleThesis: simple - antythesis: easy - synthesis: ...
Rich Hickey's Simple Made Easy is a great talk, a must see, with lot's of insight, but together with that it also misrepresents what Agile is about. Hickey's main point is that we should try to write...
View Article$ primes for money
The thesis above sounds uncontroversial. It is also rather uncontroversial that '$' is relatively frequently used when programming in Perl. Now - what can be the consequences of that?Money has been...
View Article'use strict' and cargo cult programming
I've just read mjd's confession "Why I Hate strict", it is from 2003 so he might have changed his views now, but there is nothing that would indicate that on this web page. Anyway, his main argument...
View ArticleA kind of call by name
I often write code like this:$self->create_user( username => $username, email => $email, pass_token => $pass_token );I wish I could get rid of the naming redundancy in this...
View ArticleSchlep
Schlep is tedious, unpleasant task. According to Paul Graham schlep is also what really defines a company - it is doing the tasks that are unpleasant and tedious for someone that they would pay you...
View ArticleMason 2
Mason 2 looks very interesting. First of all it has the a file a page modus operandi that works so well for PHP, then it has all the template inheritance and Moose template candies that look very...
View ArticleWhy Bread::Board looks mostly redundant
This is based on two assumptions - that you don't use BB as a kind of Service Locator (but I agree with for example Dependency Injection != using a DI container that this is an anti-pattern) and what...
View ArticleWebNano - code experiments
WebNano is only a few hundreds lines - but you can arrange it in many many ways - and then you need to test it with all kinds of URL schemas and controller architecture. I do a lot of exploratory...
View ArticleVerbs and Nouns
There is a popular, if a bit long and blurry, rant by Steve Yegge: Execution in the Kingdom of Nouns - it is about how we overuse nouns and under-use verbs when programming in Java. Of course it is not...
View ArticleBlog writing and assuming stupidity
Writing a blog is not easy. People did not change much since the 'bread and circuses' times. You need to spicy your writing up with strong statements or you'll not get any audience. On the other hand...
View ArticlePlack::Middleware::Auth::Form - some updates and a possible name change
I'll make a new release of Plack::Middleware::Auth::Form soon. There are quite a few fixes in the Plack::Middleware::Auth::Form repository gathered since the last release. It is all from external...
View ArticleWhat if "character != its utf8 encoding" is overengineering?
"You shell not assume anything about the internal representation of characters in Perl" - is a mantra that has been repeated over and over by the Perl pundits for something like a decade. But there are...
View ArticleBreaking problems down and defaults
In a classic essay Dave Rolsky wrote: Want Good Tools? Break Your Problems Down. I wish more people have read this and applied the advice - CPAN libraries would be more useful then. But stating the...
View ArticleA Data::Dumper bug - or Latin1 strikes again
I did not believe my boss that he found a bug in Data::Dumper - but run this: To get a character that has internal representation in Latin1 I could also use HTML::Entities::decode( 'ó' )...
View ArticleIf all of your state is on the stack then you are doing functional programming
Consider this: This is imperative code, it uses variables with state, but from the outside it is a pure mathematical function. This is because all of its variables are created anew when the function is...
View ArticleTricky problems of the Perl language - a completely arbitrary list
Overloading and parameter types validation.Clash between overloading hashification and arrayification and the each, keys and values with the new dereferencing semantics.There is no way to know if you...
View ArticleOn the importance of intuitive names.
PARTICIPANT:[Reading names of classes]Binary reader, Buffered stream, Reads and writes...[Pauses, Scrolls through list of classes].So let me just...stream writer. Implements a text writer writing...
View Article
More Pages to Explore .....