Projects

Untitled

IMSH - Image Processing Shell Haskell Fitting Demo Haskell text formatter Awk literate programming tool HMI pybase nanoLP - General LP Tool TinyBSD based installer AVR timers support ypweb LP tool SWI Prolog bindings QBE1T TCLP - Tcl LP Tool HMC6343 demo Haskell Tags Query

My GitHub: https://github.com/bapcyk
My BitBucket: https://bitbucket.org/bapcyk

Some highlighted my open-source projects available in the Web (2006 ... 2016):

Image processing shell

SIOD Scheme based shell for learning Image Processing algorithms. All algorithms are written in C, shell scripts - on Scheme. Implemented algorithms are:

  • Black and White
  • Greyscale
  • Negative
  • Convolution Matrix
  • Channel Mask
  • Greyscale Approximation
  • Pixalization
  • Median
  • Dilate
  • Erode
  • Set (binary image) operations
  • Morphological edge detection
  • Dithering
  • etc. (see imsh.c)

Image formats are supported via FreeImage Library (png, jpg, gif, bmp, etc.). With scripting tests are simple:

(load "conv.scm")
(define b (img_open "ngirl.jpg"))
(img_conv b emboss-matrix emboss-div emboss-shift)
(img_save b "out/emboss.jpg")

Home URL 1: https://github.com/bapcyk/imsh
Home URL 2 + Wiki: http://chiselapp.com/user/p4v31/repository/imsh/home
Screenshots: there

Haskell Fitting Demo

Fitting of lines, etc. This is a test program for fitting algorithms in Haskell. At the moment is implemented only line fitting with "Least Squares" algorithm. As UI is used Tcl/Tk (ran wish.exe interpreter), all commands are sending to Tcl/Tk interpreter and getting as lines back. Program works in Win32 but must works (after recompilation sure) in Linux/Mac too.

Home URL: https://github.com/bapcyk/hfit

Haskell text formatter

Formetter of text by columns, width, spaces, etc.

Home URL: https://github.com/bapcyk/hcol

HMI Pybase

This is the library of classes for HMI creation. I used it for my small SCADA system. It consists of subsystems:

  • vector graphic based on Gimp's GFig (support affine transformations, labeling, attributes changing, etc.)
  • central net broker, like net directory (discavering of a peers)
  • multi-threading console
  • auto-respawning thread (after failure)
  • virtual root
  • validators
  • config. file parser (with UI)
  • asynchronous Tk
  • Tk dialogs (properties, configfile, login, etc.)

Home URL: https://github.com/bapcyk/pybase
Screenshot: screen1

AWK literate programming tool

LAWK is the simple literate programming tool for personal usage (no collaboration features). For collaboration nanolp can be used ([see] (https://github.com/bapcyk/nanolp)).

Input files are markdown, output - any one. Generation of ctags (for VIM) are supported.

Home URL: https://github.com/bapcyk/lawk

Nanolp - general purpose literate programming tool

Very lightweight and easy-to-use tool for Literate Programming (LP) Main features:

  • OpenOffice/LibreOffice
  • MarkDown/MultiMarkdown
  • Creole
  • reStructuredText
  • TeX/LaTeX
  • Txt2Tags
  • AsciiDoc
  • HTML/XML

Utility is one little Python script and supports:

  • defining command (macros) with placeholders in the body (code chunk)
  • pasting command code chunk
  • different code sources (files, ZIP, FTP, HTTP, shell pipes)
  • defining multiple parts code-chunks
  • joining, 'ending', etc. several code chunks
  • Web publishing
  • globbing command when paste
  • including one file to another (library)
  • auto-detecting of cycles
  • events handling mechanism
  • highly extendible
  • configurable via simple .INI like file
  • works with Python 2.7 - Python 3+
  • works with Unicode (UTF8)
  • ...etc

Home URL: https://github.com/bapcyk/nanolp
Presentation: pdf

TinyBSD based installer of FreeBSD 8 for embedded systems

The installer with live USB memory stick booting possibility. After booting from USB stick an user can select working in "live-USB" mode or to install the system to HDD (core is about 16Mb). Installed system is good for embedded solutions - system is MFS (memory file system) based: so OS works without touching of the HDD. Core system use one partition (16Mb), another partition (32Mb) will be created for user firmware. System has preinstalled mksh (shell), tmux (console multiplexer).

Home URL: http://code.google.com/p/tinybsd-inst/

Timers support for AVR8, AVR128, AVR168P chips on WinAVR

Support of some usuable timers' functions for AVR 8, 128, 168P chips on WinAVR.

Library supports functions as:

  • alarm_action() - setup function as timer handler
  • _alarm() - setup new alarm
  • alarm() - the same but wrapped with cli()/sei()
  • tclock() - like standard C's clock() but use timer number timer.
  • millis() - mseconds from last call
  • micros() - useconds from last call
  • etc...

Home URL: https://github.com/bapcyk/avrtimers

YPWEB - literate programming tool

Very lightweight and easy-to-use tool for Literate Programming (LP)

Home URL: http://code.google.com/p/ypweb/

TCLP - Literate Programming Tool

Very small (about 800Kb) but very flexible Literate Programming (LP) tool, written in Tcl. Features:

  • Document has 'document header' with fields: TITLE, PROJECT, VERSION, DESCRIPTION, AUTHOR, ADDRESS, TAGS, it shown on the top of document.
  • User can define values of this fields (and any other field) and can use defined fields in the document body (even in code chunks). There are special fields: APPNAME, APPVERSION, TIMESTAMP, DATE, TIME.
  • Document has auto-generated TOC (table-of-contents), IT (index-table), ERT (external-references-table). TOC is placed in the start of the document. IT is placed at the end of document. ERT is placed last.
  • TOC is generated automatically for all headers, defined with 'head' command.
  • IT is generated automatically for all code chunks and includes file names of output chunks and lines numbers where to find them.
  • ERT is generated automatically for all external references in the document, defined with 'ref' command and includes back-references to it's usage in the document body.
  • Markup commands includes commands for bold, underlined, italic and monotyped text. Top/bottom indexes are supported also. Markups can be nested.
  • There is special file with abbreviations to be used in section names and acronyms also.
  • User can use acronym in the text from abbreviations file or explicitly with embedded expansion.
  • User can create "vocabularies" - tables of definitions - from abbreviations file or embedded, defined explicitly.
  • There are named counters (auto-incremented) to use in captions and so on.
  • Code chunks are special formatted fragments of source code with lines numbering, optional syntax highlighting (only keywords). Lines can be numbered in continuously manner (with the same counter names) or in independent. User can reference to code lines by chunk name (section) and line number or with defining NAME of code line and usage of this name for referencing.
  • Tables are supported: with attributes (table/row/cell), spanning, nesting.
  • Lists (ordered/unordered) are also supported: with attributes; they can be nested also.
  • User can insert image with 'embed' command. Any fragment of document can be "framed" with 'frame' command. It creates frame with caption (on top/on bottom), name and links (for referencing).
  • There are 2 kinds of citations: inlined and blocked. Citation can have linked URL (shown as "More...")
  • User can insert in document text any previous defined field values, but also variables from environment. Special environment variables is the USER - this is the name of user running tool.
  • There is a special command 'wrap' for wrapping text with any word or quotation symbols, braces, etc.
  • There is a command 'ent' to translate special symbols to HTML entities.
  • There are references:
    • to external URL
    • to header
    • to line of code chunk/named line of code chunk
    • to code chunk
    • to frames
    • to any place of document where user defines own link
  • There are 2 special commands: 'atstart', 'atend'. Mainly used is 'atend' for code generation from code chunks. User can define there what code chunks to be written to output source files (by sections, by glob-pattern of sections). Also is possible to write any free text to output file.
  • Most of created HTML tags has CSS-classes. For all available CSS classes, see 'tclp.css' file. Used CSS file can be defined with command line option.
  • User can add syntax keywords for any other language (for highlighting).

Home URL: http://code.google.com/p/tclp/

HMC6343 demo

Demo application to verify your Honeywell HMC6343 chip or to check some ideas: demo app support programmable console with OOP commands to manage ports, lists all devices and available ports, to configure port, device, to send commands, rewrite EEPROM, make calibration, get sensor measured samples, to see samples as 3D model, to see path/coordinates of sensor in space and so on. HMC6343 protocol is fully supported. For more details see "hlp.html" file. Bonus: all application is about 2,5 Mb only and does not require .NET like original Honeywell demo app and it's portable (no installation is needed - only install drivers or install original Honeywell demo app first).

Reading samples may be filtered, integrated, saved, etc - all of these operations are dataflow-driven and consists of combinable with Tcl commands blocks: even branching is possible!

It's potentially cross-platform (Tcl/Tk starpack).

Home URL: https://github.com/bapcyk/hmcdemo
Screenshot: screen1 screen2 screen3

SWI Prolog bindings

Bindings for SWI Prolog, supports many of terms, backtrack-queries, etc.

Home URL: http://code.google.com/p/swipy/

QBE1T

QBE1T (QBE ONE TABLE/ON TEXT) tool is used for query text files with columns (any delimiters is used) in QBE-subset language. It's more prefer then awk, etc.

Home URL: http://sourceforge.net/projects/qbe1t

Haskell Tags Query Script

Powershell script to create/remove/load/query/navigate Haskell code tags.

Home URL: https://github.com/bapcyk/hstags