Language Selection

English French German Italian Portuguese Spanish

Programming Leftovers

Filed under
Development
  • Manage complex Git workspaces with Great Teeming Workspaces

    Somewhat like Python venv, but for languages other than Python, GTWS handles workspaces for multiple versions of multiple projects. You can create, update, enter, and leave workspaces easily, and each project or version combination has (at most) one local origin that syncs to and from the upstream—all other workspaces update from the local origin.

  • Why developers like to code at night

    If you ask most developers when they prefer to work, many will say their most productive hours are at night. This may be especially true for open source contributors who are contributing to projects outside of their day job (though hopefully within healthy limits to avoid burnout).

    Some like to start in the evening and work till the early hours while others get up super early—say, 4 a.m.—to get most of the programming work done before the daily grind kicks in.

    This work habit may make many developers seem like oddballs and misfits. However, there are quite a few reasons why so many programmers prefer to work during the odd hours:

  • Introducing our new Lua cheat sheet

    Not only is Lua simple in design, but it's also consistent in ways that many other languages are not. It has explicit scoping (so it's not dependent on indentation), it interfaces with C through simple wrappers, and it can accept raw C data as a data type. Lua's syntax is direct and predictable, so once you learn a few structures, the rest is largely intuitive.

    For example, the end keyword is used to close a clause, whether that clause is an if statement, a for or while loop, or a function. The table construct is the sole data-structuring mechanism in Lua, and it can be used to represent ordinary arrays, lists, symbol tables, sets, records, graphs, or trees, and it can even mimic object-oriented classes. Broad statements about Lua are plentiful, and they usually apply equally across the language. There aren't exceptions to the syntax: once you learn something, you can use that principle no matter what you're writing in Lua.

    Lua is simple enough to fit on one side of a single-page cheat sheet, but we created a two-page cheat sheet for notes about syntax, data structures, important variables, and a few tricks and tips. Whether you're new to Lua or you've been using it for years, download our Lua cheat sheet and keep it handy. It'll make Lua (or at least writing it) even faster.

  • Excellent Free Tutorials to Learn Ada

    Ada is a structured, statically typed, imperative, wide-spectrum, multi-paradigm, object-oriented high-level, ALGOL-like programming language, extended from Pascal and other languages. The language was developed in the late 1970s and early 1980s. Ada is named after Augusta Ada Byron (often now known as Ada Lovelace), daughter of the poet Lord Byron.

    Ada has built-in language support for explicit concurrency, offering tasks, synchronous message passing, protected objects, and non-determinism. Ada incorporates the benefits of object-oriented languages without incurring the pervasive overheads.

    Other notable features of Ada include: strong typing, inherent reliability, modularity mechanisms (packages), run-time checking, parallel processing, exception handling, the ability to provide abstraction through the package and private type, and generics.

    Ada is particularly strong in areas such as real-time applications, low-level hardware access, and safety-critical software, as it has specialized design features, and high reliability. Most errors are detected at compile time and of those remaining many are detected by runtime constraints. While Ada was originally targeted at embedded and real time systems, the Ada 95 revision added support for object-oriented (including dynamic dispatch), numerical, financial, and systems programming. With its readability, scalability, and being designed for development of very large software systems, Ada is a good choice for open source development.

    Here’s our recommended tutorials to learn Ada. If you’re looking for free Ada programming books, check here.

  • digest 0.6.24: Some more refinements

    Another new version of digest arrived on CRAN (and also on Debian) earlier today.

    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 comes a few month after the previous release. It contains a few contributed fixes, some of which prepare for R 4.0.0 in its current development. This includes a testing change to the matrix/array class, and corrects the registration for the PMurHash routine as pointed out by Tomas Kalibera and Kurt Hornik (who also kindly reminded me to finally upload this as I had made the fix already in December). Moreover, Will Landau sped up one operation affecting his popular drake pipeline toolkit. Lastly, Thierry Onkelinx corrected one more aspect related to sha1.

  • Do you CI?

    Continuous integration is often confused with build tooling & automation. CI is not something you have, it’s something you do.

    Continuous integration is about continually integrating. Regularly (several times a day) integrating your changes (in small & safe chunks) with the changes being made by everyone else working on the same system.

    Teams often think they are doing continuous integration, but are using feature branches that live for hours or even days to weeks.

    Code branches that live for much more than an hour are an indication you’re not continually integrating. You’re using branches to maintain some degree of isolation from the work done by the rest of the team.

  • Using Zuul CI with Pagure.io

    I attended Devconf.cz again this year – I’ll try and post a full blog post on that soon. One of the most interesting talks, though, was CI/CD for Fedora packaging with Zuul, where Fabien Boucher and Matthieu Huin introduced the work they’ve done to integrate a specific Zuul instance (part of the Software Factory effort) with the Pagure instance Fedora uses for packages and also with Pagure.io, the general-purpose Pagure instance that many Fedora groups use to host projects, including us in QA.

    They’ve done a lot of work to make it as simple as possible to hook up a project in either Pagure instance to run CI via Zuul, and it looked pretty cool, so I thought I’d try it on one of our projects and see how it compares to other options, like the Jenkins-based Pagure CI.

  • Declarative Systems Take Center Stage

    Declarative systems and languages are different from what we typically think of as computer code. Most computer languages are imperative, not declarative. In imperative systems, code defines a series of steps to be taken which the system then executes. This is the classic programming language paradigm.

    For example, a declarative system may be told to create a virtual machine by declaring the existence of the VM as the expected state of the system.

  • This Week in Rust 325
  • 7 Best Programming Languages for Mobile Apps Development | HokuApps

    Java is probably one of the most popular programming languages out there for mobile app development and is used by a number of mobile app development services. Android OS, which is a widely used operating system, is written in Java; and so, if an app developer is well-versed with Java, then they’ll be able to create all kinds of Android apps.

    Besides Android apps, developers familiar with Java can develop games, embedded space, websites, server apps, and more. Moreover, Java can either be run in a browser window or in a virtual machine that does not require a browser. This is why it’s an extremely flexible programming language in terms of reusing code.

  • Working on these skills can get you high paying jobs
  • ML, data analytics most sought after skills for 2020: Study
  • Tech skills will dominate in 2020

More in Tux Machines

Rules for product managers at open source companies

Product management is an interesting career. It's immensely rewarding to be the interface between users, business strategy, engineering, and product design. And it's also a highly lucrative career with increasing demand for ambitious and empathetic practitioners. It's also a role with no single path. You might see various certifications and courses emerging to help address the serious skills shortage. The good news is that these are starting to contribute to the talent pipeline, but they struggle to address the wider demands of the role. This is especially the case where roles require direct experience across the enormous range of what it takes to build and ship successful products. Read more

How we decide when to release Fedora

Open source projects can use a variety of different models for deciding when to put out a release. Some projects release on a set schedule. Others decide on what the next release should contain and release whenever that is ready. Some just wake up one day and decide it’s time to release. And other projects go for a rolling release model, avoiding the question entirely. For Fedora, we go with a schedule-based approach. Releasing twice a year means we can give our contributors time to implement large changes while still keeping on the leading edge. Targeting releases for the end of April and the end of October gives everyone predictability: contributors, users, upstreams, and downstreams. But it’s not enough to release whatever’s ready on the scheduled date. We want to make sure that we’re releasing quality software. Over the years, the Fedora community has developed a set of processes to help ensure we can meet both our time and and quality targets. Read more

Raspberry Pi 4: Chronicling the Desktop Experience – Firefox Upgrade – Week 18

This is a weekly blog about the Raspberry Pi 4 (“RPI4”), the latest product in the popular Raspberry Pi range of computers. I’ve previously looked at web browsing on the RPI4 in Week 4 of my blog, recommending Chromium and Vivaldi on this tiny machine. Chromium offers the virtue of official Raspbian support on the RPI4 and it’s published under an open source license. On the other hand, Vivaldi is no-charge proprietary software. Both web browsers earned my recommendation. At the time, I was unable to recommend Firefox because the Raspbian repositories hosted a prehistoric version; version 60.9.0 ESR to be specific. Running a version of a web browser that’s 2 years behind the latest version is totally unacceptable, even from a security standpoint alone. Read more

Zorin OS For Windows Users

Dear former Microsoft users, after Windows 7 (W7) officially discontinued early this year, how about looking at alternative operating system called Zorin OS? Zorin is computer operating system for everybody that is user-friendly and familiar. You can get Zorin gratis and free, you and your family can use without learning much, prepare to live peacefully without virus & antivirus, and you will be happy you can revive old computers with it. This article gives you sights on Zorin from perspective of a W7 user and see if you find it interesting. Enjoy Zorin! Read more