Skip to content
franke-hub edited this page Jul 27, 2023 · 15 revisions

Welcome to the SDL project Wiki!

What is the Software Development Laboratory?

It's the place where I build and test code, and other things computer related. It consists of a code development structure where source and object code reside in different subdirectories. It includes batch scripts, make files, multiple libraries and multiple sample programs in different languages. They all compile and/or run in current versions of Cygwin, Fedora, and Ubuntu. Since some programs were written in 2007 that haven't been compiled in years, "all" might be a slight exaggeration.

Native Windows support is deprecated. While the Windows code hasn't been removed, it's not even compile tested now.

Features

  • Sample nodejs http and http2 Server, Client, and stress tester.
  • Utility libraries in C++, C#, Java, and Python.
  • Multi-threading library functions, including a novel and efficient multiple-enqueue single-dequeue implementation.
  • Sample programs in multiple languages, including HTTP clients and servers in C++, Java, and Python. For C++, see ~/src/cpp/Sample/.
  • Sample instructive "how-to" programs. (See ~/src/cpp/Howto)
  • A bash script library.
  • A development environment that is not an IDE, but a code layout structure.

Current Status

This distribution is READY for public use.

  • The build instructions are complete up to building the C++ library.
  • Some of the older sample programs may not compile or run properly. Report an issue if you run into problems.

General notes

Almost all code is object oriented, using Java-like object containers. For example, a C++ thread object is called a Thread. In C++, the Thread object is located in Thread.h and its implementation is in Thread.cpp. The methods start() and run() operate similarly to the Java library implementation.

Not everything in this distribution is intended to be useful. Some is intended to be joyful and/or amusing. There are a few Lilypond source files, some containing original music, some classical. Some sample programs were used for learning: How does this or that work. You might be amused at their naivety or consider using similar technique when needed.

Most subdirectories contain .README documentation files. This wiki contains additional documentation. Issues may be submitted for missing documentation.

About the author

I am a retired (since 2005) programmer, good enough to make a decent living working for a large company. I've been considered an expert on multi-threading programming and networking. I program as a hobby and have since I learned how to program. Lucky for me that's proved useful.

While I have dabbled in some areas, it's just that, dabbling. For example, The neural net and graphic sample library functions and programs included in the distribution are, at best, well behind the state of the art. I'll try to let you know about other instances where this is true.

I'm a novice with respect to github. I've used git for years, but haven't explored it. My expertise is kind of at the level a C programmer who graduated into C++, slowly moving up from version to version. GCC is the compiler of choice and the current version is gnu++17.

The "Step by step Ubuntu Guide" walks you through an Ubuntu installation. To aid in completeness, this was written while actually performing these step-by-step instructions from bare metal up to and including building the C++ libraries.

I use ~/src/log/howto/howto.installLinux.log, a step-by-step guide, every time I create a virtual machine.

All ~/obj/cpp/Sample/*/. subdirectories compile but most have not been recently tested.

Content

  • The C++ libraries. The header files also document the available functions.
  • Sample programs. These fully operational samples also describe some of what you SHOULDN'T do.

Python

I install my python library crudely, using sudo to create a link from site-packages/lib -> /home/userid/src/py/lib. As an aside, ~/src/py/ files work even when they're mounted on a read-only file system. Apparently if python can't save the compiled code, it simply and silently won't.