loading...

$WhoAmI

viktorbarzin profile image Viktor Barzin ・10 min read

If you are reading this, you either know me personally and you are curious to see my story or you have missclicked and opened this page by mistake. Either way you won't regret spending time following this blog because I believe you can learn something from it.

This is my first blog post so I should start with something about me but before I start with the whoami part I will briefly tell you what you can expect from my blog. It will contain mostly technical information. I mean A LOT of technical info - all the way down to assembly language (haha no screw assembly).

I will mostly post about 3 topics - Software development, Network and System administration and the holy grail of Information Security. Starting from python projects, bash hacks and neat linux tricks, going through virtualization with the VMWare bundle and Docker containers, passing by different database implementations such as Postgres and Oracle and their weird ass management styles and many more. I will not skip writing about computer networking. I will add a pinch of netsec where I will share my experience with different tools and their usage and issues I have met using them.

stackoverflow logo
The aim of this blog is to fill the gap between the official documentation (if any) and Stackoverflow on every topic I write about. I will try to update it as often as possible and I will keep the old posts up to date as well.

This was the important stuff I had to tell. You can now go and watch another Game of Thrones episode.

Of if you are interested about me and how my software career started you may continue reading.

whoami image
So I am currently { time.now.year - 1998 } years old. Of course +-1 because dates. And working with dates is awesome... Anyway, I currently live in Sofia, Bulgaria but this is about the change really soon as I will be moving to Southampton, UK to study CS.

So what can I do?

I mostly use Python to solve any software problem that I face.

python
From time to time I fall back to bash scripting and even more rarely I use C# to solve windows specific problems (though powershell seems pretty nice). Recently I have been messing around with virtualization with VMWare, Oracle and Docker. I also have some intermediate knowledge on topics like networking, linux and windows administration and information security.

My developer journey started back in 2015. At that time I was around 10th grade in high school.
first github commits

I had heard stories that software developers do awesome stuff and earn a lot of money and the stuff all of you, I am sure, have heard. I told myself - "Alright, let's see what is all the fuss about".

Unfortunately there was a huge lack of uniformity about where to start as a beginner. Shall I start with a language where a simple

print("Hello world")

would give me results or shall I start with

#include <iostream>

int main()
{
  std::cout << "Hello World!";
}

where I would learn all the fundamentals of computing and how bits flip to make the magic work.

c++
Choosing C++ as first language has many pros and cons. Anyway this was the language of choice for me. A friend of mine who was already a developer at that time advised me to learn it as it would be most useful. I started watching The New Boston C++ videos.

Imagine the poor kid who only knew how to install and play games on windows, being faced with C++ pointers, C++ syntax, oop programming etc.
fuck c++ pointers
This was me. However I fought back - I was determined more than ever to learn whatever it took, I followed all the tutorials, rewrote all the code from the videos, compiled and ran tens of programs hoping I won't see another syntax error.

C++ fuck you
Three months later I was crushed by the almighty C++.

Then I heard the new hype - this thing called C#. Learnt about this academy called Telerik Academy where all the wanna-be developers go and 1 year later they were ninja coders. My motivation resurrected - I was going to learn C# which is so much better than this shitty C++. Unfortunately I had to wait another 8 months until the new season started. But fuck that, ain't nobody got time to wait. I wanted to start learning asap.

Then HackBulgaria happened.

HackBulagria logo

This is another developer academy based in Sofia. I had never heard of them before. The words that got my attention were "We are starting a new C# for beginners free course in 1 month...". The next thing I looked for was the sign up button. The course was 15 weeks or so long - just enough to get some basic knowledge before the Telerik season started - that's what I thought.

c# hello world
Those 15 weeks were enough to lit the fire in me. Being flooded with knowledge twice a week for a total of 8 hours and doing homeworks for another 10-12 gave me the best start I could have wished for. The course went from what a variable is to using ASP.NET MVC, Entity Framework, WPF and many many more. The course was highly intensive with tons of homeworks and not everyone could follow along but it was perfect for my taste.

After the course finished I was like - "yo I can make some real stuff with the knowledge these guys gave me." You know the satisfaction you get when you traverse your first graph with BFS. You may not be 100% sure what the hell a graph is or why changing the data structure only implements an entirely different algorithm but screw that. Printing all the elements just feels good. Developers will know ;)
graph

Time went by and it was finally time for my initial target - Telerik Academy. The course program started with a 3 month introduction with C# along with HTML, CSS and Javascript fundamentals. The first few lectures were quite boring as expected - 2-3 months back in time I was writing desktop apps with databases and now I am listening to 2-3 hour lectures explaining what a variable is. Anyway those went by and it was exam time. I was pretty confident with my skills and thought I would solve all the problems. Hell no, the problems were mostly algorithmic and were, I wouldn't say impossible, but very hard.
Unless you are a game developer or say developing AI algorithms you wouldn't normally write dynamic programming or use 4-5 dimensional arrays on a daily basis.

I agree that having a strong algorithmic thinking opens a lot of doors, however, I at that time I thought it was too much. A few weeks down the road other toublesome stuff happened to me and eventually I was forced to quit the academy. What a looser ha!


Soon after I decided that infosec was my thing. I started learning about networking. By the way if any of you are interested in networking I highly recommend checking out Eli the computer guy. Especially his older videos about networking. Some of them are quite long but are totally worth the time.

I started tinkering with networks - set up my own ftp server, web server... Found out how to create a cs 1.6 server to play with my friends without the need to create lan parties etc. :D.

However there is 1 more ingredient to be a good pentester - you have to be a good sys admin which at that time I was definitely not. So I downloaded some Windows servers - 2012 and 2008 and started tinkering with it. I setup a simple domain with active directory in it. Set group policies, messed with various domain services. I was happy that I could apply what I had learnt in all those tutorials and finally see how everything connected to each other.

Soon I started messing with virtual machines, kali and its tools.
kali linux
I slowly started to notice that Windows was not my os of choice and my conversion to the open source began. Not after long I had kali linux as my main os. I started "hacking" using metasploit, the burp suite, the aircrack-ng suite and others. For a short while I believed I was not a script kiddie. Haha what a scrub.

Shortly after I realized if I wanted to be a good pentester it was necessary to be able to code your own tools. The languages of choice were C++, python and ruby. After the traumas C++ got me I decided to give Python a try. I completed a few online course for python at codecademy and at coursera but I was not satisfied with the stuff I learnt there.

Guess what - the guys at HackBulgaria were starting a Python intro course. I didn't need a second invitation - I signed up immediately. As this was my second programming language to learn I already knew the basic concepts. So I started questioning mostly about corner cases to see what the language capabilities are. Comparing C# with Python and Windows with Linux I fell more and more inlove with the open source way of thinking.(More on that in another post)

Anyhow that course went by. It was followed by a "Web development with Django course" immediately after. I do not like web dev at all. Not.A.Single.Bit.Of.It. Furthermore that course was paid so I was not interested at all. However at the end of the python course there was a hackaton in which me and my team earned a total of 100% discount of a future course from HackBulgaria. Taking into consideration that I would go study abroad in less than a year I wouldn't have had many opportunities to use my reward. So yup I signed up for the only thing I hate in software development.

However I do not regret about it at all. I learnt how the web works. What happens when you go to instagram.com and how the entire magic happens. Played with stuff like Django REST Framework, Celery, RabbitMQ and many many more tools and frameworks which are not necessary python specific and are widely used among the developer communities.

"Learn the concept not the framework" was what was in my mind the whole time as learning the concept is so much more important than learning any framework. Morale of the story - javascript is weird ass shit and more importantly web dev is not all about writing css and making stuff pretty.
django unchained

Preceding my departure to Southampton I had 3 months or so of free time. Starting a job for 3 months is not really serious. Furthermore I wouldn't start somewhere where all I would do is fix legacy code or create excel spreadsheets all day long.

So working for my infosec career I decided a sysadmin internship would be useful to learn how system administrators work. How they protect their networks, what do they do when an issue appears and how they fight back malicious users. What's more I was coding almost all the time for the past 8 months and I needed some change for a while.

Even developers need heroes logo

So I found an internship to see what's it like. I didn't have any expectations. I started only to see what a system administrator is as a person and his way of thinking. I wanted to make the most of my time by looking into the IT field from a way different angle.

Having no expectations is the best way to be pleasantly surprised. My coworkers proved to be willing to invest time in my by teaching me a lot about virtualization (VMWare bundle), databases (Oracle), Linux administration(RedHat), Windows administration (Active directories, policies etc).

Meanwhile I setup home lab to apply my knowledge in a test environment. What proved to be most important for me was that my colleagues were willing to help me with my setup and answer any questions I had at the time.
Not to mention all the

hands on experience
experience I gained.

My internship was not full-time so in my spare time I decided to see what is all the fuss around freelancing. It is actually quite amazing because unlike the big companies you get to work for, where they tell you what technology to use, what version of it, what editor, which libraries you are allowed etc you get to choose all of that on you own. Whatever you like or feel most comfortable with! Furthermore you experience the whole developer process - from finding clients, through negotiating and communicating with the them and finally closing the project. Compare that with doing tickets all day every day at the 9-5 job.
freelancing rocks

So yeah, that's my story for now. If you have come this far congratulations because it is hell of a read to get to this point!

Thanks for reading and follow this blog as it is going to get only better :)
thanks for reading

Posted on by:

viktorbarzin profile

Viktor Barzin

@viktorbarzin

Freelance Software Developer; System Administrator; Languages: Python, C# C++,Bash

Discussion

markdown guide