Posts

Data Science for Teams (book) - Available now

Image
Data Science for Teams: 20 Lessons from the Fieldwork . The book dives into the everyday efforts of collaboration within the team working in the Data Science (DS) domain, addressing the issues of how to deal with all the unique aspects and challenges within the context of real-world R&D projects. Instead of the scientific aspect of Data Analytics (DA) and Machine Learning (ML), it shifts focus on the team itself and the adhesive substance in between that makes everything work.  Published by Morgan Kaufmann (2025) Paperback ISBN: 9780443364068 / eBook ISBN: 9780443364075 https://shop.elsevier.com/books/data-science-for-teams/georgiou/978-0-443-36406-8 https://www.amazon.co.uk/Data-Science-Teams-Lessons-Fieldwork-ebook/dp/B0DQPKFKDQ   Contents The core material in this book is organized over four main Parts with 20 Lessons in total. Author Harris Georgiou goes into the difficulties progressively and dives into the challenges one step at a time, using a typical ...

Announcement: Full manuscript submitted for publication

Image
 (English text below)  Περίπου μία εβδομάδα πριν την επίσημη ημερομηνία υποβολής, στάλθηκε το τελικό draft v3 του βιβλίου πλήρες με βιβλιογραφία, εικόνες και δυο γύρους διορθώσεων. Πέρα από τη δουλειά που ακολουθεί και είναι αρκετή μέχρι την εκτύπωση, αυτό το σημείο ολοκληρώνει πολλούς μήνες γραψίμματος και αποτέλεσμα περισσότερων από 120 χιλ. λέξεων.  Το πιο σημαντικό, όμως, είναι ότι αφορά σε ένα αντικείμενο όπου υπάρχει ελάχιστη βιβλιογραφία, πολύ περισσότερο στο συγκεκριμένο τομέα (Data Science). Το βιβλίο αναμένεται να κυκλοφορήσει διεθνώς μετά το καλοκαίρι, μέχρι τότε υπάρχουν ακόμα αρκετά πράγματα να προετοιμαστούν.  Συνήθως οι εκδότες προσκαλούν ειδικούς στο αντικείμενο να διαβάσουν την προ-έκδοση (preprint) και να στείλουν σχόλια. Όποιος/όποια ανήκει σε αυτή την κατογορία και ενδιαφέρεται, μπορεί να μου στείλει προσωπικό μήνυμα και θα ενημερώσω αν υπάρξει τέτοια δυνατότητα στους επόμενους μήνες - Ευχαριστώ εκ των προτέρων.  Ο πλήρης πίνακας περιεχομένων...

Hello x86: Low-level assembly coding for the 8086

Image
Hello x86: Low-level assembly coding for the 8086 wiring no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This is a set of four "hello world" codes in x86 assembly, using single-segment 16-bit/i8086 instruction set. The purspose of this tutorial is to demonstrate how exact, minimal-space, yet razor-sharp is assembly coding, especially when dealing with such complexities like the segmented memory model of MS-DOS. The four versions are: Hello1.asm: Old-style standard directives, used by '70s-'80s assemblers, for .EXE output. Hello1C.asm: Old-style standard directives, used by '70s-'80s assemblers, for .COM output. Hello2.asm: Compact 'dot' directives, used by modern assemblers, for .EXE output. Hello2C.asm: Compact 'dot' directives, used by modern assemblers, for .COM output. The difference between .EXE and .COM comes from the MS-DOS era, when the first format required 'far' pointers (segment:offset) for memory ad...

Text file line shuffling in Java

Image
This program is an elementary tutorial in Java illustrating basic syntax, subroutines and basic file I/O. Shuffling the lines of a text file is a very important step when preparing .csv training datasets for Machine Learning models. Java was originally created for rich web applications (see 'applets') and embedded programming, but it quickly became a general-purpose language with seminal cross-platform deployability due to the JVM design. In this example, legacy Java syntax is used for illustrating coding with the very first release (JDK 1.0) back in 1995. This means no support for generics, i.e., only 'Object'-based containers (Vector) and extremely limited API compared to recent versions. And of course no syntax highlighting or code completion features, which where not available in terminals with 'vi' and command-line compiler as the core development platform. Of course, the source can be compiled with today's Java 19 compiler just fine, with the -Xlint:u...

Week01: Kick off - "And so it begins..."

Image
In every writing endeavor, the most difficult part is the beginning. This first week is allocated mostly to setting up things, drafting the Preface and Prologue. A lot of notes and references to organize. #DSbook https://apneacoding.blogspot.com/2024/07/announcement-writing-new-book-in-data.html    

Announcement: Writing a new book in Data Science and R&D projects

Image
About two years ago an idea was hovering through my mind, a question actually: Why is that “traditional” project managers fail so gloriously in managing teams, especially in the Research and Development (R&D) field of work? I let it mature for a while, thinking that someone will eventually write a book or something about it. Two years have passed and no one did it, so I figured, well, I guess I will have to do that myself. After sending the proposal to only few top publishers, I was privileged enough to land a book contract with Elsevier , which was indeed my first choice for this endeavor.  The subject of the book will be simple: Managing and coordinating teams in the R&D environment, specifically in the domains of Data Analytics, Machine Learning and Artificial Intelligence in general , where I have been working for more than two and a half decades as a professional. Specifically, it will focus on every aspect of teamwork from the first to the last day of a R&D projec...

FP epsilon estimation in Basic

Image
Floating-point epsilon in retro GW-Basic (MS-DOS) back in the early '80s. This very short code demonstrates how easy it is to get the actual FP accuracy, i.e., the significant decimal digits in FP arithmetic operations. It can be included as-is in any program when needed. The result in GW-Basic is seven FP digits, which is consistent with 4-byte float types used in other programming languages of that era like Fortran and C. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #ambient #coding #programming #notalking #basic #retro #msdos #dosbox

Minimum Distance Classifier (MDC) in Ada

Image
This program is a short example in Ada illustrating basic syntax, subroutines, type constructions and console I/O. Specifically, a basic pattern classifier from Machine Learning, namely a Minimum Distance Classifier (MDC), is constructed by just two core functions/procedures and about 120 lines of code. This type of classifier can successfully address linearly separable problems, here in the 2-D planar domain (X,Y). The Ada programming language is a creation of CII Honeywell Bull company in 1977-1983, under contract to the USA Department of Defense (DoD), with the goal of being the one-fits-all replacement of over 450 other languages used by DoD at that time in various embedded and real-time systems. "Ada" is the credit to Ada Lovelance (1815–1852) or "lady Ada", often referred to as the first computer programmer. The most popular Ada compilers for retro PCs came out Ada came out at the Windows 95/98 era, requiring some DPMI host or extender like DJGPP to run, mak...

Queens puzzle solver in LISP

Image
This is a typical example of how LISP can be used to solve complex constrained programming tasks. The eight queens puzzle requires the placement of N (minimum) queens in a chessboard so that they do not threaten each other and at the same time control the entire grid. The definition is very simple, but the number of valid solutions explode exponentially as N becomes larger than eight. LISP was officially released in 1960, making it the third milestone programming language of the first era, along with Fortran and COBOL. The syntax of LISP is saturated with parentheses, which makes it somewhat difficult for reading but very efficient for parsing by the interpreter. At the same time it makes search tree creation very intuitive, a paradigm that was later used by several other declarative laguages like Prolog. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #asmr #coding #programming #notalking #lisp #terminal ...

Factorization of a number in GW-Basic

Image
The factorization of an integer in retro GW-Basic no talking, in emulated 80286 / MS-DOS machine in DOSbox. This tutorial is a taste of how home programming looked like in the early '80s, while also showing how notoriously slow GW-Basic was with arithmetic calculations. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). #ambient #coding #programming #notalking #basic #retro #msdos #dosbox

FP epsilon estimation in Fortran

Image
Floating-point epsilon estimation in retro Fortran no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This program implements floating-point 'epsilon' estimation in retro Fortran no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This very short code demonstrates how easy it is to get the actual FP accuracy, i.e., the significant decimal digits in FP arithmetic operations. The result in Fortran 77 is seven FP digits for REAL type and 15 digits for DOUBLE PRECISION type, which are consistent with 2-byte and 4-byte float types, correspondingly, used in other programming languages of that era like C. Warning: In some older versions of Microsoft's Fortran 77, the batch process 'FORT.BAT' assumed that the input filename is given as argument *without* the '.FOR' extension. If it is given, then the output is unpredictable and usually results in a corrupted *original* (source) file! Make sure to always keep backup before compiling - I had to write th...

Text file statistics in C

Image
This program is a simple demonstration for illustrating how basic text file statistics can be retrieved with only 50 lines of C code. It is more or less a replacement of the standard 'wc' program available in all Unix/Linux distributions for returning the lines, words and characters of any text file given as input. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #asmr #coding #programming #notalking #c-language #gcc #terminal #console

Datetime difference in PHP

Image
This is just a small snippet of PHP code illustrating the use of generic variables and console (server-side) scripting. Although PHP is almost entirely focused on web application development, basic syntax and features make it a general-purpose programming choice like other more popular alternatives, e.g. Python, Perl, Tcl, Bash, etc. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #asmr #coding #programming #notalking #php #terminal #console

Pi value estimation in Pascal

Image
This is an example code for estimating the value of 'pi'. The method is a trivial Monte-Carlo sampling upon a quarter-circle using built-in 'random'. Two different estimations are impleneted: (a) the average area under curve (AUC), which is the (randomized) integral of y=f(x)=sqrt(1-x*x) in [0,1], and (b) the area ratio between the quarter-circle and its bounding box. Since the AUC uses twice the number of samples, it should produce consistently better estimations. Turbo Pascal 3.0 was one of those programming artworks of the early '80s, fitting an editor (external), a compiler, debugger and plenty of room to work with in just 64 KB of RAM. Similarly, it was one of the first programming tools (besides x86 Assemblers) to produce .COM executables directly, since the 'tiny' memory model was the default option at that time. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #asmr #...

Linear regression in Matlab

Image
Linear Regression (LSE) fit in retro Matlab 3.5 (MS-DOS) back in the early '90s. The purpose of this tutorial is to demonstrate elementary data processing and statistics via non-iterative coding paradigms, i.e., based on matrix operations only. Matlab was one of the first programming platforms to adopt such a matrix-based 'algebraic' data manipulation procedure as the core part of the language, like R and Python (numpy, pandas) do today. Although its functionality and toolboxes some three decades ago were nowhere near today's status and richness, it still was one of the most powerful platform for linear Algebra, signal processing and visual data exploration. The most common and almost 100% compatible open-source alternative is Octave, which is also in use today in many Universities around the world. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #ambient #coding #programming #notalking...

Bricks and towers in Prolog

Image
This program is a simple demonstration for illustrating how classic declarative programming can provide very intuitive and compact solution generators for logic problems and combinatorial tasks. In this example, a set of bricks with three sizes and a stability constraint ("do not put larger above") is coded to provide solution searching on all possible ways to build a stable tower of a specific height. Prolog's main advantage over other declarative programming languages is that even in the early '80s came with a rich library of common functionalities that made real-world application development easy. Turbo Prolog was probably the best option for PC machines, with efficient memory enhancements via more strict typing and other syntax shortcuts to limit the tree search in manageable space/time requirements for these platforms. Although now depricated by constrained and fuzzy logic paradigms, Prolog-style programming is still the most intuitive way to design simple expe...

Multiplication tables in COBOL

Image
This program is a simple demonstration of basic user I/O and arithmetic operations in one of the earliest versions of COBOL that was made available for home computers in the early '80s. The "executable" was actually an intermediate binary format created as the compiler output, which could then be executed by another program, not very differently than today's Just-In-Time (JIT) compilers or pre-compiled interpreted languages. The language is the creation of Grace Hopper, a pivotal figure in the evolution of programming and the design of the first trully general-purpose languages. The two main strengths of COBOL was the rich I/O functionality for data file handling and the screen handling routines for creating terminal-based user I/O via forms and tables. Although functionally limited and with loquacious syntax by the programming standards of later language generations, COBOL was deemed extremely reliable and understandable by the programmers of those early days. So m...

PRNG function in Fortran

Image
Pseudo-random number generator function in retro Fortran no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This program implements a pseudo-random number generator (PRNG) by using the classic Mixed-Congruential Sequence (linear) method, as it was described by D. Knuth (1972) regarding proper parameter choices for high-entropy output. The general rules for parameter choice are: M (modulo) must be at most half the available bits width of the integer type used. C (increment) should be chosen close to the value: M * (1/2 - sqrt(3)/6) = 0.2113248654051871... For example: M=2^8 gives C=54 (54.09916...) A (multiplier) should be chosen as to satisfy the following three requirements: A mod 8 = 5 , A between M/100 and M-sqrt(M) , A must not have trivial bit pattern value. Then these three values, along with a user-provided seed value X0, can be used iteratively with: X(n+1) = (A * X(n) + C) mod M , X(0)=X0. Provided that all constraints are satisfied, there are various ...

Fibonacci numbers in C (4 different ways)

Image
Fibonacci series in pure C no talking, using only vim and gcc in terminal, implementing four alternative designs: 1) Recursive: using the typical mathematical definition for Fib(n) 2) Iterative: using loop instead of recursion to avoid call stack overflows 3) Dynamic Programming: using buffer for cached results, calculated only once 4) Analytical: using the solution of the differential equation for Fib(n) Each option has its pros and cons, typically trading code simplicity for resources (recursion) or trading memory (cache) for speed. The purpose of this tutorial is to demonstrate coding discipline when working with very limited coding tools (command-line only in terminal) and alternative designs for use in different situations. Inline comments describe details about the code being written. Enable captions for more information on what is happening in each section of the video. Enable captions for more details and walk-through. Source code available at the Github repository (see chann...

Pi value estimation in Pascal

Image
This is an example code for estimating the value of 'pi'. The method is a trivial Monte-Carlo sampling upon a quarter-circle using built-in 'random'. Two different estimations are impleneted: (a) the average area under curve (AUC), which is the (randomized) integral of y=f(x)=sqrt(1-x*x) in [0,1], and (b) the area ratio between the quarter-circle and its bounding box. Since the AUC uses twice the number of samples, it should produce consistently better estimations. Turbo Pascal 3.0 was one of those programming artworks of the early '80s, fitting an editor (external), a compiler, debugger and plenty of room to work with in just 64 KB of RAM. Similarly, it was one of the first programming tools (besides x86 Assemblers) to produce .COM executables directly, since the 'tiny' memory model was the default option at that time. Enable captions for more details and walk-through. Source code available at the Github repository (see channel info). Tags: #asmr #coding...

Channel Updates