Language Selection

English French German Italian Portuguese Spanish

Development

Programming Leftovers

Filed under
Development
  • Felix Häcker: #21 Software Cleanup

    Update on what happened across the GNOME project in the week from November 26 to December 03.

  • Haskell mortgage calculator

    A few months ago I was trying to compare two mortgage offers, and ended up writing a small mortgage calculator to help me. Both mortgages were fixed-term for the same time period (5 years). One of the mortgages had a lower rate than the other, but much higher arrangement fees.

    A broker recommended the mortgage with the higher rate but lower fee, on an affordability basis for the fixed term: over all, we would spend less money within the fixed term on that deal than the other. (I thought) this left one bit of information missing: what remaining balance would there be at the end of the term?

  • Best Programming Languages for Web Development

    Choosing the best programming language for your web development project is a critical task. An excellent choice facilitates rapid project development and helps your development team integrate essential features with lesser efforts.

    While there are many different programming languages, the most common ones used in web development are JavaScript, HTML, CSS, PHP, etc. JavaScript has a popularity of nearly 65% among developers worldwide, as per Statista.

    Do you know which programming languages are preferred by developers worldwide?

  • AMD AMF SDK 1.4.23 Brings Main 10 HEVC Encode, Auto LTR Encoder Mode - Phoronix

    AMD on Friday published a new version of their Advanced Media Framework "AMF" software development kit that enhances the multimedia processing capabilities for Radeon hardware.

    AMD AMF continues to support both Windows and Linux and supporting interoperability with multiple APIs including DirectX, Vulkan, OpenGL, and OpenCL. As the first AMF update since this summer, AMF 1.4.23 is rather noteworthy in now adding an Auto LTR encoder mode as well as Main 10 HEVC encoder profile.

  • Kioxia adds sophisticated admin tools and wider support to KumoScale – Blocks and Files

    The v3.19 KumoScale software also supports the Ubuntu distribution of Linux, the latest Kubernetes CSI version, and adds CSI and Ansible support of snapshot and clone functionality.

  • Dirk Eddelbuettel: RcppAPT 0.0.8: Package Maintenance

    A new version of the RcppAPT package interfacing from R to the C++ library behind the awesome apt, apt-get, apt-cache, … commands and their cache powering Debian, Ubuntu and the like arrived on CRAN earlier today.

    RcppAPT allows you to query the (Debian or Ubuntu) package dependency graph at will, with build-dependencies (if you have deb-src entries), reverse dependencies, and all other goodies. See the vignette and examples for illustrations.

    This release updates some package metadata, adds a new package testing helper, and, just like digest three days ago, drat two days ago, and littler yesterday, we converted the vignettes from using the minidown package to the (fairly new) simplermarkdown package which is so much more appropriate for our use of the minimal water.css style.

  • Writing a SNES assembler compiler/disassembler - Day 2 | Sylvain Colinet [blogs.perl.org]

    This will be very short even if that take me a lot of time to figure this part.

    In my ASM65816Grammar.rakumod I manually wrote the Number and Addressing grammar but obiously for the instructions it's not really possible.

Barry's Latest Progress With EasyOS Development

Filed under
Development
GNU
Linux
  • Balsa email client

    I have chosen an older gtk2 version, 2.4.7, as it has configure choices that suit EasyOS. For example:
    It integrates with Osmo personal information manager. I haven't tested this, so don't know how it works.
    It uses the libgtkhtml v2 library to render HTML emails. This is great, as libgtkhtml v2 is already in EasyOS, used by helpsurfer local document viewer, and Osmo.

  • JWM menu button text is broken

    I want to bring out a new release of EasyOS in a couple of days, so if the problem isn't resolved quickly, I will roll back to 1685. Actually, 1685 works fine, I have had no issues with it, so really why upgrade just because there is a later version?

  • Kernel 5.10.83 compiled

    It was compiled with the 5.10.39 kernel, but was removed afterward.

    OK, it has returned. It must be understood of course, that the wl.ko module conflicts with others, hence has to be a separate PET. It means that every time you upgrade to a later version of EasyOS that has a later kernel, you will have to un-install the PET and install the one that matches the new kernel.

  • Mapping all download folders to one folder

    With the introduction of non-root client applications, there are multiple download folders. For example, firefox runs as user 'firefox', with home folder 'home/firefox', and default download path /home/firefox/Downloads'.

    OK, but if we have more non-root client apps, each with its own Download folder, it is starting to become inconvenient. Perhaps. Forum member hundido was showing a grandma how to use EasyOS, and she liked it, except for all these different download paths...

Pango updates

Filed under
Development
GNOME

I was hoping to wrap up my Pango work after the previous update, but unexpected trouble came in from the side – Benjamin made GtkLabel more serious about height-for-width, and that uncovered some inaccuracies in Pango’s line wrapping implementation. Sometimes, we would make our lines shorter than necessary, and ometimes, we would let a hyphen leak out of the allotted width, creating an overlong line.

Fixing all this up took some serious effort, but I think it was time well spent. One of the outcomes is that Pango now has APIs to serialize PangoLayout objects, and these are used in the testsuite.
Read more

Programming Leftovers

Filed under
Development
  • Is PHP Interpreter Still a Good Programming Language? - CEOWORLD magazine

    Hypertext Preprocessor, better known as PHP, is a programming language that has been around since 1994. With more than two decades of use and still going reasonably strong today, there’s no doubt that it has some advantages – but how exactly does it compare to some of the other coding languages that have come out over more recent years? And is it still worthwhile, or is it common purely because it’s so well known?

    While you can find a lot of information on PHP interpreters online, e.g., at Droptica , where you’ll find a little more information on how it could potentially be the best option for your needs.

  • AsmREPL: Wing your way through x86-64 assembly language

    Ruby developer and internet japester Aaron Patterson has published a REPL for 64-bit x86 assembly language, enabling interactive coding in the lowest-level language of all.

    REPL stands for "read-evaluate-print loop", and REPLs were first seen in Lisp development environments such as Lisp Machines. They allow incremental development: programmers can write code on the fly, entering expressions or blocks of code, having them evaluated – executed – immediately, and the results printed out. This was viable because of the way Lisp blurred the lines between interpreted and compiled languages; these days, they're a standard feature of most scripting languages.

  • Could we use an LLVM-based cross-compiler to build apps for quantum computers? This alliance says yes [Ed: It feels like Microsoft and the 'Linux' Foundation attack the GPL and GCC]

    The Linux Foundation has launched a group called the QIR Alliance to make quantum computing applications more portable across hardware architectures and simulators.

  • Cross-platform: UI framework Compose Multiplatform has reached a stable level [Ed: Automated translation]

    JetBrains has released version 1.0 of Compose Multiplatform. The framework uses the declarative approach of the Android UI toolkit Jetpack Compose and implements it across platforms for desktop, web and Android applications. Unsurprisingly, Kotlin is used as the programming language.

  • Day 4 – Santa’s OCD Sorted – Raku Advent Calendar

    Santa has been around for a long time already. Santa remembers the days when bits where set by using a magnetic screwdriver! In those days, you’d made sure that things were orderly set up and sorted for quick access.

    Santa likes the Raku Programming Language a lot, because it just works like Santa thinks. There’s just this one thing missing to make Santa feel at home again, just like in the olden days: an easy way to make sorted lists and easily insert new values into these lists to keep them up-to-date.

  • Geizhals Preisvergleich sponsors the German Perl/Raku Workshop 2022

    In 2022, the German Perl/Raku Workshop will take place in Leipzig. We are very happy to announce that long time Perl supporter Geizhals Preisvergleich sponsor the workshop.

Programming Leftovers

Filed under
Development
  • Dirk Eddelbuettel: littler 0.3.15 on CRAN: Package Updates

    The sixteenth release of littler as a CRAN package just landed, following in the now fifteen year history (!!) as a package started by Jeff in 2006, and joined by me a few weeks later.

    littler is the first command-line interface for R as it predates Rscript. It allows for piping as well for shebang scripting via #!, uses command-line arguments more consistently and still starts faster. It also always loaded the methods package which Rscript only started to do in recent years.

    littler lives on Linux and Unix, has its difficulties on macOS due to yet-another-braindeadedness there (who ever thought case-insensitive filesystems as a default were a good idea?) and simply does not exist on Windows (yet – the build system could be extended – see RInside for an existence proof, and volunteers are welcome!). See the FAQ vignette on how to add it to your PATH. A few examples are highlighted at the Github repo, as well as in the examples vignette.

  • Cdson

    Today, I'm announcing the release of my library cdson: a parser and serializer for the DSON data format in C. (As the name suggests, DSON is a bit like JSON, and I strongly prefer its usage to YAML.) While I'm many years late to this joke, in that time somehow no one had implemented a DSON library in C.

    [...]

    cdson takes this last route. 18 bits of code point is planes 1-3, which is actually everything except private use and alternate reps right now. But it also gates using \\u-escapes at all behind a flag.

    Writing cdson has amused me, but having finished the project does not mean the amusement must cease. cdson is open source software under the very permissive MPL; feel free to add it to projects if doing so would amuse you too. And if you need a defensible config file format, might I recommend anything that's not YAML?

  • Writing a SNES assembler compiler/disassembler - Day 1

    Why ? Because I can. More seriously I have a project where I need to inject new Snes code in a running game and I want to express directly this new code in my Raku component (A webserver service). I want to have special sub that returns me Snes bytecode but that contains Snes assembler.

    I tried injecting a SLANG in Raku already. Like writing my $byte-code = SNES lda $42; sta $54; rtl; But it’s rather tricky and I will probably just have a additional Slang with its own grammar in a dedicated file.

Some GNOME Stuff

Filed under
Development
GNOME
  • sizable news

    For the upcoming GTK 4.6, we have overhauled a lot of the sizing infrastructure to make widgets fit even tighter and to make sure our sizing infrastructure actually does what it says.

    When using the GtkWidget::halign or GtkWidget::valign properties, GTK 4.4 would look at the default size of the widget and then place the widget accordingly. This leaves a lot of extra space when one of the values was set to fill. In GTK 4.6, GTK will measure the size of the other dimension relative to the filled dimension. This makes the widget thinner but avoids extra space.

  • A Quick PSA on Writing Portal-friendly Application Code

    For various reasons, desktop applications sometimes need to know whether they are running under a sandbox made by a technology such as Flatpak or Snap. Some portal APIs, such as the file chooser dialog, are used transparently so that the application code doesn’t need to make any distinction between the sandboxed and unsandboxed cases, and if you ask me that’s a pretty impressive magic trick on its own. Other portal APIs such as the screencast one are used by both sandboxed and unsandboxed apps thanks to the secure architecture of Wayland compositors. But still other portal APIs are used conditionally depending on whether the app is running sandboxed; this is the case for the OpenURI portal used by Epiphany.

Programming Leftovers

Filed under
Development
  • An Introduction to Python for Non-Programmers

    Welcome to the first entry in this Python for non-programmers series.

    If you’re reading this, you probably have developed a curiosity about programming and are looking for a good place to start. I have good news for you. Python is one of the best languages with which to start that journey. Why? We’ll get into that in a minute. But first, let’s discover exactly what this language is and can do.

    Python is what’s called a high-level, general-purpose programming language. Let’s break that definition down.

    First, what is a high-level language? Let’s consider this:

    At the bottom, you have the computer hardware, which only understands what’s called “machine language.” Because machine language (or machine code) is so close to the hardware, it’s considered a low-level language (because it exists at such a low level).

    As you rise up away from the low level, languages become high-level, because they are abstracted away from the hardware. High-level languages do not need to view or access the details of the computer. If they did, they’d be considerably harder to use.

  • Raku Advent Calendar: Day 3 – Silently

    Santa was working on some programs to handle all of the intracacies of modern-day just-in-time package delivering, and got annoyed by some parts of the program getting noisy because some elf had left some debug statements in there. Ah, the joys of collaboration!

    So Santa wondered whether there could be a way to be less distracted by what otherwise seemed to be a perfectly running program. Looking at the Wonderful Winter Raku Land, after a little bit of searching, Santa found the silently module. That was great! It’s a module that exports a single subroutine silently that takes a block to execute, and will capture all output made by the code running in that block.

  • Installing Qt via Conan Package Manager

    We have been working intensely for months for the Conan package manager to distribute Qt packages. Today, we are happy to provide you a technology preview.

  • Why curl is used everywhere, even on Mars

    When I speak of curl in this post, I lump curl the command line tool and libcurl the library into one, and I just call them curl. Related: my webinar titled “Why everyone is using curl and you should too“.

    I believe just about every curl user has their own story and explanation about why they use curl in their product or device. I think there are several good reasons why users, including many of the world’s largest and most successful tech giants, decide they can lean on curl for Internet transfers.

    curl is used in mobile phone and tablet apps, it is used in TVs, cars, motorcycles, fridges, settop boxes, printers, smart watches, medical devices and computer games, both on desktop and in game consoles and of course in just about every web or Internet server out there. It was also used to land on mars. Put simpler: in almost every internet-connected device.

  • Runtime control of debug output: Endless Orange Week | Philip Withnall

    Recently at Endless we had a week of focused working on projects which are not our day-to-day work. It was called ‘Endless Orange Week’, and everyone was encouraged to explore a topic of their choosing.

    I chose to look at two projects, both of which included a D-Bus/API component. My thinking was that review of the new interfaces on each project might take a while, so it would make sense to have two projects running in parallel so I could switch between them when blocked.

    I’m going to blog about the two projects separately, to avoid one mega-long post.

    The first project was to add a D-Bus debug interface for applications. This would allow debug output from an application to be turned on and off at runtime, rather than just being set with a command line argument or environment variable when the application is first started.

    This would allow users and developers to get debug output from long-running applications without having to restart them, as quite often restarting a process will destroy the state you were hoping to debug.

  • Notcurses 3.0 Released For Adding "Bling" To Your Terminal Apps - Phoronix

    For those wanting to add some "bling" to your command-line programs to make some "rad" terminal apps, Notcurses 3.0 was released today for designing colorful and complex text-user interfaces. Notcurses allows adding a range of multimedia, Unicode, and other graphics capabilities to command-line applications across Linux / macOS / Windows.

    Notcurses isn't designed to be a drop-in replacement to Ncurses or the likes but is trying to bling up the terminal but not necessarily most practical or efficient for long-time power users of the terminal. It does though have many cool effects if that's your thing and some of the functionality would spice up terminal apps if desiring a more modern TUI.

  • Understanding the MIXAL insertion sort. | Adam Young’s Web Log

    A debugger is a wonderful tool for understanding what actually happens in a piece of code. Donald Knuth’s coding in TAOCP is archaic enough that I do not understand it just by reading through. This is due to a combination of my unfamiliarity with MIXAL, as well as some of the coding conventions he’s chosen. So, I’m going to step through the MIXAL code in mixvm, and annotate what I find.

  • Insertion sort From Knuth to Gnu AARCH64 | Adam Young’s Web Log

    Now that I can run the Knuth version of the Insertion sort via MIXAL, I want to convert it to AARCH64 Assembly. What I am going to try to do here is a line by line translation. This is not necessarily how I would write the insertion sort in AARCH64 assembly, but rather a direct translation of the MIXAL version.

    I started by defining constants for the output parameters. This is the equivalent to the TERM definition in the MIXAL version.

    I print out the completed buffer. You can see some trial and error here; I was trying to calculate N, the length of the buffer, bases on the addreses, just as I had done for Hello World messages, but the fact that I needed to put a blank in the first position made that logic more complex than I wanted. So, while I hand caluclated the leng of the bufffer (26) I add 2 to account for the lead blank and the trailing \n.

    IUn MIXAL, Many of the comparisons are done between registers and memory. AARCH64 does not support this. You also cannot add two integers without first loading one of them into a register. Thus, many single commands in MIXAL become multiple.

KDDockWidgets 1.5.0 Released

Filed under
Development

KDDockWidgets is a development framework for custom-tailored docking systems in Qt, to use when you need advanced docking that is not supported by QDockWidgets. It was created by Sergio Martins as a time-saving alternative to QDockWidgets. The ease-of-use of KDDockWidgets can save you lots of frustration as well, in that you won’t have to deal with the myriad bugs and the difficulties and complexities faced when working with QDockWidgets.

Read more

Developing A Game Engine with Perl

Filed under
Development
Gaming
  • Developing A Game Engine with Perl : Part 2 - Mouse Input | Shawn [blogs.perl.org]

    Let me start by saying.... I DO NOT KNOW WHAT I AM DOING.

    Literally, developing a game engine is not on my resume... yet! So any code or ways of doing anything you read here, is just what I've figured out and works for me, which by no means should suggest to you that it is the proper way to do what ever it may be. Please consult your local guru first.

    OK, now that we have that established... Please consider the following as entertainment and should you learn along the way with me, that's wonderful!

    Now, by the time of writing this article, I am several months into this undertaking. I'll describe in future posts what the engine is capable of, but for today, let me tell you about what happened over the last 2 weeks. I will likely break them up into separate posts for easier consumption.

  • Developing A Game Engine with Perl: Part 3 - Hardware Failure & Server Upgrade | Shawn [blogs.perl.org]

    It's been a while since I've had to look at system logs in Linux OpenSuSE. I used to remember just doing a tail -f /var/log/messages or what ever log file you wanted to watch. I guess at some point since then they switched to using systemd journal service and you can now view everything using journalctl

  • Developing A Game Engine with Perl : Part 4 - UEFI vs OpenSuSE Installer | Shawn [blogs.perl.org]

    This is where things get interesting. After finally getting the computer together, I downloaded the OpenSuSE ISO for 64bit. I went with Tumbleweed again. It worked well with the last server, so I'll just go with what I know. Tumbleweed is a rolling release linux, which means I shouldn't have to reinstall when a new version is released and I should still stay up to date. I created a bootable USB from ISO in Ubuntu 20.04 (My Desktop). Booted the new computer, installed OpenSuSE, and was happy... until I tried to reboot.

    When I rebooted, I pulled out the USB stick and the BIOS said no boot drives. I knew of UEFI, and started reading. I found that in /boot/efi/ there was no EFI directory. If you don't know anything about UEFI (No worries, neither do Sleepy ..apparently there is supposed to be a Fat32 partition marked as type EFI. The BIOS checks for this location and attempts to load the OS this way as apposed to using the MBR for booting like in the old days.

  • Developing A Game Engine with Perl: Part 5 - 32bit -> 64bit & Perl's Storable | Shawn [blogs.perl.org]

    After doing some quick reading, I came to understand that Perl uses architecture specific ways to save content to files when using Storable. Specifically if you use lock_store and store. These are part of Perl's core system and what I use throughout the engine for working with the file structure.

    I had to carefully re-read the perldoc's to discover that you can avoid architecture incompatibility by simply using nstore and lock_nstore The method you use for retrieving the stored files doesn't matter, only when storing the data into files does it matter.

    I tried to find ways of being able to convert the stored files from 32bit architecture to 64bit, but ultimately the only real option was to use the old server to re-store the files with lock_nstore.

On centralized development forges

Filed under
Development
Microsoft

Since the launch of SourceForge in 1999, development of FOSS has started to concentrate in centralized development forges, the latest one of course being GitHub, now owned by Microsoft. While the centralization of development talent achieved by GitHub has had positive effects on software development output towards the commons, it is also a liability: GitHub is now effectively a single point of failure for the commons, since the overwhelming majority of software is developed there.

In other words, for the sake of convenience, we have largely traded our autonomy as software maintainers to GitHub, GitLab.com, Bitbucket and SourceForge, all of which are owned by corporate interests which, by definition, are aligned with profitability, not with our interests as maintainers.

It is indeed convenient to use GitHub or GitLab.com for software development: you get all the pieces you need in order to maintain software with modern workflows, but it really does come at a cost: SourceForge, for example, was caught redistributing Windows builds of projects under their care with malware.

While GitHub or the other forges besides SourceForge have not yet attempted anything similar, it does serve as a reminder that we are trusting forges to not tamper with the packages we release as maintainers. There are other liabilities too, for example, a commercial forge may unilaterally decide to kick your project off of their service, or terminate the account of a project maintainer.

In order to protect the commons from this liability, it is imperative to build a more robust ecosystem, one which is a federated ecosystem of software development forges, which are either directly run by projects themselves, or are run by communities which directly represent the interests of the maintainers which participate in them.

Read more

Syndicate content

More in Tux Machines

Type Title Author Replies Last Postsort icon
Story Debian Etch: Solid, Crufty, Some Assembly Required srlinuxx
Story This months Cosmo srlinuxx 06/02/2005 - 4:03am
Story 50 gmail invites? srlinuxx 1 06/02/2005 - 4:10am
Story Moooore Spam! srlinuxx 1 06/02/2005 - 4:12am
Story Vin Diesel going soft on us? srlinuxx 2 06/02/2005 - 4:25pm
Poll How's the new site? srlinuxx 2 06/02/2005 - 9:01pm
Story Hackers homing in on Cellular Phones srlinuxx 5 07/02/2005 - 2:20pm
Story M$ Claims Safer than Linux srlinuxx 1 11/02/2005 - 5:34am
Story This Week At the Movies: Boogeyman & Alone in the Dark & Hide and Seek srlinuxx 1 11/02/2005 - 5:41am
Story Forbes Wants to Know srlinuxx 2 11/02/2005 - 6:13am