Showing posts from 2009

IELTS Results

My results:
Listening: 7.5Reading: 7.5Writing: 6.5Speaking: 6.5Overall Band Score: 7.0My wife's results:
Listening: 7.0Reading: 7.0Writing: 6.5Speaking: 8.5Overall Band Score: 7.5Results are acceptable in despite of the problems with the equipment during the exam, and that it was boring and tedious, especially writing section.

Trac Ticket Workflow

Trac is the wiki and issue tracking system that is the most used for my software development projects. Let me share few hints about its ticket workflow, especially about the statuses, the roles of the participants, and let me give an example of the workflow config. But if you are interested in other things like Trac plugins, source browser, customizing, etc, let me know.

All the information given below regards the workflow described at the end of the article. The original Trac workflow is missed vital features like the support for ticket verifying, or the required ticket statuses range, so I do not use it in my projects.

The description of the main statuses:
new - the ticket has been created;in-progress - the developer has began to work with the ticket;fixed - the ticket is fixed (the problem issued in the ticket is solved);verified - the ticket is verified (tester or PM has verified that the ticket is fixed correctly);closed - the ticket is closed (it's not required to care about …

Curriculum Vitae

Alexander Slesarev
Burnaby, BC, Canada



NuData Security
2014 - present
Senior Feature Developer:

Recruit, organize and mentor a team of junior/intermediate software developers.Develop security analytics backend and infrastructure in PHP/Python with MongoDB, Cassandra, Redis and HDFS/S3.Develop client libraries to communicate with the backend for Java/C#/Ruby/PHP/Python/JS programming languages and DemandWare/Salesforce platforms.Mobile SDK and apps to communicate with the backend for Android, iOS and UWP.Research anti-fraud strategies and applying machine learning methods to detect malicious activities.Big Data analysis with Amazon RDS, Tableu and Apache Spark (Scala).Collaborate with Fortune 500 clients representatives to deliver the best results.
2011 - 2014
Team Lead/Software Developer:

Recruit, organize and mentor a team of junior/intermediate software developers.Develop AJAX-based web-inte…

Moving to Canada

I'm going to immigrate to Canada, and the first step is complete – I have received a reference number from the FSW Centralized Intake Office. I had applied as Computer and Information Systems Manager due to my job position now (Project Manager) which I hold more than 5 years.

The next challenge is an IELTS exam that I have to pass in the next few weeks.

Seven Ws (composing brief software requirements)

Quis, quid, quando, ubi, cur, quem ad modum, quibus adminiculis.
(Who, what, when, where, why, in what way, by what means)
Hermagoras of Temnos

Quotation above is created by Hermagoras for defining seven "circumstances" as a way of the formulating or analyzing rhetorical questions. But it is useful for many other areas, like for composing brief software requirements. Sometimes it's essential for us to analyze the perspective project as fast as possible, without creating tremendous SRS, but merely ask few questions and begin to work. Especially, it relates to Agile Development, and can be easily used as a reference point for starting a project.

Let us interpret these questions to ones of the sample meanings:
Who will use that project?What kind of software does the project represent?When should the project be delivered to the end users?Where is the project intended to be used?Why would the project be successful?In what way is the project supposed to work?By what means will …

Thunderbird Grammar Checker add-on

Official Thunderbird Grammar Checker add-on:

Back-end functionality is based on LanguageTool functionality (in particular, the add-on uses its webserver). Though it can work without any further customization, it is strongly recommended to setup a local LT server (see below), and change the add-on preferences to use your server. By default, the add-on uses the local server and falls back to public LT server (that can't handle the high load and can't guarantee the privacy).
The grammar checking is available via Tools menu, the context menu and the corresponding toolbar button.
Language and server settings can be changed using the add-on preferences:

Supported languages: English (en), Dutch (nl), French (fr), German (de), Italian (it), Polish (pl), Romanian (ro), Russian (ru), Slovak (sk), Slovenian (sl), Spanish (es), Swedish (sv), Ukrainian (uk), Asturian (ast), Belarusian (be), Breton (br), Catalan (ca), Chinese (zh), Danish (d…

New articles

I have published several articles on website. I hope you'll find them useful and interesting:

Software System Requirements QuestionnaireSQL in large-scale systemsArchitecture of large-scale systemsDjango speed, stability and securityThe website doesn't allow to post comments, so you can leave your remarks, suggestions and complaints here. Enjoy!

Mini HOWTO: Create a PDF document from multiple images

Sometimes it is required to send someone multiple images. Of course, you can send these images as they are, or you can create and send an archive of these images. But it will be more convenient to send a PDF document. In that case the recipient can easily open the document and he/she will see these images in the sequence you assumed.

There is a powerful software suite called ImageMagick. It provides various utilities for any graphics processing demands. Now we are interested in a convert utility. It has many useful features and it is really irreplaceable for the image batch-processing like in our case.

The command for converting images is pretty simple:

$ convert -define pdf:use-cropbox=true -density 72x72 -resample 72x72 -compress JPEG *.png result.pdf
The convert utility takes all PNG-images in the current directory and creates a PDF-document from it.

You can modify any options as you want. Let's have a look at some of them:
density and resample - these options are required for…

My FOSS projects

Updated list of the projects I'm working on:Mail Dispatcher (role: admin, platform: Python/PyGTK) - A tool for dispatching (basically, deleting) email messages on POP3 server via Plain or SSL connection with advanced filtering capabilities.DHCP Explorer (role: admin, platform: Python) - A console cross-platform tool for locating all available DHCP servers.sdict2db (role: admin, platform: C#/WinForms) - Parser for SDict-based format dictionaries with ability to save in a SQL server (with creating table, index and filling data) and in a text file (SDict text format).DNN Dictionary (role: admin, platform: C#/DotNetNuke) - A DotNetNuke module for translating texts using SDict-based ( dictionaries. It works using AJAX mechanism so there is no pages reloading during translating.Geek Workspace (role: admin, platform: Python/PyQt4) - Geek Workspace is a desktop environment aimed for developers, scientists, engineers and students. The key point is a programmed control o…

Creating video conference application with GStreamer

GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. GStreamer is released under the LGPL, so it can be used in commercial applications.

The power of GStreamer is in its module infrastructure - you're working with certain "blocks", combine it with "pipes" and got results without any coding (via gst-launch utility). Of course, after playing with gst-launch you can write an application in any language you prefer (GStreamer supports various bindings and due to fact that GStreamer is written in C, I do not see any problems to bind it with an application that is developed in any serious programming language).

I do not want to explain GStream basics, but move forward to the blog topic - creating videoconference application. If you want certain tutorial, please take a look to the Python …

Mini HOWTO: Programmatically upload a file in Django

Surprisely, there is no any good advice in the Internet how to programmatically upload a file to the FileField field in the Django. I want to cover this issue with the sample that shows how to upload a generic file from the Internet to a Django application. The code is simple: import urllib, mimetypes, os from django.core.files.base import ContentFile #... filename, msg = urllib.urlretrieve(img) ext = mimetypes.guess_extension(msg.type) name, original_ext = os.path.splitext(filename) new_filename = filename if ext != original_ext: new_filename += ext, ContentFile(open(filename).read())) First of all, we retrieves a file. urlretrieve returns a tuple <filename, msg>. filename is a name of a temporary file with the downloaded content. msg is a HTTPMessage class instance that contains headers of the file.We use msg to determinate the type of the file. For this guess_extension method is used. It is required for the case when the file is generated autom…

PhoneyC honeyclient

OverviewLet me introduce PhoneyC - pure Python honeyclient implementation.It is a perspective project and it has a huge potential. All features and advantages are described in a corresponding article. Briefly, PhoneyC is a low interaction, virtual honeyclient that emulates the core functionality of a web client and emulates specific vulnerabilities to pinpoint the attack vector.It consists of two core components - a simple web crawler ( and an analysis engine ( with all required auxiliary modules. Further I'll describe installation and usage procedures.InstallationAs a sample platform I'm using Ubuntu 9.04 Jaunty Jackalope for x84-64 processor. Following the README instructions we have to install python 2.3 and upper, clamav, spidermonkey, vb2py and curl (it is not mentioned in the README file, but it is used internally by the analysis engine): $ sudo apt-get install clamav spidermonkey-bin Python is already installed in the system by default. vb2py…

Git vs Mercurial

Due to latest changes in projects hosting situation (like FTC Sues, Shuts Down N. Calif. Web Hosting Firm, Adobe acts against Flash video stream recorder) I started thinking about moving on to some DVCS system. Now there are only two serious alternatives: Git and Mercurial. First of all, here are two good articles where these systems are compared:Chosing a distributed VCS for the Python projectAnalysis of Git and MercurialIn both of these articles Mercurial wins due to:lack of good Git support in Windows system;having Python API.But also in both of these articles it is said that Git has more features and is more powerful than Mercurial. Actually none of the issues above does not concern me personally because I'm not developing in Windows OS now, and I do not require any integration with DVCS.But let me notice that these issues are not so critical right now:there is an awesome TortoiseGit project and it works really good;basically only certain hooks are required for integration wit…

Geek Desktop Solution project

In my free time I have started working on the new GPL project named "Geek Desktop Solution" (GDS). The project is a desktop (like KDE or GNOME) aimed for keyboard jedi and other technical geeks. It was inspired by SciFi movies especially "Stargate Atlantis". Rodney McKay, Chief Scientific Officer of the Atlantis Expedition, created his programs (or macros as it was called in the movie) interactively and very fast. I thought how it can be done and found a solution that makes this interactive and fast programming possible. The main concepts of GDS are: All environment items can be programmatically modified by user.The interactive shell is an entry point of the desktop - all operations can be performed using the shell.There is no mouse requirements - the user can operate the desktop using shell or keyboard shortcuts only.But at the same time almost all operations can be performed with the mouse (for touchscreen-based devices without keyboards).The desktop consists…

Easy converting video files to iPod movies

Linux is a power :-) I made sure of this again when trying to find a legal way to convert various video files in Windows OS to QuickTime format acceptable by iPod. Actually I do not use Windows, but iTunes is working only on it and MacOSX, so I didn't have a choice. But googling gave nothing, so I turned on Linux and easily found an appropriate way.The main magic of video processing in Linux is collected in FFmpeg solution. And it saved my life again. But before reading further please make sure that you will not violate any author rights and other license issues. Please examine the legal information on FFmpeg site. In most cases all video files you converted must by used only by you and can not be transferred to other users.The process of converting is very simple - just run ffmpeg with required options (of course, ffmpeg package and all auxiliary packages should be installed): $ ffmpeg -i /path/to/input_movie -f mov -sameq -s qvga /path/to/output_movie The main magic is in ffmpeg…

Магия Python в задаче вычисления количества строк комментариев в коде

Python - один из немногих языков программирования, в котором лаконичность и простота гармонирует с мощью кода, который можно на нем написать. Хотя по сути Python является императивным языком, в нем есть функциональные элементы, упрощающие разработку и придающие коду больше выразительности. И чтобы не быть голословным, хочу это показать на примере простой задачи.Итак, есть следующая задача - подсчитать количество строк в C++ коде, в которых есть комментарии. Есть два метода решения этой задачи:Разработка state-машины, которая анализирует текущее состояние кода (комментарий это или нет) и ведет подсчет числа строчек, в которых состояние кода было "комментарий".Использовать регулярные выражения и подсчитать количество строк кода, которые удовлятворяли условиям в регулярном выражении.Мы рассмотрим второе решение, т.к. оно будет более лаконично и читабельно. Плюс к тому же это может быть неплохой задачкой для собеседования. Если разработчик сможет написать решение примерно в тако…

Переходим с ICQ на Jabber.

Ни для кого не секрет, что сервис ICQ принадлежит компании AOL. Как и для любой коммерческой компании, для нее важна монетизация своих сервисов. Если сервис не приносит прибыль, то его либо модифицируют таким образом, чтобы он все-таки приносил прибыль, или закрывают.

Основная прибыль от ICQ - это реклама, баннеры, которые показывают официальные клиенты. Однако, в России эти клиенты не приобрели популярность - баннеры либо режут с помощью специальных плагинов, либо закрывают фаерволом, либо используют альтернативные клиенты, как, например, QIP и Miranda. C другой стороны, именно российские пользователи составляют подавляющий процент от всех пользователей ICQ. AOL, конечно, это не особо нравится и она борется изо всех сил, чтобы все использовали официальные клиенты. Недавняя серия отключений - яркий тому пример. И не факт, что отключения не продолжатся (или вообще не прикроют весь сервис ICQ) - никто не может заставить AOL поддерживать неприбыльный сервис, особенно в наше время миро…

iPod torment

Apple iPod is very fractious device, and you should be certain in all your actions when you working with it.It so happened that all music on iPod is disappear (probably after incorrect ejecting). Although during connection to Rhythmbox everything was fine (playlists and songs were working properly), the device itself showed "No Music". Digging the Internet showed that the only true way to fix it is repairing using iTunes. But unfortunately iTunes is working only in Windows and MacOSX, neither of these I have. So I tried to find another way.Further digging lead me to this article. So I downloaded Floola and started it (please notice that it is required to have libstdc++-compat libraries installed).Floola didn't find iPod in its database and I had to enter required generation (using info from wikipedia) and fwid (16 digit number from "sudo /sbin/lsusb -v | grep -i Serial"). Floola tried to open iPod with this info, but it doesn't help and it closed with warni…