LANGUAGE/ЯЗЫК
open
SETTINGS
PALETTE
gradient colors:
background:
open

1. Technologies

The technologies I use mostly relate to one of two (or both of) trends: POSIX (GNU/Linux) programming and Web programming.

1.1. General Notes

1.1.1. Language Rankings

I pick some from all my programming languages mentioned below and call each picked one "priority" language amongst some particular number of languages that share similar implementation or application. And it’s indicated below in text for each such language.

An example with explanation. One can (and I can too) write web server applications in, say, PHP, C++, C and even Assembly (just imagine the last). I consider PHP the "priority" language when web server programming is in question.

1.1.2. Object Oriented Programming

I’m pretty familiar with OOP theory and employ it where it’s reasonable. Or, conversely, don’t do it where it’s not that reasonable. I may utilize the traditional design patterns while sticking to still the same principle of reasonability.

1.2. Web Programming

1.2.1. Server Side

1.2.1.1. PHP

The priority web server programming language. I usually create PHP applications using object oriented approach, MVC design pattern and fat model — thin controller principle. The decision to choose PHP as the priority language for web development originally has been based on the following:

  • It is a cross-platform interpreted language.
  • It had come to existence as a special language for web programming.
  • It evolves permanently and shows a rather high growth curve.
  • It doesn’t "reinvent the wheel" in its syntax, having the C language’s one for the base.

The list of the web frameworks I may employ (with my personal familiarity level indicated):

  • Zend Framework: high level; have used it in several projects;
  • ZF_Blanks: author’s level; it’s my own work based on Zend Framework (see details here); used in several projects;
  • Yii Framework: basic level;
  • Smarty: not a framework.
1.2.1.2. CGI

CGI is a server-side application programming technology. Here I can use any of the languages listed in the POSIX section below, as well as PHP, provided that the application will be installed on a Linux-driven hosting.

1.2.1.3. Web Server

I use the Apache 2 web server Conforming to hosting’s conditions, it may be configured on per-directory .htaccess files level or system-wide level or both.

1.2.2. Browser Side

1.2.2.1. JavaScript

My knowlege of paradigms, syntax and the base classes and program interfaces of the language, including DOM and XMLHttpRequest (AJAX), is all ok. At that, I usually avoid "pure" JavaScript programming wherever it’s possible and use jQuery framework, for cross-browser compatibility besides other. jQuery-based interface toolkits, such as jQuery UI, jQuery Mobile and others, are used as well.

Cross-browser compatibility is usually provided by refusing to use non-standard elements and by using cross-browser frameworks (e.g. jQuery). Since I don’t have any licenses for Windows, MacOS, etc. and don’t have this systems on my computer, I have no ability to test my projects in browsers under this OS’es. Therefore, totally audited browser support is provided for Firefox and Opera (maybe Chrome too, in the future) under GNU/Linux OS.

1.2.2.2. Markup

Today I exploit the following web standards: XHTML 1.1, CSS 2.1, (X)HTML 5 and CSS 3, taking into account all modern requirements for block&style and responsive markup. At this time, the use of the recent standards (HTML 5 and CSS 3) is usually limited to reasonable minimum, for the sake of better compatibility with older (and newer, in some cases) browser versions.

Also, I have created a special software toolkit intended to facilitate the markup process and capable to dramatically decrease the time of making responsive markup, while increasing quality of the result. Maybe, it’s what may happen, when you say a programmer to do some markup.

Cross-browser markup is usually provided by refusing to use properties not included in W3C standard. See also the above cross-browser related note.

1.2.2.3. API

I worked with the following APIs:

  • Google Maps API
  • Facebook API
  • OpenWeatherMap API

Learning such things (as well as many other) generally doesn’t cause any difficulties.

1.2.3. Data Transfer Formats

  • XML. Familiarization level: middle. In PHP programming I use Zend Framework, PHP DOM and other libraries to manage this format. Expat library has been used in a C-language project.
  • JSON is the first-place format used in AJAX.
  • CSV.

1.3. DBMS, SQL

I use relational and object-relational database management systems.

  • MySQL, MariaDB are usually used by me in web projects.
  • PostgreSQL is generally used in projects not related to web, but web use also takes place.

I build databases in accordance to the relational database design and normalization rules. I use PDO, Zend_Db and other interfaces in PHP programming. In other languages, I use DB toolkits of a particular language. In C/C++ — native C interfaces of the listed DB management systems.

1.4. POSIX (GNU/Linux)

1.4.1. Programming Languages

My expertise in all the languages listed below is good enough. The described below are depth and intensity of my practical usage of each one.

1.4.1.1. C

The C is my priority compiled programming language. Widely used to create own software pieces and even projects.

1.4.1.2. C++

Studying of this one was very meticulous. There’s some planned projects using this language. At the moment, there was just source code analysis and changing in some free and open source projects written in this language.

1.4.1.3. Assembly Language

There was a rather long period of torturing hardware this way, and it was in the DOS era (generally, it was yet the Windows era, but not for me).

As a matter of fact, my first familiarization with Linux had happened while reading a book on the Assembly language. The book began with Assembly programming for DOS followed by Assembly in Windows (oops), and at the end there was a brief Unix part. So, AT&T syntax is a known thing for me, as well as that there’s not many cases in Unix where Assembly application is rational.

1.4.1.4. Shell Language (BASH)

The total scripting tool(-set) and the human to computer (and vice versa) communication mean for every day. Also, it may be used at night.

1.4.1.5. TCL

The priority general purpose interpreted language. "General purpose" also may include utilizing it in web.

1.4.2. Source Code, Texts and Macros

My development environment is integrated, so I can name it IDE (Integrated Development Environment). It’s integrated by me myself, and it comprises a lot of hand-written code and a big amount of development tools both traditional and modern POSIX, GNU and other free tools. Some serve as a glue for others, it’s such as e.g. GNU Make, Vim scripts and plugins and even some of the X Window window manager facilities specially configured. Some of the components are involved in more peculiar source code processing; some are used for analysis and debugging; and some assist rapid access to any reference information.

Full set of standard Unix filters and textual data tools are in my everyday use, also for source code processing. Among them are such as М4 preprocessor, Groff text processor and AWK text filter.

Doxygen system generates source code documentation.

I always use the Git system for source code management in my projects and werever it’s possible. There is also some basic experience of working with SVN.

1.4.3. System Administration

GNU/Linux system and network administration, including administration on virtual private servers (VPS).

I don’t use any special interfaces for administration, such as graphical or web ones. All the work is performed in shell command line and text editor (e.g. editing configuration files). In remote access cases, I use SSH.

Although I’m able to manage some Linux distributions, for example, on a VPS hosting, I rather prefer, wherever it’s possible, to compile and install everything manually from source code.

2. Officially

Some information for those who may have some work for me is collected here.

2.1. Examples

See Free Software and Web Works sections for code examples with descriptions, etc.

2.2. Software Development Experience

Overall programming experience: more than 20 years.
Web programming experience:
9 years.