Language Selection

English French German Italian Portuguese Spanish

Programming: Golang, Perl, Python and the GCC Story

Filed under
Development
  • 9 Reasons You Should Use Golang Language

    Golang is the open-source programming language developed by Google in the year 2007. Several programming languages are present in the market with advantages and disadvantages. We cannot predict which language is better, it would take months to discuss. However, the most sensible thing that helps choose a better language is the one that suits a specific purpose more reliably than the others. Thus, Golang development will be most suitable for those who are willing to combine simplicity, concurrency, and safety of the code.

    Different programming languages are less memory efficient and are unable to communicate with the hardware. Therefore, Golang is one of the most preferred languages for developers that help build software. It is also the open-source and procedural language that is advantageous to deploy simple, effective, and reliable software. Go language aids the environment to adopt different patterns that are similar to dynamic languages.

    Go language has several advantages that are responsible to quicken the development process. Moreover, Golang is the language that makes the process of software development easy and simple for programmers. These days, Golang is gaining popularity amongst the developers as it has a plethora of advantages than the other programming languages. So, the use of Golang has been adopted by mobile app development companies.

  • Demonstrating PERL with Tic-Tac-Toe, Part 1

    PERL is a procedural programming language. A program written in PERL consists of a series of commands that are executed sequentially. With few exceptions, most commands alter the state of the computer’s memory in some way.

    Line 00 in the Tic-Tac-Toe program isn’t technically part of the PERL program and it can be omitted. It is called a shebang (the letter e is pronounced soft as it is in the word shell). The purpose of the shebang line is to tell the operating system what interpreter the remaining text should be processed with if one isn’t specified on the command line.

    Line 02 isn’t strictly necessary for this program either. It makes available an advanced command named state. The state command creates a variable that can retain its value after it has gone out of scope. I’m using it here as a way to avoid declaring a global variable. It is considered good practice in computer programming to avoid using global variables where possible because they allow for action at a distance. If you didn’t follow all of that, don’t worry about it. It’s not important at this point.

  • Perl Weekly Challenge 048: Survivor and Palindrome Dates

    I tried two different approaches to the problem.

    The first one uses an array of living people and a variable $sword that stores the index of the person holding the sword. In each iteration of the loop, the next person is removed from the array, and the sword is passed to the next person.

    The “next person” has a special cyclic meaning: at the end of the array, the sword must return to the beginning. This is achieved by using the modulo operator %. Note that we use it twice, once to find the person to kill, and once to find the person to pass the sword to—and each case uses a different array size in the modulo operation, as killing a person changes the size of the array.

  • My Unexpected Dive into Open-Source Python

    I'm very happy to announce that I have joined Quansight as a front-end developer and designer! It was a happy coincidence how I joined- the intersection of my skills and the open source community's expanded vision.

    I met Ralf Gommers, the director of Quansight Labs, at the PyData Conference in New York City last year after giving a Lightning Talk. However, as cool and confident as this may sound, I sure didn't start off that way.

    At that point, it's been a few months since I graduated from a coding bootcamp. I was feeling down in the job-search funk. I hadn't even done much in Python, since my focus was in Javascript.

  • Reposurgeon defeats all monsters!

    On January 12th 2020, reposurgeon performed a successful conversion of its biggest repository ever – the entire history of the GNU Compiler Collection, 280K commits with a history stretching back through 1987. Not only were some parts CVS, the earliest portions predated CVS and had been stored in RCS.

    I waited this long to talk about it to give the dust time to settle on the conversion. But it’s been 5 weeks now and I’ve heard nary a peep from the GCC developers about any problems, so I think we can score this as reposurgeon’s biggest victory yet.

    The Go port really proved itself. Those 280K commits can be handled on the 128GB Great Beast with a load time of about two hours. I have to tell the Go garbage collector to be really aggressive – set GOGC=30 – but that’s exactly what GOGC is for.

More in Tux Machines

Proprietary Stuff and Openwashing

  • WinRAR 5.90 Final Released For Windows, Mac, Linux, and Android

    WinRAR 5.90 Final has been released with numerous performance improvements and bug fixes for Windows, Mac, Linux, and Android. For those not familiar with WinRar, it is an archiving software from RARLAB that supports the ARJ, BZIP2, CAB, GZ, ISO, JAR, LHA, RAR, TAR, UUE, XZ, Z, ZIP, ZIPX, 7z, 001 (split) archive formats. WinRAR is distributed as trialware, which means that anyone can use it as a full-featured product before purchasing it.

  • GitLab is open sourcing 18 features for the DevOps lifecycle

    The DevOps tool GitLab offers paid and free versions, and now 18 additional features will be moved to the open source editions Core/Free. The developer community can contribute to the according issues and speed up the process—so now is the time to take a look and see which of the features you find most important.

  • HPE, Intel and Linux Foundation team up for open source software for 5G core

    HPE announced on Tuesday it's working with Intel and the Linux Foundation on a new open source software project to help automate the roll out of 5G across multiple sites. The new partnership, which will be under the Linux Foundation umbrella, is called the Open Distributed Infrastructure Management Framework. The partnership represents HPE's move into the 5G core network space as it branches out from its enterprise roots. Other partners for the open source project include AMI, Apstra, IBM's Red Hat, Tech Mahindra and World Wide Technology. HPE will also introduce an enterprise offering, the HPE Open Distributed Infrastructure Management Resource Aggregator.

  • What Value Does Alluxio Brings To The Presto Foundation?

    Steven Mih: The Presto Foundation is a project hosted under the Linux Foundation. It was created last year by companies like Facebook, Twitter, Alibaba and Uber. Alluxio is an open source project that is commonly used with Presto, the open source distributed SQL query engine, as well as other projects like Spark and TensorFlow. We support all these different frameworks. And since this was a foundation that was open to all, we decided to join it as one of the companies involved in that foundation.

  • Automating our Vanilla releases with GitHub actions

    Vanilla framework version 2.7.1 published at the end of February was the first fully automated release. Since then we have released two more and plan to release regular updates at least after every two-week iteration. The automated release process is not only smoother and takes less time, but also much less prone to human error. But there are still areas for possible improvements. With every major release, we are sending a newsletter describing the latest changes and additions to the Vanilla framework. This is still a very manual process that involves editing an email campaign template on MailChimp. Because the content of the email is loosely based on the release notes (that are already automated with Release Drafter), we could think of pre-populating the newsletter content with release notes. Instead of triggering the release manually using GitHub UI, we could automatically release (and publish) whenever the Vanilla version is updated in the package.json file. We already have similar workflows in place for our python packages.

Games: Kaleidogen, Suits: A Business RPG and More

  • Joachim Breitner: Animations in Kaleidogen

    A while ago I wrote a little game (or toy) called Kaleidogen. It is a relatively contemplative game where, starting from just unicolored disks, you combine abstract circular patterns to breed more interesting patterns. See my FARM 2019 talk for more details, or check out the source repository.

  • 'Suits: A Business RPG', a small indie comedy RPG has been updated with better Linux support

    Suits: A Business RPG is a mysterious comedy game that was released more than four years ago; from time to time it's being featured as part of Steam’s Weeklong Deals, as it is the case right now (50% discounted), so I’ve been looking into it for some time.

  • Struggling with regular expressions? Then visit 'Regex Crossword', a site to learn them through a Sudoku-like game

    The website features several sections to make the levels as varied as possible. There is also another area which includes levels made by other users, along with a stats page. Also, if you check the Help and FAQ section, you will be recommended other tools and online resources in case you want to learn a bit more about regexs. Don’t forget to use an account so that your progress on the levels can be saved. Finally, although this project is "something we do for fun", you can donate via PayPal or several cryptocurrencies (check the Help and FAQ section to see which ones are available) to help with hosting expenses and to keep ensuring further improvements and levels.

  • 'Tilesetter' is a program for developers that aims to optimize the tileset generation process; demo available

    Judging by the number of followers on their Twitter account and the user reviews on Steam, Tilesetter seems to embody the definition of “obscure”, but at the same time it must be remarked that except one, all of those reviews are positive and endorsed by a lot of other people, so while I’m not the indicated person to recommend you to use it or not (I’m not a developer), there are enough signs that would suggest this may be a particularly useful program to help you save a lot of time when creating your tilesets.

Devices With Arduino and Linux Support

  • Select a Geiger Counter for your Phone to Survive the next Nuclear Catastrophe

    It’s time to prepare! No, not for that COVID-19 thingie, it’s too late, but since 2020 has not started the best way we should prepare for all eventualities. It all started badly as I fell off my bicycle on New Year’s eve, and it went south from there, from talks of world war three in January, to the thread of a virus pandemic that could kill millions worldwide, to the start of the first global great depression. 2020 will be the “year of doom“, and we should expect massive earthquakes, once in a hundred-year megatsunami what will wipe entire cities, gigantic locust swarms in southern Europe, climate change induces, and leading famine, a couple of large asteroids hitting the hearth, and so on. But we should not forget the nuclear threat either via nuclear war or damaged nuclear reactors following natural disasters or terrorist attacks.

  • Edgeless EAI-Series Dual Arm Cortex-M4 MCU Features a 300 GOPS CNN-NPU

    Microcontrollers will have an important role to play in AIoT (AI + IoT) applications as they provide the lowest cost and power consumption. Performance is limited but we start seeing MCUs with AI accelerators such as GreenWaves GAP9 multi-core RISC-V microcontroller or Kendryte K210 RISC-V MCU with a KPU AI accelerator.

  • PCIe-enabled Intel 9th Gen computer uses water cooling

    Vecow’s Linux-friendly “RCX-1500W” edge AI computer cools its 9th Gen Coffee Lake Refresh chips and up to 4x PCIe cards with a water-cooling system. We rarely see liquid cooling systems on embedded computers because they tend to be complex, bulky, expensive, and must be carefully installed and maintained to avoid damage to the computer. Yet, embedded computers have never been so powerful and hot as the latest PCIe-enabled edge AI monsters that are in vogue these days. When you’re running high-powered graphics cards with Intel 8th or 9th Gen CPUs, you just may need to get a little wet.

  • Modular rolling stock computer is loaded with wireless

    Eurotech’s rugged, railway certified “BoltGate 20-31” transportation gateway runs Linux on an Apollo Lake SoC with standard LTE and GNSS, a choice of WiFi/BT or MVB, and optional expansion modules for GbE, storage, serial/CAN, DIO, and odometer. Eurotech announced an Intel Apollo Lake based “smart transportation” computer due in the second half of the year that follows its Bay Trail based BoltGATE 20-25 and BoltGATE 20-25 MVB. The new BoltGate 20-31 computer similarly offers modular expansion and EN50155 railway certification and targets rolling stock applications including passenger infotainment and entertainment, train-to-ground communications, and fleet management.

  • Kontron 3.5″-SBC-WLU Single Board Computer Takes CNVi M.2 WiFi Cards
  • DSTIKE ESP32 Watch Development Board Comes with OLED or TFT Display

    The watch can be programmed with Arduino core for ESP32 together with either ThingPulse OLED library or Arduino library for the ST7789 IPS SPI display depending on the model, and Adafruit Neopixel library. Also refer to the example sketches for the OLED display and TFT display.

Programming: Racket, Perl and Raku, GNU/Bash

  • Excellent Free Tutorials to Learn Racket

    Racket is a general-purpose, object-oriented, multi-paradigm, functional, imperative, logic based programming language based on the Scheme dialect of Lisp. It’s designed to be a platform for programming language design and implementation. Racket is also used to refer to the family of Racket programming languages and the set of tools supporting development on and with Racket. It has a powerful cross-platform GUI library built in. Racket’s core language includes macros, modules, lexical closures, tail calls, delimited continuations, parameters (fluid variables), software contracts, green and OS threads, and more. The language also comes with primitives, such as eventspaces and custodians, which control resource management and enables the language to act like an operating system for loading and managing other programs. Racket is often used for scripting, computer science education, and research. It’s an open-source project (Apache/MIT). Here’s our recommended tutorials to learn Racket.

  • Pangeo with Dask Gateway

    Over the past few weeks, we have made some exciting changes to Pangeo’s cloud deployments. These changes will make using Pangeo’s clusters easier for users while making the deployments more secure and maintainable for administrators. Going all the way back to the initial prototype, Pangeo’s cloud deployments have combined a user interface like Jupyterlab with scalable computing. Until recently, Pangeo used Dask Kubernetes to start Dask clusters on a Kubernetes cluster. This worked well for several years, but there were a few drawbacks.

  • We are happy to announce the first release of Jaybird 4.

    We are happy to announce the first release of Jaybird 4. Jaybird 4 is – compared to Jaybird 3 – an incremental release that builds on the foundations of Jaybird 3. The focus of this release has been on further improving JDBC support and adding support for the new data types and features of Firebird 4.

  • How failure-driven development makes you successful

    My job title is senior software engineer, but that's not what my closest co-workers call me. They call me "Cherrybomb" because of all the things I blow up. My regularly scheduled failures have been tracked down to our quarterly earnings and outage times. Literally, I am the production disaster you read about that says, "what not to do ever, in any case, at any time." I started my career at a helpdesk where I wrote loops that wrecked servers in high-end companies. I have taken production applications down for up to eight hours without warning, and I have destroyed endless numbers of clusters in an attempt to make things better—and a couple just because I mistyped something. I am the reason we have disaster recovery (DR) clusters in Kubernetes. I am the chaos engineer that, without warning, teaches people how to act and troubleshoot quickly when we have an application that has never been tested for an outage recovery plan. I exist as the best example of failure possible, and it's actually the coolest thing ever.

  • Digital Making at Home: Making games
  • Code Hyper Sports’ shooting minigame | Wireframe #35
  • If you've ever wished Visual Studio Code could be more open source, the Eclipse Foundation would like a word

    The Eclipse Foundation has pulled back the curtains on version 1.0 of Theia, an alternative to Microsoft's developer darling of the hour, Visual Studio Code. Except it isn't just yet. Those hoping to ditch a Microsoft-branded IDE for something more vendor-neutral might have a while to wait for something to drop from Eclipse itself, although a hop to somewhere like Gitpod will give those interested a look at the cloudy version. Eclipse Theia is a framework on which organisations can build and brand their own products, on the desktop or online, rather than a standalone editor.

  • 2020.13 NoConf Reached

    It’s a sad moment in time when you realize that basically all conferences have been cancelled for the foreseeable future: the Perl and Raku Conference in Houston, Perl & Raku Con in Amsterdam to name but a few. Some organizers even came to the conclusion that organizing “in person” events is no longer a viable business model (/r/perl comments).

  • More mojibake fun

    The names contain reconstructable replos. A 2-byte, UTF-8 encoded character was read by a Windows program byte-by-byte to produce 2 new 1-byte characters, and those 2 1-byte characters were converted back to UTF-8 as 2-byte ones.

  • D is for Devilish Place Names

    The downloaded file is a format called CSV ("Comma Separated Values", though in this case they're separated by the pipe character, "|"), typically used in spreadsheets. I'm not really a spreadsheet person, and CSV files are just as easy to analyze using basic shell tools. Most Linux users are familiar with the power of the command line, but don't feel left out if you're not using Linux: the commands I'll show work fine on a Mac, and they probably work on Windows too if you use the Linux Subsystem for Windows. I started with a basic count. I'd seen already, on the website's search page, that a lot of the names didn't actually have "Devil" in the name even though that's what I searched for, so that 1883 number is bogus. So I ran a grep -i devil to pick out the place names that actually do have "devil" in the name (-i means "ignore case", so it will find devil as well as Devil). Then I piped the result through wc, word count, using -l to count the number of matching lines: grep -i devil GNIS_Devil.csv | wc -l