Skills
ποΈ
Frontend
Experience using Flutter, as well as some Qt & QML. I enjoy using software that looks good and feels smooth. I think everything should have an A+ user experience regardless of the intended user. Good UX is usually more important than good UI.
π§
Backend
I like clean code, organization, and good documentation. Readable is better than terse. I always ask: if an outsider were to read this portion of code, would it make sense or be a headache to figure out?
π±
Mobile
Experience making apps for Android & iOS using Flutter. Adaptive design so the UI / UX work for mobile, tablet and desktop.
π₯οΈ
Desktop
Experience making apps for Linux, Windows, MacOS and web. Adaptive design so the UI / UX work for mobile, tablet and desktop. Varying levels of experience with Dart / Flutter, C++, Qt / QML, Python, Go and C#.
π
CI / CD
Automate all the things! Test, build, release. Experience with GitHub, GitLab, Docker, Bash, Powershell, Perl, etc. Comprehensive automation is a beautiful thing.
π
Learning
I am intelligent, curious, thoughtful and persistent. I have taught myself everything I know about computers and software development. I continue to learn new things as they become needful: Simplify installation for the end-user? Lets dive into bash. Working with someone's Perl build scripts? Lets figure out some Perl and improve them. Need appealing documentation? Learn Markdown.
I am a big fan of Dart & Flutter! π
Projects
In addition to my work on KDE and miscellaneous open source contributions, these are some of my personal projects:
Nyrna
Suspend games and applications.
Nyrna is a cross-platform desktop application written with Flutter that allows one to suspend and resume applications.
The design has intentionally been kept simple and minimalist as this software is expected to be used by anyone, including those who are not 'tech-savvy'.
Working with Flutter to create Nyrna has been excellent, as even while considered an alpha level feature the desktop software creation experience has been quite exceptional.
On Linux the project is quite straight forward, making use of regular system calls to get process information, suspend, and resume.
Windows on the other hand required a great deal more attention, as I have found throughout the project that the win32 API does not provide a meaningful interface with which to check the status of a process, nor to send a signal like one familiar with Linux might expect.
I ended up writing several direct wrappers using dart:ffi
- the dart Foreign Function Interface that facilitates C interop, in order to make calls to the win32 API directly from native Dart code, as well as creating a small library specifically to handle the calls to ntdll.dll
in order to use the undocumented NtSuspendProcess()
and NtResumeProcess()
functions.
While not easy or straightforward, the challenge presented here was quite interesting and rewarding - and I enjoyed learning more about systems level programming and APIs.
Languages
- Flutter / Dart
- Small amount of C++ via the C interop library
dart:fii
Platforms
- Linux
- Windows
Packaging
- Linux:
- AppImage
- Portable
- Snap
- Windows:
- Installer exe
- Portable
- winget
Unit Bargain Hunter
A quick and simple way to verify which is the best value when comparing what to shop for.
Unit Bargain Hunter is a multi-platform application that allows the user to compare multiple items when shopping by item count, volume, or weight along with the price of each item in order to easily find which is the best value and by how much.
Unit Bargain Hunter is a relatively straight-forward app with a light / dark theme toggle and using bloc
for state management.
Languages
- Flutter & Dart
Platforms
- Windows
- Linux
- Web
- Android
iOS and macOS should work as well given a Mac to compile on & a developer account to distribute them.
Packaging
- Linux:
- AppImage
- Portable
- Windows:
- Installer exe
- Portable
- winget
- Android:
- Google Play store
- APK
KRunner API
A user-friendly API for KDEβs KRunner application.
Improves on the standard KRunner API by offering a user-friendly language (Dart) along with type safety, null safety, named parameters, and extensive documentation and examples.
Languages
- Dart