Saturday, April 20, 2019

Finally a milestone as a CPAN tester!

Today I was excited to see that I finally got a second place at number the tests submissions from OpenBSD to CPAN:


It took a while for sure, but I was most of the time running a single smoker VM.

Of course, it would be more cool to get the first place - not much people are running smokers on OpenBSD, despite my efforts to make it easier - but for that I will need to get a working cluster because that's how BINGOS got that gigantic amount of submitted tests. Making plans to release some instances on AWS just to see what is what.

Monday, January 28, 2019

Siebel is dead (at least for me)

Introduction

This post is a biased point of view for what I see about Siebel future as well the professionals involved with it. Also, consider that my personal point of view is strongly attached to the economical situation here in Brazil and the local CRM market itself.

To the details

Back a few years ago, when I joined Oracle as an employee, specifically to work supporting Siebel customers, I thought I would finally improve my expertise by orders of magnitude (specially due the expose to internal material and working with other experts).
That was at 2014. Salesforce was taking a lot of companies that were previous Siebel users, but there was still hope for professionals. At least outside Oracle.
As a Oracle employee, I was expecting to get to know new professionals that worked with Siebel, specially those that had came from the former company. I did met a couple of them, but the vast majority of them were not working with Siebel anymore, or were not specialists (full time dedicated to the application).
So, we had basically two groups of "Siebel people" over there: one that had worked more than 10 years with Siebel but sadly had to be moved to another team/product because Siebel was not "mainstream" anymore, and a second group that was formed by people without previous proper training with Siebel and was "thrown to the lions" to support or provide consultancy in something they didn't have experience.
About the former group, yes, you might argument that Oracle has to maintain all solutions until 2024 by contract, but that doesn't mean Oracle wanted to keep investing in Siebel. Yes, there were new releases, but most of the features were related to OpenUI and that seems to me like "let's do the minimum required" than anything else because Microsoft Internet Explorer was basically a walking dead and all companies were trying to get rid of it. If you worked with Siebel for a while, you probably know that it has it's roots were Microsoft based architecture, and the High Interactive web client was completely dependent of IE. I bet that are still important unhanded bugs in the C++ code base from 2014 (I know that since I had opened some myself). Let's not talk about Mainwin on UNIX-like OS or even the "attachments" developed in J2EE...
Already in 2014, sales department of Brazil's office were not offering customer Siebel as a CRM solution. There was the vaporware called Fusion (that I don't think so something was released till today) and other solutions that were acquired by Oracle and that's it. Any company that had interest in Siebel would have to explicit ask for it to a sales representative. Keep in mind too that Larry Ellisson is/was a Salesforce investor too.
No training was provided to colleges. Basically, I was the only person in my team that had previous experience with Siebel, and counting with me, Brazil office only had 3 people experienced with it. When I joined the company I did find information about an "excellence group" of Siebel professionals, which objectives were to provide solutions outside of the box, fixing deficiencies whenever they could. Given the last updated information I got, they were long gone before I joined.
So, I did realize about that time that I would need to move from Siebel ASAP. It didn't take six months to my manager to ask me starting (self-) studying other products from Oracle because "knowing Siebel was cool, but not enough anymore". But I would still need to provide help whenever it was required, usually when the system was already so neglected that the shit already hit the fan.
My strategy from there was to study Oracle products only enough to be able to handle day to day activities. On my own time, I did engaged a lot of self-study and training with open source systems, specially those related to DevOps. Today I see that I took the right decision, specially because I was laid off Oracle in 2016 to a (Brazilian) market that was moving out from Oracle products to other solutions, specially those from open source community.

How is Siebel nowadays in Brazil?

After Oracle, I didn't see the market improving for Siebel: it only got worst.
Some of my previous colleges left Brazil to work with Siebel abroad for two reasons:
  1. the country economy/security is a wreck
  2. the CRM market here was getting narrow by day.
CRM market in Brazil was never mature: even after many years of projects and investments, most companies were not getting value from Siebel basically because they don't have a CRM strategy.
If a company treats Siebel only as an application to take care of operational processes, well, it's losing money basically. I do know companies here in Brazil that didn't use their own data collected with Siebel for tactical/strategic planning and/or have several different CRM products running at the same time. Yes, "company wide single view of customer" my ass.
Most companies moved from Siebel to Salesforce and I honestly don't know how successful those projects were. What I do know is if your company is not making this move yet, you're in trouble. Siebel architecture is showing it's age already but no real investments are being made. There is no formal training from Oracle in Brazil for years already (and online training is very expensive). Most companies that are still using Siebel here are from the Telecom market and I must say those companies still have the worst evaluations from Brazilians customers in terms of complaints and that also looks like a complete lack of CRM strategy to me.
So, I'm guessing you got the idea. If you didn't and is still working with Siebel, allow me to be more direct: you're getting more expensive by the day to your company to maintain a system that might be seen as a operational-only solution.

Conclusion

Siebel is dead for me. I don't see any way for me going back to work with it, specially given the situation in Brazil. About my open source projects, there is absolute no reason to keep investing time and effort in them: collaboration from Siebel community was always scarce (but I did face bigotry now and then) and I have more interesting problems to keep solving. Time to move on.

Thursday, August 30, 2018

RabbitMQ on Docker with custom configuration

This is a quick tip.

I was thinking in a way of using RabbitMQ on a Docker container as part of an automatic integration tests for a application I was working with at my current job. That is easy, the Docker Hub has an official Docker image ready for use as rabbitmq:management-alpine.

My first thought was to automate the configuration of the RabbitMQ by using rabbitmqctl or rabbitmqadmin programs, but then I remembered that RabbitMQ can actually use a exported configuration backup in the form of a JSON file.

The problem was: how to load this configuration? I can't change the Dockerfile in order to do that because the broker must be running in order to load the configuration but then I would need to override the ENTRYPOINT, something that I was not willing to do.

Fortunately a good soul had already implemented a clever hack to the container configuration as you want, without doing many changes in the original Dockerfile.

So, at the end, the only thing I need to do is to write a Dockefile like the one below:

FROM rabbitmq:management-alpine
COPY rabbit_config.json /etc/rabbitmq/definitions.json

Tuesday, July 31, 2018

Dropping Archive::Tar::Wrapper support for Solaris

I recently adopt a Perl distribution: Archive::Tar::Wrapper.

Initially developed by Mike Schilli, this module is well know by the Perl community and it is being around since 2005. All started because I submitted a patch to Mike to make it work on OpenBSD.

From there, I tried to fix another known bugs (and introduced some!) and make it run on operational systems that were showing problems.

After fixing the distribution to run on MS Windows properly (with the help of Ingram Braun), the next step would be to fix it for Solaris. Carlos Guevara gave me some pointers and I decided to take a look.

First thing I thought was try to use a VM for it, of course. Vagrant VM's should be easier to use, and I was able to find one with, I think, a decent recent version.

That's is what I got after booting and logging in a shell:

Last login: Wed Jul 18 16:25:27 2018 from 10.0.2.2
Oracle Corporation      SunOS 5.11      11.3    September 2015
-bash-4.1$ perl -v

This is perl 5, version 12, subversion 5 (v5.12.5) built for i86pc-solaris-64int
(with 7 registered patches, see perl -V for more detail)

Copyright 1987-2012, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Oh, come on! perl 5.12?!? Really?

That gave me some thoughts about how old Perl 5.12 is and how little Oracle cares about Perl.

And brought back memories about the time I spent over there, when I was able to see that Perl was used everywhere inside the company, from day-to-day automation to specifically helping their own products. I was even able to find that in the past (and I don't remember how long it lasted) there was a group of people specialized in using Perl to automate anything, or even develop web applications using Catalyst. I wasn't able to contact any member of the group about that time.

Not long after that, I got a blog entry from Perl Weekly about a new release of DBD::Oracle. To my surprise, even after many years Oracle still makes the life of Perl programmers unnecessary miserable when they just need to connect their code to a Oracle database and have to do all sorts of configurations to just install a Perl module due binary dependencies.

Long story short: I gave up trying to support Solaris. Just put

if ( $^O eq 'solaris' ) {
    die "OS unsupported\n";
}

in the Makefile.PL and life goes on.

I won't reject a patch to make Archive::Tar::Wrapper on Solaris, as long it passes on the unit tests and don't break on other OSes, but from my perspective, the Perl community doesn't really need anything from Oracle.

I have the utmost respect about Sun Microsystems and all the contributions it gave to the community but for Oracle? Not really. At all.

Thursday, May 24, 2018

Quickly making a DEB from a Perl module

Recently I had to quickly create a DEB package for Ubuntu for a Perl module available on CPAN (not sure why REST::Client is not available anymore).

It has been a while since the last time I did, and honestly I couldn't remember what was required to.

After some frustating minutes trying to go over the documentation for dh-make-perl, I was able to reach those two simple lines in a shell:

$ export DEBFULLNAME='Alceu Rodrigues de Freitas Junior'
$ dh-make-perl --cpan REST::Client --arch all --depends libjson-xs-perl, liblwp-protocol-https-perl, liburi-perl libwww-perl --email glasswalk3r@yahoo.com.br --build

Documentation of dh-make-perl does have a lot of space of improvement... and for my dismay, it is not even easy to do make contributions for it: no available access to the repository as you would expect to do nowadays (git pull request), first you got to be accepted as a Debian contribuitor... which is not that easy too.

Tuesday, February 27, 2018

Perl on Windows... still not that good

Today I had to use Perl from Windows... it was a couple of years ago that I needed to do it so.

Frankly, it was never the best experience from a end user point of view. Strawberry Perl made it a lot easier, but to this day it is still an incomplete solution.

I don't want just to complain about it... if you don't like a opensource project, don't use it. Or try to improve it yourself.

Here are some notes for those willing to do the later:
  1. Install Git for Windows. You will get some other nice programs as tar and gzip. You will need those and what the heck, everybody uses git nowadays.
  2. Configure the cpan program. You can use the default configuration offered and set some items later.
  3. Configure cpan to use the tar and gzip programs from step 1. In the case you don't remember, type o conf tar and o conf gzip and setup the complete path to those guys. If you were unwise and setup Git for Windows use the suggested path (C:\Program Files\Git), you will have to do some quoting and escaping the backslash (like "C:\\Program Files\\Git\\usr\\bin\\tar.exe").
  4. Configure cpan to use the gmake.exe program (don't really know why it wasn't configured by default, considering that gmake.exe is part of Strawberry Perl): o conf make C:\\Strawberry\\c\\bin\\gmake.exe
  5. Configure cmd.exe to use Unicode by default: fire up the command REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 0xfde9 with administrator privileges in order to do that. It avoids you having warnings all over because of Unicode characters.
  6. Configure cpan to use a SQLite database (which speeds up the process): o conf use_sqlite 1
  7. Install YAML::XS, which is faster than YAML.
  8. Be smart and add C:\Program Files\Git\usr\bin to your PATH variable.

Sunday, January 28, 2018

cron versus Crom

Do you know cron? If you ever worked on a UNIX-like OS, it's very likely you do!

But what do you know about Crom?

What have they in common besides the (almost) identical names?

Let's see how the venerable cron compares to the imortal Crom!

cron Crom
What is it? Software time-based job scheduler for UNIX-like OSes. Fictional Cimmerian deity of Hyborian Ages.
Uses Schedule tasks to be executed, per user, with granularity of one minute. Basically nothing.
Some believe that he bestow men and women at birth with the courage to survive, persevere, and vanquish adversity.
Creation 1979 (Version 7 UNIX). 1932. Crom is the most venerable indeed.
Versions Several (proprietary, open source and free software) implementations. There is only one Crom, you hound dog son of a thousand fathers!
How to use it Executing crontab -e, or editing the several files that comprises it's configuration Invoke his name during an oath or curse. That's the only know safe way to mention him.
Known problems It will issue error messages if you messed up with the expected syntax He has little patience for weakness, which means asking him for help will make him to ignore you (at best) or really f@#$%&! you (at worst).