Nicholas Christopoulos Personal Site
Nicholas Christopoulos, Curriculum Vitae

Curriculum Vitae

Summary

Nicholas Christopoulos

Title
Programmer/Analyst
Location
Athens, Greece
Birth date
March, 1971
E-mail address
nereus@freemail.gr

I am writing code for fun. Clear code, small, efficient and elegant is what I like.

Twelve years old, I loved physics, I had already used screwdrivers in various toys and machines, and I had talent in sketch too. Soon I got my first home computer, a TI-99/4A, a 16 bit micro-computer @ 3 MHz but with weird hardware. From that time I found the programming as the most interesting thing in the world. I realised that I could create anything that I could imagine; of course virtual, but without cost and hardware parts. I started with TI BASIC at 1983, TI Extended BASIC, TI Graphics BASIC, continued to TMS9900 machine language, well a few steps of this since I had to reload from cassette tape the editor/debugger (5-10 mins) after each crash. During this time I published my first program for the Greek TI Club, a game for two players with two dogs that ran depending on how quickly the players pressed the relevant keys.

In 1985 I got an Amstrad CPC6128, nice machine with its own monochrome monitor, no more TV and FLOPPY DISK DRIVE!. It was a candy store... I learned Locomotive BASIC, and later Z80 assembly. In this time I published my second program for ΕΠΤΑ journal. This machine could run CP/M Plus (v3.1), and the older 2.2, so I learned TP (Turbo Pascal) v3.0, and tried Lattice C. TP3 was runs smoothly and this compiler was produced amazing machine code.

In TP for CP/M, I wrote my firsts linked lists, all kinds, except binary tree. Of course, dynamic memory allocation has no meaning in 64KB, pointers sizes and fragmentation is not an acceptable cost. As for Lattice C was unacceptable slow, and produced worst binary code.

Finally at 1988, I got my first PC, an Amstrad PC1512. In DOS I could run and learn Turbo C and 8086/8088 assembly... During that age I finished the [technical] high school (ΤΕΛ) with speciality in electronics. I was played with several kits, I had even a FM radio transmitter based on EL504 tube.

September of 1988, I moved to Athens and I got a new PC, this time with EGA and colour monitor, 640KB RAM and 20MB HDD. I studied at ΕΛ.ΚΕ.ΠΑ., Programming & System Analysis.

While this school does not offer too much, the teachers did. They was skilled people with many years of experience. It was a kind of university for software engineering at this time. From the first month they put me in the high-level class. I studied theory on structured programming, data algorithms, OSes, networks, databases and such things. I learned COBOL and dBase. At home I continued with expert Systems (A.I. of this time). Finally I finish it the next year with 94/100.

During this years I got my first modem, an Amigo (Hayes compatible) at 1200 BAUDs. This era internet does not existed, there was several BBSes like Acrobase and WarGames. The communication with the rest Europe was through FidoNet.

18 yo, with 3 assemblies, Pascal (was rule in this time), C (the successor) and dBase... a lot of programs like tree with virtual memory implementation, compiler, interpreters, mouse driver for keyboard-only apps, that i had made just for me... I had already several job proposals. I preferred to work at LH Λογισμική, it was required advanced programming level and was in good area close to my home.

1989, BRIEF text editor - loving it even now...

1995, Slackware 2.3 with 1.2.8 Kernel, my primary distro.

Hobbies

Physics, philosophy, history, politics, evolution, science in general, socialistic and alternative economics, UNIX, mocking Microsoft programmers and their supposed code. I enjoy to terrorise people with MFC code and its design.

Experience

LH Logismiki
September 1989 – 2011
http://www.lhlogismiki.gr

Software engineering and development.

Other
Several secondary projects for small companies, mostly database applications… Plus, a few free GPL/FDL projects.

Retired
August 2011 – Present
I do not work anymore due to health problems.

Skills (master)
ANSI C, Several C/C++ including GNU, Visual and Borland, POSIX (Unix), Win32, SQL, HTML/CSS, STL, TCP/IP (sockets), VCL.

More skills
(Xe)LaTeX, x86+IA32 Assembly (TASM/MASM/any), other assemblies, Several PASCALs including Delphi and Lazarus(FPC), AWK, PHP, Java, MySQL, SQLite3, MFC, OpenGL, SDL, Regex/PCRE, Several BASICs including Visual, COBOL, Perl, XF86, dBase, Clipper, Codebase, FLTK, XML, *roff, JavaScript, jQuery …

Projects

SmallBasic (GPL)

GPL, May 2000
http://smallbasic.sourceforge.net

I created and developed the SmallBASIC project, basically for my new Palm IIIx, but I designed it to support any platform even ANSI/ASCII terminal (LINE command works with character cells).

SmallBASIC works already on the following platforms:

PalmOS 3.2+, PalmOS5
POSIX Unices, BSD, Linux
drivers for SDL, SVGALib, terminal(ANSI/ASCII), Framebuffer, XWindows, FLTK
MSDOS, FreeDOS
native, djgpp
Win32
GDI (Borland C/C++), console, SDL/Cygwin, FLTK
Franklin ebookman
Helio/VTOS
Android
Nokia/Symbian

SmallBASIC is intended to support the same sorts of applications supported by GW-BASIC and QBASIC on the IBM PC, with support for drawing Graphic Primitives to the screen, creating sounds, String Manipulation, and displaying text in various fonts. SmallBASIC is also intended as a tool for mathematics, with built-in functions for Unit conversion, Algebra, Matrix math, Trigonometry, Statistics, and for two and three dimensional Equation Graphing.

The amazing with this project is that the Palm has only 32kb code segment. Of course smallbasic uses multi-segments technique. Another trouble is that the PalmOS has no filesystem (it uses databases), but Smallbasic emulates hierarchical file system over the databases. PalmOS serial I/O, TCP/UDP sockets and software capabilities - like memopad and pdoc format - are emulated by using file I/O commands.

Other programming languages for Palm OS that are written in SmallBASIC include Exclamation and Brainfuck.

SmallBASIC articles:

SmallBASIC ver 0.9.x manual (pdf)
wikipedia.org article
mindteq.com
ascii-world
PC Advisor (UK)

Included in Tiny Core Linux: smallbasic-cli.tcz and smallbasic-gui.tcz packages.

After 2004, SmallBASIC supported and continued by Chris Warren-Smith.

ANSI C

ΦΟΙΝΙΞ

LH Logismiki, September 1988

Real-time business management, logistics & financial software package for DOS with or without Novell network. This was really big project and soon was become the third best financial package of the Greek market, used even in ministries. After few years, the project rights was given to another company since K. Tseronis (CEO) was leaved from LH Logismiki.

2 team members: Nicholas Christopoulos, Kyriakos Tseronis.

Clipper, C, Assembly x86

LHQBLib

LH Logismiki, 1992

Advanced VESA Graphics library for DOS, QB & C. All VESA resolutions was supported and there was assembly driver for each color mode (256,32K,64K,true-color). This library includes and extended/expanded memory manager. Also a lot pages of documentation.

500kb source in assembly x86.
This was impressive since I finished it in 2 months.

Used in FESPA for DOS.

x86 Assembly

glSid

LH Logismiki, 2008

3D geometry and photo-realistic rendering script language with 3D-viewer. Used as independent application, or static linked library for use within other applications.

  • BASIC like syntax.
  • All types of steel market construction irons.
  • All types of connections between irons.
  • Auto calculation of shapes with or without holes.
  • 2 Cameras (walk and world).
C/C++, OpenGL

FePla

LH Logismiki, 2011
http://www.lhlogismiki.gr/proionta/statika/fepla-diatrisi/fepla-genika/

Calculation program plates with FEM.

4 team members:
Nicholas Christopoulos, Apostolis Tsigkros, Spyros Livieratos, Vasilis Giannakos.

FePla Videos

Borland C/C++, VCL, OpenGL/glSid

CONNECTIONS OF STEEL MEMBERS

LH Logismiki, 2009
http://www.lhlogismiki.gr/proionta/statika/fespa/metallika-syndeseis/

Everything except the calculations of Civ. Eng.

Video

4 team members:
Nicholas Christopoulos, Apostolis Tsigkros, John Vlachoyiannis, Dimitris Nellas.

Borland C/C++ 5/6, VCL, OpenGL/glSid

Τεύχος (Report)

LH Logismiki, 1998

Civil engineer report application with:

  • Texinfo (Texinfo is the official documentation format of the GNU project) compatible syntax.
  • Preprocessor and macro language.
  • VB module to extract results to teyxos files (like console).
  • Exponentially filters (max depth level = 8).
  • Diagrams & other graphics zones.
  • Custom drawing zone (HPGL style, more advanced).
  • Full mathematical notations (almost same as TeX). Quality is less because of fonts.
  • Unlimited upgradable features
    (adding new graphics/text objects on pages, hierarchical or not, w/o touching the code).
  • Editor per type of zone (table, bitmap, text, mathematics, etc).
  • Automatic and custom multiple indeces, citing and bibliography...
  • Plain dot-matrix printer support (w/o driver).
  • Export tables to HTML, CSV and TEKTON.
  • Export the whole book in 8bit ASCII text file and LaTeX (no good results in LaTeX, but still you can use your table).
  • Works as independent application, embedded application,
    static library, dynamic library,
    mini-static executable ('erv', shows error messages inside TEKTON), NO OLE.
  • ~100 pages of documentation written in Teyxos Script and exported in PDF (property of LH Logismiki).

60k lines of C/C++ code.
20 sec loading time for 6000 pages using filters and calculating printer preview too. @2.4GHz PC

Video in English part 1/2
Video in English part 2/2

You can have TeX quality but it will work for 200-400 pages on one-core 3GHz PC without waiting... The manual of Τεύχος is a good example. For the CE's large reports - a few thousands pages - are used mostly fast objects (automatic pre-calculated) and small fonts sizes that reduces the quality.

Borland C/C++ 5-6, VCL, x86 Assembly

Promet

LH Logismiki, 1998

Surfaces calculations of Architecture designs with or without input from TEKTON.
Excel style UI and expressions.

Visual BASIC 4-6

Θερμομόνωση

LH Logismiki, 1997

Design insulation with or without input from TEKTON.

2 team members: Nicholas Christopoulos, Apostolis Tsigkros.

Visual C++ 5/6

Τοίχος Αντιστήριξης

LH Logismiki, 1998
http://www.lhlogismiki.gr/proionta/statika/toixos-antistiriksis/

Retaining wall.

2 team members: Nicholas Christopoulos, Apostolis Tsigkros.

Visual BASIC, Win32 API

Αμοιβές Πολ. Μηχ.

LH Logismiki, 2002

Logistics for Civ. Eng.

3 team members: Nicholas Christopoulos, Apostolis Tsigkros, John Vlachoyiannis.

Borland C/C++

LHSQL

LH Logismiki, 2005

Complex Custom Internal Business Database.
Real time, Customers, Keys, Packages, ... even support call-time recording. Everything company needed to watch. Reports in HTML and/or CSV. A 34 pages pdf analysis included (2004). May web UI would be better solution (for maintenance), but HTML5 wasnt existed.

MySQL, Borland C/C++

BugTrap & App. Releases database subsys

LH Logismiki, 2005

External private database, bug tracking, and version tacking....

MySQL, HTML/CSS, PHP, JS

Autobackup

LH Logismiki, November 2000

Automatic directory tree backup system.

  • Works in background on system 'idle'.
  • Takes backup only changed files.
  • Stores on network or other disk type device.
  • Uses zlib for compression.
This is the default automatic backup of company's source files.
Borland C/C++

arm0nia project

GPL, 2002

Design and development of PM. PM was a module manager that could use anything as files, or graphics, or pointing devices. With only few lines of code could use anything from shell script, jpg, palm-pilot, serial i/o, disk i/o, system information, special h/w drivers. You could read a jpeg and write to .mp3 or printer! with the same code... Unfortunately it was the only part of the project that was finished...
More: http://arm0nia.sourceforge.net/library/index.php

3 team members: Nicholas Christopoulos, Dimitris Koukorabas, John Vlachoyiannis.

GNU C/C++

More...

Dogs (Σκυλοδρομίες), TI Club, 1984
“Dog running” arcade game (2D). Code printed and shared in paper and cassettes by Greek TI Club. TI Extended BASIC
Rally, ΕΠΤΑ Journal, 1986
Rally Game (2D), code printed in the journal. Locomotive BASIC & a bit Z80 Assembly
Physics Autocalc, Free, 1986
Solve all College's courses of physics. The program calculates all possible solutions by the given data. Locomotive BASIC
EGA/VGAFonts (free), LH Logismiki, 1988
DOS TSR (terminate and stay resident) EGA/VGA Greek fonts for adapters without Greek in their ROM. x86 Assembly
Demos, Argos, 1990
Database application for City's services. Clipper
Church, Argos, 1991
Database application for Churches. financial, inventory... Clipper
Graphics for dot-matrix printers, Argos, 1991
Printing graphics (mostly custom companies logos) on dot-matrix printers. Actually dot-matrix graphics you can do with GWBasic, but there was several failures on heavy works and I was needed to have under control, the controller. x86 Assembly
Cargo, S&K, 1992
Database application (Inventory and sales)... Used on ships sales PCs.. Clipper
Greek fonts for linux console (ELOT 928), GPL, 1995
Greek fonts for linux console (ELOT 928/ISO8859-7)
BOARD, LH Logismiki, September 1997
Automatic message exchange system for local networks. This application was the ‘bulletin board’ of LH's development team. Visual C/C++, Win32 API
Greek Keyboard for window-maker (X Windows), GPL, 1997
WindowMaker applet with keyboard "driver"... based on ‘xgrk’ of Spiros Ioannou. C, XF86
Greek philosophy ‘fortune’ file, GPL, 1998
Diogenes, Democritus, Heraclitus, Socrates. Data file for the BSD ‘fortune’ and the KDE's ‘amor’.
Σεισμόπληκτα 99, LH Logismiki, 1999
Application (according the ministry) to record Seismic problematic buildings, after the big earthquake in Athens at 1999. Two weeks work, plus one for beta test... Visual Basic 4
Το HTML με απλά λόγια, FDL, September 2003
Greek guide for HTML; for dummies
LaTeX for Barbarians, FDL, January 2004
Greek guide for LaTeX; for dummies LaTeX

More, more...

Several more applications, utilities, libraries, articles, tutorials, ROM coocking, experiments... including cracking articles, checking network security, 3D code & document (DOS/TP4), smart IRC talking bot (diobot6), custom android ROMs (I hate google play services), ...