Language Selection

English French German Italian Portuguese Spanish

5 open access journals for open source enthusiasts

Filed under
OSS

The ever rising cost of academic journals is a major burden for researchers. Academic libraries cannot always keep up with increases in subscription fees causing libraries to drop journals from their collection. This makes it harder for students and professors to quickly and easily access the information they need. Inter-library loan requests are an option but they do take time. Even if it only takes a few days to fill an inter-library loan request, that is still time wasted for a researcher that has a deadline. While there is no single, quick fix to the problem with the academic journal prices, there is a movement applying the open source way to academic research in an attempt to solve the problem—the open access movement.

Read more

More in Tux Machines

Programming: Rust, Haskell, Qt and Python

  • 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.

Red Hat Leftovers

  • Red Hat Global Customer Tech Outlook 2020: Hybrid cloud leads strategy, AI/ML leaps to the forefront

    For the sixth year running, we have reached out to our customers to hear where they are in their technology journey, and where they wish to go in the next year. For the 2020-focused survey, we received more than 870 qualified responses1 from Red Hat customers from around the world. They've weighed in about their challenges, strategies, and technologies they are planning to pursue in the next year and we're eager to share the results with you in our report.

  • NooBaa Operator for data management, now on OperatorHub.io

    We are excited to announce a new Operator—the NooBaa Operator for data management. The NooBaa Operator is an upstream effort that Red Hat is leading and is included as part of the features of the upcoming Red Hat OpenShift Container Storage 4, currently released for Early Access. Operators are design patterns that augment and implement common day one and day two activities with Kubernetes clusters, simplifying application deployments and empowering developers to focus on creation versus remediation.

  • Cloud native and Knative at W-JAX 2019

    The W-JAX conference in November 2019 in Munich, Germany, is a popular conference for Java, architecture, and software innovation with highly renowned speakers and sessions. Hot topics at this year’s conference included cloud-native development and open source technologies. Knative is one of the hottest topics, particularly here in Germany, it even has prime position on this month’s Java Magazin front cover. It was a pleasure to welcome Jason McGee, IBM Fellow, VP and CTO of the IBM Cloud Platform, whose keynote “The 20 Year Platform – bringing together Kubernetes, 12-Factor and Functions” revealed the next twenty years of application development. Jason showed the open source technologies that define how developers can rapidly build and operate high scale applications, discussing the key role Kubernetes plays in cloud platforms. However, in the future, Kubernetes will not be enough. Jason stressed the importance of up-and-coming tools such as Knative, Kabanero, Tekton and Razee, for the cloud-native landscape of the future.

Vanilla is a complex and delicious flavour

If we’re looking at the code shipping in Endless OS today, then yes, our desktop is vanilla GNOME Shell with a few hundred patches on top, and yes, as a result, rebasing onto new GNOME releases is a lot of work. But the starting point for Endless OS was not “what’s wrong with GNOME?” but “what would the ideal desktop look like for a new category of users?”. When Endless began, the goal was to create a new desktop computing product, targeting new computer users in communities which were under-served by existing platforms and products. The company conducted extensive field research, and designed a desktop user interface for those users. Prototypes were made using various different components, including Openbox, but ultimately the decision was made to base the desktop on GNOME, because GNOME provided a collection of components closest to the desired user experience. The key point here is that basing the Endless desktop on GNOME was an implementation detail, made because the GNOME stack is a robust, feature-rich and flexible base for a desktop. Over time, the strategy shifted away from being based solely around first-party hardware, towards distributing our software a broader set of users using standard desktop and laptop hardware. Around the same time, Endless made the switch from first- and third-party apps packaged as a combination of Debian packages and an in-house system towards using Flatpak for apps, and contributed towards the establishment of Flathub. Part of the motivation for this switch was to get Endless out of the business of packaging other people’s applications, and instead to enable app developers to directly target desktop Linux distributions including, but not limited to, Endless OS. A side-effect of this change is that our user experience has become somewhat less consistent because we have chosen not to theme apps distributed through Flathub, with the exception of minimize/maximize window controls and a different UI font; and, of course, Flathub offers apps built with many different toolkits. This is still a net positive: our users have access to many more applications than they would have done if we had continued distributing everything ourselves. Read more

Mozilla: WebXR, ECSY, Rust, Async, Privacy and Watchpoints in Firefox 72

  • Getting WebXR to 1.0

    As the WebXR standard goes through the final stretch to hit 1.0, we have updated our tools to the final API. WebXR is the new standard for virtual and augmented reality on the web. It lets web developers create immersive experiences without native code or installing an app. People can browse VR catalogs, play VR games, and view 360 videos. On the AR side, you can build a web app that places objects in real 3D space inside of a viewer’s living room, while still protecting user privacy and security. It is still in the draft state, but we don’t expect any more API changes before it hits Candidate Release (CR) in early 2020.

  • ECSY Developer tools extension

    Two months ago we released ECSY, a framework-agnostic Entity Component System library you could use to build real time applications with the engine of your choice. Today we are happy to announce a developer tools extension for ECSY, aiming to help you better understand what it is going on in your application when using ECSY. A common requirement when building applications that require high performance- such as real time 3D graphics, AR and VR experiences- is the need to understand which part of our application is consuming more resources. We could always use the browsers’ profilers to try to understand our bottlenecks but they can be a bit unintuitive to use, and it is hard to get an overview of what is going on in the entire application, rather than focusing on a specific piece of your code.

  • How to speed up the Rust compiler one last time in 2019

    I last wrote in October about my work on speeding up the Rust compiler. With the year’s end approaching, it’s time for an update.

  • Async Interview #2: cramertj, part 2

    In the first post, I covered what we said about Fuchsia, interoperability, and the organization of the futures crate. This post covers cramertj’s take on the Stream trait as well as the AsyncRead and AsyncWrite traits.

  • India’s new data protection bill: Strong on companies, step backward on government surveillance

    Yesterday, the Government of India shared a near final draft of its data protection law with Members of Parliament, after more than a decade of engagement from industry and civil society. This is a significant milestone for a country with the second largest population on the internet and where privacy was declared a fundamental right by its Supreme Court back in 2017. Like the previous version of the bill from July 2018 developed by the Justice Srikrishna Committee, this bill offers strong protections in regards to data processing by companies. Critically, this latest bill is a dramatic step backward in terms of the exceptions it grants for government processing and surveillance. The original draft, which we called groundbreaking in many respects, contained some concerning issues: glaring exceptions for the government use of data, data localisation, an insufficiently independent data protection authority, and the absence of a right to deletion and objection to processing. While this new bill makes progress on some issues like data localisation, it also introduces new threats to privacy such as user verification for social media companies and forced transfers of non-personal data.

  • Debugging Variables With Watchpoints in Firefox 72

    Have you ever wanted to know where properties on objects are read or set in your code, without having to manually add breakpoints or log statements? Watchpoints are a type of breakpoint that provide an answer to that question. If you add a watchpoint to a property on an object, every time the property is used, the debugger will pause at that location. There are two types of watchpoints: get and set. The get watchpoint pauses whenever a property is read, and the set watchpoint pauses whenever a property value changes. The watchpoint feature is particularly useful when you are debugging large, complex codebases. In this type of environment, it may not be straightforward to predict where a property is being set/read. Watchpoints are also available in Firefox’s Visual Studio Code Extension where they’re referred to as “data breakpoints.” You can download the Debugger for Firefox extension from the VSCode Marketplace. Then, read more about how to use VSCode’s data breakpoints in VSCode’s debugging documentation.