Skip to content
View cjdonaldson's full-sized avatar
🏠
Working from home years before covid
🏠
Working from home years before covid

Block or report cjdonaldson

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
cjdonaldson/README.md

Charles (Chuck) Donaldson

  • I am a Scala developer applying functional and streaming practices where possible.
  • I prefer:
    • a programming language with a strong expressive type system
    • functional programming
    • correct by construction, easy to use, hard to misuse Matt Godbolt
    • enforced resource management
    • behavioral driven design (BDD; aka TDD but at the behavioral level)
    • Scala is an expressive, scalable, and safe high level language.
    • Rust is an expressive, safe, systems level language
  • Most of my experience is in providing back-end services / APIs.
  • I do have experience with JavaScript and some VueJs.
  • Exploring Rust via Coding Challenges and other real world applications via a comparison of comparable Scala implementations. Exploring immutability and functional programming challenges in Rust.
  • Remote work since 2015 - long before covid was a thing.

  • toolbox Technologies

    Scala HTML CSS JavaScript TypeScript VueJs

    Bash C C++ Rust


    Git GitHub vbar MySQL PostgreSQL Redis vbar Linux docker

    AWS


    resume: HTML PDF

    Beginnings

    Electronic kits and assemblies

    Heath FM Radio Kit

    I built a Heath FM portable radio kit in my late teens. I learned how to solder, read schematics, and test circuitry.

    I then picked up several electronic experiment / lab kits. These kits had a breadboard, power supply, and many components to build circuits. I learned how to use a multimeter, oscilloscope, and logic analyzer.

    And then picked up a couple of breadboards and Radio Shack components to build my own circuits.

    TRS-80 III computer

    High school computer lab has TRS-80 III computers that we used to learn operating system and computer science concepts with MS Basic. TRS III computer
    TRS-80 Color Computer
    • CPU: 6809
    • Clock: 1 MHz
    • RAM: 4KB
    • ROM: 16KB
    • Video: 32KB
    • Storage: cassette tape
    • OS: Color Basic ROM - a MS basic variant
    • Keyboard: 53 keys
    • Display: 32x16 text, 64x32 graphics; 9 colors
    • Sound: 1 channel; 6 bit
    • Ports: 1 joystick, 1 cassette, 1 serial, 1 expansion bus
    • Price: $399.95

    My first computer purchase was a TRS-80 Color Computer I in 1982 - 2 years after its introductions.

    I made many modifications to the computer over the years. I started with a 16KB ram expansion, then a floppy disk controller with 5 1/4 inch disks.

    Followed by soldering in bank selection and additional memory that expanded the capabilities to 512KB. And eventually added a hard drive controller and a 10MB hard drive. This new setup meant other OSes could be booted from the hard drive. This new ability allowed me to move from Color Basic as the OS to OS-9.

    I also moved from Basic to Assembler and C as OS-9 offered more tools and applications.

    I also wrote an Electrical CAD tool - in C - with limited logic simulations to continue my Electrical Engineering dream. Yes I had glorious aspirations as I moved closer to becoming an electrical and computer engineer.

    The hardware and software languages gave me the cross domain knowledge of how hardware and software interact - as in, how to write drivers - the memory page flipping.

    I also studied the 8080 / Z80 machine code. But really liked the 68xx processors.

    And of course friends with Commodore 64 machines.

    This TRS-80 Color computer experience was truly a joy.

    6809 assembly language
    Assembly / Assembler taught me the low level workings of a computer. I learned:
    • registers
    • memory management
      • program space (.text)
      • global/static data space (.data, .bss, .rodata)
      • stack space (function call frames, local variables)
      • heap space (dynamic memory allocation)
    • I/O
    • timers
    • interrupts
    C programming language
    As I wrote more software and the Electronics CAD, C taught me structured programming, modularity, and portability. I learned:
    • functions
    • control structures
    • data structures
    • pointers and memory management
    • file I/O
    • compilation and linking
    • modularity and code organization
    • portability - even though not leveraged
    • standard libraries
    • debugging and optimization
    • low-level programming

    Amiga 1000

    Amiga 1000 The Amiga 1000 was my next computer purchase that exposed me to a well integrated set of core libraries - the Amiga OS; Commodore had done well - and allowed me to continue my programming expedition of C and Assembly this time with the 16 bit 68000.

    This was an impressive machine and I sometimes miss it.

    Pentium build

    Years later I would build a Pentium 5 machine, explore OS/2, learn Windows 3.0, and lug the gear to friends houses for networking game sessions - Doom, Riot, and others I am not remembering.

    Each of us occassionally blutering out something like

    • "Where did ??? go?" where ??? was one of Chuck, Dean, Rob, or Terry.
    • "Who was that?"

    from another room. Fun times.


    Pinned Loading

    1. appserver-common appserver-common Public

      a minimal set of common operations across my repos - no business logic here

      Scala