Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 20 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,36 @@

Welcome to my **GitHub Pages** where you'll find everything I've made available online. There are Posts & Blogs I've written on all things related to Software Engineering as well links to code samples and 'hobby horse' projects. You'll also find an outline of the University course I've delivered on _Software Architecture & Design_ at [MTU](www.mtu.ie).

## Contents

- [Blogs & Posts](#blogs--posts) — Articles on software engineering, JVM tuning, and more
- [Code on GitHub](#code-on-github) — Public repositories and code samples
- [Lectures](#lectures) — University course materials and lecture PDFs
- [About me](#about-me) — Personal info and contact links




## [Blogs & Posts](./blogs+posts/)

* [Software Engineering](./blogs%2Bposts/software-engineering) - Blogs on a wide range of software engineering and architecture topics.

* [JVM Performance Tuning](./blogs%2Bposts/jvm-performance-tuning) - A series of blogs I wrote summarizing my experiences tuning the JVM.
* [Espresso Library](./blogs+posts/software-engineering/espresso/) — Articles on the design for a lightweight CLI argument parser



## [Code on GitHub](https://github.com/donnachaforde?tab=repositories&q=&type=public&language=&sort=)
Here are public repos on GitHub that are in a presentable form.

* [espresso lib](https://github.com/donnachaforde/espresso) - A hobby-horse project - i.e. an easy-to-use command-line parser for CLI applications.

* [espresso tools](https://github.com/donnachaforde/espresso-tools) - A collection of useful CLI tools, which leverages the espresso library.

* [Examples](https://github.com/donnachaforde?tab=repositories&q=example&type=public&language=&sort=) - Simple code examples covering Sockets, MQTT, AMQP and REST, mostly written in Java/Spring and C/C++.

* [Hello World!](https://github.com/donnachaforde/example-hello-world) - Various implementations of the famous K&R "Hello World!" in different languages.

* [Bash Shell Profile](https://github.com/donnachaforde/unix-shell-config) - Resource files for configuring your Bash Shell environment on Linux and UNIX.

* [GitHub Repos](https://github.com/donnachaforde) - All public repos (mostly C/C++/Java but also some helper shell-scripts).




## [Lectures](./lectures/)

I developed and delivered the anchor module for an [MSc in Software Architecture & Design](https://www.mtu.ie/courses/crksade9/) at [MTU](https://www.mtu.ie/) during 2017-2019 (_formerly CIT - Cork Institute of Technology_).
Expand All @@ -58,10 +60,19 @@ _The following links reference PDF docs._



## [About Me](./about.md)
Read more about me [here]((https://about.me/donnacha.forde)) and on [LinkedIn.com](https://www.linkedin.com/in/donnachaforde/)



## About Me

I'm a passionate software engineer and educator with experience across architecture, design and development of robust systems. I enjoy sharing practical insights through blogs, lectures and open-source projects. My interests include distributed system, API design and for kicks, building tools that make developers' lives easier.

I also have extensive management and leadership experience, having led engineering teams and mentored professionals in both technical and organizational growth. I believe in fostering collaborative environments and empowering others to achieve their best.

You can learn more about my professional background on [LinkedIn](https://www.linkedin.com/in/donnachaforde) or visit my [about.me](https://about.me/donnacha.forde) page.

I value authentic connections and welcome genuine opportunities to collaborate or network.

_Donnacha Forde_


Expand Down
7 changes: 0 additions & 7 deletions about.md

This file was deleted.

7 changes: 5 additions & 2 deletions blogs+posts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@ Blogs & Posts on general topics in Software Engineering, including Management &

### Contents

* [Software Engineering](./software-engineering/)

* [JVM Performance Tuning](jvm-performance-tuning/)
* [Software Engineering](./software-engineering/) - General articles on software engineering, management, design, and practical lessons.

* [JVM Performance Tuning](jvm-performance-tuning/) - In-depth guides and notes on Java JVM performance, memory and diagnostics.

* [Espresso Library](./software-engineering/espresso/) - Musings on the design of `libespresso`, a lightweight library for managing command line arguments in CLI tools.


11 changes: 11 additions & 0 deletions blogs+posts/software-engineering/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
[home/](../../)[blogs+posts/](../)[software-engineering](./)


# Blogs on Software Engineering
Here are posts and articles covering more general software engineering topics.

## Contents

- [Management & Leadership](#management--leadership)
- [Cybersecurity](#cybersecurity)
- [Design](#design)
- [Performance Engineering](#performance-engineering)
- [Designing the 'espresso' Library](#designing-the-espresso-library)
- [Developing C++ with Visual Studio](#developing-c-with-visual-studio)



## Management & Leadership

Expand Down
19 changes: 19 additions & 0 deletions blogs+posts/software-engineering/espresso/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[home/](../../)[blogs+posts/](../)[software-engineering/](../)[espresso](./)
# Espresso Library

Welcome to the Espresso library landing page. This section contains articles and notes on the design, construction, and management patterns used in the Espresso library, with a focus on practical software engineering principles.

## Contents

- [Design Considerations & Influences](./design-considerations.md)
- [Object Creation Patterns](./object-construction.md)
- [Utilizing Manager Objects](./manager-objects.md)

## About Espresso


Espresso is a small, lightweight library designed to handle the management of command line arguments. It provides a simple and efficient way to parse, validate and organize command line inputs for your applications, making it easier to build robust CLI tools with minimal overhead.

The articles here explore the motivations, trade-offs, and implementation details behind key architectural decisions in Espresso.

Feel free to explore each topic for insights and practical advice!
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,12 @@ Also, I've was strongly influenced by the book [Writing Solid Code](https://www.

### IDE History

This library was first developed using Visual C++ 6.0. That version of the Microsoft C/C++ compiler had quite a long life and the project was still tied to that version for many years. Eventually, it was upgraded to Visual Studio 2003 (Visual C++ 7), then Visual C++ 8 and Visual C++ 9. Thereafter, it was neglected while I pursued pure Java development and didn't get any attention until Visual Studio 2014 but then was upgraded to Visual Studio 17 and most recently Visual Studio 2019.

This library was first developed using Visual C++ 6.0. That version of the Microsoft C/C++ compiler had quite a long life and the project was still tied to that version for many years. Eventually, it was upgraded to Visual Studio 2003 (Visual C++ 7), then Visual C++ 8 and Visual C++ 9. Thereafter, it was neglected while I pursued pure Java development and didn't get any attention until Visual Studio 2014 but then was upgraded to Visual Studio 17 and most recently Visual Studio 2019. Support for Visual Studio 2022 is on the todo list.

In addition to Windows support, the project now builds on macOS using CMake, making it easy to configure and build on Apple Silicon and Intel Macs, as well as other platforms supported by CMake (like Linux). This will eventually replace the basic `makefile` used to build on those platform.




***
Expand Down