From eae27cb10e6d9994d9864f0ecfcc81dd399d361d Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Thu, 15 May 2025 20:47:14 +0100 Subject: [PATCH] chore: new blog post and small patches (#3) * wip: blog post on open source * wip: initial draft of the blog post * chore: remove sharing a blog post * fix: broken style from previous commit * chore: improve handling keywords --- assets/css/baseof.css | 3 +- assets/css/single.css | 12 ------- assets/icons/share.svg | 7 ---- .../index.md | 22 ++++++++++++ .../blog/you-dont-always-need-docker/index.md | 34 ------------------ ...touch-programming-architecture-diagram.png | Bin 47082 -> 0 bytes hugo.toml | 2 +- layouts/_default/baseof.html | 6 ++-- layouts/_default/single.html | 20 ----------- layouts/partials/card.html | 2 +- 10 files changed, 27 insertions(+), 81 deletions(-) delete mode 100644 assets/icons/share.svg create mode 100644 content/blog/importance-of-contributing-to-open-source/index.md delete mode 100644 content/blog/you-dont-always-need-docker/index.md delete mode 100644 content/blog/you-dont-always-need-docker/touch-programming-architecture-diagram.png diff --git a/assets/css/baseof.css b/assets/css/baseof.css index df9a784..915d16e 100644 --- a/assets/css/baseof.css +++ b/assets/css/baseof.css @@ -68,8 +68,7 @@ body::-webkit-scrollbar-thumb { .arrow, .eye, .calendar, -.clock, -.share { +.clock { stroke: var(--text); } diff --git a/assets/css/single.css b/assets/css/single.css index c49bc92..9f5abfd 100644 --- a/assets/css/single.css +++ b/assets/css/single.css @@ -20,14 +20,6 @@ main #metadata div span { column-gap: 0.25rem; } -main #metadata div #share { - display: none; -} - -main #metadata #share { - cursor: pointer; -} - main #content ul, main #content ol, main #content .highlight { @@ -59,8 +51,4 @@ main #content .highlight pre { main #metadata div { column-gap: 0.75rem; } - - main #metadata div #share { - display: inline-flex; - } } diff --git a/assets/icons/share.svg b/assets/icons/share.svg deleted file mode 100644 index 74e1bc7..0000000 --- a/assets/icons/share.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/content/blog/importance-of-contributing-to-open-source/index.md b/content/blog/importance-of-contributing-to-open-source/index.md new file mode 100644 index 0000000..dd5b207 --- /dev/null +++ b/content/blog/importance-of-contributing-to-open-source/index.md @@ -0,0 +1,22 @@ +--- +title: "The Importance Of Contributing To Open Source" +description: "How I started contributing to open source projects? And what can software engineers learn and benefit from doing so?" +keywords: ["Open Source", "Contribution", "Software Engineering", "Software Development", "Computer Science", "Experience"] +date: 2025-05-15 +--- + +I recently started contributing to open source projects that I was using because I wanted to give back to those projects since they provide utilities I use on a daily basis either at work or on personal matters. + +## What Will You Learn And Benefit As A Software Engineer? + +Working on an open source project is similar to working on a project at a company. Since each project usually has a team of dedicated maintainers, resembling senior developers or tech leads, who review pull requests and merge them, are responsible for releases of the project and are responsible for its future direction by having a roadmap for example. + +Even though an open source codebase had many people contribute to it over the time, it is usually very well documented so it is fairly easy to get a big picture understanding of a project by reading the documentation. You can find documentation on the architecture, the directory structure of the codebase, project specific concepts or "business logic". Also, you will always find guides on how to contribute, report bugs and how to install, run and debug the project on development mode. And if you get stuck, there are places where you can chat with fellow contributors or maintainers to get clarification or help. + +Therefore working on an open source project gives you experience in par with working at a company if not better. Because you will have to be truly autonomous with choosing what to work on, take the initiative and communicate with other people working on the project, and most importantly get deep into a new codebase and figure stuff out on your own for the most part. + +Another advantage is that you get to choose what project to work on and even what part of a project. This gives you the freedom and desire to learn about the processes of software engineering other that developing a project like deployment, testing and documentation. Not like in a company where you are tied to the position you got hired to do and even if you want to get into another area in a company project in my experience you will either slow the team down and potentially miss deadlines or you are denied access entirely. + +## How To Get Started? + +Don't stress it out and just pick a project you use and find interesting. Look for any beginner friendly issues like bugs or small improvements. Then get to the documentation and read it thoughouly to be on the know on any rules set by the project creator(s), get familiar with installing the project and running it in development mode, and know where the communications channel are to reach the team. Lastly, get to the codebase and start working on the thing you have chosen to do and eventually get it done and open a pull request. diff --git a/content/blog/you-dont-always-need-docker/index.md b/content/blog/you-dont-always-need-docker/index.md deleted file mode 100644 index 5aa00ff..0000000 --- a/content/blog/you-dont-always-need-docker/index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "You Don't Always Need Docker!" -description: "Why using docker and other abstractions hinders your ability to learn about system administration, performance and security and makes you use services that are expensive solutions for your small or personal projects." -date: 2025-04-16 -publishDate: 2025-04-16 ---- - -## What Even Was My Problem With Docker? - -My problem with Docker and the insights I am coming up with in this post came when I was working on this project called [Touch Programming](https://github.com/hazemKrimi/touch-programming) which is in a gist a small web application that gets AI generated code (more plagiarized than generated) in a programming language chosen by the user then the frontend uses that code for a typing test. - -The AI part is basically an API taking the language name from the frontend and then feeding that to an "engineered" prompt which itself is fed to an LLM managed by [Ollama](https://ollama.com) through [LangChainGo](https://tmc.github.io/langchaingo/docs) (I was learning Golang through this project). Here is a small diagram showecasing the architecture: - -![Touch Programming Architecture Diagram](./touch-programming-architecture-diagram.png) - -I was not able to deploy the whole stack in a single dockerfile so I tried using docker compose and multiple dockerfiles for each part of the stack and that also was not successful. The problem was connecting the API to Ollama since they are deployed in separate containers. - -I admit that I have skill issues when it comes to Docker and I could have made it work if I put more time into it but I had this idea pop up: "Since this is a small personal project why not deploy it directly?". And then I discovered [Dreams of Code Video on deployment without Docker](https://www.youtube.com/watch?v=DmbBgXK8M5M) and used it as a reference. - -This resolved the issue I had connecting the API to Ollama since I only had to install the model on my instance and run the API executable that is compiled. And even more I got to learn about how t to create servers and proxies using Nginx, how to run executables as services using Systemd and even automate the deployment process using GitHub Actions. - -## There Are Too Much Abstractions! - -My deployment process is not fully straight forward since I had to manage and secure my VPS through limiting privileges to users, Create Nginx configs and Systemd service units and place them in the appropriate location with the correct user ownership along other stuff I needed to do to eventually make the deployment automatic whenever I push a change to my Git repo. - -Through my decision to deploy directly in the host OS of my VPS I discovered that I am lacking fundamental knowledge when it comes to Linux and system administration which made me not understand the value of Docker and why it came to be and made me usually use it in cloud services that abstract away the prep work you need to do to deploy you programs. - -Docker and cloud services and now AI have their merits especially in their ease of use and ease of learning but relying on them solely produces mediocre software engineers who get stuck more quickly and more frequently and more importantly produce unperformant and unsecure programs. - -## How To Get The Ability To Cope With The Abstractions? - -In my opinion abstractions are still good but developers need to know the underlying infrastructure and the problems that where the reasons for introducing those abstractions. And one of the ways to get the proper knowledge is to build stuff from scratch and to try the old and not conventional anymore ways to deploy your programs. - -This will make us able to understand how these tools work and even how to improve upon them and bring new solutions that improve the process of software engineering. diff --git a/content/blog/you-dont-always-need-docker/touch-programming-architecture-diagram.png b/content/blog/you-dont-always-need-docker/touch-programming-architecture-diagram.png deleted file mode 100644 index ad394435f273524f2cbeed0710035253247e90cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47082 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 @@ -66,7 +65,6 @@ - {{ block "scripts" . }}{{ end }} @@ -80,4 +78,4 @@ {{ partial "footer.html" . }} {{ template "_internal/google_analytics.html" . }} - \ No newline at end of file + diff --git a/layouts/_default/single.html b/layouts/_default/single.html index af000eb..10e2c2a 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -14,15 +14,6 @@
{{ readFile "assets/icons/calendar.svg" | safeHTML }} {{ .Date.Format .Site.Params.dateFormat }} {{ readFile "assets/icons/clock.svg" | safeHTML }} {{ printf "%d minute(s) read" .ReadingTime }} - - {{ readFile "assets/icons/share.svg" | safeHTML }} - Share -
@@ -35,15 +26,4 @@ {{ partial "table-of-contents.html" . }} - - - {{ end }} diff --git a/layouts/partials/card.html b/layouts/partials/card.html index 1ef6a56..76b31b6 100644 --- a/layouts/partials/card.html +++ b/layouts/partials/card.html @@ -9,7 +9,7 @@ {{ if (.InSection ($.Site.GetPage "projects")) }} Source code {{ readFile "assets/icons/arrow.svg" | safeHTML }}