Dec 20 2016

Company given rank and how much it matters

Category: TechnicalIuliana @ 1:01

I’ve been promising for a while to start writing technical posts, but until I’ll have some time to write some code, I do have a few ideas regarding management and internal hoochy-moochy that happens inside IT companies. Bare with me, it might be either fun, either instructive, depends on how my mood changes while I write. Also, do not expect a small post that you will read in five minutes, you know I rarely do that.

I’m in my 10th year of experience in the IT field. I have worked on a lot of different type of projects, I taught at the university for a while, did some consulting and even written two technical books.  The company I work for currently has knighted me at the beginning of the year and therefore I am now called a software architect. My diplomas say that I am an engineer. And I find the term  software engineer much more suitable, because engineers break down problems into smaller problems and provide solutions or they concoct contraptions to make life easier and work more efficient. This is what I’ve been doing since 2010, concocting contraptions to make my work easier so I can be payed for being lazy.

But back to the original point. Last week, the company I work for sent me to a training/workshop where some guys were explaining something that I cannot currently write about and at the beginning of the workshop asked all of us to present ourselves. These guys were just there for the workshop, we will probably never see them again and the plan is to provide our own implementation for the thing they talked about. Nevertheless my colleagues started giving super details, their full names and full titles within the company. I just told them my first name,  the project I work on and the reason I was interested in the workshop. All done in 20 seconds or so. Bam!

I never liked labels, maybe because I was given so many while growing up (crazy, poor, weird, teacher’s pet, geek, nerd, etc). I do not like titles either. Unless you are freaking royal, then… oh well, you can have your title and shove it where the sun don’t shine. I have been doing architect work since 2010 when I had a full project on my hands, and I had to migrate it to some new technologies. And I did that and only missed the deadline because I broke my right hand and I had to program for two weeks only with my left hand. And I am right handed.(Since then I kinda started doing a lot of things with my left hand too, so now I think ambidextrous fits.) Returning to the original idea, bragging about your title when it does not fit you, is quite ridiculous. You can call yourself a manager, but you’re not doing much managing if your team members keep leaving. You can call yourself and architect, but if your solutions are crappy you’re not doing much … architecting(sic!). You can call yourself a web developer, but if you cannot develop a responsive web interface, allow me to have my doubts. And plus, a title given by the company you work in is as valuable as your wife knighting you the best lover in the world.

This is why I used to make fun of my architect title at the beginning. People who do not know me well, did not get my sarcasm. Many of my colleagues took my Lync status (I am architect, therefore I am God…) as bragging. I do not feel like an architect when I do not have architect specific tasks. So I present myself as a developer or engineer. It suits me better at the moment.  The way I see it, presenting myself as an architect, when I do little architect work, would be like presenting myself as Miss Romania, after I gained 20 kilos. So I do not present myself as an architect. I let others do it.

Another term I totally loath is expert. In the company I work for people like to use it a lot. I just started on a project called Regulator, people I interacted with, already started calling me The Regulator Expert. Then I switched to something called XBRL, I became The XBRL expert. Seriously???

I am no expert, in anything. Really. But what I am good at is keeping things simple and keep learning. Everything I do, I try to make it so simple that anybody with a little motivation could understand it, use it and maintain it. Why? Because I am lazy, I prefer the work to be self explanatory, than for people to bother me with questions. The other reason why I prefer not being asked questions about my work is that I kinda’ lack social skills. So if I develop something, expect tests, proper documentation with three types of UMLs  and some extra schemes drawn in Google Drawings. Anything to keep you away from me.

Also, company ranks mean nothing if you are not up to the task. And I’m the kind of asshole that even if you are a manager, if you are a crappy one, I will treat you accordingly and eventually tell you to your face, because negative feedback is also a thing.  :D

This being said, there is a post about negative feedback in the works. I hope you will enjoy that too.

Stay safe, stay smart!

Tags: , , ,


Sep 29 2016

What means to be a good programmer

Category: Funny,TechnicalIuliana @ 20:18

A few weeks ago this picture appeared on my Facebook wall.
14481798_1347939108557879_3012695335241845599_o
And it got me thinking. Are programmers that special? We really do programming just because it is fun? And what actually means to be a good programmer? Because in 10 years of experience in this field I had the occasion to work with really good programmers that were really awful people and good people that were not that good programmers, but they were easy to work with.

So then, what makes a programmer good? His ability to write an algorithm? His ability to improve it? His ability  to work in a team? His ability to write stable, extendable, testable and maintainable code? What means to actually be a good programmer?

Because if good programmers write code for fun, this means that I am actually a good runner, because I run for fun. It also means I am a good dancer because I dance for fun. This also makes me a good comedian, because I make my friends laugh for fun. And so on. And what happens when I have a bad day and I write code and hate doing it? Does this make me a bad programmer?

I am not looking the define what a good programmer is. Because programming is not about having fun. Bill Gates did not do it for fun. Steve Jobs did not do it either, I assure you. They did it because they have inferred the potential of technology when used properly. Programming is about making the technology do the work for you. The better you are at it, the more work it will do for you. So fuck it, I do not want to be a good programmer! Because I do not program for fun, not 90% of the time. I program to improve my life and others’ too.

I do not want to be a good programmer, because I want to be an excellent programmer. And if I succeed I want my work and my effort to be recognized, I want to be adulated by the public and I do expect to get properly remunerated.


Sep 05 2016

How do you recognize applications created by me?

Category: Funny,TechnicalIuliana @ 21:02

9781484208120_Figure_06-16

Well… There will always be that user, called gigi.pedala, that I probably created when  I was pissed off that something did not work as I intended…

Who is Gigi Pedala? In Romania Gigi Pedală, also known as Dorel is the guy creating trouble, that knows nothing (and he is nothing like John Snow) and most of the time does nothing. Except trouble. That he does.


Mar 10 2016

Awesome Feedback for my technical book

Category: TechnicalIuliana @ 1:34

In case you do not know I wrote a technical book, about Spring Web. From time to time, I receive emails from people reading my book and working with the code, but the email received tonight made my day:

What attracted me to your Pivotal Certified Spring Web Application Developer Exam Guide is the fact that you used Java configuration for the Spring Web Flow, and to the best of my knowledge, that is the only book in the market that currently used Java Config for Spring Web Flow. As I look further into the book I see how you encouraged the use of current and most prevalent tools for development. I love your approach, it is very upwards looking, and has the tendency of yielding a great and lasting result.
(That’s what Tim said)

So yeah, I’m a pioneer in using Java Config for Spring Web Flow. Ta da! So in case you had doubts about buying my book, I hope there are less of them now.

Stay safe, stay happy!

Tags: ,


Feb 19 2016

I’ll just leave this here

Category: TechnicalIuliana @ 10:41


Jan 06 2016

This is what I do

Category: TechnicalIuliana @ 22:25

When everybody was going on vacation me and a few other colleagues, stayed behind in order to perform the migration from CVS to Git of our very large project. We used the wonderful cvs2git tool, although a lot of internet reports say that the results are unpredictable. The same thing I mentioned during the preparatory meetings, but for the first time since I work in this company apparently there were people that were more optimistic than me, because on the 23rd of December the migration began. A little bit earlier than everybody expected, but oh well…

iuliana-rambo

We had one big CVS repository, so the first step to do was to restructure our project and split it into little ones that could be easily migrated. Issue was, that one project could not be split. And that was the one that caused a lot of trouble. When I am writing this post, that project is still being migrated. And is migrated a little different than others. Each branch of the CVS repo, becomes a Git repo. Then all these repositories will be merged into one. And all my colleagues recommended me to use this and that, a lot of shell and git commands found on stackoverflow, I had the genius spark to merge these repositories in an instant using multiple remotes. I’ll write more about this in a later post.

Before the vacation started, I trained my colleagues in using Git. If you would ask me, the training was quite a fiasco, because I had only 2 hours per group to explain them what Git is, what are the differences between CVS and Git, how Git works internally, what GitBlit is, how to work with Git using Eclipse and his stupid EGit plugin and how to work around its mishaps. As you can imagine 2 hours were not enough, but it is what it is, I had to work with the resources I was allocated. Knowing exactly how the training went, I took advantage of the free days I had and I slept a lot and prepared myself mentally for 6 months of  answering repetitive, sometimes ridiculous Git questions. I mean, I am expecting for my colleagues to have the most weird questions and I am expecting for them to do the most weird things with Git.

And now, this is the first week. And my responsibilities do not cover only Git consulting, but my project manager is on vacation so I had to take his responsibilities as my own, I had to deliver a fix and I had to prepare the hotfix package for testing and delivery and also help people in the company to update their release/hotfixes scripts to use Git. Fortunately, the hotfix was ready, was tested and will be delivered at the end of the week.

But today a serious problem emerged. People were unable to work with the remote repositories. They got a lot of timeouts, and nobody knew the cause. Logs did not say anything related to that. So we started analyzing everything it could affect this.

We started with GitBlit, all looked fine in the GitBlit.properties file, all ssh properties were set with appropriate values.

Most of us were using the ssh protocol to communicate with the remotes, so we needed to check how many ssh connections the server could handle in parallel. SSH works over TCP, so the  number of TCP connections was just as relevant.

# cat /proc/sys/net/core/somaxconn
128

And it was a small damn one. It was increased to 1024. And it seemed to work for a while, but as soon as everybody started cloning, pulling and fetching, the problem reappeared. So this was clearly not it.

I then started to look at the SSHD server installed on the server. There were two parameters that interested me: MaxSessions(specifies the maximum number of open sessions permitted per network connection) and MaxStartups(specifies the maximum number of concurrent unauthenticated connections to the SSH daemon. Additional connections will be dropped until authentication succeeds or the LoginGraceTime expires for a connection) Both were commented in our /etc/ssh/sshd_config file, so I guess the default value of 10 was used for both of them. So both were set to 1024. (Yes I like this number)

I restarted the sshd service and again for a while everything looked fine. Then the timeouts started again. I started to think that maybe GitBlit did not close the conections successfully and that is why the 1024 quota was reached and timeouts happened. So I started looking at Gitblit again. After some research into each of its properties I found this one:

# The default size of the background execution thread pool in which miscellaneous tasks are handled.
# Default is 1.
execution.defaultThreadPoolSize = 1

And you probably suspect by now… it was modified to 1024. I restarted the Tomcat hosting the GitBlit installation and… voila. Remote operations are now working for my colleagues. Apparently remote operations using the ssh protocol are miscellaneous tasks.

I was doing all these things, while consulting people about Git and my close colleagues were amazed at how serene I was and how well I was handling it all. Actually I think I was a little amazed too, but then I realized that there is nothing to be amazed of. I was prepared for this, I was expecting a hell of confusion and people running around like Dexter(the cartoon character) when his hair was on fire. I was prepared because I am good at this job and because this is what I do.

Tags: , , , ,


Dec 12 2015

What is testing?

Category: TechnicalIuliana @ 22:29

Testing is …

  • is the process used to reduce the likelihood of a failure that undertaken in a professional manner warranties that the software meets all specified user requirements  when it is delivered.
  • an exercise in risk management and reduction.
  • is a measure of quality.
  • is the process of executing a program with the intent of finding failures.
  • is a process involving static and dynamic actions in order to identify defects.
  • is the process of exercising software to detect errors and verify that it satisfies specified functional and non-functional requirements.
  • is the process of exercising software to verify that it satisfies specified requirements and to detect errors.
  • is the process consisting of all life cycle activities, both static and dynamic, concerned with planning, preparation and evaluation of software products and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects.(ISQTB definition)
  • is the process used by testers to destroy developers sense of self esteem.
  • is the process used by testers to destroy confidence in the application.
  • is the process used by testers to help developers grow technically, develop their characters and learn to accept negative feedback.