Language Selection

English French German Italian Portuguese Spanish

Programming: Thoughts From Jussi Pakkanen, Releases From Debian Developers, GSoC Projects and Python Leftovers

Filed under
Development
  • Jussi Pakkanen: Open source does not have a reward mechanism for tedious

    Many software developers are creators and builders. They are drawn to problems of the first type. The fact that they are difficult is not a downside, it is a challenge to be overcome. It can even be a badge of merit which you can wave around your fellow developers. These projects include things like writing your own operating system or 3D game engine, writing device drivers that saturate the fastest of transfer links, lock free atomic parallelism, distributed file systems that store exabytes of data as well as embedded firmware that has less than 1 kilobyte of RAM. Working on these kinds of problems is rewarding on its own, even if the actual product never finishes or fails horribly when eventually launched. They are, in a single word, sexy.

    Most problems are not like that, but are instead the programming equivalent of ditch digging. They consist of a lot of hard work, which is not very exciting on its own but it still needs to be done. It is difficult to get volunteers to work on these kinds of problems and this is where the problem gets amplified in open source. Corporations have a very strong way to motivate people to work on tedious problems and it is called a paycheck. Volunteer driven open source development does not have a way to incentivise people in the same way. This is a shame, because the chances of success for any given software project (and startup) is directly proportional to the amount of tedious work people working on it are willing to do.

  • ledger2beancount 2.0 released

    I released version 2.0 of ledger2beancount, a ledger to beancount converter.

  • digest 0.6.25: Spookyhash bugfix

    digest creates hash digests of arbitrary R objects (using the md5, sha-1, sha-256, sha-512, crc32, xxhash32, xxhash64, murmur32, and spookyhash algorithms) permitting easy comparison of R language objects. It is a fairly widely-used package (currently listed at 889k monthly downloads with 255 direct reverse dependencies and 7340 indirect reverse dependencies) as many tasks may involve caching of objects for which it provides convenient general-purpose hash key generation.

    This release is a one issue fix. Aaron Lun noticed some issues when spookyhash is used in streaming mode. Kendon Bell, who also contributed spookyhash quickly found the issue which is a simple oversight. This was worth addressing in new release, so I pushed 0.6.25.

  • Google announces 200 open-source mentors for the 2020 GSoC event

    With this year's Google Summer of Code event right around the corner, the organizers considered this to be the perfect time to announce the mentoring organizations for the participants. In this year's edition of GSoC, there will be 200 mentoring organizations, including 30 new teams. Read on to find out more details of this open-source event.

  • Python 101 2nd Edition Sample Chapters

    I have put together some sample chapters for the 2nd edition of Python 101 which is coming out later this year. You can download the PDF version of these sample chapters here. Note that these chapters may have minor typos in them. Feel free to let me know if you find any bugs or errors.

  • Python 3.7.6 : The SELinux python package.

    The tutorial for today is about the SELinux python package.

  • Release 0.7.0 of GooCalendar
  • Python in Production

    I’m missing a key part from the public Python discourse and I would like to help to change that.

    The other day I was listening to a podcast about running Python services in production. While I disagreed with some of the choices they made, it acutely reminded me about what I’ve been missing in the past years from the public Python discourse.

  • Python Packaging Metadata

    Since this topic keeps coming up, I’d like to briefly share my thoughts on Python package metadata because it’s – as always – more complex than it seems.

    When I say metadata I mean mostly the version so I will talk about it interchangeably. But the description, the license, or the project URL are also part of the game.

  • Better Python tracebacks with Rich

    One of my goals in writing Rich was to render really nice Python tracebacks. And now that feature has landed.

    I've never found Python tracebacks to be a great debugging aid beyond telling me what the exception was, and where it occurred. In a recent update to Rich, I've tried to refresh the humble traceback to give enough context to diagnose errors before switching back to the editor.

Google Summer of Code 2020 Mentoring Organizations Announced

  • Google Summer of Code 2020 Mentoring Organizations Announced

    You can find the full list of organizations/projects on GSoC website. For each company, you can click on “View Idea List” to see more details about the potential projects. Students will be invited to apply and submit proposals between March 16-31. Selected students will be working on the project between May 19, 2020 – August 11, 2020, with regular evaluation and final results on August 26, 2020.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

More in Tux Machines

FSF Chasing Members and GNU Project Has a Dozen New Releases This Month

  • Don’t miss your chance to win fabulous prizes: Get your friends to join the FSF!

    As you may already know, every associate member is incredibly valuable to the Free Software Foundation (FSF). Since most of our funding comes from individual donations and memberships, associate members aren’t just a number. Each new membership magnifies our reach and our ability to effect social change, by demonstrating your commitment to the crucial cause of software freedom. Right now, FSF associate members have the opportunity to reap some fantastic rewards by participating in our virtual LibrePlanet membership drive. We still have the raffle prizes generously donated by Technoethical, Vikings, JMP.chat, and ThinkPenguin for this year’s LibrePlanet conference, which we held entirely online this year due to the COVID-19 pandemic. Now, we’re giving them away to those who go the extra mile to help us grow by referring new annual associate members to sign up!

  • May GNU Spotlight with Mike Gerwitz: 12 new releases!

    bison-3.6.2 denemo-2.4.0 emms-5.4 freeipmi-1.6.5 gcc-10.1.0 gdb-9.2 gnuastro-0.12 gnuhealth-3.6.4 mediagoblin-0.10.0 nano-4.9.3 nettle-3.6 parallel-20200522

Programming: SDL, QML, Python, Awk/Bash and More

  • Photoframe Hack

    Sometimes you just want to get something done. Something for yourself. You do not intend it to be reused, or even pretty. You build a tool. My tool was a photoframe with some basic overlays. I wanted the family calendar, some weather information (current temperature + forecast), time, and the next bus heading for the train station. [...] I also have a bunch of REST calls to my local home assistant server. Most of these reside in the HassButton class, but I also get the current temperature from there. These are hardcoded for my local network, so needs refactoring to be used outside of my LAN. All of these interfaces require API keys of one kind or another – be it a proper key, or a secret URL. These are pulled from environment variables in main.cpp and then exposed to QML. That way, you can reuse the components without having to share your secrets.

  • Writing the Ultimate Locking Check

    In theory a clever programmer could discover all the bugs in a piece of software just by examining it carefully, but in reality humans can't keep track of everything and they get distracted easily. A computer could use the same logic and find the bugs through static analysis. There are two main limitations for static analysis. The first is that it is hard to know the difference between a bug and feature. Here we're going to specify that holding a lock for certain returns is a bug. This rule is generally is true but occasionally the kernel programmers hold a lock deliberately. The second limitation is that to understand the code, sometimes you need to understand how the variables are related to each other. It's difficult to know in advance which variables are related and it's impossible to track all the relationships without running out of memory. This will become more clear later. Nevertheless, static analysis can find many bugs so it is a useful tool. Many static analysis tools have a check for locking bugs. Smatch has had one since 2002 but it wasn't exceptional. My first ten patches in the Linux kernel git history fixed locking bugs and I have written hundreds of these fixes in the years since. When Smatch gained the ability to do cross function analysis in 2010, I knew that I had to re-write the locking check to take advantage of the new cross function analysis feature. When you combine cross function analysis with top of the line flow analysis available and in depth knowledge of kernel locks then the result is the Ultimate Locking Check! Unfortunately, I have a tendency towards procrastination and it took me a decade to get around to it, but it is done now. This blog will step through how the locking analysis works.

  • Raising the ground

    To read this blog I recommend you to be familiar with C programming language and (not mandatory) basics about SDL2. The main goal of this blog is not to give you a copy and paste code, instead it will guide you along the way until you get results by your own merit, also if you find any issues/mistakes/room for improvement please leave a response, thanks for reading.

  • PyCoder’s Weekly: Issue #422 (May 26, 2020)
  • Real Python: A Beginner's Guide to Pip

    What is pip? pip is the standard package manager for Python. It allows you to install and manage additional packages that are not part of the Python standard library. This course is an introduction to pip for new Pythonistas.

  • Awk Cheatsheet And Examples

    Awk is a great utility for text parsing and maniupulation. All unix operating systems have Awk installed by default. If you are on Windows. Please check out at the bottom of this tutorial on how to install and enable awk on Windows.

  • Printing repeats within repeats, and splitting a list into columns

    Repeats within repeats. BASH printf is a complex piece of machinery. The man page says a printf command should look like printf FORMAT [ARGUMENT]..., which makes it seem the "argument" is the thing to be printed and the "format" describes how.

Devices/Embedded With Linux

  • Gemini Lake industrial mini-PCs are loaded with USB and COM ports

    GigaIPC latest QBiX Series industrial mini-PCs run Linux or Windows on Intel Gemini Lake and offer up to 8x USB and 5x COM ports plus dual displays, GbE, SATA III, M.2, and ruggedization features. Taiwanese computer vendor Gigabyte primarily produces consumer and enterprise desktop PC and server equipment, so we were surprised in 2017 when it launched an embedded 3.5-inch, Intel Apollo Lake GA-SBCAP3350 SBC. The following year in 2018, Gigabyte spun off GigaIPC as an embedded unit, and it has already generated a large catalog of Intel-based products including Micro-ATX, Mini-ITX, thin Mini-ITX, and 110 x 105mm “10×10” boards. There are 15 different 3.5-inch “QBi Pro” boards much like the GA-SBCAP3350, but also available with Whiskey Lake and Kaby Lake-U processors.

  • 19″ Rackmounts Support up to 12 Raspberry Pi SBCs

    Last time, we wrote about myelectronics.nl we covered their Tesla Cybertruck Case for Intel NUCs which housed the mini PC into a mini CyberTruck looking enclosure. The company has now come up with new housing solutions specifically designed for Raspberry Pi 1/2/3/4 Model B/B+ boards.

  • PoE-ready Ryzen V1000 SBC is all about camera control

    Axiomtek’s “MIRU130” SBC targets embedded vision applications with a Ryzen V1000 SoC, 4x USB 3.1 Gen2, HDMI and DP ports, cam triggers and lighting controls, 2x M.2, PCIe x16, and 4x GbE ports, 2x of which offer PoE. Axiomtek recently launched a CAPA13R, joineing Seco’s similarly 3.5-inch SBC-C90 as the only SBCs we have seen based on AMD’s Ryzen Embedded V100. Now Axiomtek has returned with a larger, V1000-based MIRU130 motherboard with a 244 x 170mm form factor that falls in between Mini-ITX and Micro-ATX.

  • IAR Systems Delivers Efficient Embedded Software Building on Linux

    Through the C/C++ compiler and debugger toolchain IAR Embedded Workbench®, IAR Systems provides its customers with the market's most diverse microcontroller support as well as adapted licensing options to fit different organizations' needs. This flexibility is now extended to the build environment as the well-known build tools in IAR Embedded Workbench now support Linux. The tools offer leading code quality, outstanding optimizations for size and speed, and fast build times. Supporting implementation in Linux-based frameworks for automated application build and test processes, the tools enable large-scale deployments of critical software building and testing and is suitable for installations ranging from a few licenses on a small build server, to massive installations with several hundreds of parallel builds active at the same time.

  • Librem 5 April 2020 Software Development Update

    This is another incarnation of the software development progress for the Librem 5. This time for April 2020 (weeks 14-18). Some items are covered in more detail in separate blog posts at https://puri.sm/news. The idea of this summaries is so you can have a closer look at the coding and design side of things. It also shows how much we’re standing on the shoulders of giants reusing existing software and how contributions are flowing back and forth. So these reports are usually rather link heavy pointing to individual merge requests on https://source.puri.sm/ or to the upstream side (like e.g. GNOME’s gitlab.)

Games: Burning Knight, Elder Scrolls, Cities: Skylines and PyGame

  • Burning Knight is a roguelike where you rob a dungeon, coming soon

    At least the setting is honest, you're totally robbing the dungeons in Burning Knight and then attempting to flee. Burning Knight is an action-packed procedurally generated roguelike, with fast-paced action and plenty of exploration across various floors in the Burning Knight's castle that you're stealing goods from. It can turn into a bullet-hell in some rooms, there's hundreds of items to find and they can be combined to "build your very own game-breaking combos" and it does sound awesome. The developer, Rexcellent Games, just announced on Twitter yesterday that it's now actually complete. They're waiting on Valve's approval, and it looks like it will hopefully release next month. SteamDB captured the date changing to June 5 but that might be a temporary date.

  • Stadia gets Elder Scrolls Online on June 16, 1440p in web and more

    A few bits of Stadia news for you as Google have announced the next set of additions coming to their game streaming service. For players who were a bit let down by resolution options, there's some good news. As some players already saw across the last few weeks and today being made properly official, 1440p is now an option when playing Stadia in a web browser.

  • Humble Cities: Skylines Bundle is up for some easy city building

    Cities: Skylines, one of the finest city builders ever is now available in a big Humble Bundle for you to grab the base game and lots of extra content. This is honestly a ridiculously good deal and probably the cheapest Cities: Skylines has ever been. For £1 you can get Cities: Skylines and the Deep Focus Radio DLC. Even if you only go for that, there's a lot to enjoy without any expansions.

  • Python Qt5 - PyQt5 and PyGame compatibility with source code.

    This tutorial tries to solve from the objectives related to solving and stabilizing compatibility errors between PyQt4 and PyQt5 and creating a common interface between PyQt5 and PyGame. There is always the same problem in programming when the developer for some reason has to change classes, methods and functions and reusing the old code is no longer valid. In this case, common or other errors occur, which leads to a waste of time.