SmartGit - Finally a Window git client that doesn't suck

I've struggled a bit to start blogging again after the demise of use.perl.org.

I was so used to it's ways, it's foibles, and the mass of historical posts to refer back to that I've struggled a bit to bring myself to post here.

But having finally gotten past one of my biggest barriers, I find myself motivated to try and push a post through to completion (there was something to be said for use.perl's one-shot approach to posting, at least you couldn't procrastinate and abandon the draft once you started one).

And this momentous event?

The arrival of git as a version control system that I can actually take seriously now.

For years I've struggled with the git'erati and their zealotous ways.

First it was "It's awesome, just use Linux".

Then it was "It's fine, just use cygwin" ignoring the fact it clashes with Strawberry.

Later, this because "It's fine, just use msysgit" when most people on Windows don't like command lines and don't want to use them.

Role::Basic tweaks and the future

I wanted to know if people wanted Role::Basic as a stepping stone for Moose or just for roles. The results of my question are in and every person who has commented on this blog or in my Twitter feed has said the same thing: just roles. They know where Moose is if they want it.

That said, I still want to minimize pain if people upgrade to Moose. That leaves me with three issues.

  • Allow people to easily add getter/setter methods (gets around a limitation in Perl's OO)
  • Probably add -alias and -excludes methods to requires
  • Find out why Role::Basic is sometimes failing on 5.6.2

Why Module::Build sucks

I never understood why Module::Build attracted people at all

It is limited, broken and has less features than the good old EU::MM (ExtUtils::MakeMaker).

Limited:
1. dependencies, like the equivalent of make or make clean never works.
It does not check or clean important intermediate dirs and object files.
I always have to do a make realclean, to start testing with a new perl,
or updated xs file.

2. You cannot use a XS as a submodule in your package.
E.g. with Base\XS.xs windows builds will fail. Windows only!
You'll never find that out until someone else will blaim Windows.
It is just a bad Module::Build and ExtUtils::CBuilder design.
It is even not documented.
See https://rt.cpan.org/Public/Bug/Display.html?id=64476

What are your environment settings for Unicode?

How have you set up your environment to work with Unicode? I want to make a cheat sheet for the Perl newbies. There is some information in the googlesphere but it's disperse and unfocused.

I'm working Unicode into the next edition of Learning Perl. The most frustrating part of this for newbies (Perl, Unicode, or otherwise) is getting all the pieces to cooperate. Even if you get it right inside your Perl program, your terminal might not handle Unicode. If your terminal handles it, you might not have the right fonts. And so on and so on.

I know what I've set up for my system and the programs I use, but that's just for the tools I use. What did you have to

TAP

A recent push at work has been to use TAP everywhere that we need to test something. It's great for a variety of reasons.

  • We are finally trying to test as much as possible.
  • All of the myriad pieces of software, written in a variety of languages, can use the same text-based interface.
  • Anyone in the group can look at the output and understand it.
  • The test results can be read by a single process that parses and displays the results in a uniform fashion.

It's very refreshing to hear C++ programmers talking about TAP.

Lichtkind: 2010 / 2011

OMG yet another new year BS.

Since I live here on planet earth where biology by in large restarts with every spring, which happens in this part of the world in march, I'm bit reluctant to join the gregorian calender, which is named after a roman katholic pope and a calendar which prior to that changed its start to january by another roman dictator, which makes it further unatractive to me. don't get me wrong, I dont want to act here any more special then necesary, but its good to review and to make plans.

so here is my 2010:

* Kephra 0.4.3

** important version that stabilized a lot.

* WxDocular

** a wxperl based documentation browser that doesn't went far yet.

* first articles for heise.de

** about the german perl workshop and perl 6

** It is the major german IT-news vendor

* WxPerl class at YAPC::EU

** was very well recieved and maybe it will become a book

* TPF Grant for Perl 6 tablets

2011

How I "discovered" Perl

My first post on blogs.perl, here goes.

This is a short narrative of how I 'discovered' Perl and why I have stuck with it for the last three years.

Back in October 2007, I had recently joined a financial services firm as a fresh graduate. During a meeting of the corporate charity committee it was suggested that a website should be created to set up a charity auction. In an impulsive moment I went ahead and raised my hand. The key motivation was the sense of satisfaction that always accompanies voluntary work. The fact that the chairperson of the charity committee was a very pretty lady whom I was keen to impress may or may not have something to do with my decision.

A little about my background. At that time I had dabbled a bit with different programming languages. I had modified a perl script here and there but had not written a complete application from scratch, let alone a website.

AskPerl: The Back-Compat Dilemma

Gentle reader, I need your advice.

Some years ago I created the Net::Appliance::Session Perl module. It allows the user to automate interactions with CLI-based networked devices (think routers, switches) - a sort of Expect but with some helpful domain knowledge. The module has turned out to be quite popular (which is important to my story), in use by many organisations.

There is a shopping-list of problems with the code, though, which makes both bug-fixing and feature development really hard. I've been planning a rewrite for over a year, and finally completed most of that in the past few days.

The new version is completely different internally, but that shouldn't matter much. The problem comes in that I've engineered a new "phrasebook" system for the scripted CLI interactions, and also the programmers' API has changed. [Edit: I should add that lots of long-asked-for features are included, so the rewrite did bring benefits for the user.]

How Perl helped me with my mythmas presents, part 1

For the annual winter gift-giving season [0], I usually prepare a printout of nice pictures I took during the past year for the grandparents of my kids and other relatives. This involves going through 2839 photos [1] and filtering out the 10 to 30 pictures a given relative might care most about (there is some overlap, eg. the birthday of one of my kids, but not that much).

So the task is:

  • go through a lot of photos quickly
  • select/tag some with different criteria
  • export the selected photos.

I once wrote a thing called fotagger, but currently my SDL is broken and I wasn't in the mood to fix it. So I took a closer look at the tool I'm usually using to view pictures: qiv.

brian's 2011 Perl goals

These are the things that are likely to happen:

Finally a good Dist::Zilla post for Dum^W^W Lazies

Patch, Publish or Paw..

Happy New Year, Everyone..

.. may it be Christmas sooooon! ;-)

cheers
:m)

Happy New Year/Roles!

Happy New Year everyone!

Here it is, only a few hours into the new year, and I'm already breaking a resolution of sorts. It wasn't a proper resolution, but given that I have plenty of things on my plate — not the least of which is a baby on the way — I had decided that I wasn't going to hack on Role::Basic for a bit until I saw the dust settling.

First, a simple question: if you're interested in Role::Basic, is it as a stepping stone to Moose, or because you just want roles and nothing else? The answer to this question could have a huge bearing on a fundamental problem that I face. This post is going to be rather long, so if all you do is answer that question, that's fine. I need to know. The reason this post is going to be long is because making things hard is easy. Making things easy is hard. Thus, in trying to solve a problem in an "easy" way, I have to think about a hard problem.

Unusual permutation algorithm

https://gist.github.com/761648

Guess who has written 401 RT tickets in 2010

And what is most amazing about it? That 186 or 46% are either resolved or patched. That's a wonderful success rate.

If you have a login on rt.cpan.org you can issue this query to see the actual 401 tickets.

Very nice graphics and ad-hoc statistics are then provided by RT when you look at the bottom of the page. I've never noticed that RT footer under the result of a query before.

For example I can create a bar chart by CreatedMonthly that shows me when the rally started: 65% of the tickets were created from August to December. That's because on the first days of August was the relaunch of http://analysis.cpantesters.org/ after a few months break due to the cpantesters 2.0 launch. Analysis is the real work horse that drives me in this game. It's kind of playing solitaire with bugs. Analysis provides the deck: cards of many different shapes and colors, my job is to read them and find the ones that can be resolved quickly.

Why PHP sucks.

  • No lambda functions/subroutines.
  • == vs. ===
  • 5 bazillion functions imported by default in top level Namespace
  • The lanugage comunity is esentialy the VB6/JavaScript community -- Well at least JavaScript has clean semantics.

In other words php is not the market we want to go after.
I'm just saying that php is not a good model to base a language off of, except for ease of configuration.

A lookback on the past few months

It's been some time since I last blogged. My next post will be looking forward to what I'm planning to write next year, but first I should blog about what stuff I've come up with in the past couple of months.

Shared memory

I had already written POSIX::RT::SharedMem before, but even though POSIX IPC is a great idea (for being remarkably sane to use) it isn't widely implemented (Linux, Solaris and recent versions of OS X support it out of the box, FreeBSD does too but you have to enable it explicitly). Therefor I ended up writing SysV::SharedMem, which does pretty much the same thing, accessing shared memory as a string, but implemented using a different backend. It's largely derived from File::Map, unlike POSIX::RT::SharedMem that delegates most of the work to File::Map. Writing it has made my conviction that SysV IPC is an incredably crappy API even stronger, but fortunately that's largely hidden from the end-user.

Building blocks

It Had to be Said: XML vs. JSON

James Clark in XML vs. The Web has finally said what needed to be said -- that XML is a singularly bad format for data transmission. Here is the crux of what Mr. Clark had to say:

It's "Yay", because for important use cases JSON is dramatically better than XML. In particular, JSON shines as a programming language-independent representation of typical programming language data structures. This is an incredibly important use case and it would be hard to overstate how appallingly bad XML is for this. The fundamental problem is the mismatch between programming language data structures and the XML element/attribute data model of elements.

My 2010

Tradition tells us to look back and forward when a year turns. And this year I choose to be a traditionalist.

The Past

It's been a remarkable year for me, Work- and Perl Wise. I had the opportunity to work with two great companies with both skilled and devoted coworkers.

And I dived head first into great distributions like

  • Dist::Zilla
  • Moose
  • PSGI
  • Mojo
  • Catalyst
  • DBIx::Class
  • XML::Compile
  • ... and many more

Not all are from this year, or even new, but they are all great examples of the code quality of CPAN.

I had a short look at Perl 6. Alas there weren't enough time in a year to do share between the exciting stuff in Perl 5 and 6. But next year...

Connectivity

Restful applications are nice and easy to integrate functionality, even internally in a company.

I wrote Catalyst::Model::REST to make it even easier to access other applications through the model layer of Catalyst.

Yesterday's TelAviv.pm meeting

Yesterday we had our first revived Tel Aviv Perl Mongers meeting. You probably came across the announcement once or twice in your RSS feeds, mailing lists or even through a personal message from me.

Apparently this worked quite well. The last Perl Mongers meeting included 5 to 6 times as many people as previous meetings. It was pretty awesome. We also scored pretty high on the variety of people.

I got to meet a lot of new people, hear interesting talks and mainly have a lot of laughs.

After the talks, the top-posters went out to dinner and had a great time. The discussion of how to represent a salad in pure OO form ensued and all hell broke loose from then on! :)

Next meeting we're hoping to get even more people to attend. My plans include shorter talks and a lot more fun (such as lightening talks) and getting more people to step up (help organize and give presentations on various issues).

Thanks to everyone who came, everyone who gave talks, helped with the website (DNS, hosting), graphics, flyers, advertising and so on.

See you next time!

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.