Language Selection

English French German Italian Portuguese Spanish

Programming/Development Leftovers

Filed under
Development
  • A little update from Stack Overflow

    When I saw Stack Overflow Chief Product Officer (CPO) Teresa Dietrich on the list of speakers at the All Things Open conference this year, I jumped at the chance to get an update.

    We all know the value of Stack Overflow: the information that's been created there over the past twelve years is nothing short of vital for programmers, developers, and other technologists. Just the other day one of our contributors shared how critical it was to his process for starting to learn a new programming language quickly.

    Teresa and her team are laser-focused on what Stack Overflow can do for teams of developers and operations folks these days, so I asked questions around her understanding of where Stack Overflow has been and where they are now during a global pandemic in order to maintain and grow a healthy Q&A platform.

    What does Stack Overflow mean to developers today? What was it like 10 years ago?

  • Dirk Eddelbuettel: #31: Test your R package against bleeding-edge gcc

    Welcome to the 31th post in the rapturously rampant R recommendations series, or R4 for short. This post will once again feature Docker for use with R.

    Earlier this week, I received a note from CRAN about how my RcppTOML package was no longer building with the (as of right now of course unreleased) version 11 of the GNU C++ compiler, i.e. g++-11. And very kindly even included a hint about the likely fix (which was of course correct). CRAN, and one of its maintainers in particular, is extremely forward-looking in terms of toolchain changes. A year ago we were asked to updated possible use of global variables in C code as gcc-10 tightened the rules. This changes is a C++ one, and a fairly simple one of simply being more explicit with include headers. Previous g++ release had done the same.

    The question now was about the least painful way to get g++-11 onto my machine, with the least amount of side-effects. Regular readers of this blog will know where this is headed, but even use of Docker requires binaries. A look at g++-11 within packages.debian.org comes up empty. No Debian means no Ubuntu. But … there is a PPA for Ubuntu with toolchain builds we have used before. And voilà there we have it: within the PPA for Ubuntu Toolchain repository is the volatile packages PPA with both g++-10 and g++-11. Here Ubuntu 20.10 works with g++-10, but g++-11 requires Ubuntu 21.04. Docker containers are there for either. So with the preliminaries sorted out, the key steps are fairly straightforward:

  • Advent of Code and Learning

    So, I decided to do Advent of Code this year too. I usually get stuck part of the way, but I still think that it is a fun exercise.

    This year the plan is to use python and pytest the whole way through. Every day that i learn something that I want to remember, I add a til.txt file in that sub-directory. You can follow my progress and learnings in the git repository.

  • AMD Sends Out Zen 3 Compiler Support For GCC + AOCC 2.3 Compiler Released

    Following last month's release of the Ryzen 5000 "Zen 3" processors, AMD has now begun publishing their official compiler support for this extremely compelling processor family.

    For as extremely great as Zen 3 is, it's the belated compiler support as one of the few critiques we've had -- normally on the Intel side they are often plumbing their compiler targets and new instruction set extension support a year or more ahead of CPU launches (e.g. the most recent example back in July Intel added Alder Lake and Sapphire Rapids to GCC), and that's for when those processors are shipping on schedule. Having the compiler support out well ahead of the launches ensure the support is worked into stable compiler releases by the time the CPUs ship and ideally already used as the default compiler version in major Linux distribution releases. Intel generally remains spot-on in that regard while AMD has been much tighter -- or in the case of Zen 3, basically one month after launch.

  • The Time I Stole $10,000 from Bell Labs

    I worked at Bell Labs in New Jersey from 1994 to 2000. I was a systems administrator on a team of people charged with maintaining thousands of computers and the network that connected them. It was intimidating to be surrounded by so many brilliant scientists and engineers, many of whom had written the textbooks I used in college.

    One day, I had to make a configuration change to the central router. It is difficult to measure the size of a change. I could say it was a tiny change in that it affected only a few lines of the router's configuration file. On the other hand, it was a big change in that it impacted a network used by thousands of users. It was an important change because an important project was blocked waiting for it to be completed.

    I typed the commands to alter the configuration, saved the new configuration, and checked the things I usually check. The change was a success... or so I thought.

    Proud of myself, I moved on to other work. A little while later I couldn't connect to most machines on the network. Neither could anyone else. I panicked. Could my change have caused that? Impossible! That was nearly an hour ago.

    No, it was definitely my change. There are some typos that don't show any ill effects right away. In this case, a cache was held for 45 minutes. At 46 minutes the router was a very expensive box doing nothing.

  • Godot docs improvements report

    Some of you like the docs for what it covers already; others dislike it for what it lacks.

    The team's well-aware there is always room for improvement, and so they hired me to work part-time since September.

    My job was to take the maintainer's role for about two months and tackle some high-priority tasks. As such, I got to do a mix of reviews, editing, writing new content, and maintenance.

    Here's a report on the changes and the new content you can already enjoy today.

    In everything I wrote or edited, the goal was to simplify the language, improve precision, organize the information, and generally enhance your experience reading the docs.

    Note: you can find the changes in the bleeding-edge manual. We haven't back-ported them to the "stable" documentation yet as there are over 100 pages to redirect. More on that below.

  • POCL 1.6-RC1 Released With Better CUDA Performance - Phoronix

    POCL as the "Portable Computing Language" that implements OpenCL and allows it to function atop CPUs as well as CUDA-enabled NVIDIA GPUs, HSA-supported AMD GPUs, and other possible back-ends, is preparing for a new feature release.

    On Wednesday marked the release of POCL 1.6-RC1 as the test release for the next update to the Portable Computing Language.

  • It's templates all the way down - part 3

    In Part 1 I've shown you how to create your own distribution image using the freedesktop.org CI templates. In Part 2, I've shown you how to truly build nested images. In this part, I'll talk about the ci-fairy tool that is part of the same repository of ci-templates.

    When you're building a CI pipeline, there are some tasks that most projects need in some way or another. The ci-fairy tool is a grab-bag of solutions for these. Some of those solutions are for a pipeline itself, others are for running locally. So let's go through the various commands available.

  • gfldex: But what about eigenstates?

    I wanted Shell::Piping to be able to deal better with STDERR because ffmpeg is outputting both status reports and errors to STDERR. In this case Capture will contain tons of stuff that is not an error message. So I need to be able to collect only a last few lines. Adding another adverb didn’t have much appeal because Shell/Piping.raku contains 21 multi candidates for infix:<|»>. I want to Capture, but only 2 lines. Using :stderr(Capture but 2)looks cool and is easy to implement. Since Capture is not a decent of Cool it doesn’t come with .Int, unless we mix 2 in. Then we can if-branch on my $limit = $stderr.?Int. That’s good because $stderr ~~ Int:D does not work and Metamodel::Mixins is not helpful either.

  • Day 4: Parsing Clojure namespace forms using Raku grammars – Raku Advent Calendar

    One day, I started wondering if it would be possible to parse Clojure namespace forms and generate a dependency graph of the various namespaces used in a real-world Clojure project. While that was the original motivation, I ended up down the Raku grammar rabbit hole, and had an enjoyable time learning how to use them. I’m glad you’re joining me in reliving that journey.

    [...]

    Informally speaking, grammars can be thought of as a set of rules that describe a language. With these rules, one can meaningfully parse (to make sense of, or deconstruct into its grammatical components) a piece of text. It turns out that this is a common task in computing. We need to frequently translate programs from one language to another. This is the job of a compiler. Before being able to translate it, the compiler needs to know whether the original program is even valid, according to the language’s grammar.

    While we have explained in theory what grammars are, Raku grammars help us model abstract grammars as a programming construct (the grammar keyword and its adjacent helpers) using which we can perform parsing tasks. It is important to understand this distinction.

    First class grammars are considered one of the revolutionary features of Raku. Normally, you’d find grammars as a library or a standalone tool, but Raku has embraced it wholesale, and has a powerful implementation of grammars which makes light work of most parsing tasks.

  • Sam Thursfield: Beginning Rust

    I have the privilege of some free time this December and I unexpectedly was inspired to do the first few days of the Advent of Code challenge, by a number of inspiring people including Philip Chimento, Daniel Silverstone and Ed Cragg.

    The challenge can be completed in any language, but it’s a great excuse to learn something new. I have read a lot about Rust and never used until a few days ago.

    Most of my recent experience is with Python and C, and Rust feels like it has many of the best bits of both languages. I didn’t get on well with Haskell, but the things I liked about that language are also there in Rust. It’s done very well at taking the good parts of these languages and leaving out the bad parts. There’s no camelCaseBullshit, in particular.

  • Advent of Rust 3: Once in ‘a Lifetime

    Well, this is another long stream-of-consciousness chronicle of my attempt to learn how to program in Rust by doing the daily programming puzzles on Advent of Code 2020. It’s long, but on the plus side, this is the first time ever that I’ve published two blog posts in two days, let alone three in three days. And you know what they say, if I’d had more time, I would’ve written you a shorter letter.

    I thought a bit about why it should even be interesting or valuable to write about my mistakes and thought process. Or put more bluntly, isn’t this just a waste of time? Who is this useful for?

    Well, for one thing, at my job I’ve been working on Temporal, a standards-track proposal to add a modern API for dates and times to the JavaScript language. Earlier this year I conducted a survey of people who had tried out the proposed Temporal API, and one of the purposes was to try to figure out what was easy to understand and what was hard, for someone coming to Temporal with no prior knowledge. Even though I had been in exactly that position myself only a few months before, I had become so accustomed to using Temporal that I could literally remember nothing of my own experience.

    It’s sometimes called the curse of knowledge. I’m sure I will look back in a year, or two years, when I have written lots of Rust code, and not remember any of this either, and I’ll be glad that I wrote it down. But maybe it’ll be valuable in the meantime to someone else!

More in Tux Machines

New in Linux 5.12

  • Linux 5.12 To Allow Voltage/Temperature Reporting On Some ASRock Motherboards - Phoronix

    Voltage, temperature, and fan speed reporting among desktop motherboards under Linux remains one of the unfortunate areas even in 2021... Many SIO ICs remain publicly undocumented and the Linux driver support is often left up to the community and usually through reverse-engineering. Thus the mainline Linux kernel support is left to suffer especially among newer desktop motherboards.

  • [Older] F2FS With Linux 5.12 To Allow Configuring Compression Level

    While the Flash-Friendly File-System (F2FS) allows selecting between your choice of optional compression algorithms like LZO, LZ4, and Zstd -- plus even specifying specific file extensions to optionally limit the transparent file-system compression to -- it doesn't allow easily specifying a compression level. That is fortunately set to change with the Linux 5.12 kernel this spring. Queued now into the F2FS "dev" tree ahead of the Linux 5.12 merge window is a patch that's been floating around for some weeks to allow easily configuring the compression level. The compress_algorithm mount option is expanded to allow also specifying a level, such that the format supported is [algorithm]:[level] should you want to override any level preference like with the LZ4 and Zstd compression algorithms.

Security and Proprietary Software

  • diffoscope 165 released

    The diffoscope maintainers are pleased to announce the release of diffoscope version 165. This version includes the following changes:

    [ Dimitrios Apostolou ]
    * Introduce the --no-acl and --no-xattr arguments [later collapsed to
      --extended-filesystem-attributes] to improve performance.
    * Avoid calling the external stat command.
    
    [ Chris Lamb ]
    * Collapse --acl and --xattr into --extended-filesystem-attributes to cover
      all of these extended attributes, defaulting the new option to false (ie.
      to not check these very expensive external calls).
    
    [ Mattia Rizzolo ]
    * Override several lintian warnings regarding prebuilt binaries in the
    * source.
    * Add a pytest.ini file to explicitly use Junit's xunit2 format.
    * Ignore the Python DeprecationWarning message regarding the `imp` module
      deprecation as it comes from a third-party library.
    * debian/rules: filter the content of the d/*.substvars files

  • SonicWall hardware VPNs hit by worst-case 0-zero-day-exploit attacks

    “…have information about hacking of a well-known firewall vendor and other security products by this they are silent and do not release press releases for their clients who are under attack due to several 0 days in particular very large companies are vulnerable technology companies,” BleepingComputer was told via email.

  • Cyber Firm SonicWall Says It Was Victim of ‘Sophisticated’ Hack

    The Silicon Valley-based company said in a statement that the two products compromised provide users with remote access to internal resources.

    The attackers exploited so-called “zero days” -- a newly discovered software flaw -- on certain SonicWall remote access products, the company said in a statement.

  • Former manager of Microsoft Taiwan investigated for fraud

    A former manager at the Taiwanese branch of software giant Microsoft was questioned Friday (Jan. 22) about an alleged fraud scam directed against the company.

    In 2016 and 2017, Chang Ming-fang (張銘芳) allegedly colluded with managers of other companies to forge orders to obtain discounts and products at lower prices, UDN reported.

  • School laptops sent by government arrive loaded with malware [iophk: Windows TCO]

    A number of the devices were found to be infected with a "self-propagating network worm", according to the forum, and they also appeared to be contacting Russian servers, one teacher wrote. The Windows-based laptops were specifically infected with Gamarue.1, a worm Microsoft identified in 2012.

  • Ransomware provides the perfect cover

    Look at any list of security challenges that CISOs are most concerned about and you’ll consistently find ransomware on them. It’s no wonder: ransomware attacks cripple organizations due to the costs of downtime, recovery, regulatory penalties, and lost revenue. Unfortunately, cybercriminals have added an extra sting to these attacks: they are using ransomware as a smokescreen to divert security teams from other clandestine activities behind the scenes.

    Attackers are using the noise of ransomware to their advantage as it provides the perfect cover to distract attention so they can take aim at their real target: exfiltrating IP [sic], research, and other valuable data from the corporate network.

  • Global ransom DDoS extortionists are retargeting companies

    According to Radware, companies that received this letter also received threats in August and September 2020. Security researchers’ analysis of this new wave of ransom letters suggested that the same threat actors from the middle of 2020 are behind these malicious communications.

    When the DDoS extortion campaign started in August of 2020, a single Bitcoin was worth approximately $10,000. It’s now worth roughly $30,000. The attackers cited this in the latest round of ransom letters, and it represents the impact the rising price of Bitcoin is having on the threat landscape.

    A few hours after receiving the message, organizations were hit by DDoS attacks that exceeded 200 Gbps and lasted over nine hours without slowdown or interruption. A maximum attack size of 237 Gbps was reached with a total duration of nearly 10 hours, the alert warned.

  • Boeing 737 MAX is a reminder of the REAL problem with software | Stop at Zona-M

    And that problem almost never is software.

7 Linux Distros to Look Forward in 2021

Here is a list of most anticipated Linux distributions you should keep an eye on in the year 2021. Read more

Games Leftovers

  • Gaming Like It's 1925: Last Week To Join The Public Domain Game Jam!

    Sign up for the Public Domain Game Jam on itch.io »

  • ujoy(4) added to -current

    With the following commit, Thomas Frohwein (thfr@) added a joystick/gamecontroller driver to -current: [...]

  • The First Online Conference Is Happening Today For The Godot Game Engine - Phoronix

    For those interested in Godot as the premiere open-source 2D/3D game engine or just looking for some interesting technical talks to enjoy this weekend, the first GodotCon Online is today. GodotCon 2021 is the open-source game engine's first entirely online conference for developers, users, and other contributors to this promising open-source project. The YouTube-based event has been running from 8:45 UTC today until 16:00 UTC, but fear not if you missed out as you can already go back and listen to the prior talks in the stream. The recordings will remain available for those wanting to enjoy it in the days ahead. All of the content is free of charge.