Language Selection

English French German Italian Portuguese Spanish

Programming Leftovers

Filed under
Development
  • It's not what programming languages do, it's what they shepherd you to

    How many of you have listened, read or taken part in a discussion about programming languages that goes like the following:

    Person A: "Programming language X is bad, code written in it is unreadable and horrible."

    Person B: "No it's not. You can write good code in X, you just have to be disciplined."

    Person A: "It does not work, if you look at existing code it is all awful."

    Person B: "No! Wrong! Those are just people doing it badly. You can write readable code just fine."

    After this the discussion repeats from the beginning until either one gets fed up and just leaves.

    I'm guessing more than 99% of you readers have seen this, often multiple times. The sad part of this is that even though this thing happens all the time, nobody learns anything and the discussion begins anew all the time. Let's see if we can do something about this. A good way to go about it is to try to come up with a name and a description for the underlying issue.

  • Ideas to help working from home

    When I came to KDAB to work, working at home was a bit of a culture shock for me – I’d previously only ever worked in an open-plan office and had sworn that home working was not for me – I’d never manage to get anything done! However, I’ve found that home working suits me quite well, and given the current situation I thought I’d write a little about it as some people might be experiencing home working for the first time.

    The first concern I had when starting to work from home was the loneliness. This is particularly relevant now, however there are still ways to ensure that you don’t get completely isolated. One thing would be to have meetings via video call – and not to forget that you can also do this with friends in the evening! Having social contact is important, even if you can’t meet up face to face.

    The other main concern I had was how to separate working time from non-working time – both the physical and mental aspects. As a physical space, I use my PC desk for gaming which is not ideal, but I make sure after I work I move to another room to differentiate ‘work’ and ‘play’. A better way would be to have two different spaces set up, however with limited space – I live in a flat – I make sure that I at least have a break in between the two uses. Mentally, at the end of each day I like to plan what I’ll do first in the morning, so that it’s part of my wind down for a working day – which allows me to start the next day without getting distracted. At the end of the week I upload my timesheet to say to myself ‘that’s it’ – a very definite point where I’m done for the week.

  • Static analysis in GCC 10

    I work at Red Hat on GCC, the GNU Compiler Collection. For the next major release of GCC, GCC 10, I’ve been implementing a new -fanalyzer option: A static analysis pass to identify various problems at compile-time, rather than at runtime.

    My thinking here is that it’s best to catch problems as early as possible as the code is written, using the compiler the code is written in as part of the compile-edit-debug cycle, rather than having static analysis as an extra tool “on the side” (perhaps proprietary). Hence, it seems worthwhile to have a static analyzer built into the compiler that can see exactly the same code as the compiler sees—because it is the compiler.

    This issue is, of course, a huge problem to tackle. For this release, I’ve focused on the kinds of problems seen in C code—and, in particular double-free bugs—but with a view toward creating a framework that we can expand on in subsequent releases (when we can add more checks and support languages other than C).

  • Malcolm: Static analysis in GCC 10

    David Malcolm writes about the static-analysis features that he is working on adding to the GCC compiler.

  •      

  • Ashley’s top five projects for Raspberry Pi first-timers

             

  •       
                   

  • How to manage a business without a headquarters

                     

                       

    Distributed organisations are as old as the [Internet]. Its first users 50 years ago realised how much can be done by swapping emails and digital files. These exchanges led to the development of “open source” software, jointly written by groups of strangers often geographically distant.

                       

    Today most distributed startups have open-source roots. Gatsby is one. Nearly all 1,200 employees of another, Automattic, best known for WordPress, software to build websites, work from home. GitHub, which hosts millions of open-source projects (and was acquired by Microsoft in 2018), may be the world’s biggest distributed enterprise. Two-thirds of its 2,000 staff work remotely. Most firms that build blockchains, a type of distributed database, are by their nature dispersed.

  •                

  • 10 Most(ly dead) Influential Programming Languages

                     

                       

    The other day I read 20 most significant programming languages in history, a “preposterous table I just made up.” He certainly got preposterous right: he lists Go as “most significant” but not ALGOL, Smalltalk, or ML. He also leaves off Pascal because it’s “mostly dead”. Preposterous! That defeats the whole point of what “significant in history” means.

                       

    So let’s talk about some “mostly dead” languages and why they matter so much.

                       

    Disclaimer: Yeah not all of these are dead and not all of these are forgotten. Like most people have heard of Smalltalk, right? Also there’s probably like a billion mistakes in this, because when you’re doing a survey of 60 years of computing history you’re gonna get some things wrong. Feel free to yell at me if you see anything!

                       

    Disclaimer 2: Yeah I know some of these are “first to invent” and others are “first to popularize”. History is complicated!

  •                

  • Megvii makes deep learning AI framework open-source as China moves to reduce reliance on US platforms

                     

                       

    Initially developed in 2014, MegEngine is part of Megvii’s proprietary AI platform, Brain++

  • Excellent Free Tutorials to Learn Awk

    Awk is a versatile programming language designed for pattern scanning and processing language and often used as a data extraction and reporting tool. It’s an excellent filter and report writer. It’s a standard feature of most Unix-like operating systems.

    Awk is small, fast, simple, and has a clean comprehensible C-like input language. It has robust programming constructs including if/else, while, do/while and for C-style and array iteration.

    The name awk comes from the initials of its designers: Alfred V. Aho, Peter J. Weinberger, and Brian W. Kernighan. The original version of awk was written in 1977 at AT&T Bell Laboratories.

  • This Week in Rust 331

More in Tux Machines

today's leftovers

  • Mesa 20.0.3 Released With Latest Open-Source Graphics Driver Fixes

    While many of you are users of Mesa Git for experiencing the bleeding-edge graphics drivers especially if you are a gamer wanting peak performance, for those on the Mesa stable series the Mesa 20.0.3 update has now shipped. Mesa 20.0.3 is the latest bi-weekly point release for back-porting the fixes to this Q1'2020 stable series.

  • Adrien Plazas: A Coloring API for GTK

    This week we had the Design Tools Hackfest 2020, virtualized because of COVID-19, where we discussed that recoloring API. We came up with something I think is interesting enough to discuss more widely.

  • [Former Canonical manager] Dustin Kirkland: Coordinated Launch Cycles at Apex

    I joined Apex Clearing last year, having spent the previous 20 years as a software engineer, product manager, and executive, mostly around open source software, including Ubuntu, OpenStack, and Kubernetes. Albeit IBM, Canonical and Google differ from fintech on many levels, these operating systems and cloud infrastructure technology platforms share a number of similarities with Apex's software-as-a-service platform. Moreover, there also exists some literal overlap: we’re heavy users of both Ubuntu and Kubernetes here at Apex. Ubuntu, OpenStack, and Kubernetes all share similar, predictable, time-based release cycles. Ubuntu has released every April and October, since October of 2004 – that's 32 major software platform releases, on time, every time, over 16 years. Ubuntu has set the bar for velocity, quality, and predictability in the open source world. OpenStack’s development processes have largely mirrored Ubuntu’s, with many of the early project leaders having been ex-Ubuntu engineers and managers. OpenStack, too, has utilized a 6-month development cycle, since 2010, now on its 20th release. Kubernetes came along in 2014, and sought to increase the pace a bit, with quarterly release cycles. Kubernetes is a little bit looser with dates than Ubuntu or OpenStack, but has generally cranked out 4 quality releases per year, over the last 6 years. I’ve been involved in each of these projects at some level, and I’ve thoroughly enjoyed coaching a number of early stage start-ups on how to apply these principles to their product development methodologies.

  • Ulrike Uhlig: Breaking the chain reaction of reactions to reactions

    Each of these interactions is embedded in larger society, and, as said above, we learn these roles from childhood. Therefore, we perpetually reproduce power structures, and learnt behavior. I doubt that fixing this on an individual level is sufficient to transform our interactions outside of small groups, families or work places. Although that would be a good start. We can see that the triangle holds together because the Victim, seemingly devoid of a way to handle their own needs, transfers care of their needs to the Rescuer, thereby giving up on their autonomy. The Rescuer is provided by the Victim with a sense of autonomy, knowledge, and power, that only works while denying the Victim their autonomy. At the same time, the Persecutor denies everyone else's needs and autonomy, and feels powerful by dismissing others. I've recently mentioned the importance of autonomy in order to avoid burnout, and as a means to control one's own life. If the Rescuer can acknowledge being in the triangle, and give the Victim autonomy, by supporting them with compassion, empathy, and guidance, and at the same time respecting their own boundaries, we could find even more ways to escape the drama triangle.

GNOME 3.36 and 3.38

Launched three weeks ago on March 11th, the GNOME 3.36 “Gresik” desktop environment brings numerous new features and performance enhancements, including refreshed login and unlock screens, a more polished GNOME Shell, and a new Extensions app for managing GNOME Shell extensions. GNOME 3.36 also revamps the calendar popover with a built-in Do Not Disturb feature, reorganizes the Power off / Log out options to be more accessible, adds a password peeking feature to most auth dialogs, and redesigns many panels of the GNOME Control Center. Read more Also: GNOME 3.38 Desktop Environment Slated for Release on September 16

Today in Techrights

21 Important Penetration Tools in Kali Linux

Kali Linux uses many kinds of penetration tools to assess the security situation of your devices and networks. Whether you are looking to advance your career as an ethical tester or find the vulnerabilities of your systems, these powerful tools yield excellent results. Almost all of them should be accessible from the main Kali Linux terminal. Note: if you are an ethical tester, you must have the necessary permissions to access another person’s device, unless you’re testing on your own devices. Read more