• 121 Posts
  • 547 Comments
Joined 1 year ago
cake
Cake day: April 4th, 2025

help-circle


  • I have only one data point:

    I am an embedded software developer. Recently, I had to attach and debug a stepper motor with a serial interface to an embedded control system. A bog standard task - basically, you need to initialize the motor, send it a home / referencing command, tell it to which position it has to go, and wait until it is there. Luckily for science, I had to do practically the same seven years ago with a lab system at a research institute. And in the current job, the senior engineer responsible for the motor interface is a heavy proponent of AI tools and uses these whenever he can.

    Oh, and there are a few more pesky little differences:

    • In the first job, I had to write the driver myself, as I had no working code, but some examples in Python and Java.
    • I had only a partial protocol from the vendor and had to reverse-engineer important parts myself, as the vendor preferred to supply a closed-source windows driver.
    • in the second job, we already had working though a bit old C++98 code written by somebody who had left the company, for an earlier iteration of that embedded system, which was in production for about 8 years.
    • in the second case, the responsible engineer relied heavily on AI
    • he told me that in multi-threaded C++ code, you don’t need locks for shared access, because the AI didn’t tell him. I had to educate him a bit about undefined behaviour in C++.

    In both cases, the result had to be reliable, ad it was part of expensive and heavy machinery with high cost of failures.

    The outcome? The task took less than four weeks in the first job, and over six months in the second job. In the first case, the result was very reliable. In the second, it is still not fully reliable.

    You can point out that the second was a legacy system, which is more difficult to evolve. But that’s the point - AI does not “understand” legacy systems at all, and worse its use brings down and inhibits communication and knowledge transfer.

    At best, you can conclude that AI is no substitute at all for a lack of knowledge and working institutional processes.




  • I love Clojure!

    What I wonder is whether the sheer complexity of C++ is a good base.

    There are Scheme implementations like Guile which have good interop with C, and which also compile to native code. And there is Steel, a Scheme written in Rust. Scheme is similar to Clojure in that it prefers re-definition over mutation of objects - but it is less opiniated, and one could argue that it is more practical. (Though Clojure as a modern Lisp is quite successful in some applications.)

    Oh, and I don’t mean to pick on Common Lisp. Common Lisp is seriously underhyped. Apart from its stunning elegance, the concurrency support based on persistent data structures as default types is where Clojure has great innovations.




  • The automobile has been a net benefit to society

    Automobiles are also in practice quite harmful to public health because their addictive and user-lock-in effects and the resulting total lack of exercise. US Americans are mostly not aware of that because the notion to walk half an hour to get somewhere is already completely alien to them. Like somebody who first drinks two bottles of beer in the morning, in order to barely function, can possibly not understand that somebody can just drink whater when they are thirsty.

    AI as it is forced on people today will probably be worse for both critical thinking, and social cognitive abilities.



  • No no.

    • Manual tiling works far better for me than the automated control in i3/sway. This is because I use some established layouts, for example Emacs Window with Rust code in the right half, in the left either firefox with docs, or a shell running cargo test, or another shell running jiujiutsu commands, or refreshing test files, and so on. And I switch rapidly between these all the time.
    • A tiling WM makes much better use of screen estate, especially on my 40 inch 4K screen, but also on the laptop.
    • I do most of the time programming, writing or reading, and for this, it is ideal to switch views back and forth with a single keypress.
    • I like to focus on one thing at a time, and this is required if I want to work in a nice flow state. For this, StumpWMs ability to switch workspaces fast is great.
    • I found it is great to automate frequent actions with wm-generated input from the wm. Say I am in the browser and want to capture the current URL for a project-specific bookmark list. So, I make s function that goes to the address bar, selects all, copies to clipboard, selects or creates an emacsclient window, finds a file called bookmark.org, pastes the URL there and lets me add a description.

    What could also work for me is the tiling style like in GNOME PaperWM or Niri. But I haven’t tried it extensively due to GNOME breaking on my last Debian stable upgrade and unwillingness to spend more time on it. And I am more than happy with StumpWM.

    An inportant general fact is this: Things that you use all the time, do not necessarily have the same shape and UI as things that one uses once every three months. For the first, terminal interfaces with a lot of hotkeys might be suitable, for the latter, perhaps GUIs with menus.


  • I had, 17 years ago, a D-Link DNS 232 NAS with an Arm CPU. It ran a pirated (GPL violating) version of Linux. A lawsuit happened, and people published a free version which could install debian in a chroot. I ran an nginx webserver on it, and MoinMoin wiki. The wiki was a tad slow because the box had only 32 Megabyte of RAM (yes, Megabytes). But it worked nicely for years. Had to take it down when Python2 was not supported any more, since MoinMoin developers never managed to port it to Python 3.






  • It us totally OK to start easy.

    Scheme (for example Guile) or Racket are great beginner languages, because they have a very minimal core, and at the same time a lot of power. Created by teachers, they also have great guides.

    Clojure is also a fantastic Lisp language, extremely elegant and very powerful. Its user community has many experienced programmers, and it is very friendly.

    Python is probably the most popular choice for beginners. It has a nice tutorial and countless libraries, which allows to put programs together from components. But its build and packaging system is notoriously messy (though it seems improving) and can get in the way when doing more complex stuff later. Its user forums also suffer currently most from AI slop.

    I wouldn’t recommend Go language for beginners. It is relatively simple, true, but although it is well-geared to its main target - web applications - it has serious pitfalls with concurrency, which can lead to arcane bugs and a lot of hair-pulling.

    You could also start with Rust. The language is larger than others, that’s true. But you do not need to learn it all at once. Also, it has best-in-class online tutorials, books and documentation. Its compiler error messages are extremely helpful. And its build and packaging system are so much easier to use than almost anything else. This matters for beginners, too, since this allows you to put together interesting programs quickly.




  • HaraldvonBlauzahn@feddit.orgtoTechnology@lemmy.worldAI Has Ruined the Job Market
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    7 days ago

    I totally get that it can be overload or even crushing for hiring managers, personal department people, and serious recruiters.

    But as things look, companies absolutely want that useless oversupply, as if they want to actively devalue and disrespect people. Take Siemens for an example. They have introduced AI into thier hiring portal. They offer to give you messages about new roles. But that subscription does not even allow to filter their open positions by continent. If I look for a job in Germany, I get open positions in India. And one cannot filter this. What the fuck?

    And pretty much in general, companies, job sites, and recruiters do not allow any useful specifity. I cannot filter offers by post code. This already makes most offers useless if I don’t use a car. Offers do not specify the actual place of work. They are often not clear about home office rules. They go all wishy-washy about the desired use of AI in software development - which is a huge differentiator for both sides of the table. I could go on. I once had two rounds of interviews until the HR people told me that they required - for a position of developing complex mathematical software - mandatory on-call service every seven weeks, 24/7 for a full week, on top of the normal work. Hard no from me. Excuse me? They could have saved me, and themselves substantial time if they had put that right into the job description.

    And one more thing, you speak of job seekers as “talent”. But “talent” means at the root that somebody who isn’t fully trained yet on something appears to have the natural capability to eventually learn it well, probably. For experienced professionals which have put many thousands of hours into studying something, practicing it, and actually becoming masters in it, that’s devaluating, too. The whole process is obviously designed to devalue people.




  • For certain highly formalized types of diagrams - for example flow charts -, PlantUML is great, and since it uses a textual language, it could be wired to a lot of different programs.

    MetaPost ist similar but a bit lower level. It can generate very complex diagrams for arbitrary content.For example, I used it once to draw and publish a globe-like 3D sphere with fields depicting different spherical probability values in it.

    Racket, a Scheme descendent, is very nice for elementary graphics - it can output pictures in the REPL of its integrated IDE, DrRacket. And it can output these seamlessly as vector graphics, or into interactive user interfaces, too. It also has an elementary but good graphing package. I have used it for a web app which did some data analysis, presented it as a plot in SVG format in the browser, and provided a PDF for download. Neat!

    And then there is Python with Matplotlib. It is made for almost every imaginable visualization of numerical data.

    For 3D data, there is VTK, which has bindings for C++, Tcl/Tk, Java, and Python.

    And TeX/LaTeX with various graphing packages.

    As said, all of these can be used programmatically, and can be included in other systems, as long as the latter can generate text commands which can piped into these special-languages, or library calls.