• 1 Post
  • 14 Comments
Joined 7 months ago
cake
Cake day: January 3rd, 2024

help-circle
  • I’d actually argue Python stops people learning how to solve problems.

    I love teaching juniors and have done so for 10 years but I’ve noticed in the last 4-5 years since Python became the popular choice at universities Graduates aren’t learning anything about Static Types, Memory Management, Object Oriented Programming, Data Encapsulation, Composition, Service Oriented Architecture, etc…

    I used to expect most graduates to have a mixed grounding in those concepts and would find excuses for them to work on a small UI projects. I would do this as it gets them used to solving a small problem and UI’s give instant feedback. As Python became dominate university teaching language the graduates aren’t spending their time learning Typescript, Angular, HTML, etc… but instead getting overwhelmed by the concept of types.

    Those concepts I want them to learn were created to help make solving problems easier and each has their strengths and weaknesses but most graduates are coming through only knowing how to lay out a small amount of procedural logic using Python and really struggling to move beyond that.


  • QT is a cross platform UI development framework, its goal is to look native to the platform it operates on. This video by a linux maintainer from 2014 explains its benefits over GTK, its a fun video and I don’t think the issues have really changed.

    Most GTK advocates will argue QT is developed by Trolltech and isn’t GPL licensed so could go closed source! This argument seems to ignore open source projects use the Open Source releases of QT and if Trolltech did close source then the last open source would be maintained (much like GTK).

    Personally I would avoid Flutter on the grounds its a Google owned library and Google have the attention span of a toddler.

    Not helping that assessment is Google let go of the Fuschia team (which Flutter was being developed for) and seems to have let go a lot of Flutter developers.

    Personally I hate web frontends as local applications. They integrate poorly on the desktop and often the JS engine has weird memory leaks


  • It was a mixture of factors.

    Data was to be dumped into a S3 bucket (minio), this created an event and anouther team had built an orchestrator which would do a couple of things but eventually supply an endpoint a reference to a plain/txt file for analysis.

    For the Java devs they had to [modify the example camel docs.](https://camel.apache.org/manual/rest-dsl.html) and use the built in jackson library to convert the incoming object to a class. This used the default AWS S3 api to create a stream handle which fed into the OpenNLP docs. .

    The Python project first hit a wall in setting up Flask. They followed the instructions and it didn’t work from setup tools. The Java team had just created a new maven project from the Intelij but the same approach didn’t work for the Python team using pycharm. It lost them a couple days, I helped them overcome it.

    Then they hit a wall with Boto3, the team expected to stream data but Boto3 only supports downloading, there was also a complexity issue the AWS SDK in Java waa about 20 lines to setup and a single line to call, it was about 50 lines in Python. On the positive side I got to explain what all the config meant in S3.

    This caused the team anouther few days of delay because the team knew I used a 350MiB Samsung TV guide to test the robustness and had to go learn about Docker volume mounting and they thought they needed a stateful kubernetes service and I had to explain why that was wrong.

    Basically Python threw up a lot of additional complexity and the docs weren’t as helpful as they could have been.



  • You do, but considering the scales they process data I suspect Google would be better building Go tooling (or whatever the dominate internal language is).

    A few years back I was trying to teach some graduates the importance of looking at a programming language ecosystem and selecting it based on that.

    One of my comparison projects was Apache OpenNLP/Camel vs Flask/Spacy.

    Spacy is the go to for NLP, I expected it to be either quicker to develop, easier to use, better results or just less resources.

    I assigned Grads with Java experience Spacy and Python experience OpenNLP.

    The OpenNLP guys were done first, they raved about being able to stream data into the model and how much simplier it made life.

    When compared with the same corpus (Books, Team emails, corporate sharepoint, dev docs, etc…) OpenNLP would complete on 4GiB of RAM in less than a second on 0.5vCPU. Spacy needed 12GiB and was taking ~2 seconds with 2vCPU. They identified the same results…

    Me and a few others ended up spending a day reading the python and trying to optimise it, clearly the juniors had done something daft, they had not.

    It rather undermined my point.


  • My expectation is whatever the solution it needs to dockerise and be really easy to deploy via docker compose or Kubernetes so people can quickly and easily set up their own.

    The front end is effectively static files so I would probably choose Apache or Express (whichever gives me a smaller docker image)…

    For the backend I would choose Java for Spring Boot. An Alpine image with OpenJDK and the app is tiny. Spring has a library for every kind of interface making them trivial to implement but the main reason is hibernate.

    Hibernate (now Spring Data) was the first library for being able to switch out databases without having to change code (its all config). A lot of mastodon instances struggle with the resource requirements of elastic search so letting small instances use something like postgres would seem ideal.

    I have noticed Go/Rust still expect you to write or manage a lot of stuff Spring gives away for free. Python is ok if your backend is really tiny but there is a lot of boilerplate in how Python libraries work so complex projects get hard to manage and I assume interacting with the fediverse will add complexity.



  • stevecrox@kbin.runtolinuxmemes@lemmy.worldDistro's depicted as vehicles
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    edit-2
    4 months ago

    Nah Linux Mint is a Kia Ceed.

    Ubuntu is a Ford Focus, they successfully stole the volvo estate market (Debian). The car was fun, good value and very practical. It was everywhere. Then Ford started increasing the size, weight, price, etc… killing the point of the Focus.

    So along comes Kia trying to make a competitor in the Ceed.

    In theory the Ceed is a great car, its super cheap, lots of cabin space, nippy, the inside has every modern convenance, but…

    • It plays engine noises via speakers that aren’t aligned with what you are doing
    • The boot space is rubbish, so 5 people can happily travel in the car you barely fit a suitcase in it
    • There is an steering sensitivity button that stays on at 70 MPH with no indication on the display
    • A Vauxhall Nova just out accelerated you

    Your left wondering why anyone is bothering with hot hatchbacks these days as you climb into your volvo


  • stevecrox@kbin.runtolinuxmemes@lemmy.worldDistro's depicted as vehicles
    link
    fedilink
    arrow-up
    114
    arrow-down
    5
    ·
    edit-2
    4 months ago

    Debian would be a Volvo Estate, its the boring practical family choice, the owner is soneone boring like an architect or a financial advisor.

    Arch is a Vauxhall Nova, second hand battered owned almost exclusively by teenage lads who spend a lot of time/money modifying it (e.g. lowering so it can’t go over speed bumps, adding a massive exhaust to sound good but destroys engine power).

    Fedora is something slightly larger/more expensive like a Ford Focus/VW Golf/Vauxhall Astra owned by slightly older lads. The owners spend their time adding lighting kits and the largest sound systems money can buy.

    Slackware is clearly a Subaru Impreza, at one point the best World Rally Car but hasn’t been a contender for a while. Almost all are owned by rally fans who spend fantastic amounts of time tinkering with the car to get set it up an ultimate rally car. None of the owners race cars.

    OpenSuse is a Nissan Cube, its insanely practical. It should be the modern boring family choice, but it manages to ve too quirky for your architect while not practical enough for van drivers.

    I don’t know the other distros well enough.

    I run Debian btw


  • Immutable distributions won’t solve the problem.

    You have 3 types of testing unit (descrete part of code), integration (how a software piece works with others) and system testing (e.g. the software running in its environment). Modern software development has build chains to simplify testing all 3 levels.

    Debian’s change freeze effectively puts a known state of software through system testing. The downside its effecitvely ‘free play’ testing of the software so it requires a big pool of users and a lot of time to be effective. This means software in debian can use releases up to 3 years old.

    Something like Fedora relies on the test packs built into the open source software, the issue here is testing in open source world is really variable in quality. So somethinng like Fedora can pull down broken code that passes its tests and compiles.

    The immutable concept is about testing a core set of utilities so you can run the containers of software on top. You haven’t stopped the code in the containers being released with bugs or breaking changes you’ve just given yourself a means to back out of it. It’s a band aid to the actual problem.

    The solution is to look at core parts of the software stack and look to improve the test infrastructure, phoronix manages to run the latest Kernel’s on various types of hardware for benchmarking, why hasn’t the Linux foundation set up a computing hall to compile and run system level testing for staged changes?

    Similarly website’s are largely developed with all 3 levels of testing, using things like Jest/Mocha/etc… for Unit/Integration testing and Robots/Cypress/Selenium/Storybook/etc… for system testing. While GTK and KDE apps all have unit/integration tests where are the system level test frameworks?

    All this is kinda boring while ‘containers!’ is exciting new technology


  • The developer behind KBin seems to have issues delegating/accepting contributors.

    If you look at the pull requests, most have been unreviewed for months and he tends to regularly push his branches once complete and just merge them in.

    That behaviour drove the MBin fork, where 4-5 people were really keen to contribute but were frustrated.

    To some extent that would be ok, its his project and if he doesn’t want to encourage contributions that is his decision but…

    KBin.social has gotten to the size where it really should have multiple admins (or a paid full time person). Which it doesn’t have.

    The developer has also told us he has gone through a divorce, moved into his own place, gotten a full time job and now had surgery.

    Thats a lot for any normal person and he is going through that while trying to wear 2 hats (dev & ops) each of which would consume most of your free time.

    Personally I moved to kbin.run which is run by one of the MBin devs


  • Can you elaborate…

    I have looked after a few instances of Active Directory and basic user management involved multiple steps through GUI’s clearly written at different times (you would go from a Windows 8 to Windows 95 to Windows XP styled windows, etc…)

    I much prefer FreeIPA, if I wanted to modify a user account it was two button clicks. Adding a group and bulk applying was the work of moments. You can setup replicas and for a couple hundred users it uses no resources.

    The only advantage I could see related to Exchange Integration as it makes it really easy to setup Sharepoint, Skype & Email.

    Sharepoint never gets setup properly and you find people switching to alternatives like Confluence, Github/Gitlab Pages or Media Wiki. So that isn’t an advantage.

    Everybody loathes Skype and your asked to setup an alternative (Mattermost, Slack, Zoom, etc…). I am not sure how integrated Teams is.

    Which really only leaves Email and I just can see the one off pain of setting up Dovecot as worth the ongoing usability pain of AD’s user control.



  • The person is correct in this isn’t a Linux problem, but relates to your experience.

    Windows worked by giving everyone full permissions and opening every port. While Microsoft has tried to roll that back the administration effort goes into restricting access.

    Linux works on the opposite principle, you have to learn how to grant access to users and expose ports.

    You would have to learn this mental switch no matter what Linux task your trying to learn

    Dockers guide to setting up a headless docker is copy/paste. You can install Docker Desktop on Linux and the effort is identical to windows. The only missing step is

    sudo usermod -aG docker $user

    To ensure your user can access the docker host as a local user.


  • I switched my computer illiterate family members to reduce the effort of helping them and they didn’t notice.

    As a helper…

    There are distributions focussed on the latest and greatest (Arch, Fedora, etc…) and ones aiming for stability (Debian, Ubuntu, etc…). Think of them as groups with different views.

    So Linux Mint is Ubuntu but it has the latest Cinnamon desktop. Ubuntu is Debian but focused on fixed releases and adds ‘snaps’ and includes “non-free” by default.

    People have different views on how the desktop should work. The two big desktops are Gnome and KDE.

    Gnome is like Marmite. Its works completely different to any other desktop and people either love it or loathe it. Its often the distribution default.

    With Windows 10/11 I think Microsoft were trying to steal some of KDE’s best features. By default it looks very much like a Windows desktop but lots of people mod it to look/act like macos. Some people struggle with the options it provides.

    Then there are lots of other desktops, for example Cinnamon takes Gnome and turns it into a normal desktop.

    Personally I would suggest Kubuntu as your first attempt. This is a fairly decent install guide.

    Ubuntu tries to minimise the choices you need to make and the 6 month update cycle keeps it fairly stable.

    Kubuntu is Ubuntu it just makes KDE the default instead of Gnome.