Category: Uncategorized

  • Seen few Typescript compilers out there

    The fact that you can not write a fast compiler for typescript using typescript and have to use go or rust for that does not make typescript bad per se.
    it just marks well its scope of applicability. Business logic, routing rules, small pieces of messages handling glue code on edge devices or cloud functions, and other places where you mostly connect with glue code some other libraries of high-optimized code.

    Well, from code based config to shell scripts, from website backends to in-game scripting. it is not that bad if a language can do all that, even if you can not write its own compiler to be fast on it.

    BTW there are few interesting projects allowing to compile typescript to native executables based on rust. They have 95% coverage or so of Typescript compatibility with Nodejs as Perry.

    I even think to use Perry for next my pet project (local-first blogigng tool).

  • Getting Reddit Banana Master achievement is a sign

    Yesterday I said in a Reddit that it is yet another social media with addictive algorithmic feed (even if often not so endless as at Facebook). And now I got another reminder I am doomscrolling too much. That Banana Master achievement is about “scrolling 100000 banana lengths”.

    I surely need to develop that local-first blogging software I told about recently. Even if it will not become a widely used thing, I will spend on it time I would doomscroll otherwise, and may get some advanced skills in process, as I can try to use some new stuff such as combining nodejs with servo browser engine and make it a desktop app without Electron.

    Fediverse Reactions
  • This retro-messaging app surely has an unique vibe

    This retro-messaging app surely has an unique vibe

    Just seen a news about the Roost Social app which simulates exchange with messages sent via birds-post to significant extent. Delivery time calculated quite realistically, and it surely have a very special vibe, as you can see how your birds fly with messages and back.

    Sadly, this is again a mobile app, not something that is desktop/laptop friendly. But it is sorta understandable, as in its goal to make delivery time as realistic as possible, authors mistakenly decided they need to rely on location services from mobile platforms, instead of give chance for people to set the location ourselves.

    This app also is example when at least it is possible understand why location data is being collected by an app.

    The good part is that it shows how people actually tired of instant messaging, and the idea of local-first blogging and non-instant email-like messaging app can work for some people. Especially if it does not involve collection of location data.

  • How a law can break Google and Apple duopoly

    Seaten your belts, lot of legalize will be below.

    I find these kind of problems to be within politics, not tech. The Google/apple monopoly does so far as I know that there is NO even EU age verification app for desktop & tablet linux. May be even for desktop windows there is no such app, that can be seen as something funny. So this is not just about banks or delivery apps.

    Update: added requirement to support OS replacement

    A legal solution

    I think these laws are necessary to break Google and Apple mobile duopoly and boost innovation and improve EU tech sovereignty:

    Apps and website parity

    1. Make mandatory the apps and websites features parity. “Semantic and functional equivalence”. App and website may look visually different, but identical functionality should be provided at both environment.

    This would solve the problem when some functionality provided only via mobile app but absent at bank website at all or provided in some limited manner. For example the bank I use does not provide travel insurance purchase feature at website, without any meaningful reason.

    Forbid platform features fencing

    2. Forbid providing some functionality of app only on some OS or platform but not provide it on other without any technical reason (like, if some app provides functionality on iOS but not providing on android). This is continuation of 1 actually, but not at web-mobile axis, but across mobile platforms.

    Solve the drivers issue

    3. Make mandatory to provide for every electronic component sold in EU separately, as part of repair kit or as part of whole device, information and software necessary for drivers development. Components are parts such as CPU, temporary or persistent memory, camera, proximity sensor, camping light, fingerprint scanner, or what ever component is. This would require to provide public access to all information (documentation, presentations, audiovisual and interactive learning materials, pin layouts or what it else can be) and software (such as emulators, drivers test kits, libraries and other software) necessary for drivers development. Repair kits and whole devices should provide list of actual links (no broken links like 404, 500, 403, 401 or other such responses) to such information for all parts the device consists of or included into the repair kit.

    Without such law there will never be good drivers for e. g. linux kernel modules, for all devices existing today. For example, my smartphone has camping light I never seen before on other phones. It will likely require a dedicated driver for linux.

    Demand allowance to OS installations

    4. Every device sold in EU that have OS as is (such as smartphone, table, laptop, smartwatch and alike) should have a way to replace the installed OS with OS of user choice either via overwriting a special area of memory on device with an OS image, and this procedure should not require any permission from device vendor or seller, and should be reversible by repeating the procedure with vendor-provided image.

    How to enforce this

    Bind 1 and 2 into bank license requirements. If you are bank and you can’t provide 1 and 2 of above after transitional period, your license would be revoked.

    If you are municipal entity, state body or government entity/body, and you created or plan to create some public good (such as public transit payment/schedule app) or “public evil” (mandatory to use without obvious benifit) app (such as EU age check app), you should follow 1 and 2 same way as for banks.

    these 1 and 2 can be applied to the private apps with at least 100 000 EU users as well (largest delivery apps, taxi riding apps, and social media apps, other apps).

    The requirements 3 and 4 can be made either as literal forbidding selling “smart” devices having an OS aboard but not supporting the 3 requirement or adding special tax like 30% for such devices and using this tax to fund european projects for devices that support requirement 3 and software supporting requirements 1 and 2.

    How this could be done?

    Well, it would means to do one of the most boring things to do – get involved into politics. Vote on all elections for party which most likely would promote such law. Push this law into such party agenda from bottom to top. This means getting involved into as many elections as possible, from primaries to parliamentary elections, and in day to day party life like primaries, rountables, polls and internal events of the party you want bring such laws.

    The push for EU tech sovereignty may be useful for this.

    Fediverse Reactions
  • Small sad thing

    It is sad to see how you spent 2 hours to write a long post about some local-first blogging software idea with federation support but with a newspapers-like alternative to endless scrolling of “feeds”, and then single reaction you get is like from someone writing about AI, while one of two main questions of that post was literally is there way to implement automatic generation of these “newspapers” without LLMs?

    I find this to be a sad thing.

  • An idea or concept for local-first blogging thingy

    An idea or concept for local-first blogging thingy

    Reblog via Jeremiah Lee

    The opposite of cloud computing is LEAF computing:

    Local application logic and data
    End-to-end encrypted data
    Autonomous operation without non-optional dependencies
    Federated capability between devices and connectivity with trusted parties

    leafcomputing.net/?ref=activit

    I seen this thanks to boost from Elena Rossini FOSDEM blog.

    And this happened exactly when I thought about moving away from wordpress to something completely different. But this different thing, suddenly, does not exist at all yet. Or at least I do not know about its existence.

    I will be as brief as possible. Imagine a blogging software with these traits:

    Local-First

    You have full copy of all your posts, media files, and even videos locally. Even the feed of authors you follow is fully local to most possible extent. You can read locally without internet, write replies and place reactions to them locally, even without the internet connection active.

    Minimal network footprint

    All what is necessary to keep it online is to connect sometimes, like 1-2 times per day or once per few days (but with larger packs of data to exchange) to a minimalistic online data pod.

    This online data pod would consist of static pages generated from the posts, which would have some minimally interactive “islands” like comments section or reactions panel, print button or some other pieces like images gallery or advanced image widget if used, with fallback to bare minimum thing if your reader disabled the JavaScript at all.

    The small backend purpose would be to accept incoming data via ActivityPub, WebMentions, SMTP, Git, or other possible means, and spread data to your followers with a job.

    It would generate static pages from arriving your posts or regenerate them if related post have been updated.

    From ActivityPub perspective the private messages would arrive to different inbox.

    End-to-end encryption where applicable

    Your data on this pod would be criptographically protected/signed but not encrypted by default (unless if this piece of data have been arrived in encrypted form to be encrypted by the sender (by you or some of your respondents).

    Simple online storage at core

    The core function of online data pod is to generate static pages from the arriving posts and media, serve it, spread updates to followers, and collect incoming reactions and replies.

    Mostly it would consist of following parts:

    • Static Files skin (layout, templates, styles, images)
    • Generated pages and media (served as static but updated on changes)
    • Signed data bucket (can be a simple set of files and directories but without direct public access, no database mandatory). You can set expiration age on any of your posts or messages.
    • Arriving Data Cache (reactions, replies, data from followed authors). Can be implemented as another private directory. Cleared either as soon as downloaded to you or after reaching some age, such as 1 day or week.
    • Jobs runner (spread updates to your followers, delete expired data).
    • Data receptors (SMTP, IMAP, FTP, API requests handlers for ActivityPub and WebMentions, API handlers for interactive islands like comments and reactions section).
    • Minimal metadata database built based on files from directores listed above where necessary and to keep state for jobs runner. Can be implemented as set of JSON files and special module with in-memory indexes and in-process API similar to how JSDB works. Used only where JSON files are not enough or be too slow/ineffective.

    Most of these elements, you can notice, would work with 3-4 directories of files, like:

    • long-term static. Public read-only access. never change after online data pod started
    • Public generated static – public read-only access. can change while pod. Generated based on posts data and other events.
    • Private protected data – private data that most of the time is readonly unless you edit it or delete from the editor and send the update.
    • Arriving data – private data temporary stored until expire or until downloaded, or until processed by jobs runner, depending on what kind of data it is – your updates and new posts or it is
    • Departing data – private data temporary stored until delivered or until become clear data delivery impossible and decision made to not delivery that data.
    • Jobs runner states – private data used for scheduled jobs.

    Connectivity hub and jobs runner

    This is the place that goes beyond files storing. Ideally it would be something that can handle SFTP, IMAP, SMTP, and these HTTP API endpoints for ActivityPub and WebMentions necessary for federation part. This, to significant part, is why ever it can not be done via pure SFTP or IMAP or SMTP part.

    Nomadic identity

    I guess this is where it may be the most boring part of this, with all these digital signatures, authentication, and so on. Mostly it is about binding signing key to digital identity such as author or blog or organization or service. It is simply to say that:

    • Use this public key to check whether alice@foo.bar.online nickname is author of post https://foo.bar.online/AliceCooks/Pancakes
    • Check with this (other?) key whether given direct message is from alice@foo.bar.online
    • Use this (third?) key to encrypt messages to the alice@foo.bar.online sent via SMTP (or ActivityPub?)
    • Public profile card details such as Alice The Space Cook title, profile pic, card background imagery, description, tags, topic spaces (labels from tree-like catalog like alt.hobbbies.home.cooking and alike.
    • Previous key and signature (optional if this is not about changing the key)
    • Digital signature of all this above with the first key from listed above.
    • Endorsements – list of digital signatures with such cards from people who endorse (express their trust) to the claims above).

    Note that all data is included into these cards, all images, descriptions, URLs, tags, and spaces is embedded. So card with endorsements can be quite big, up to 1 megabyte. But it is better than somehow store that at some centralized catalogue.

    What really makes this identity nomadic is the fact you can multiple online pods or connectivity hubs storing your data or hop from one such hub to another together with your followers and contacts lists stored locally too.

    Contacts and followers

    The system of such cards described above would work even without classic DNS, but based on GnuNet GNS or local catalogue of “internet phone numbers” described by Aral Balkan in mentioned his post.

    Daily Newspaper instead of endless feed

    Instead of endless feed that causes intentional or unintentional doom scrolling, I would suggest to use locally-running code that would create using data downloaded from the online pod(s) a sort of “daily newspapers”, lets call it like “News for Breakfast”, “Evening Observer”, or “Climate Express” or “Solarpunk Tribune” or “Hightech news bulletin”. It is possible to create multiple various such newspapers working on your local data (what arrived during some timeframe) in various style. Some of these “newspapers” can include some global stuff, or use some global trending things, but this should be absolutely optional, and provided by following the related author which would provide such manually picked global news data or global topics or events and classification settings or both. Each of that would be separate offerings.

    The whole such experience should be fully available locally, without connection to the internet, as soon as all related data downloaded.

    Imagine if you open the app (at desktop or laptop!) and see two tables. One have Newspapers sign and looks exactly as the table with stack of newspapers. You pick one of them, and it opens in a way resembling the newspaper, with the front page content, and the rest content cut into pages. Of course the resemblance of newspaper is limited, and if you want, you can open the post(s) mentioned in the newspaper text or used to produce it.

    The other table would look like a table with a pile of letters, you open in more or less letter-like experience, or that experience can be just a “boring email-like client” or something more like “messenger-like” experience or something between, but with letting people know it is NOT designed for chat-like instant messengers experience.

    At a Glance

    Together this may look as something not very powerful, as many people today assume that any software aiming to be “successful” or “widespread” should have audio-video calls and instant messaging features.

    Capabilities

    The software I describing is mostly centered around these capabilities intentionally:

    • public long read posts with formatting and attached media and cached embeds for links.
    • Public reactions, comments and reposts
    • Private messages with e2ee capabilities
    • Contacts card collection, exchange and endorsement
    • Daily newspaper-like thing instead of “feed-like” experience

    Big parts

    These 2 completely different parts are necessary:

    • Local-first desktop software (blog editor based on Markdown full support (including sanitized html blocks and CSS for advanced formatting), messages a-la mix of email and asynchronous chat, and contacts cards library)
    • Online data pod that would work as public data point and node for the system. Multiple pods can be used by same person. It should use as basic and widespread protocols as possible, such as SFTP, SMTP, and IMAP, and open standards as ActivityPub, WebMentions, WebIntents.

    Moderation and abuse reporting not covered, but doable

    This idea does not cover such aspects as moderation, abuse reporting, or preventing local abuse.

    Regarding local abuse like relatives opening your PC without your pemission. It is terrible thing even to mention, while I personally I did not experience anything like that. I just remember some blog post describing these treats and related problems. Software for these kinds of treats model surely completely different and needs another set of capabilities like “delete all password”, “fake/safe data” credentials, and even local data should be encrypted similar to how Aegis 2FA OTP manager or some SimpleXChat messenger clients stores their database and require to type password to open the database.

    Regarding moderation abuse reporting, situation is more complicated. To significant extent, the moderation can be done locally with various tools such as blocklists/mute lists, and regarding abuse reporting, it mostly about contact de-endorsement via some high-trusted third-party, who has been chosen by person who report abuse as moderator.

    As the online data pods can be run by anyone, and not necessary it would be some mass service for such pods, it can be complicated to really “block” someone. De-endorsement would have strong effect, if moderator chosen by many or trusted by many (like “I may not use moderation services by Foo Bar, but I will accept de-endorsements” they may issue.

    De-endorsements are public and special kind of posts.

    Endorsements can be private in sense that such endorsement issued about one contact A for another B by a contact C and only C and C know about that. Or they can be public, with special kind of post.

    Endorsement and de-endorsement posts are consists of contact cards being endorsed and de-endorsed.

    Blocklists can be about contact cards (specific digital identity), or about online data pods (same as domain block or de-federate in Mastodon), spaces or tags or mix of these above. Technically blocklists are public blogs following special formatting.

    Moderation labels can be applied to the contacts and posts by moderators which are more like labeling, and it not necessary means muting or blocking or de-endorsement, but for some of moderation labels it can mean de-endorsement. For example if you are a moderator and place moderation label disinformation on post or account, this is not same as placing tag disinformation on blog post debunking some disinformation or exposing another propaganda network.

    Still, due local-first nature of the project, the actual moderation can happen only locally, except for case when you follow some blocklist or do not want to see content labeled as sex and porn or violence by moderators or even having tag (not moderation label but tag) nsfw you can update your online data pod to silently ignore such data on arrival, so it even would not be saved at pod, and will not be arrived into local data as well.

    Following a moderation posts blog and expressing related level of trust (“I will use this blocklist and that labeling service”) at local settings and online data pod configuration is single way to implement moderation for local-first project.

    Questions and Examples on Newspaper format

    Is there a way to make such “newspapers generator” without LLMs? Are there more specialized algorithms for tasks like that? To take various posts sequence for some time interval, or multiple such sequences, mix with global events definition list, and produce newspaper-like format, consisting of some pages of text and images, sorted by priority, to be sure the most important go to first few screens? Or without sorting but just with grouping?

    I would like to avoid LLMs, even locally running, for feature like that.

    For global news, such newspaper can be human made like how the Civil.ge newsletter Morning Cable works.

    But what is alternative to LLMs if make this kind of “newspaper” in more or less automated way? Like…

    Today SuperSun writes about upcycling practices in solarpunk community Optimistic Valley and describes how abandoned warehouse become a creative recreational and living space for the community and what the struggle it was to get all necessary permits from local council.

    19 people commented this and expressed 128 reactions. The most surprising was disbelief expressed by CringyPunk what caused notable responses both from SuperSun (author) and BringingSunHere

    Or another type of thing what can land in the “Newspaper” regarding global news:

    The latest Russian strikes against Ukrainian civilians caused widespread condemnation and widespread criticism from your contacts. Some authors you follow try to use satire and humor to cope with the horror of war and another wave of destruction and death. It works partly because such strikes does not help Russian genocidal empire to reach their military objectives, ISW notes. Quite opposite. Also, more EU and US sanctions to come in response.

    And third example for such newspaper blocks:

    The ongoing football world cup event sparked lot of emotions from your contacts. 10 of people you follow expressed joy on catastrophic loss of US team to Belgium with 4-1 scores while BoringSceptic wrote a grumpy longread on how the big sport funnels private and public money away from top priorities and used solely for propaganda by the dictatorships for decades.

    These are random examples of how these blocks in newspaper-like stuff would like.

    Online Pod services

    Even with all these tutorials floating around about self-hosting and blog about Elena Rossini Sudo Life covering her fascinating self-hosting adventures, not everyone have time to self-host, and if we would like to land more people to platform like what I described, it would require some online data pod service, like hosting service running analog of Domain software for kitten by Aral Balkan.

    It is likely that some of such services could be a paid ones, others would try to cover up expenses with donations via Patreon and other ways.

    Other such services can use one-time entry payment instead of regular payments just to protect self from spam and disinfo bots.

    Limitations

    The project is not about total anonymity or full-blown censorship resistance.

    Some of well-trusted endorcers may use video call where you would speak with them and show your id card or something like that to check you are surely not a bot or ensure that you are really who you claim to be. But not every endorsement would come from such service.

    The project does not require to use some advanced protocols or tech like Tor for anonymization or I2P or other peer-to-peer connectivity for directly connecting with your authors.

    The whole idea of online data pods is a way to overcome the fact that internet is a set of pyramids, such as SSL certificates tree, DNS system is based on centralized names tree prune to censorship and attacks, that is why it is pure optional for this system to work. And the whole IP addresses space is non-uniform – so called residential IP addresses are restricted or second-class citizens, as it often happens with SMTP due spam flood happening with email.

    The project intentionally avoid use cases which require instant messaging capabilities or real-time connectivity like audio-video calls. The whole idea of this project is to create environment encouraging you to making reading of news some intentional ritual that happens 1 or 2 time per day instead of obsessive doom scrolling you would do 24/7. Create environment where being semi-connected is encouraged, going online sporadically from time to time instead of being always connected.

    I also don’t consider a mobile platform as feasible environment (except may be tablets? Especially with Linux?) and aim desktop-laptop kind of environments.

    What is exist around?

    The Briar is single project where there is some features combining longreads (via forums feature) and peer-to-peer connectivity with some “mailbox” (a server that would buffer messages to you while you are offline) which resembles a bit the online data pod I described above. But for now it is in maintenance mode.

    The desire to provide local connectivity combined with instant messaging bumped into current limitation of existing tech, both in hardware and software scopes.

    Question of the day

    So the main question is following – is there any audience for software for local-first blogging with nomadic identity and online data pods like what I described above?

    Fediverse Reactions
  • Is this a realistic scenario?

    Today against found this image:

    Man, brunette shown wearing black tie and office shirt. He shown with 2 slides on background. First slide has text
They're not building Data Centers for AI
Second slide has text
They're building the infrastructure required to establish and maintain a 24/7 digital prison surveillance state.

    To what extent this meme a precise description of what happening around AI data centers or this is an exaggeration?

    Fediverse Reactions
  • Russian software helps suppress protests in Georgia

    Seen today this article: https://algorithmwatch.org/en/russian-surveillance-face-recognition-georgia/

    Seen and Silenced: How Russian Surveillance Software Suppresses Georgian Civilians Rights

    Over the past two years, the Georgian government has built a comprehensive face recognition enforcement system, procured by a Moscow-based company with ties to the Federal Security Service (FSB). The impact on demonstrators is appalling.

    Fediverse Reactions
  • Day 577 of nonstop, nationwide protests in Georgia. πŸ‡¬πŸ‡ͺ

    Day 577 of nonstop, nationwide protests in Georgia. πŸ‡¬πŸ‡ͺ

    Even when some people said that resistance stuck or whatever, people keep protesting for more than 577 days in a row.

    Photos from https://bsky.app/profile/did:plc:mkzewv6qowvw524zhmmty5nz/post/3mpburqwgq22u

    Fediverse Reactions
  • One energy source surely overlooked

    If you would explore internet for a while, you surely seen people who get so angry about something that it easy to imagine them moaning from frustration, screaming from anger and pain, and so on.

    Yes, I am talking about thing named butthurt. From time to time I seen people across internet. Usually they are fans of dictatorship, such as ruzzian genocidal empire or some other dictatorship or some sort of fascism. They can experience so strong butthurt from e. g. ruzzian genocidal army losing the ground they occupied in Ukraine. Or about something else, such as people of color representation in electroninc games and media.

    Seeing their screaming and screeching across the internet got me to idea that if it would be possible to attach them to some energy transformation equipment to transform energy of their butthurt into electricity, it would be possible to extract so much electricity that it would be reasonable to export it to other galaxies.

    Fediverse Reactions