My name is John Pazarzis and I am as a software developer specializing in back end development of Web applications, artificial intelligence , data mining and real time applications. In this blog I am writing about my views and thoughts as they were formed from my experience and research about software development.
A few words about my experience as a Software Developer
I have worked for many companies, ranging from very large institutional banks and hedge funds and software companies (google is one of them) to very small startups.
During the years, I have used many programming languages and technologies. For more than a decade I have been a C++ enthusiast and gradually I made the shift to .NET and C# which I kept using from version 1.0 to 4.0 while for the last five years I am focusing almost exclusively in open source platforms, like linux, python, mongodb, git, mysql, rabbitmq, Jenkins and vagrant just to name a few.
Without a doubt I am an open source enthusiast and I really believe in the superiority of open source software and the supporting communities and related culture and development philosophy.
Here you can read some of my postings about my views about software development and project management.
- Falsifiability and Unit Testing
- The three dimensions of a programmer.
- Metrics converted to goals lose their focus
- Deadline Blues
- Lessons from a pyramid foreman
- A wrong metaphor about software development
- Thoughts About Software Quality...
- Be extra cautious of early decisions in your development cycle
- Abstractions and Specializations
Some of my Favorite technologies
Linux is without a question my OS of choice. All my computers both at work and at home are running some distribution of it. Most of my co-workers are now using Apple Mac, which although I have tried it, I did not find it any better than linux and more specifically Ubuntu which my distribution of choice!
During the last few years, I write mostly in python which has become my favorite language.
Python has a very clean and simple syntax and simultaneously is very expressive, something that when combined with its extremely extensive open source ecosystem makes is a very easy call as a general purpose programming language.
Some of my postings about python
Videos that I have created about python
I find NoSQL to be provide a very clean and suitable solution when it comes to implement CRUD type of applications. More specifically mongodb is usually one of my top preferences whenever I need to create the back end of a Web Application.
MySQL is my Relational Database of choice given it simplicity of use and the wide spectrum of high quality open source tools that are developed for it.
I have used many different source control platforms like Source Safe, Subversion and Perforce but since I switched to git I was hooked and I would find it difficult to go back to any of the older SC systems. For automated builds I am using Jenkins which I also find very nice and easy to use.
I really believe that using a Virtual Machines is the way to go when it comes to developing high quality software and I have found vagrant to be a great way to quickly build and manage them.
I think that Jenkins offers a very mature and flexible continuous integration platform and in several of my positions I have been using it extensively.
When it comes to message brokers, I find rabbitmq to be a very light and capable platform and is always my very first and best choice.
C++ is the language I have used the most in my career. Today I still use it, especially in cases where high performance critical and usually I am either embedding in to python or using it as an extension to it.
When it comes to windows development, .NET and C# are in centrer of the technologies I use. I have also completed a few projects using iron-python which I find it to be an interesting and powerful extension to the more classical .NET environment.
As far as Web Development goes, I have a long experience with, using of course HTML5, CCS3, Java Script and Ajax as far as the front end is going and ASP.NET, PHP, IIS, Apache on the server. I have also used various content management systems, starting from custom hand-crafted solutions and moving to full blown solutions like EKTRON, SharePoint and Alfresco just to name a few.
I have tried many editors during the years. I am a very early adaptor of Visual Studio which I began using since its 1.1 version for Visual C++, have used emacs for several years and also eclipse and net beans. Besides the many editors I have used, I always return to only one of them, the one going by the name of vim, which I know pretty good and always enjoy using. VIM is such a work horse that cannot be compared with any other tool I am using..
I always maintain a keen interest about programming languages and I am not afraid to at least try one, if I find it interesting at all. Among the languages I have played in the recent past are LUA, HASKELL and F# and although I am not planning to become an expert in any of them, I still like HASKELL to the point of planning of learning it better in the next few months.
In the core of my interests remain algorithmic programming, artificial intelligence, Neural networks, genetic programming and, of course, any type of Web development… Some of the related open source I am using is GNU-Octave, PyBrains, py-evolve and neuro-lab..
I have been a programmer since the beginning of time.. My first contact with computer programming was as a freshman in the Mathematical School of Crete using Apple II and Pascal, I also have used punching cards for a few programs that I wrote a few years later, for the prehistoric CDC Cyber mainframe of the Polytechnic School of Athens!
Very soon I bought my first home computer and found out that the meaning of life was hidden in learning how to program it using CP/M, Z-80 assembly and Turbo Pascal! When I replaced my Amstrad 6128 with a PC running at the astonishing speed of 4.77 MHz with two floppy disks, I thought that I would barely need any other computer upgrade for the rest of my life. In the same way, it was difficult for me to believe that I would need to learn much more than the extra powerful new version of pascal released by borland in the mid 80s called turbo pascal… The truth, though, is that things did not really work exactly that way….
Following the evolution of the industry very closely, I had to expand my software arsenal a little bit beyond the good old classical Turbo Pascal and Z-80 assembly code: C, C++, MFC, COM, DCOM, Active X, TSQL, PLSQL was the natural path I followed until early in the beginning of the millennium, when the next big thing was C# and .NET which had been the core of my skill for almost a decade. During this period, I worked a lot on my Design Patterns skills, got an in depth understanding of relation databases as I had to work with SYBASE, SQLServer and Oracle (some times simultaneously) and mastered the desktop GUI development.
During this period, I have implemented some interesting applications, including a 4GL language that was used by stock traders to describe a trading strategy and optimize it automatically using pattern recognition algorithms and many more applications mostly related to the financial sector.
Companies that I have worked for