Author: wikiyu

  • Python

    I really like the functional programming with the simplicity of making stupid things. You can just take a python, or bash, or (even) c# or java and just write straightforward code that does your direct need.

    You know without building whole ecosystem and cicd pipeline and crud and whatever. Just joining things to do in logical pipe of actions.

    the good

    Python is great for that. You are taking your build blocks aka libraries, initialize them, use on an object to work on and throw modified ones. Step by step to get a result.

    the bad

    Of course there are bad parts like building an venv for these fucking scripts, and always messing with that hilarious method of downloading new ones using one of two dozen different repository tools, and … you know what I mean. pip, pipx, distro packages, and other shit that you have to use to get these required libs.

    Oh and I have to mention that great movement of “do everything in JS” with the same mess with versions of node.js and its libraries… at least these bastards have quite unified world of dependency downloading

    and the ugly

    spaces. tabs. indents. No braces. So code looks like the “evidence” of dozen of guys that walked out from the pub after 5 or 6 pints to the snow and decided to make a contest about “who have the strongest pressure of pee”.

    And yes. This post have been bought to you by another python mess that I found on github, but I needed to adjust it as it was not working on my machine, and download threescore of dependencies that I already have on my system, but maybe in different venv so I cannot use it and need to download them one more time.

    Have a nice day friends

  • Shrava

    As I want to write more about my last post discovery -> Droid Pad. Its time for something else. For being fit. You know, new year new… no not that. I hate Strava. Really. It is one of worst pieces of shit that I’m forced to use. Lets go!

    forced soft

    Nearly every sport mobile software can push their trainings into strava, nearly each gps device with gsm or wifi communiation can push onto strava. If it have BT they have an app that is (in many cases) strava pusher…

    So you are forced to use this piece of software, because most of them cannot even push anywhere else. So now I want to get back. Not from having account, but from using it as really active user.

    I understand that they are using our tracks for their own profit, but that is not important for me. I also assume that they are solding my tracks with some kind of token connecting me, my tracks and my ads tokens, and maybe even email address etc. So yes its hardcore but who cares 😉

    It’s easy to use, because its embeded into most fitness/sport/etc stuff. And even there is NO other rational/open alternative. Even no simple “ftp upload” or some other universal way like dropbox or other easy upload files method.

    why

    I want to have my bicycle trips on single map. I want to have an possibility to find where I was, where was that nice lake deep in forest few years ago… etc

    But I hate this strava standard of forcing you to socialize, all these dark ux patterns pushing you to TRAINING instead of just having fun of sport, trips, or tourism. You have to train, you have to check you times, your power, etc…

    Really it is destroying you while a random app that you want to use as a track storage is trying to use any possible ux trick to push you to pay them for training add-ons, for some extra statistics, for … shit that you dont need.

    Also when I log in its great what I see:
    1 * prompt to change my private settings
    3 * prompts to give kudos for others| (2 in notifications)
    3* “try some function” which is only in paid option
    2* join challenge prompts
    Very big “YOUR GOALS” section (available only for paid plan)
    Suggested friends that I dont know but maybe we crossed our paths somewhere on bike trips or while running…

    And yes i try to just not use their UX, So whats next? Ill try to use some other software that is selfhosted to use as my map of choice.

    how

    It will be something quite tricky, as they are cutting out their API endpoints, so I will try to put some scripting to make it in a way:

    Device => strava => (my script) => my software + remove this gpx from strava.

    So on Strava there will be no data for long time, but i will try to use them as a storage between device and my fitness software of choice… but where to go?

    Options

    Ok so what do I need for web component

    • Website with maps of my tracks
    • Some summary for month/year
    • Way of automatic adding new tracks (API, upload folder, sth like that)
    • SelfHosted

    What also would be nice:

    • any open app for android that supports the web component upload
    • and maybe even a WearOS (or how the hell is that named today) app for my smart watch?

    So what do we have:

    FitTrackee


    Thats moment when I have done some pause of writing this post and meanwhile my friend gave me access to his FitTrackee server. So for now I am not comparing them and just use what I was gave to.


  • Mobile soft

    I would like to know that sick Lenovo engineer who created keyboard in my Legion laptop. Anyway cleaning it after some minor wine incident is a hardcore action.

    So lets play with mobile. I have some … ideas? wannabes? maybe just i like to test some soft and write about it. Especially when I just* decided that I would like to get rid from a lot of bittech apps on my phone… and life. So for example I have now three different apps for browsing pixelfed: original one, pixelDroid and pixelix. I now have also Box, Box for Formula 1 coverage, and few more that I’m testing and trying out for fun.

    DroidPad

    I think its the most important app in my whole list. That simple app is fully configurable network … i don’t know. Its a remote pilot for any online stuff. You can make buttons, sliders, dropdown lists… and they will call any websocket, http1 request, mqtt queue, BTLE call…,

    Its great app that is so simple, you can create your own view with all needed shortcuts, runners, etc. I have there shortcuts for my own API, for refreshing rss reader, for moving data between different apps, for updating my server, for pushing buttons on websites etc. Great toy for playing with. I love that part of software.

    NFSee

    Another app that is important in my life. It is just a NFC scanner for any cards, tokens, etc… gives just all info from cards, tokens etc. Simple tool for simple stuff.

    ACode

    Simple IDE for mobile with FTP, GIT, and syntax coloring included for nearly everything + a lot of available plugins. As BT keyboard owner I really like this solution to have option to write some simple bugfixes on the fly on my mobile. Much easier is to take a BTKeyboard then to have a laptop and backpack with me. Simple and nice solution.

    Box, Box!

    app that gives you everything about Formula 1 without ads and mess from official one. News, statistics, results, calendar… and no “register now” mess. Great tool that I use ~ 243 days a year. Just in time of race weekends. But its still easier then using website or F1App. Also it takes just a bit of data and storage so I don’t have to consider “is it worth staying on my phone”.

    Thats ones that are staying with me for longer. Maybe some day I’ll try to write next part.

    Have a nice day

    – just in this one means 5 or 6 years ago

  • Links for…

    5th try of writing this

    Ok, so I have a problem.

    I got now over 2000 links in my browsers bookmarks. And I tell only about two folders: /toRead and /toRead(1). Beside of them I have also about 2 hundred of normal links to tools, githubs, apps, websites that I just use ~daily.

    Lets dig in these two folders. I need to do it finally.

    /toRead

    its just a folder with ~1.5k links in some subfolders that some day I decided that I should read some day. And to most of them I have never get back.

    /toRead(1)

    here I have stuff that I have read and decided that I should get back to them in future*.

    Now as I have additional tools in my box I want to make it a bit cleaner. So lets assume that I have some spare time. I am moving all that mess into shaarli app that I am running on my home rpi. All of /toRead got “toRead” badge, and these from /toRead(1) got “reReadNeeded”.

    Now the plan is easy: get thru them one by one and make one of two things: remove or add new tags.

    Depending on tags it will go into new area of “to read”, new area of “worth to know, or reread” (and it would be even here in some form?). Oh and all these stuff should go into linkwarden as copy to read later.

    but

    I have to find a way to put them here. Maybe I just make an html table and include it using simple js, or whatever. Even IFrame is better then messing with ghosts post formating shit.

  • Learning Ghost

    I just started blogging… using Ghost. And It’s really great tool. Unless you want to do any automatizations using API for creating / updating your posts, pages, etc. Editing any content using this API is mess. And lets play a bit.

    <p>My first paragraph of text</p>
    <p>My second paragraph</p>
    <h2>middle text header</h2>
    <p>Third paragraph</p>

    I would think that using something like HTML or Markdown inside your DB for storing text would be great. It is simple. It is well known. We all know how to handle this shit and we all can pass it to email, any browser, or import/export between different engines.

    {"root":
        {"children":
            [
                {"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"My first paragraph","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},
                {"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"My second paragraph","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},
                {"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"some header","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"extended-heading","version":1,"tag":"h2"},
                {"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"My third paragraph","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}
            ]
            ,"direction":"ltr","format":"","indent":0,"type":"root","version":1
        }
    }

    This is the same part of data. 2 paragraps, 1 header, 1 paragraph. Oh and just a bit of additional shit.

    Sorry -> i do not want anymore to add a page for stuff that I want to read. I planned it as a really simple page with a list of links with titles and short note from myself about why I think its worth reading. etc.

    But hey. If I need to create this whole shit… I do not want to do it. Even once. Sorry but someone is really SICK and should rethink his life. Creating something like that is maybe great… but as a learning purpose, not to push that to people.

    lets play a game

    {"children":
    [{"detail":0,"format":0,"mode":"normal","style":"","text":"My third paragraph","type":"extended-text","version":1}]
    ,"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},

    this is one line of text. One paragraph.

    First: seriously, you have to tell your app that inside an array a item is… CHILDREN? who would think about it…

    Second: if stuff is in default state someone decided to still put it into object… all these “xxx:0″ or :normal or :””

    Third: version… first version has still a number? for what?

    Fourth: D E F A U L T S for fuckin sake. LTR is not a default? Maybe we should put it as default for language of whole post or whole website? Or … oh fuck it. 90% of this object is just passing a defult values and killing world overusing electricity, data storage, networks, ram, cpu cycles and everything else.

    AND making harder to create a proper object by 3rd party automations. Because fuck the community.

    So maybe it is not worth staying with ghost?

  • Fusion

    This is now the last application that I am not able to run on Linux, and it doesnt matter what I try. Native Wine, proton, different bottle setups etc. Just this is the last piece of stopping me from removing windows partitions from my nvme drive.

    I am thinking about OSes too much in last year or so. I’ve moved to Fedora few years ago, then moved to Arch and still am sitting on Linux as my daily driver for enough time to not want to get back to windows. UI of my KDE desktop is so clean, windows tiling is so great with my current setup, multi monitor setup is working perfectly in all configuration, as I am using laptop display only, external widescreen only, tv only, 15` external only… or All of them at once, or laptop+wide or laptop+tv or … you understand right?

    And each setup I have managed to have its own windows tiling setup that is perfect.

    Also I have managed something that I have ever reached on windows: run three websites at once, each of them playing audio on different set of speakers or headphones. Like one movie from netflix on TV + BT headphones, one live sport coverage on widescreen + audio on the same screen audio and other movie on laptop screen with audio on usb headphones.

    I have never managed it on windows. And here I have done it just using gui in kde settings while running them.

    So Fusion is making me crazy now.

  • Lost my code

    In last few days i have read few articles about coding, software engineering, LLMs, and push that can be done using these new tools, even by people without big programming knowledge. But when I wanted to summarize that all I found another article that made my day much better. Lets dive into all of these.

    1. The Parallel Lives of an AI engineer
    2. Entering Technical Debt’s ZIRP Era

  • Hoarding.cs

    Ok, first of all: I know that it should be just a .sh or .py script… for you all purists. But I’m a guy who is doing things using tools that he know the best. So YES I am using .net and c# in many projects that it doesn’t fit great, but its easier for me.

    Also when I’m writing script like things in .net I do NOT do all stuff that we all are learned to do. I do not do OOP, I do not do SOLID etc. I am just making few functions that are combined together, often with dynamic objects to ease up my development and put it onto final machine in few dozens of minutes.

    But what my newest tool does?

    It is runned in Cron on the twice a day basis. Then it goes to the local DB of my personal freshRSS instance and gets an answer for a simple answer:

    select * from freshrss_{{username}}_entry where is_favourite is '1';

    then we do a second level magic of …

    foreach (var item in selectionAnswer) {
      if (!DoesFileContains(item.id)){
        PushOntoLinkwarden(item);
      }
    }

    that is that simple…

    Also DoesFileContains is just a function that crawls thru a “movedItems.myFile” which is a file with a structure od “id={{freshRssEntryId}}\n” and this function checks if this string exist in file.

    And PushOntoLinkwarden is a function that do two things:

    1. https://docs.linkwarden.app/api/create-link <<– adds link onto my linkwarden instance
    2. if POST method succeeded it adds item.id to the end of “movedItems.myFile”.

    So this is about 100 lines of code in total. It works. And that’s it. And as it runs on the same Pi that both freshRss and Linkwarden instances I dont care too much about hardcoding logins, apiKeys, passwords etc inside the code. And its still 100 lines instead of 40 because of my laziness. I do some stuff in a longer way just to be able to maintain it in future.

    I want this code to be easily readable by me after a year or two of not touching it. So long function names that describes everything. Not using lambdas and any shortcuts that are really nice and so pushed in programmers social media, for staying in line with this most important request: readable.

    Have a nice day.

    PS but it still is not solving my most important issue: having a single place to go thru all links that I marked as “to check” in many different tools. FreshRSS is posting to linkwarden to preserve what link contains. Not to be readed. But that is a different story for different day.

    PS between writing and publishing that post I have rewrote this mess. Now instead of a file I have a second table in DB with two columns: EntryId and LinkwardenSynchronised (Nullable), so I can add another syncs in future with ease.

  • Hoarding or preserving

    I love to read, and I love to get back to articles, books, essays that I have already read. So I have my own Linkwarden instance that is hoarding a lot of articles and blogposts and so on that I have read and I think that I would want to get back to.

    Is it already a hoarding or preserving them for future? For others? For … authors even?

    I don’t know.

    What I know is size of my database, size of files on disk and that I will need another disk in near future. But is it already a hoarding? I have a lot of blogposts that are so outdated that I should have not add them in the first place. I have even videos from conferences that have been outdated on the day of recording. But I know that maybe some day, someone would want to get it. Like I had some live shows recorded from YouTube that authors lost and I had this nice opportunity to share with them my collection of their lives. It was funny for both sides.

    But

    Now I am adding even more hoarding tools -> my RSS reader have this nice “star”/”fav” button, and all articles that I am starring are going to be added to linkwarden without any more steps from me. Just “starred mean hoarded”.

    Will it be useful anywhere in future? I doubt it.

    But the tool will be a nice addon to my life, and i will feel safe about all these stupid stuff that I am starring in reader.

    Have a nice day.

  • how i hate AI…

    This whole enshitification process in the world is so fucking terrible. We cannot just make an business ready application, now we have these all shit trends about llm/ai, vibe coding, copilots, etc and its so deep in the ass that I even cannot believe.

    Due to some personal reasons I am not working now in this messy IT industry, I look from the side and using tools like hammer, hex driver, screw driver, pliers, file, vice… for living. And Oh god how i love that distance.

    But sometimes I need something from the internet or from my computer. Then I use a sheet of paper, project what I really need and go to create it.

    A, middle finger, I – this is how MS copilot creates “big A, old mans hand showing finger with green nail, big I” And the nail is blue not green, and this is very weird hand, mostly woman hand with some man hairs on it.

    It can be a new 3d project to print on my old Ender 3 – and yes, i use plotter paper to create that kind of projects first, before I go into some 3d modeling software on my computer.

    But sometimes the stuff that i need is a software. It was few days ago when I tried to use these AI bullshit for code creation. I have asked MS copilot, G gemini, ChatAI and two random models from huggingface that should focus on python code creation. I wont tell you which ones because i have already deleted them.

    It was simple: just creating a python script that goes into SQL db, gets data from simple select with two joins, on that basis it should go into directory, get a file for each SQL row from our select, and make a http post onto some API (just http://localhost/upload, with bearer token) posting a simple multiform data structure including a file from directory AND short simple json created using sql data.

    I was lazy, so I created instructions – i needed to write them anyway so… lets do it in more formal way – and put them onto all five models. tweaked them and put them another time…

    I had a plenty of time because in the meanwhile I was cleaning house, and working on our plants, and… many other much more interesting things than playing with AI and computers. So after about 10 iterations (10! its sick… human would do it after first description) all AI generated code was a bullshit…

    Sorry it was looking pretty, All had exception handling, parameters validation, config stored in additional file, nice cli argument handling.

    NONE of the code works.

    Some cannot make two joins in one select… so it was a 100 code line mess of selecting data 3 times, merging and comparing data on the client side… shit

    Some can but cannot just find a file in /home/user/script/data directory … because when I asked for using table.id for filename and .gpx for extension… it decided to look for a file: “datetime.gpx” instead of “id.gpx”why? I dont know and I dont care

    BUT all of them halucinated on the http POST request. None of the models was able to create this request. All of them tried to use “requests” library, and none of them saw this page: https://stackabuse.com/bytes/how-to-send-multipart-form-data-with-requests-in-python/ or this: https://requests.readthedocs.io/en/latest/api/#requests.Request or … oh it doesnt matter. It just hallucinated that It can use json= and files= in one request, oh and sometimes it even tried to use .addFile() and .addJson() methods that are not exist in requests…

    So For me now AI is still worth two things:

    being dumped in a big pile of shit

    generate deepfakes, deepvoicefakes, porn, and stupid images like one before. Especially that MS copilot even didnt try to follow my instructions to the end… like colour of nail or sex and age of hand. So lets leave it like that.

    Time to go back to real life, real tools and working to make some people happy.

    Post Scriptum: title “How I hate AI” is not a mistake, I still hate it from the first day, so it is why I didnt write “How I hated AI” as this was already hated on the day of trying.