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>