roundabout,
created on Saturday, 4 January 2025, 09:14:47 (1735982087),
received on Saturday, 4 January 2025, 09:14:50 (1735982090)
Author identity: vlad <vlad.muntoiu@gmail.com>
3e1562ace64cf6bf437ad1e1b633e4e3eb00df05
.idea/blog.iml
@@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.12 (blog)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
.idea/misc.xml
@@ -3,5 +3,5 @@
<component name="Black">
<option name="sdkName" value="Python 3.10 (blog)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (blog)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (blog)" project-jdk-type="Python SDK" />
</project>
.idea/workspace.xml
@@ -4,8 +4,11 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="b2c629ea-d173-4caf-b306-cbeaee617270" name="Changes" comment="More articles">
<list default="true" id="b2c629ea-d173-4caf-b306-cbeaee617270" name="Changes" comment="Add some Izvor screenshots">
<change beforePath="$PROJECT_DIR$/.idea/blog.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/blog.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/about.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/about.html" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -28,19 +31,21 @@
"keyToString": {
"Python.main.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "master",
"last_opened_file_path": "/home/vlad/waste-detection",
"last_opened_file_path": "/home/vlad/blog/static/photos/izvor",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors.Python",
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
"vue.rearranger.settings.migration": "true"
}
}</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/static/photos/izvor" />
<recent name="$PROJECT_DIR$/static/photos" />
<recent name="$PROJECT_DIR$/static/fonts" />
<recent name="$PROJECT_DIR$" />
@@ -61,8 +66,9 @@
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="Python 3.12 (blog)" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
@@ -79,7 +85,8 @@
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-python-sdk-6a3326d57233-c546a90a8094-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-242.24807.21" />
<option value="bundled-js-predefined-d6986cc7102b-deb605915726-JavaScript-PY-243.22562.180" />
<option value="bundled-python-sdk-85c76a3b01b3-9a18a617cbe4-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-243.22562.180" />
</set>
</attachedChunks>
</component>
@@ -106,6 +113,8 @@
<workItem from="1729273260281" duration="187000" />
<workItem from="1731235800053" duration="8835000" />
<workItem from="1732718480949" duration="1717000" />
<workItem from="1734782959114" duration="2022000" />
<workItem from="1735979177444" duration="746000" />
</task>
<task id="LOCAL-00001" summary="Blog">
<option name="closed" value="true" />
@@ -339,7 +348,15 @@
<option name="project" value="LOCAL" />
<updated>1732719140478</updated>
</task>
<option name="localTasksCounter" value="30" />
<task id="LOCAL-00030" summary="Add some Izvor screenshots">
<option name="closed" value="true" />
<created>1734783230169</created>
<option name="number" value="00030" />
<option name="presentableId" value="LOCAL-00030" />
<option name="project" value="LOCAL" />
<updated>1734783230169</updated>
</task>
<option name="localTasksCounter" value="31" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@@ -357,7 +374,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Font attribution" />
<MESSAGE value="Add an article on Ampoule" />
<MESSAGE value="Extra bullet point" />
<MESSAGE value="Remove None" />
@@ -382,9 +398,10 @@
<MESSAGE value="Add gigadata" />
<MESSAGE value="Add date to all posts" />
<MESSAGE value="More articles" />
<option name="LAST_COMMIT_MESSAGE" value="More articles" />
<MESSAGE value="Add some Izvor screenshots" />
<option name="LAST_COMMIT_MESSAGE" value="Add some Izvor screenshots" />
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/blog$main.coverage" NAME="main Coverage Results" MODIFIED="1732719071078" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/blog$main.coverage" NAME="main Coverage Results" MODIFIED="1734783549604" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
</component>
</project>
templates/about.html
@@ -5,7 +5,73 @@
{% block content %}
<h1>About me</h1>
<p>
I'm a student from Timișoara, Romania, interested in programming and computers in
general.
</p>
<p>
I use <b>GNU/Linux Mint</b> on all 3 of my computers. I like it because it's easy to use but
without compromising on customisation, and that the developers are very engaged with the
community (I've even had a conversation with Clement Lefebvre, the lead developer of
Linux Mint; can you have one with Tim Cook, Pavan Davuluri, or even Mark Shuttleworth?).
</p>
<p>
I do disagree with some of the decisions made by the Linux Mint team, and I'm probably
going to make my own Debian Testing-based distribution in the future, but that's only
because of other reasons, I would still be happy to use Linux Mint.
</p>
<p>
I believe GNU/Linux only lacks the promotion it deserves. Unless it gets some promotion
(think advertising, pre-installation on computers etc.), even from a specific
distributor, or a miracle happens, the paradox will remain: people don't use GNU/Linux
because it doesn't have enough software, and software developers don't make software for
it because it's not popular enough.
</p>
<p>
I prefer using libre software <i>when practical</i> (so phones are an exception, because
there's no libre phone that's at a decent price with decent hardware; I still want a
libre phone so much, but wasting 1 year to get GNU/Linux on a 4-year-old phone isn't
OK for me).
</p>
<p>
I don't want a GNU/Linux phone for privacy or any specific feature; I want it because
I want to have control over my phone and do anything the hardware is capable of. Androids
aren't smartphones, they're Java phones that happen to use the Linux kernel.
</p>
<p>
I do web development, the old-school way, with Flask, Jinja2, HTML, plain CSS and JS.
I don't do SPAs because you have to duplicate your logic, and also reimplement the
browser's features. I hate the trend of everything being a SPA, including static sites,
e-commerce, blogs, GitHub, and more. I have no plans to learn React, Angular, Vue, or
Svelte. Also, I don't design UIs with Figma or similar tools, I just write an initial
version in code and iterate on it.
</p>
<p>
It's fine that SPAs exist, but they should only be used when building something like
Google Maps, Google Sheets, games or other things that update a lot.
</p>
<p>
I do enjoy using htmx for AJAX-like updates, I write my own JS when I really need it,
and I like using WebAssembly with MicroPython for interactive features. MicroPython
loads in less than 500ms, even on Androids.
</p>
<p>
Besides web development, I do other things in Python. I write GTK apps for the GNU/Linux
desktop (not GNOME), small CLI tools and I train AIs for image recognition. I'm also
trying to get into game development.
</p>
<p>
I also do C++, mainly for competitive programming (in the Romanian Olympiad of Informatics,
only C/C++ is allowed), and I'm trying to expand my knowledge of C++ to GTK and make my
own interpreter for an object-oriented language.
</p>
<p>
I haven't tried Rust and Go, and I have no plans to learn them. OO (the Python and
Smalltalk way, not the forced Java way) makes a lot of sense to me and I don't understand
changing it for the sake of change.
</p>
<p>
I'm also interested in electronics and robotics, but I don't have the time and money to
get into them.
</p>
<h2>Links</h2>
<ul>