Today I learned about structuring #CMake projects.

This is a quick update on #GitRaven project. I have started looking into unit testing the app so I can setup CI/CD with #GitHub Actions.

It is a long ways away but the first step must start from somewhere.

#cppdev #opensource #qt

I might have to explore C++ RAAI concept sooner or later for #GitRaven.

It is getting difficult manually free-ing memory used via libgit2. I am having to think about and write if checks for all the edge cases across my GitManager class.

ChatGPT suggested this after I mentioned this issue and it sounds like it's useful.

#diary #opensourcedev #cppdev

Final part of my terminal text editor series is live. Part 3 covers the View layer, choosing FTXUI over ncurses, simulating a cursor in the terminal, and translating keyboard events into semantic input types.

This wraps up the wordNebula Phase 1 series. All three parts are linked together.

https://ilean.me/blog/building-a-terminal-text-editor-the-view-part-3/

#CPlusPlus #OpenSource #TerminalUI #TextEditor #Programming #SoftwareDevelopment #CppDev #cpp

Building a Terminal Text Editor: The View (Part 3)

Senior Software Engineer with 10+ years in embedded systems and full-stack development. Experience at General Motors working on autonomous vehicles, subsea systems, and modern web applications.

Ilean Monterrubio Jr

Do you know what happens when you write Qt + C++ code with web dev experience? Your mental model for memory management (which is non-existent because JS has GC), leads to memory leaks.

It's so bad I had to:
1. rewrite most of the init code for member variables in almost all widgets so the expectation of "WidgetA" from "child C" of MainWindow is available when "WidgetB" emits a signal.

2. currently debugging memory leak when MainWindow is closed - huh?
Yup, I have a WindowActivate event that triggers a "status" update and ALL important widgets listen to the signal emitted by THIS fn to update the state.

3. A connect() is causing seg fault right now when I update the widget's state multiple times in a row. (still haven't checked this out yet)

4. clang-tidy is labelling cosmetic things like "Class *obj = new Class();" into "auto *obj = new Class();" and my OCD is annoyed.

#diary #cppdev #gitraven #opensource

Part 2 of my terminal text editor series is live. This one covers the Presenter layer — smart pointer ownership, breaking circular dependencies with weak_ptr, routing keyboard input through semantic events, and managing viewport state.

https://ilean.me/blog/building-a-terminal-text-editor-the-presenter-part-2/

#CPlusPlus #OpenSource #TerminalUI #TextEditor #Programming #SoftwareDevelopment #CppDev #MVP #cpp

Building a Terminal Text Editor: The Presenter (Part 2)

Senior Software Engineer with 10+ years in embedded systems and full-stack development. Experience at General Motors working on autonomous vehicles, subsea systems, and modern web applications.

Ilean Monterrubio Jr

Something's brewing!!

#GitRaven is getting UI to switch branches and tags.

#opensource #cppdev #diary

I am making time for #GitRaven project again. It had stalled for sometime due to other commitments.

Today, I learned C++ and Qt lifetimes, the advantages of member initializer lists. I still have one more issue to fix w.r.t this topic but I will hold it off a little longer, switching my focus on adding features.

#diary #cppdev #git #opensource #developers

Can somebody point me towards a Myers diff algorithm in a C++ project?

I am looking for the following data as diff result:

1. (old) line number
2. (old) column number
3. (new) line number
4. (new) column number.

Need the above info so I can ask my text editor widget to highlight the line and column as to what was added/deleted.

Please reboost for reach :)

#cppdev #programming #myers #diff

I ran into my very first "it runs as long as you do it the app's way" kind of bug. My guess is, by assigning a different variable here, the pointer's address is aligned "just right" for my code to work.

This comment is from my #GitRaven project.

```
// FIXME: Use `amendCommitOid` instead
// Note: The app seg faults when this variable is deleted :/
git_oid oid = autoCommitOid;
```

#cppdev #cpp #programming

I am loving C++17 feature set. It has so many niceties available in std which makes it easy to focus on my product rather than dealing with trivial things.

#cpp17 #cppdev #programming