Contacts

Projects

Android
Multilanguage dictionary shell application

Dictionary shell which allows to add multilanguage dictionary files in Lingvo DSL format and search across added dictionaries in various language directions.

DSL is a text file with specific markup: a headword followed by article body indented with spaces or tabs. An example: SampleDSL.


Project features

  • read and index dictionaries in DSL format (or compressed DSL.DZ variation)
  • support for languages from different families: Latin/European, Cyrillic, Arabic, CJK (Chinese, Japanese, Korean) and more
  • select a language pair from the dropdown list
  • search for a word translation within the selected languages
  • resulting article contains word translation from all the dictionaries in the selected language pair
  • output formatted dictionary article
  • zoom article content with text wrapping to allow comfortable viewing
  • navigate through articles using internal links
  • manage added dictionaries (change order in article, remove and view main information)
  • save and view search history ordering it by a set of conditions
  • change settings such as main storage directory, max results to show, article font size

Development features

  • scanning of dictionary files in DSL format, indexing all the words for fast search and storing of the index files in the main directory
  • use of internal database to store dictionary paths and main information
  • use of background tasks for the indexing and search to prevent freezing of the main UI thread
  • development of native (C++) library with memory efficient processing of dictionary files and indexes
  • use of JNI (Android NDK) to integrate native library into the app
  • multiple encodings support using the UTF-8 and UTF-32 charsets
  • use of a custom markup parser to create HTML code for the articles
  • custom CSS stylesheet file to easily control the look of the articles
  • customized components for WebView with comfortable scrollbar and Spinner as language selector

Instructions

  • start the app and wait for the demo data to load for the first time
  • select a language direction from available items in the list
  • type a word and select a result in the list below
  • view the article with the corresponding translation
Home Dictionary Image1
Word Search
Home Dictionary Image2
Article
Home Dictionary Image3
Settings


Home Dictionary Image4
Dict Manager
Home Dictionary Image5
Dict Scanner
Home Dictionary Image6
Search History
Home Dictionary Image7
Abbreviations

Sample based drum metronome and sequencer

The app mainly serves as a metronome with quick tempo adjustments and beat visualization.

But also allows to change the played pattern and number of bars in a sound loop.

During the playback it shows audio spectrum of the currently played section.


Project features

  • adjustable tempo with buttons and presets
  • metronome counters: number of bars played, global time and loop time duration
  • handy device volume control
  • color accent for active beat in a 4/4 loop
  • audio spectrum visualization during the playback
  • customizable layout via Settings
  • pattern/bars editor allowing to copy/paste, clear, remove, add, duplicate bars and navigate between them
  • 4x16 sequencer allows to create various rhythm patterns
  • live steps editing

Development features

  • use of custom widgets and direct surface painting (TempoPresets, Sequencer, Spectrum)
  • direct audio I/O with AudioTrack technology
  • raw audio data reading from external WAVE files using native (C++) library in Android NDK implementation
  • separate audio thread which constantly writes audio data (samples) to the buffer during the loop playback
  • application of Fast Fourier Transform (FFT) C++ implementation for audio data analysis and spectrum data generation
  • conversion of FFT data to logarithmic frequency scale which reflects more precisely how the sound is perceived by human ear

Instructions

  • select a tempo using buttons or predefined presets
  • press the green button below to play
  • edit layout visibility in the Settings as well as spectrum Visualization parameters
  • open Sound Editor to edit metronome pattern via 16-step sequencer and bars navigator
  • the sequencer has 4 channels/instruments to create a loop: Kick Drum, Snare Drum, Hihat Closed, Hihat Open
  • the toolbar buttons allow to copy and paste bar contents (steps), clear/remove/add bars
  • to duplicate a bar long click the Add button
  • max bars number is 20
  • on smaller screens put the app in the landscape orientation for more comfortable step editing
Metronomix Image1
Metronomix Image2
Metronomix Image3
Metronomix Image4
Metronomix Image5
Metronomix Image6

Soft keyboard for small screens

Project features

  • fills the whole screen width with the keys to print text comfortably
  • switch between two languages
  • wide set of symbols
  • keys for cursor moving and text selection
  • A-Z order of keys
  • reduces typing errors

Instructions

  • Hold Shift to enable all caps
  • Hold 123 to show text editing panel
  • Hold Language key to show keyboard of extended characters
WrapKeyboard Image1 WrapKeyboard Image2 WrapKeyboard Image3 WrapKeyboard Image4
WrapKeyboard Image5 WrapKeyboard Image6

Simple alarm with handy controls

Project features

  • easy-to-use interface
  • random sound from a folder
  • customizable time presets

Development features

  • customized time selector based on standard Android alarm clock widget
  • colored LinearLayout widgets used as buttons and togglers
  • use of MediaPlayer and BroadcastReceiver components as the app core

Instructions

  • tap on the time selector and enter alarm time
  • click on the top sound selector (below the alarm clock) to select alarm sound
  • click on the bottom selector to select a folder with sounds (active sound will be randomly chosen from the folder)
  • press the green button to start the alarm
  • long click on a preset on the right side to save it, click once to load it
PlainAlarm Image1 PlainAlarm Image2

Quick access to frequently used information

Project features

  • includes 3 sections to store different types of information
  • the Info tab allows to show any data like phone numbers, emails, addresses and copy it to the clipboard
  • the Notes part gives an ability to add any number of custom notes to store important information
  • the Quick Note section shows a single note with information that needs to be accessed frequently
  • a built-in editor allows to change data in each section and import text from an external file
  • possibility to import/export a database with all the information to backup/restore/transfer the data

Development features

  • use of ViewPager component with tabs to easily switch between sections
  • use of a custom FileChooser dialog to select a text file or database to import data from
  • database management using the SQLiteOpenHelper class which works with the SQLite database technology
  • app style customization to get a desired interface look & feel
  • customization of the ListView widget items

Instructions

  • To edit text in any section click on section header when it's activated. This will open the Editor
  • The Editor import text button (arrow down) is used to select a text file from the filesystem
  • Long press on any button to show its tooltip
QuickInfo Image1 QuickInfo Image1 QuickInfo Image1 QuickInfo Image1

Shows available memory in the status bar

Development features

  • the RAM notification is updated by a background service every second
  • the amount of memory is shown using the digits image composition via XML drawable files
RAM Status Image1

Multilanguage conjugation verbal forms with extensive offline database

Several applications were designed for different languages:


Project features

  • search autocompletion which may be turned on/off
  • colored style for different verbal moods
  • wrapping of article content within the screen width
  • buttons to navigate to the next/previous verbal mood

Development features

  • use of a SQLite database generated with a separate Qt project with all verb data
  • use of HTML and CSS template files to easily change the article look
  • use of extended Unicode encoding for diacritics in european languages
  • manually adjusted autocompletion feature which is toggled with a checkbox button
  • javascript injection for the navigation buttons
  • use of background non-blocking task for the verb search action

Instructions

  • when the app launches for the first time wait until it prepares the database with all verbs
  • next launches will be faster
  • type a verb in the text field (the app requires complete verb by default)
  • the autocompletion requires at least 3 first letters of a verb to be typed, then you may select a result from the list
Verb Conjugator Image1 Verb Conjugator Image1 Verb Conjugator Image1
Qt / C++
Color selector with HSV, RGB, CMYK, Hex color models

Project features

  • Hue, Saturation, Value selectors
  • conversion of selected color to text represented in the text fields
  • buttons to copy color values and paste a Hex value
  • color sliders and spinners for 3 color models (HSV, RGB, CMYK)

Development features

  • developed using the MVC design pattern
  • implementation of custom graphics to draw sliders and the selector pointer
  • extensive use of mouse events (press, drag, wheel press & drag, scroll)
  • development of custom UI widgets

Instructions

  • select a color from the selectors
  • pressing the buttons near text fields copies the corresponding values to the clipboard (the values are comma separated)
  • Paste Hex button inserts a hex color value from the clipboard (with or without leading #)
  • color values may be pasted in any text field which will immediately reflect the color in the left area
  • the values may be pasted with or without commas between them
  • each color component (red, saturation, ...) can be incremented/decremented using up/down arrows on the keyboard, just put the cursor near the corresponding component
  • these components can also be changed via mouse scrolling highlighting the corresponding text
  • mouse wheel may be used inside color selectors to gradually change color components (check the shortcuts part)
  • the main window may be dragged by holding any window area, except the color selectors
  • to open the Sliders subwindow press mouse wheel on the color sample or use Ctrl+S shortcut
  • the sliders reflect the corresponding color components immediately and may also be changed separately
  • Shortcuts:
    • F1 - F5 - copy color values (HSV, RGB, CMYK, Hex, # Hex)
    • F6 - paste Hex value
    • Shift+F1 - Shift+F4 - focus text fields (HSV, RGB, CMYK, Hex)
    • Ctrl+S - open/close Sliders window
    • Esc or mouse wheel press - exit
    • mouse wheel press on the color sample - open/close Sliders window
    • left/right mouse click on the color sample - copy Hex value (without/with leading #)
    • mouse scroll on the vertical Hue selector - change the Hue value by 1
    • mouse scroll on the rectangular Saturation/Value selector - change Value component by 1, with Shift - change Saturation component
    • mouse scroll with Ctrl - change values by 10
QtColorPicker Image1 QtColorPicker Image1

Saves filetree structure to external storage

The program scans files and subfolders and saves the resulting tree into selected formats (Text, HTML).

For testing purposes the project was created using different technologies:


Project features

  • filter files by extension
  • filter directories by name
  • export files/directories list to a text file and to a tree structure (JSON)
  • the exported tree can be viewed and navigated with the Tree Viewer tool or as a HTML page
  • auto save/restore last used settings when the program exits/starts
  • fast processing, depends on the number of files to scan not on the total size of the scanned directory
  • useful for creating virtual tree of directory structure to share with others without copying full file tree

Development features

  • recursive filesystem scanning
  • use of a separate thread for background scanning
  • use of progress bar to show current percent of scanned folders
  • use of JSON format to store directory structure
  • implementation of a custom JSON serializer/deserializer to store/retrieve data
  • use of MVC design pattern
  • implementation of custom TreeModel class for the Tree Viewer subwindow
  • use of a custom recursive tree structure

Instructions

  • enter a directory path to scan
  • enter file/directory filters
  • select export type (text - to a text file; tree - to a JSON and HTML files
  • enter an export name which will be given to the resulting files
  • press Scan and wait
  • check the export folder for the result
  • use Tree View to navigate the exported tree, select a JSON file to show its structure
ListFolders Image1 ListFolders Image1 ListFolders Image1

Android file manager

Project features

  • browse and navigate an Android device filesystem
  • get basic file/folder information
  • copy files from Android
  • navigate using Left/Right arrows
  • no need of busybox nor root
  • works independently of USB tethering (when Windows doesn't allow to transfer files)

Development features

  • use of basic adb commands: shell ls, pull
  • customized table view
  • work with the QProcess class
  • encoding fixes to display file/folder names containing non-latin characters
  • smart size units formatting (B, KB, MB, GB)
  • use of a background thread to show copy progress

Instructions

  • enter a Path on the device and Go or start with Root
  • navigate to a folder, select file(s)
  • enter destination path on your filesystem or leave it empty to copy files to the default location (Downloads folder in the program main directory)
  • press Copy and check the progress below
  • text area below reflects the system output of the adb ls command
  • the program needs adb.exe from the Android SDK Platform Tools, it has an executable by default, if it doesn't work make sure you have it in your Path variable
Android Manager Image1 Android Manager Image1

Splits text files to smaller ones by lines

Project features

  • allows to select an input file, output directory and output filename pattern
  • allows to set lines count which indicate the maximum lines number the resulting subfiles will contain
  • supports multiple encodings for input file (UTF8, UTF16-LE, UTF16-BE)

Development features

  • correct functioning with paths containing forward and backslashes
  • the core functionality uses simple C++ operations
  • automatic creation of needed folders during processing

Instructions

  • select an input text file
  • select or paste an output folder path or enter a folder name (it will be created in the program main directory)
  • enter file name pattern for output splitted files or leave it empty (output name will be extracted from the input file name)
  • enter lines count by which the input file will be splitted
  • press Run and wait until it finishes, then check the output folder for splitted files
File Splitter Image1

Live editing of the Path Environment Variable

Project features

  • saves text from the edit field to the Path variable
  • updates the environment so that new processes use the changed Path
  • comfortable work with F1/F2 shortcuts
  • displays Path keys in separate lines for quick and easy editing

Development features

  • read/write Windows Registry keys using Qt and C++ instruments
  • send a broadcast message to all windows to update the Path value immediately

Instructions

  • F1 - load Path to the program
  • F2 - save the Path variable from the text area
  • Esc - exit
Path Edit Image1

Libraries used in Android projects as NDK modules.


  • audio_engine library for the Metronomics project. Extracts raw audio data from WAVE files and calculates FFT data for spectrum visualization (using the fftw external library).
  • dsl_library for the Home Dictionary project. Reads DSL (or compressed DSL.DZ) dictionary files, generates search indexes, parses articles and outputs HTML content of an article.
Web Sites

Tricks and tutorials on different computer topics based on my own computer experience.

Created to practice the Wordpress framework, its themes and plugins development.

Also helps me to find needed information I use in my PC life.


Project features

  • advices (tweaks) are divided by categories: Windows, Programs, etc.
  • high-quality screenshots for more comfortable site navigation
  • detailed steps explanation with example images

Development features

  • created a custom Wordpress responsive theme Starter Point
  • created additional plugins for the front-end and back-end to help editing and organizing the contents
  • created colored categories within the theme
  • multi-language support
  • program code highlight using a customly modified Prism highlighter plugin, [plugin source] [example]
PC Advice Image1 PC Advice Image2

A simple interpretation of a blog allowing users to register and

add new articles which will be shown in one common category on the main page.

The site was created to practice the Joomla! CMS development.


Project features

  • register a new user and edit its own profile
  • create and edit articles
  • filter articles list by author, sort by date, title, author, [example]
  • change articles-per-page parameter

Development features

  • created a custom Joomla responsive theme
  • added an authors filter on the front-end
  • added an articles-per-page filter on the front-end
  • added additional columns in the List view table
  • added a List/Blog view switcher in the user's own articles, [example]
  • created additional action buttons to Publish, Unpublish, Delete articles in the user's articles page
  • created a top fixed menu with inline login form, which was promoted to a separate Joomla plugin, [example]
Simple Blog Image1 Simple Blog Image2
Simple Blog Image3 Simple Blog Image3
Wordpress

A simple responsive Wordpress theme.

It is lightweight and highly customizable.

The full description with all features may be seen in the Readme file.

The theme was first developed for the PC Advice website and extended for a wider use.


Project features

  • categories are organized as a table of post titles, [example]
  • two types of menu: header and footer, [example]
  • colored categories, [example]
  • customizer options allow to choose one of the predefined color schemes or change custom theme colors
  • add left/right sidebar or disable it to show the content in one column
  • possibility to add custom CSS to pages, [example]

Development features

  • extended Customizer allows to change colors, add custom CSS text, adds Most viewed posts option for the main page
  • used a set of Javascript plugins: Ace Editor, LazyLoad, Superfish, Masonry, Enquire
  • multilanguage support using the Poedit application
  • use of the LESS technology for effective and easy CSS compilation
  • development of a custom Theme Options page, [example]
  • development of a custom content type which shows articles in a table (Category view)
Starter Point Image1 Starter Point Image1
Starter Point Image1 Starter Point Image1

A plugin which adds the HTML tab to the post editor which shows the raw source of the page and is highlighted with the Ace Editor.


Project features

  • syntax highlighting
  • line numbers
  • line highlighting
  • highlight of matching tags and brackets
  • syntax checking
  • multicursor
  • Ace Editor keyboard shortcuts
  • search box
HTML Post Editor Image1
HTML view, line and matching tag highlight
HTML Post Editor Image1
Multicursor and selected word occurrences
HTML Post Editor Image1
Search box in RegEx mode

A plugin which adds the Pre and Code buttons to the TinyMCE post editor toolbar with customizable shortcuts.


Project features

  • the Pre button toggles the preformatted style (<pre> tag)
  • the Code button toggles the code style (<code> tag)

Development features

  • custom shortcuts for buttons in the posts editor toolbar
  • plugin settings in the admin panel allowing to change shortcuts by pressing a key combination
TinyMCE Code Formatting Image1
Pre and Code buttons (two last buttons)

TinyMCE Code Formatting Image1
Shortcuts settings in the plugin options
Joomla

A plugin which adds an advanced menu for the Joomla 3 Admin side.

Based on the default mod_menu module.


Project features

  • allows to open menu items on mouse hover action (instead of clicking)
  • select existing components configurations from the menu
  • view all the front-end menu items in the Menus item without entering the Menus component page
  • view the list of plugin folders and appropriate plugins inside them
  • view the list of the Styles and Templates views
  • show the status of different components, plugins, menu items (disabled/enabled) with colors
  • the menu is always active (the default deactivates when editing an article)
Advanced Admin Menu Image1 Advanced Admin Menu Image1
Advanced Admin Menu Image1

Firefox Addons

The addons are small plugins for the Firefox browser that give additional functionality to the default browser features.

The source code uses mainly Javascript, CSS, Firefox specific API and XUL markup.

Desktop Firefox

Adds a Bookmarks sidebar button to the Toolbar Palette.

The button toggles the bookmarks panel on the left (equivalent to Ctrl+B shortcut).

Primarily created for Firefox 29+ which doesn't have a button with this functionality.


Development features

  • addon installs without browser restart
  • a simple checkbox button implementation which uses default browser command to open the panel
  • a customized icon binded with a CSS style sheet
Bookmarks Sidebar Button Image1 Bookmarks Sidebar Button Image1

Adds a Regex checkbox to the findbar in Firefox 25+.

This allows to search text on a page using Regular expressions.


Project features

  • customized colors for text and search background for more comfortable use
  • additional shortcuts to close/open the search toolbar and for backward search
  • exact number of matches (instead of the default "100+" message)
  • find-all functionality with regular expressions
  • search in plain text and inside edit/emebedded elements (input, textarea, iframe)

Development features

  • integration into the standard search toolbar using XML binding technology
  • recursive document scanning for the forward and backward text search
  • intention to minimize possible errors in the incorrect use of regex queries
  • custom text selection model
  • exploration of the Firefox source code
Regex Find Image1 Regex Find Image1 Regex Find Image1

The addon provides additional keyboard shortcuts to close unneeded browser tabs.


Project features

  • the shortcut Alt-W - closes other tabs except the current one
  • the shortcut Alt-Shift-F1 - closes all tabs to the left of the current one
  • the shortcut Alt-Shift-F2 - closes all tabs to the right of the current one

Development features

  • implementation of a custom jQuery-like code structure for easier use of Javascript methods
  • use of standard Firefox API and custom algorithms for the provided actions

Adds buttons to the Toolbar that toggle Images and Javascript loading when a webpage is opened.


Development features

  • development of two buttons which act like checkboxes and change its color on toggling
  • implementation of preference observer which is used to display correct state of buttons in multiple browser windows
Toggle Images and JS Image1 Toggle Images and JS Image1

This addon adds shortcuts for bookmarks in the Bookmarks Toolbar.

This allows to open frequently used bookmarks much faster and more comfortable.


Project features

  • Alt+1..9,0 shortcuts open the first 10 bookmarks in the same tab
  • Alt+Shift+1..9,0 open first 10 bookmarks in a new tab
  • opens bookmarks independently of the visibility of the Bookmarks Toolbar

Firefox for Android

Adds a customizable homepage panel "My Panel" with the grid layout.


Project features

  • loads any number of custom links with/without titles
  • loaded links may be used like bookmarks to open frequently used pages
  • possibility load URLs from a text file

Development features

  • use of a file picker to select a text file with links
  • use of a stock file IO provided by the Firefox Android API
  • use of the XMLHTTPRequest class to asynchronously retrieve text data from an input file
My Panel Image1 My Panel Image1

Adds the Export/Import Tabs menu items.

Addons are migrated to the WebExtensions standard from the old Tabs Backup extension.

These commands allow to save a text file with current tabs' addresses and then restore the opened tabs from that file.


Project features

  • Export Tabs - saves tabs' addresses to a text file in the "/sdcard/Download" folder
  • Import Tabs - loads URLs taken from a text file opened in the browser

Adds the Copy/Paste buttons to the URL bar.


Project features

  • Copy Location command - copies current page address
  • Paste And Go command - pastes the clipboard contents into the URL bar and goes to its address
  • Paste In New Tab command - creates a new tab and goes to the location taken from the clipboard

Adds a checkbox which toggles the possibility to open all links in new tabs.

The addon works for already opened tabs and new ones.

Misc

Written in Free Pascal language with use of the Lazarus IDE the source code compiles perfectly after a couple of adjustments.

With the knowledge of Pascal syntax and Delphi principles it's relatively easy to study the structure of the project to be able to extend it and add new necessary features, like menu items, custom commands, colors and shortcuts.


So I forked the main SVN repository and with a list of desired enhancements began to modify the code for my everyday needs.

Thanks to the program creator (alexx2000) and all the contributors for this great instument which I used for several years now and very happy to be able to do things comfortably and fast!


In short about the original project: it's a 2-panel file manager with tabs, toolbars and many filesystem utilities, fast navigation (Left-Right arrows for directory enter/exit is one of my favourite) and customizable parameters.

Some of tools I use: internal viewer (text, hex, image modes), multirename, ADB plugin to navigate an Android device filesystem, quick search and filter, inline archive view/extract/pack (all in the same panel, not only ZIP or RAR, but other zip-like files, APK, WAR, EAR, XPI), filename/filepath copy, space calculation for all folders, custom shortcuts for external system commands (like commit changes to GitHub, load a folder to Sublime Text).


Next I describe my contribution to the project.


Project features

  • open drive by index command (default keys Alt+1..9)
  • activate tab by index (default Ctrl+0..9)
  • maximize active panel (F11) to easily view long filenames
  • restore all tabs to their initial position without restart
  • free sorting mode (no sorting for free files positioning)
  • multirename enhancement which allows to edit names of selected files in an external text editor
  • parameters for copy command which allow to copy only folders without content
  • alias mode which uses short commands to navigate faster to a directory or execute other system commands
  • extended information in copy/move dialogs: current/total files, current/total amount of data transferred (in MB)
  • additional column that shows files and folders number in each directory when calculating occupied space
  • extended New Folder dialog to create a list of folders in one command
  • removed '..' item that allowed to go to the parent folder (for faster navigation, now use Left arrow to exit current directory)
  • increased tabs height
  • converted Calculate Space dialog to non-modal type so it doesn't block main window and added Copy button to it
  • select all folders command (similar to select all files with the same extension)
Double Commander Rebuild Image1
Maximized Panel
Double Commander Rebuild Image2
Files/Folders Count
Double Commander Rebuild Image3
External Rename
Double Commander Rebuild Image4
Copy Progress
Double Commander Rebuild Image5
Extended Folder Statistics
Double Commander Rebuild Image6
Multi-folder Creation

A web tools for number formats dynamic conversion (dec/hex/bin).

Written with AngularJS.


Project features

  • copy values
  • format hex/bin text
  • show bytes-bits visualization
  • set/unset each bit
  • reference number tables
NumberConverter Image1

Utilities for various programming tasks:

  • filesystem manipulation
  • text analysis and edition
  • internet downloads
  • data analysis

Examples:

  • addons_download - downloader for Firefox addons by direct URLs
  • cue_split - split FLAC audio files with a CUE list
  • ftp_list - get a list of files in FTP directories
  • get_java_imports - extract Java imports from a directory
  • pdf_merge - combine multiple PDF or image files

Sublime Text editor specific scripts written in Python with Sublime API.

Used mainly for text editing and interface control as well as file operations with a handy text input in the active tab.


Description of some scripts:

  • convert_sql - transforms SQL INSERT commands to UPDATE using the selected text
  • create_files - creates multiple files with some content
  • find_duplicated_lines - shows text duplicates in a new tab
  • generate_from_template - creates text filling data into a static template
  • generate_java_getters - creates getter/setter methods for class fields in Java
  • generate_lines - creates new lines following a pattern
  • get_method_call_signature - extracts method call from its definition
  • open_all_files - opens files in tabs under a selected folder in the sidebar
  • open_project_in_new_window - clones active project window with the same project folder
  • paste_with_commas - pastes a list of lines separated by commas (with/without quotes)
  • separate_variable - creates separate lines for a variable definition and its usage in a statement
  • subtract_lines - finds a difference between 2 lists of lines (in files or directly in the editor tabs)
  • unindent_resursive - reduces a nested block indentation by the same amount for all nested levels
  • view_as_hex - converts all the text to hex codepoints

A theme for Sublime Text editor.

A comfortable design and layout with dark color scheme, filetype icon in the sidebar, different styles for different tab states.

The core of theme development is modification of specific API keys in JSON- and XML-structured control files.

NorberTheme Image1