Language Selection

English French German Italian Portuguese Spanish

Development

Programming: Rust, Haskell, Qt and Python

Filed under
Development
  • Sonja Heinze: What this blog is about

    In order to ask for an Outreachy grant for a certain open-source project, applicants first have to contribute to that project for about a month. When choosing a project, I didn’t know any Rust. But the fact that Fractal is written in Rust was an important point in favor due to curiosity. But I also expected to have a hard time at the beginning. Fortunately, that wasn’t really the case. For those who haven’t used Rust, let me give two of the reasons why:

    If you just start coding, the compiler takes you by the hand giving you advice like “You have done X. You can’t do that because of Y. Did you maybe mean to do Z?”. I took those pieces of advice as an opportunity to dig into the rules I had violated. That’s definitely a possible way to get a first grip on Rust.

    Nevertheless, there are pretty good sources to learn the basics, for example, the Rust Book. Well, to be precise, there’s at least one (sorry, I’m a mathematician, can’t help it, I’ve only started reading that one so far). It’s not short, but it’s very fast to read and easy to understand. In my opinion, the only exception being the topics on lifetimes. But lifetimes can still be understood by other means.

  • Joey Hess: announcing the filepath-bytestring haskell library

    filepath-bytestring is a drop-in replacement for the standard haskell filepath library, that operates on RawFilePath rather than FilePath.

  • Parsing XML with Qt: Updates for Qt 6

    This module provides implementations for two different models for reading and writing XML files: Document Object Model (DOM) and Simple API for XML (SAX). With DOM model the full XML file is loaded in memory and represented as a tree, this allows easy access and manipulation of its nodes. DOM is typically used in applications where you don't care that much about memory. SAX, on the other hand, is an event based XML parser and doesn't load the whole XML document into memory. Instead it generates events for tokens while parsing, and it's up to the user to handle those events. The application has to implement the handler interfaces (fully, or partially by using QXmlDefaultHandler). A lot of people find this inconvenient as it forces them to structure their code around this model.

    Another problem is that the current implementation of SAX (and as a consequence DOM, since it's implemented using SAX) is not fully compliant with the XML standard. Considering these downsides, Qt does not recommend using SAX anymore, and the decision has been made to deprecate those classes starting from Qt 5.15.

  • pathlib and paths with arbitrary bytes

    The pathlib module was added to the standard library in Python 3.4, and is one of the many nice improvements that Python 3 has gained over the past decade. In three weeks, Python 3.5 will be the oldest version of Python that still receive security patches. This means that the presence of pathlib can soon be taken for granted on all Python installations, and the quest towards replacing os.path can begin for real.

    In this post I’ll have a look at how pathlib can be used to handle file names with arbitrary bytes, as this is valid on most file systems.

  • PyCoder’s Weekly: Issue #398 (Dec. 10, 2019)
  • Variables in Python

    If you want to write code that is more complex, then your program will need data that can change as program execution proceeds.

  • Creating an email service for my son’s childhood memories with Python

    This was very flexible as it allowed me to keep anything else I wanted in this document – and it was portable (to anyone who have access to some way of reading Word documents) – and accessible to non-technical people such as my son’s grandparents.

    After a while though, I wondered if I’d made the right decision: shouldn’t I have put it into some other format that could be accessed programmatically? After all, if I kept doing this for his entire childhood then I’d have a lot of interesting data in there…

    Well, it turns out that a Word table isn’t too awful a format to store this sort of data in – and you can access it fairly easily from Python.

    Once I realised this, I worked out what I wanted to create: a service that would email me every morning listing the things I’d put as diary entries for that day in previous years. I was modelling this very much on the Timehop app that does a similar thing with photographs, tweets and so on, so I called it julian_timehop.

  • Executing Shell Commands with Python

    Repetitive tasks are ripe for automation. It is common for developers and system administrators to automate routine tasks like health checks and file backups with shell scripts. However, as those tasks become more complex, shell scripts may become harder to maintain.

    Fortunately, we can use Python instead of shell scripts for automation. Python provides methods to run shell commands, giving us the same functionality of those shells scripts. Learning how to run shell commands in Python opens the door for us to automate computer tasks in a structured and scalable way.

    In this article, we will look at the various ways to execute shell commands in Python, and the ideal situation to use each method.

Eclipse Foundation launches Edge Native Working Group

Filed under
Development

The Eclipse Foundation announced an “Edge Native Working Group” to develop open source software for edge computing, starting with its Eclipse ioFog and Eclipse fog05 projects. Members include Adlink, Bosch, Edgeworx, Eurotech, Huawei, Intel, Kynetics, and Siemens.

The Edge Native Working Group is a “vendor-neutral and code-first industry collaboration that will drive the evolution and broad adoption of open source software for edge computing,” says the Eclipse Foundation. The new working group will develop an end-to-end software stack that will support IoT, AI, autonomous vehicles, and more.

Read more

Programming: JavaScript, Go, Perl and Python

Filed under
Development
  • Excellent Free Tutorials to Learn JavaScript

    JavaScript is possibly one of the easiest language to get up and running with. But to truly master the language requires a firm foundation of its intricacies.

    JavaScript is an interpreted, prototype-based, scripting computer programming language. It came to popular attention as a simple client-side scripting tool, interacting with the user using forms and controlling the web browser, and remains a front-end language for web applications.

    JavaScript features dynamic types, it’s weakly typed, supports the structured programming syntax from C, uses prototypes instead of classes for inheritance, and copies many names and naming conventions from Java. It also borrows design principles from Scheme and Self, as well as concepts and syntax idioms such as C-style procedural roots.

  • Lessons learned from programming in Go

    When you are working with complex distributed systems, you will likely come across the need for concurrent processing. At Mode.net, we deal daily with real-time, fast and resilient software. Building a global private network that dynamically routes packets at the millisecond scale wouldn’t be possible without a highly concurrent system. This dynamic routing is based on the state of the network and, while there are many parameters to consider here, our focus is on link metrics. In our context, link metrics can be anything related to the status or current properties of a network link (e.g.: link latency).

  •                    

  • Add address of FreeBSD iocage jails to PF table

                         

                           

    I started mucking about with PF, but that’s not my department … and so the jails table remained empty which meant the jail could not access anything beyond the host.

                           

    After a bit of searching I found iocage supports most jail(8) parameters, so I did this: [...]

  •                    

         

  • 2019.49 Almost Starring

           

             

    Patrick Spek has made the first release candidate of Rakudo Star 2019.11 available for download. If you are working with Raku from Rakudo Star distributions, then this is the moment to test the distribution so that you can be sure that nothing was missed! So please, download and test it! Which of course you can also do if you’re not generally a user of Rakudo Star

  • Python 3.8.1rc1

    The Python 3.8 series is the newest major release of the Python programming language, and it contains many new features and optimizations.

  • Python 3.8.1rc1 is now available for testing

    Python 3.8.1rc1 is the release candidate of the first maintenance release of Python 3.8.

    The Python 3.8 series is the newest feature release of the Python language, and it contains many new features and optimizations. You can find Python 3.8.1rc1 here:
    https://www.python.org/downloads/release/python-381rc1/

    Assuming no critical problems are found prior to 2019-12-16, the scheduled release date for 3.8.1 as well as Ned Deily's birthday, no code changes are planned between this release candidate and the final release.

    That being said, please keep in mind that this is a pre-release of 3.8.1 and as such its main purpose is testing.

    See the “What’s New in Python 3.8” document for more information about features included in the 3.8 series. Detailed information about all changes made in 3.8.0 can be found in its change log.

    Maintenance releases for the 3.8 series will continue at regular bi-monthly intervals, with 3.8.2 planned for February 2020.

  • Python Docstrings

    In this tutorial, we will learn about Python docstrings. More specifically, we will learn how and why docstrings are used with the help of examples.
    Python docstrings (documentation strings) are the string literals that appear right after the definition of a function, method, class, or module. Let's take an example.

  • Python Comments

    Comments are descriptions that help programmers better understand the intent and functionality of the program.

    They are completely ignored by the Python interpreter.

  • 3 easy steps to update your apps to Python 3

    The 2.x series of Python is officially over, but converting code to Python 3 is easier than you think. Over the weekend, I spent an evening converting the frontend code of a 3D renderer (and its corresponding PySide version) to Python 3, and it was surprisingly simple in retrospect, although it seemed relatively hopeless during the refactoring process.

Programming: RcppClassic, LLVM, Rust, Python and Django

Filed under
Development
  • Dirk Eddelbuettel: RcppClassic 0.9.12

    A maintenance release 0.9.12 of the RcppClassic package arrived earlier today on CRAN. This package provides a maintained version of the otherwise deprecated initial Rcpp API which no new projects should use as the normal Rcpp API is so much better.

    Changes are all internal. Testing is now done via tinytest, vignettes are now pre-built and at the request of CRAN we no longer strip the resulting library. No other changes were made.

    CRANberries also reports the changes relative to the previous release from July of last year.

  • [llvm-dev] [10.0.0 Release] Release schedule
    Hello everyone,
    
    I know 9.0.1 is still in full swing, and 10.0.0 isn't due for some
    time, but I'd like to get the schedule settled well before we start.
    
    Below is my proposed timeline. It's essentially the same as last time.
    
    - 15 January 2020: Create the release branch, Release Candidate 1
    ships soon after
    
    - 5 February 2020: Release Candidate 2
    
    - 26 February 2020: Final (this usually slips a little, but let's try not to).
    
    Please let me know what you think.
    
    Thanks,
    Hans
    
  • LLVM / Clang 10.0 Should Be Out In Late February Or Early March

    Google's Hans Wennborg is once again stepping up to manager the next feature release of LLVM and sub-projects like Clang. If all goes well, LLVM 10.0 will be out with Clang 10.0 and friends before the end of February.

    For the projected release date of 26 February to be realized, Wennborg is aiming to branch the code (and thereby the feature freeze) around 15 January and after that to issue the first release candidate.

  • Niko Matsakis: Async Interview #2: cramertj

    For the second async interview, I spoke with Taylor Cramer – or cramertj, as I’ll refer to him. cramertj is a member of the compiler and lang teams and was – until recently – working on Fuchsia at Google. They’ve been a key player in Rust’s Async I/O design and in the discussions around it. They were also responsible for a lot of the implementation work to make async fn a reality.

  • More fun with Jinja2 templates

    When last I left this discussion, I was advocating using Python 3 dataclasses to wrap Jinja2 templates. I had another idea and a chance to experiment with it, and I was reasonably happy with the results.

    Can the dataclass corresponding to the Jinja2 template be used by the test suite to check that all required parameters for a template are present in the dataclass?

    The answer is mostly yes, although unfortunately there are some substantial caveats because Jinja2 doesn't provide all of the tools that one would like to analyze parsed templates.

  • Django Weblog: 2020 DSF Board Election Results

    Our 2020 Django Software Foundation Election results are in. The Top 7 candidates are listed below in order of their ranking:

    Frank Wiles
    Anna Makarudze
    James Bennett
    William Vincent
    Kátia Nakamura
    Aaron Bassett
    Sayantika Banik

A better Qt because of Open Source and KDE

Filed under
Development
KDE

The development framework Qt is available both as Open Source and under paid license terms. Two decades ago, when Qt 2.0 was first released as Open Source, this was exceptional. Today, most popular developing frameworks are Free/Open Source Software1. Without the dual licensing approach, Qt would not exist today as a popular high-quality framework.

There is another aspect of Qt licensing which is still very exceptional today, and which is not as well-known as it ought to be. The Open Source availability of Qt is legally protected through the by-laws and contracts of a foundation.

The KDE Free Qt Foundation was created in 1998 and guarantees the continued availability of Qt as Free/Open Source Software2. When it was set up, Qt was developed by Trolltech, its original company. The foundation supported Qt through the transitions first to Nokia and then to Digia and to The Qt Company.

In case The Qt Company would ever attempt to close down Open Source Qt, the foundation is entitled to publish Qt under the BSD license. This notable legal guarantee strengthens Qt. It creates trust among developers, contributors and customers.

The KDE Free Qt Foundation is a cooperation between The Qt Company on the one hand and KDE on the other hand. KDE is one of the largest Free Software communities for general purpose end-user software, founded in 1996. In case of ties, KDE has an extra vote, ensuring that The Qt Company does not have a veto on decisions.

My in-depth presentation below provides an overview of the history of the Foundation and describes its importance for Qt today. It explains in detail why the existence of the Foundation has a positive influence on the long-term market success of Qt.

Read more

Legislating is patch review

Filed under
Development
KDE

Patch review is a process by which newcomers and experts debate proposed changes to a codebase–a textual description of how a particular human-created system is to function. In KDE, we use Phabricator for this, but we’re switching to GitLab soon. Both serve the same purpose: to provide a forum where proposed changes can be discussed, revised, and decided upon.

[...]

Rushing isn’t such a huge deal as long as you have a QA process and discrete releases. These tools provide time for regressions to be fixed and rough edges to me smoothed out. When patches can be evaluated in a safe sandbox of sorts and subsequently tweaked before their effects are released to users, it’s not so bad to move quickly. But you can’t expose your users to the churn stirred up by a fast process; it needs to be contained internally.

Lesson for politicians: You don’t need so much process surrounding lawmaking if you don’t roll out all approved changes immediately. Before new bills take effect, let them simmer for a while in a “release branch” where they can undergo QA so that regressions can be found before they’re inflicted on unsuspected citizens (users)!

As software people, there are lessons we can take from our governments’ successes (and more often these days it seems, their failures), because this aspect of our professions overlaps quite a bit. It also exposes an uncomfortable truth: changing the rules and behaviors of a system that effects everyone is inherently political. That’s why we invented patch review processes: to make sure that important voices are heard, that the system doesn’t become inhumane for people who depend on it, and that its overall trajectory is positive.

Personally I’m a lot more sanguine about the prospect of this in software than government right now, and I think that’s something that needs to change. The efficacy and positive societal impacts of our governments’ lawmaking seems to be at a bit of an ebb at this moment in time. But there may come a point in time when our experience in patch review becomes useful on a larger stage, and benefits not only users of KDE software, but also the people of the world. We shouldn’t shy away from politics. Our everyday experiences in KDE are in fact the prefect preparation! Far from being distant and scary, it’s something we’re engaging in–and succeeding at–every time we contribute to KDE.

Read more

Python Programming: Python 3, MicroPython, Creating Command Line Utilities and Installing/Updating Packages in Python

Filed under
Development
  • It’s Time to Upgrade to Python 3 – Time Is Running Out!

    As of January 1, 2020, Anaconda will no longer be adding new packages built for Python 2.7 to repo.anaconda.com default channels. The Python 2.7 packages available prior to that date will remain available.

    This means, for instance, that if there is a newly released version of TensorFlow after the first of the new year – it will not be available in defaults for Python 2.7.

    The one exception is that Python 2.7.18 is slated to be released in mid-April 2020 according to PEP-0373. Packages for Python 2.7.18 will be built and made available on the repo.anaconda.com defaults channel.

  • MicroPython: An Intro to Programming Hardware in Python

    Are you interested in the Internet of Things, home automation, and connected devices? Have you ever wondered what it would be like to build a blaster, a laser sword, or even your own robot? If so, then you’re in luck! MicroPython can help you do all of those things and more.

    [...]

    Python’s popularity has skyrocketed in recent years. These days, it’s used everywhere from DevOps to statistical analysis, and even in desktop software. But for a long time, there was one field where Python use was conspicuously missing. Developers working with microcontrollers had not yet adopted the language.

    All of that changed in 2013 when Damien George launched a Kickstarter campaign. Damien, an undergraduate at Cambridge University, was an avid robot programmer. He wanted to move the Python world from machines that worked with capacities in the gigabytes down to the kilobytes. His Kickstarter campaign was an attempt to back his development while he turned his proof of concept into a finished implementation.

    Many developers jumped at the chance, not only to use Python on microcontrollers but also to get an early version of Damien’s own reference hardware, which was built especially for the task! In fact, by the end of the campaign, Damien had blown past his £15,000 goal. Thanks to over 1,900 backers, he reached just shy of £100,000.

  • Creating Command Line Utilities with Python's argparse

    Most of the user-facing software comes with a visually pleasing interface or via a decorated webpage. At other times, a program can be so small that it does not warrant an entire graphical user interface or web application to expose its functionality to the end-user.

    In these cases, we can build programs that are accessible via a Command Line Interface, or CLI.

    In this post, we will explore Python's argparse module and use it to build a simple command-line tool to help us shorten URLs swiftly.

  • Learn all About Installing & Updating Packages in Python

    In this tutorial, we will learn the basics of installing, working and updating packages in Python. First, we will learn how to install Python packages, then how to use them, and finally, how to update Python packages when needed. More specifically, we are going to learn how to install and upgrade packages using pip, conda, and Anaconda Navigator.

    Now, before we are going to learn how to install Python packages we are going to answer the question “what is a package in Python?”

Linux 5.5 Kernel Development: Latest

Filed under
Development
Linux
  • Re: [GIT PULL] treewide conversion to sizeof_member() for v5.5-rc1
    On Sat, Dec 7, 2019 at 11:48 AM Kees Cook wrote:
    >
    > Please pull this mostly mechanical treewide conversion to the single and
    > more accurately named sizeof_member() macro for the end of v5.5-rc1.
    
    So this one I'm _still_ not convinced about. It makes yet another name
    for something we've had before, which just annoys me. And maybe it's
    the 13-year old in me, but "sizeof_member()" just makes me go "that's
    puerile".
    
    I _can_ see why we'd want to standardize on one of the tree versions
    we have, but I can't really see the problem with the existing #define
    that we have, and that is used (admittedly not all that much):
    sizeof_field().
    
  • Linus Rejects "Size Of Member" Change From Linux 5.5 Kernel

    This weekend was the last-minute pull request by Google's Kees Cook to introduce the new sizeof_member() macro that had been previously rejected from Linux 5.4. Well, it was again rejected by Linus Torvalds prior to tagging the Linux 5.5-rc1 kernel.

    The sizeof_member() macro has been aimed to unify 2~3 other macros within the kernel tree currently and using the size-of-field moniker, but Cook argued that for measuring the size of a member of a C struct, the new macro is more appropriate and converted usage of the old macros to this new single macro.

  • WireGuard Sends Out Latest Patch Revision In Preparing For Linux 5.6

    While there are some pretty great features for Linux 5.5, one that didn't make it quite in time was the long-awaited introduction of WireGuard as the in-kernel secure VPN tunnel. While it was a bummer it didn't make 5.5, all indications are at this point is that it will be in Linux 5.6.

    With Linux 5.5 the crypto subsystem adopted some elements of WireGuard's "Zinc" crypto code and that in turn opened the door for merging WireGuard now that the cryptography side was sorted out. But WireGuard was too late for introduction in net-next even with a last minute attempt trying to get it into 5.5, but instead it's aiming early for merging to net-next to ensure it's timely introduction with Linux 5.6.

Programming: Automation, Development, Python and GstWPE

Filed under
Development
  • Top 4 open source automation tools for admins

    Open source offerings are an easy way to bring automation into your organization. When selecting software, evaluate the user experience, main features offered and Linux support.

  • Why front-end development may be the new frontier

    Google frameworks lead Nicole Sullivan praised Next.js at the October JAMstack_conf_19 in San Francisco. Though React started within Facebook (and AngularJS started within Google), developers are less concerned with origins and more focused on direction. Google Chrome has a mandate to make the web faster, she said, and React-centric Next.js is part of that mandate. Rauch was also featured with a walk-on presentation during the keynote address at Google's Chrome Dev 19 conference in San Francisco last month.

  • 11 top open-source test automation frameworks: How to choose

    If you're thinking about building your own test automation framework, think again. In most cases, you'd do better to consider one or more of the open-source options available.

    That's because, in general, a framework is a set of best practices, assumptions, common tools, and libraries that you can use across teams. You simply don't need to build one that's unique to your dev environment. A framework will help make your test automation code reusable, maintainable, and stable.

    Teams that take these benefits to the extreme by building their own elaborate automation frameworks from scratch drive me crazy. That's because they could have easily made use of existing open-source tools and libraries that would have met their needs without writing any code—and, in most cases, with better results.

  • Google Code-In 2019 Underway

    Google Code-in (GCI) is a unique opportunity for students to work on real open source software projects and for open source projects to gain extra help as well. Over the past nine years, more than 11,000 students from 108 countries have successfully completed over 55,000 tasks in GCI and this year 29 organizations, all of which have participated in Google Summer of Code, are devising over 2,500 task for teenager to choose to work on. 

  • The most copied StackOverflow Java code snippet contains a bug

    Nine years later, developer corrects code snippet.

    [...]

    An academic paper [PDF] published in 2018 identified a code snippet Lundblad posted on the site as the most copied Java code taken from StackOverflow and then re-used in open source projects.

  • Testing NVIDIA Jetson Nano Developer Kit with and without Fan

    A few weeks ago I received NVIDIA Jetson Nano for review together with 52Pi ICE Tower cooling fan which Seeed Studio included in the package, and yesterday I wrote a getting started guide...

  • Mike Driscoll: PyDev of the Week: Sebastian Steins

    This week we welcome Sebastian Steins (@sebastiansteins) as our PyDev of the Week! Sebastian is the creator of the Pythonic News website. You can find out more about Sebastian by checking out what he’s been up to over on Github. Let’s take a few moments to get to know him better!

  • Podcast.__init__: Debugging Python Projects With PySnooper

    Debugging is a painful but necessary practice in software development. The tools that are available in Python range from the built-in debugger, to tools integrated with your coding environment, to the trusty print function. In this episode Ram Rachum describes his work on PySnooper and how it can be used to speed up your problem solving in complex or legacy applications.
    Summary

    Debugging is a painful but necessary practice in software development. The tools that are available in Python range from the built-in debugger, to tools integrated with your coding environment, to the trusty print function. In this episode Ram Rachum describes his work on PySnooper and how it can be used to speed up your problem solving in complex or legacy applications.

  • HTML overlays with GstWPE, the demo

    Once again this year I attended the GStreamer conference and just before that, Embedded Linux conference Europe which took place in Lyon (France). Both events were a good opportunity to demo one of the use-cases I have in mind for GstWPE, HTML overlays!

    As we, at Igalia, usually have a booth at ELC, I thought a GstWPE demo would be nice to have so we can show it there. The demo is a rather simple GTK application presenting a live preview of the webcam video capture with an HTML overlay blended in. The HTML and CSS can be modified using the embedded text editor and the overlay will be updated accordingly. The final video stream can even be streamed over RTMP to the main streaming platforms (Twitch, Youtube, Mixer)! Here is a screenshot:

Python: Makerbot, pydeps, Coverage and Pytest

Filed under
Development
  • Nash publishes open-source Python trading bot for market-making

    Nash recently announced that it has released a simple, open-source bot designed to help traders perform automatic market-maker strategies. Written in Python 3, the Makerbot is set up to allow for trading on Nash in its default configuration.

    Trading bots are commonly used to improve liquidity on an exchange. The Nash Makerbot uses a symmetric market-maker algorithm, aiming to take advantage of the concept of “intrinsic volatility” in a market. Makerbot will watch the order book for a programmed trading pair until it is triggered to trade within a fixed price range.

  • pydeps: a very useful program

    A few weeks ago, I was doing some refactoring of Friendly-traceback and had some minor difficulty in avoiding the creation of circular imports. For some reason (age perhaps), I could not visualize the file structure properly. Enter pydeps. After I used it to generate a graph for all the files internal to Friendly-traceback, I was able to use that graph to figure out a better way to structure my program.

    Today, as I stared at that graph, after including it in the newly styled documentation, I noticed that the "version" file I had created early on, was really redundant since its content (a single variable) could easily be incorporated in the Public API file.

  • Coverage 5.0 beta 2

    I mean it this time, coverage.py 5.0 is nearly ready. I’m putting out coverage.py 5.0 beta 2 for a week before declaring it really done. Please try it.

  • Test-Driven Development with PyTest - Part 2

    For part two of the TDD with Pytest.

    I would be covering the project structure where your test cases will reside.

    The creation of test cases as a class or function under pytest.

    Do head to part 1 of the series before proceeding with part 2.

    It is assumed that a Linux system is used for this series.

    Please use a Linux variant like Ubuntu or a cloud IDE like Codenvy running a Linux virtual container.

Syndicate content

More in Tux Machines

Type Title Author Replies Last Postsort icon
Story Audiocasts/Shows/Screencasts: LINUX Unplugged, Linux Headlines, Snapcraft & Ubuntu, Ubuntu Cinnamon Remix and EndeavourOS Roy Schestowitz 11/12/2019 - 5:44am
Story today's howtos Roy Schestowitz 11/12/2019 - 5:41am
Story ARM and AMD: GNU/Linux on Board Roy Schestowitz 11/12/2019 - 5:34am
Story Programming: Rust, Haskell, Qt and Python Roy Schestowitz 11/12/2019 - 5:08am
Story Red Hat Leftovers Roy Schestowitz 11/12/2019 - 5:01am
Story Microsoft Once Again Googlebombing "Linux" to Push/Promote Proprietary Spyware Roy Schestowitz 3 11/12/2019 - 4:50am
Story Vanilla is a complex and delicious flavour Roy Schestowitz 11/12/2019 - 4:37am
Story Mozilla: WebXR, ECSY, Rust, Async, Privacy and Watchpoints in Firefox 72 Roy Schestowitz 11/12/2019 - 4:30am
Story Clementine | A New Music Player in Debian 10 Roy Schestowitz 11/12/2019 - 4:18am
Story Canonical Helping Windows and E.E.E. Tactics Roy Schestowitz 11/12/2019 - 4:01am