by roundabout, Thursday, 14 August 2025, 09:41:52 (1755164512), pushed by roundabout, Thursday, 14 August 2025, 09:41:56 (1755164516)
Author identity: vlad <vlad.muntoiu@gmail.com>
d7516e603e1a9ea39f7e1acc46f46cf0beb9b195
.idea/workspace.xml
@@ -4,7 +4,8 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="b2c629ea-d173-4caf-b306-cbeaee617270" name="Changes" comment="Fix index pages' broken links">
<list default="true" id="b2c629ea-d173-4caf-b306-cbeaee617270" name="Changes" comment="Add a dark theme">
<change afterPath="$PROJECT_DIR$/articles/Do not get Samsung.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@@ -28,22 +29,25 @@
"Python.generate.executor": "Run",
"Python.main.executor": "Debug",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "master",
"last_opened_file_path": "/home/vlad/charta",
"junie.onboarding.icon.badge.shown": "true",
"last_opened_file_path": "/home/vlad/blog/static/photos",
"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.HTML",
"to.speed.mode.migration.done": "true",
"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/photos/izvor" />
<recent name="$PROJECT_DIR$/static/fonts" />
<recent name="$PROJECT_DIR$" />
</key>
@@ -82,7 +86,8 @@
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-python-sdk-348a24fa61fa-5312c7369657-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-251.23774.444" />
<option value="bundled-js-predefined-d6986cc7102b-e03c56caf84a-JavaScript-PY-252.23892.515" />
<option value="bundled-python-sdk-7e47963ff851-f0eec537fc84-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-252.23892.515" />
</set>
</attachedChunks>
</component>
@@ -124,6 +129,9 @@
<workItem from="1742222443173" duration="1696000" />
<workItem from="1742304349389" duration="2000" />
<workItem from="1742578470374" duration="5000" />
<workItem from="1746351256945" duration="9039000" />
<workItem from="1746449599308" duration="36000" />
<workItem from="1755156520743" duration="3060000" />
</task>
<task id="LOCAL-00001" summary="Blog">
<option name="closed" value="true" />
@@ -397,7 +405,31 @@
<option name="project" value="LOCAL" />
<updated>1742224019895</updated>
</task>
<option name="localTasksCounter" value="35" />
<task id="LOCAL-00035" summary="Add a new post">
<option name="closed" value="true" />
<created>1746356122435</created>
<option name="number" value="00035" />
<option name="presentableId" value="LOCAL-00035" />
<option name="project" value="LOCAL" />
<updated>1746356122435</updated>
</task>
<task id="LOCAL-00036" summary="Add Chromium full-page screenshot">
<option name="closed" value="true" />
<created>1746357096053</created>
<option name="number" value="00036" />
<option name="presentableId" value="LOCAL-00036" />
<option name="project" value="LOCAL" />
<updated>1746357096053</updated>
</task>
<task id="LOCAL-00037" summary="Add a dark theme">
<option name="closed" value="true" />
<created>1746360413779</created>
<option name="number" value="00037" />
<option name="presentableId" value="LOCAL-00037" />
<option name="project" value="LOCAL" />
<updated>1746360413779</updated>
</task>
<option name="localTasksCounter" value="38" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@@ -415,9 +447,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Update article" />
<MESSAGE value="Add ampoule docs" />
<MESSAGE value="Update ampoule docs" />
<MESSAGE value="Roundabout article" />
<MESSAGE value="Add source link" />
<MESSAGE value="Article" />
@@ -440,10 +469,13 @@
<MESSAGE value="Update" />
<MESSAGE value="More" />
<MESSAGE value="Fix index pages' broken links" />
<option name="LAST_COMMIT_MESSAGE" value="Fix index pages' broken links" />
<MESSAGE value="Add a new post" />
<MESSAGE value="Add Chromium full-page screenshot" />
<MESSAGE value="Add a dark theme" />
<option name="LAST_COMMIT_MESSAGE" value="Add a dark theme" />
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/blog$generate.coverage" NAME="generate Coverage Results" MODIFIED="1742224005063" 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$generate.coverage" NAME="generate Coverage Results" MODIFIED="1755162909719" 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>
articles/Do not get Samsung.md
@@ -0,0 +1,36 @@
---
title: Do not get a Samsung telescreen (or turn your phone into one)!
topics: ["copyright", "free software", "drm", "mobile"]
date: 2025-08-14
---
One UI 8 permanently removes the option to unlock the bootloader on all devices
and this is very likely just the first step towards an accentuated
*enshittification* of the devices.
With the One UI 8 (Android 16) update for Samsung tele~~phones~~screens, it is
no longer possible to install OSes ("custom ROMs") not signed by Samsung. Upon
installation, UI 8 [tivoises](https://www.gnu.org/philosophy/tivoization.html)
the device and there's no way to restore. Samsung changed this silently without
a press release or something, but there are many sources confirming it:
* [XDA forum](https://xdaforums.com/t/bootloader-unlocking-option-removed-from-one-ui-8-0.4751904/)
* [SammyGuru](https://sammyguru.com/breaking-samsung-removes-bootloader-unlocking-with-one-ui-8/)
* [The Verge](https://www.theverge.com/news/714902/samsung-one-ui-8-bootloader-unlocking-android-roms)
* [Hacker News thread](https://news.ycombinator.com/item?id=44706409)
This is a major injustice to users: offering a general-purpose computer but
locking it down for profit. The USA models already had this for a few years, but
I thought it is a part of the mobile network operator deals. Turns out I was
wrong and it is simply because Samsung want to provide worse devices without a
way to escape, it is just like the totalitarian states built highly fortified
borders in order to prevent people from escaping so they can do anything they
want. The difference is that there is an escape here, it is not buying Samsung
and possibly refusing to update your existing one to UI 8.
Today you can no longer install an alternative OS on your phone, tomorrow that
might mean Termux is illegal, or that EU Chat Control is enforced at the OS
level with an AI keylogger, or that sideloading is disabled, or that the phone
takes screenshots every 5 minutes. This practice — selling a general-purpose
computer only to prevent users from running what they want on it — ought to be
illegal.