• 0 Posts
  • 20 Comments
Joined 1 year ago
cake
Cake day: June 15th, 2023

help-circle


  • Mint was a reaction to Gnome 3, the unique workflow upset a lot of people and the people behind Mint decided to build Cinnamon desktop (its Gnome 3 made to look/work like Gnome 2). They needed a distribution to build/test their work and so based a distribution off of Ubuntu and called it Mint.

    As a bit of explanation, there are only a few projects which attempt to build an entire linux distribution from scratch. This involves finding code from thousands of sources, work out packaging, etc… We call these ‘base’ distributions, Debian is the base distribution for Ubuntu, Ubuntu is the base distribution for Mint.

    Ubuntu tends to be slightly ahead of Debian in the software versions it uses and automatically enables the ‘non-free’ repositories. Ubuntu tends to push some Canonical specific things like Snaps (which everyone hates)

    I believe Mint rolls the Canonical specific things out of Ubuntu and you get the latest version of Cinnamon.

    Its all a bit…


  • If its for work I would suggest picking a “stable” distribution like Debian, Kubuntu or OpenSuse.

    A lot of people recommend Arch or Fedora but the focus of those is getting the very latest releases, which increases your chance of stuff breaking.

    A lot of people will suggest niche distributions, those can be great for specific needs but generally you will always find Debian/Ubuntu/RHEL support for commercial apps.

    I would also suggest looking at the KDE Desktop, many distributions default to Gnome but it is unique in how it works, KDE (or XFCE) will provide a desktop similar to Windows 11.

    Lastly I would suggest looking at Crossover Linux by Codeweavers.

    Linux has something called WINE, its an attempt to implement the Windows 95 - 11 API’s so windows applications can run on linux.

    WINE is how the Steam Deck/Linux is able to play Windows games. Valve embedded it into Steam and called it “Proton”.

    WINE is primarily developed by Codeweavers and they provide the Crossover application that makes setting up and running a Windows application really easy.

    People will mention Lutris but that has a far higher learning curve.

    There is an application database so you can see in advance if your applications would work: https://appdb.winehq.org/


  • This advice isn’t grounded in reality.

    Management normally defines ways to track and judge itself, these are typically called Key Performance Indicators.

    KPI’s are normally things like contract value growth, new contracts signed, profit margin, etc…

    So if the project manager is meeting or exceeding their KPI’s and you walk up to their boss telling them the PM is failing as basic job functions, the boss won’t care.

    This is because the boss might have set the KPI’s or the boss might also be judged on them. In either situation its to the bosses advantage to ignore you.

    The boss will only care if there is a KPI you can demonstrate the PM failing to meet.

    Every person/group will have various incentives and motivations. To affect change you have to understand what they are.



  • A project manager has responsibility for delivery of a project but they typically lack domain specific knowledge. As a result they can’t directly deliver something, merely ask subject matter experts for advice and facilitate a team to deliver.

    Most PM’s cope with the stress of this position poorly.

    This cartoon is an example of micro management (a common coping mechanisim), the manager has involved themselves in the low level decisions because that gives a sense of control. If a technical team then tell them its a bad decison the team are effectively attacking their coping mechanisim.

    The solution isn’t to tell them their technical idea is terrible, when you’ve fallen down this rabbit hole you have to treat the PM as a stakeholder. They are someone you have to manage, so a common solution is to give them confidence there is a path to delivery, a way to track and understand it.


  • SpaceX are launching 26-52 satellites at a time and have sustained 3 launches a week for most of the year.

    The satellites are in a Low Earth Orbit, without constant thrust, atmospheric drag will force them to re enter earths atmosphere within a few months. This means they aren’t adding to junk in space.

    Unlike Nasa, ULA, Arriannespace, RoscosMos, etc… SpaceX have always performed 2nd Stage Deorbit burns, so they aren’t adding to Space junk by launching either.

    The Low Earth Orbit is to ensure low latency and the need for constant thrust means the satellites have a short life expectancy by design. That is why SpaceX fought to keep the satellites as cheap as possible (e.g. $250k)

    First stage booster reuse and fairing reuse means the majority of the launch cost is the second stage ($15 million).

    The whole lot is privately funded



  • During the pandemic I had some unoccupied python graduates I wanted to teach data engineering to.

    Initially I had them implement REST wrappers around Apache OpenNLP and SpaCy and then compare the results of random data sets (project Gutenberg, sharepoint, etc…).

    I ended up stealing a grad data scientist because we couldn’t find a difference (while there was a difference in confidence, the actual matches were identical).

    SpaCy required 1vCPU and 12GiB of RAM to produce the same result as OpenNLP that was running on 0.5 vCPU and 4.5 GiB of RAM.

    2 grads were assigned a Spring Boot/Camel/OpenNLP stack and 2 a Spacy/Flask application. It took both groups 4 weeks to get a working result.

    The team slowly acquired lockdown staff so I introduced Minio/RabbitMQ/Nifi/Hadoop/Express/React and then different file types (not raw UTF-8, but what about doc, pdf, etc…) for NLP pipelines. They built a fairly complex NLP processing system with a data exploration UI.

    I figured I had a group to help me figure out Python best approach in the space, but Python limitations just lead to stuff like needing a Kubernetes volume to host data.

    Conversely none of the data scientists we acquired were willing to code in anything but Python.

    I tried arguing in my company of the time there was a huge unsolved bit of market there (e.g. MLOP’s)

    Alas unless you can show profit on the first customer no business would invest. Which is why I am trying to start a business.





  • I have a Mac book Pro for work.There is just a lot of random weirdness.

    There is no right click, your supposed to do a light two finger touch for right click.If you click too hard it opens the dictionary.

    If you plug in a mouse you can get right click, but it isn’t consistent in working.

    By default scroll is inverted (up is down, down is up), also windows can have scroll bars but they aren’t clickable, you have to do a scroll gesture.

    Almost every Left control + Button action is now Meta key + button. But not everything, its annoyingly inconsistent also new random shortcuts.

    For example lock screen isn’t Meta key + l like on Linux or Windows. Its Meta + Shift + Q, shut down is Meta +Left Control + Q.

    The keyboard doesn’t match the your countries layout, so keys move around and is missing traditional keys like print screen. To do that you press Meta + Shift + 4 to switch the mouse to a screen cut tool and select the area you cut.

    I could go on and on, none of it is obvious and I wouldn’t say any of it is an improvement at best its just different.



  • Github stars is not a good metric, firstly because KBin is hosted on codeberg but mainly because a healthy project has lots of unique contributors and regular updates/enhancements.

    KBin has 79 open Pull Requests, while Lemmy has 29. From a visual check PR’s seem to be older than 2 weeks. Its hard to say one is “healthier” than the other, without scraping information into a spreadsheet.

    Secondly Rust is new and has a lot of hype surrounding it, as a result you get a lot of people using it on random projects.

    Languages have strengths and weaknesses and developer ecosystems build on the strengths.

    For example if I was writing a web application with a database backend I would choose C#, Java or Node.js because there are loads of libraries, tools and frameworks to make it really easy.

    Rust is gaining a lot of adoption by embedded system users (replacing C mostly). Lemmy is the only Rust based web server project I am aware of. Which means the level of work to do anything and to keep it updated falls on the Lemmy devs rather than spread out amongst a larger community.

    Everyone loves to insult PHP but it has a niche in webservers and won’t disappear anytime soon. KBin effort will thus be spent on KBin.


  • There is a standard for sharing tweet style information and for threaded type information between websites.

    You have software which implements the tweet standard (Mastodon), the threaded standard (lemmy) and both (KBin).

    You’ll notice some communities will be community@kbin.social or community@kbin.cafe, etc… this indicates they are not local to the website your using and those addresses are KBin instances, its just your website has a copy of the information.

    KBin is newer than Lemmy, it has a fairly simple responsive design that works well on mobile. Lemmy has a REST api so its easier to build mobile applications, a lot of people seem to expect/need to access websites via mobile applications.

    The key difference is Lemmy is developed by Tankies, they think China’s genocide of Ughurs is justified and they administer lemmy.ml.



  • Change to subscribed
    On KBin the default view is similar to /r/all this can be changed to limit your view to only magazines/communities you are subscribed to by going:

    • Select your account name in top right corner
    • Select ‘Settings’ from the account context menu
    • Select ‘Subscription’ from the ‘Homepage’ drop down
    • Select ‘Save’ on the settings page

    This will change your default URL to https://<insance url>/sub (e.g. https://kbin.social/sub). This will change your feed to the top/newest/hottest from your subscribed magazines/communities.

    Time Filter
    If you look at the KBin screen, you will notice a filter by time option. Look for the navigation bar with hottest/newest/etc… on it on that bar is a upwards arrow and 4 lines representing a triangle (its normally used as a sort symbol). That will let you set time limits similar to those mentioned in this post (e.g. 3 hours, 6 hours, 12 hours, 1 day, 1t (is 1 week).

    Microblogs
    Its also worth looking at the ‘microblogs’ feature under /sub as that will focus on mastodon messages/kbin microblogs with hashtags associated with your magazines/communities.

    You can ask KBin to subscribe to people you find through Mastodon, due to the rate changes various twitter users are migrating around. I find KBin a nicer way to read their content.


  • The big argument for mono repos is checking out multiple repositories is “hard” while checking out one repository is “easy” but…

    Service Oriented Architecture became a thing because monolithic code bases were often becoming spaghetti. I worked on a project where removing an option from a preference window (max map zoom), broke a message table (because the number of visible rows in a table (not its size in the UI) was linked to the max zoom you supplied to a map library, for no reason).

    Thus the idea you should wrap everything you do as a self contained service, with a known interface. The idea being you could write an entirely new implementation of a service, implement the interface and everything would work. Microservices are a continuation of this idea.

    Yet every node/python based mono repo I have seen will have python files directly imported filed from inside anouther component/service. Not simply common aretfacts but all sorts of random parts. Subverting the concept of micro service (and recreating the problem).

    Separate repositories block this because each repository will be built in isolation on a CI, flagging the link. This forces you to release each repository and pull things in as a dependency. Which encourages you to design code to support that.

    A common monorepo problem is to shove everything in a docker image and call it a day. Then if you need a class from one monorepo in anouther one, you don’t have an artefacts so lazy devs just copy/paste files between monorepos.

    Monorepos aren’t bad practice by themselves, they encourage bad practice. Separate repositories encourage good practice (literally the need to manage them separately drives it).