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 23 2015

Ce trebuie să știi când termini o facultate de IT

Category: MiscellaneousIuliana @ 20:38

Anul ăsta am avut multe interviuri cu copiluți de la facultatea de Automatică și Calculatoare de aici din Sibiu. Materia nu este diferită de cea de la Iași și mai surprinzător nu este diferită mai deloc de ceea ce am studiat eu acum 10 ani.  Ceea ce mi se pare stupid în draci. Pentru că de atunci lumea IT a evoluat sănătos.

Spre exemplu, Github a fost lansat în 2008. Să îmi vii la un interviu și să nu știi ce este acela GitHub, înseamnă că nu te interesează deloc domeniul studiat. Mai mult așteptările mele sunt ca orice student să aibă cont pe GitHub și ceva proiecte ale sale pe care să mă uit ca să îi pot evalua potențialul. Dacă ai cont de Github cu ceva activitate, nici nu mă mai interesează CV-ul tău.

Dar să las asta la o parte și să scriu lista așteptărilor:

  • un limbaj de programare high level (Java, C#, C++, Python)
  • să știi să lucrezi binișor cu un editor profesional pentru aceste limbaje (Eclipse sau Intellij IDEA pentru Java, Visual Studio pentru C#)
  • un limbaj de programare web (JavaScript, Php) – vei impresiona serios dacă știi jQuery.
  • un limbaj markup , adică ar cam trebui să știi ce este acela HTML și XML
  • un sistem de versionare (CVS, SVN, Git)
  • un sistem de operare, Windows de obicei. Dar dacă vrei să faci impresie sănătoasă la interviu, ar fi bine să știi Linux.
  • un limbaj de scripting (Bash, Perl)
  • să știi ce este aceea o bază de date și să știi să folosești oricare din MySQL, PostgreSQL, Oracle

În 4 ani de zile, dacă faci un proiect pe semestru le poți acoperi pe toate.

Și încă ceva, învățați cum se face un CV, nu mai folosiți prostia de Europass! Făceți-vă un CV al vostru, cu fix ceea ce știți sigur, cu fiecare proiect ce v-a plăcut și la care ați lucrat menționat acolo. Enumerați materii ce v-au plăcut și calificativul obținut dacă nu aveți proiect de menționat. (Dacă faceți asta așteptați-vă la întrebări din materiile respective.)  Dacă sunteți într-adevăr pasionați de domeniu și mici super-staruri IT prin facultate puteți cere recomandări de la profesori.

Încă un lucru foarte important: dacă încă sunteți în facultate sau abia ați terminat facultatea și CV-ul nu conține nimic din cele de mai sus, la interviu inevitabil veți primi întrebări din materia din facultate. Așa că dacă ați frecat menta și n-ați luat în serios algoritmii și structurile de date … cam nasol.

Faceți-vă un cont serios de LinkedIn cu detaliile din CV. La un search pe Google după numele din CV, cel mai bine e să apară primele: contul de LinkedIn, GitHub și apoi contul de Facebook. Și apropos de contul de Facebook, n-am să te judec dacă ai publice poze în fundul gol, dar dacă pe contul tău de Facebook găsesc sharuite doar articole despre Salam din Libertatea sau alte asemenea și postări cu înjurături, am să mă gândesc de două ori înainte să te chem la interviu. Personalitatea online este extensia ta.

Și nu vă mai treceți adresa de acasă în CV, asta e rămășită de când rezultatele la interviuri se trimiteau cu Poșta Română! Faptul că faceți chestia asta îmi spune că ați mers pe sistemul monkey see, monkey do și nu ați gândit deloc când ați făcut CV-ul.


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.


Oct 09 2015

Just dev things

Category: TechnicalIuliana @ 16:46

After receiving an email from MyEclipse that begged me to renew my license, I got a little creative. Click on each image in order to enlarge it.
small_eclipse small-love-intellij

Julie pic source


Sep 20 2015

First time in Făgărași mountains

Category: MiscellaneousIuliana @ 13:41

This weekend I interrupted my normal routine to go hiking. I have not done this in 3 years and I missed it a lot so when given the opportunity I took it. I really like getting lost in places that civilization hasn’t managed to touch that much. I love the silence, the tranquility of secluded places in the mountains that not that many persons get to reach. In the below image you can see the mountain route in blue. I went there with two friends that knew the mountain better than I did.
Screenshot 2015-09-20 12.29.50

 

 

 

 

Continue reading “First time in Făgărași mountains”


Aug 26 2014

Setting up a PPPOE connection in Fedora 20

Category: TechnicalIuliana @ 11:21

I just moved to a new city and yesterday an internet provider representative came to visit to set up my internet access. Until singing with this provider I was never concerned with the type of internet connection I had. Also, always being behind a server/router made sure I would never bothered with this. But I remember my friends which had internet from the same ISP, they had to set up on Windows something called an PPPOE connection and an username and password was required.

I did not realized that I will be needing that type of connection too until the ISP representative was here the previous evening, so while he was finishing the papers I searched on my mobile how to do that on Fedora. Apparently it is quite easy but there are a few catches, so even if you find the instructions easily on Google I will be writing about it here, just in case anybody else needs to know this. (This will be most useful for Linux Romanian beginners which want to sign up with the RDS ISP and have dynamic IPs)

The command to set up a PPPOE connection is pppoe-setup. To use it you need to be root. So open a terminal and log in with the root user. Then execute that command and step by step you will be requested the following:

  • Login name: [insert the username provided by your ISP]
  • Interface: [insert here the name associated to your network adapter, usually it is eth0 so you can go ahead and just press <Enter> to use the default, but in some cases like mine, you have to open another terminal and check your network adapter name using the ifconfig command – in my case the network adapter is called p2p1]
  • Demand activate the link: you will see some text explaining the options you have, the paragraph starts with “Do you want the link to come up on demand, or stay up continuously?” and the default option is for this link is not to be activated on demand. In case of a  dynamic IP you would preffer for your link to stay up permanently, so you will insert  no.
  • IP address of your ISP’s primary DNS server: [this is the tricky one, most people just hti <Enter> and go with default, but in case of a dynamic IP which will be provided by a server so the option you need so insert is server ]
  • Password: [insert here the password provided by your ISP, you will be asked to introduce it twice]
  • USERCTRL:[insert yes, to give access to the normal user to use the connection]
  • FIREWALLING:[you have three options here, but you have Linux and a dynamic IP so you do not need a firewall –  insert 0]

The very best thing about the pppoe-setup is that every option you have comes up with a complete explanation on what it means, so all you need to know basically is the name of that command, everythign else you can read while setting up the configuration. After inserting all necessary data, you will be told how to start, stop or view the status of your connection

Congratulations, it should be all set up!

Type '/sbin/ifup ppp0' to bring up your xDSL link and '/sbin/ifdown ppp0'
to bring it down.
Type '/sbin/pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0'
to see the link status.

So just do that, execute /sbin/ifup ppp0 and indeed you should be all set up. If you encounter problems, please let me know via comments, I am am always eager to learn new things and I love challenges. :)

Tags: , ,