Language Selection

English French German Italian Portuguese Spanish


Niko Matsakis: Towards a Rust foundation

Filed under

So let’s talk a bit more about the two goals that I set forth for a Rust foundation. The first was to clarify Rust’s status as an independent project. In some sense, this is nothing new. Mozilla has from the get-go attempted to create an independent governance structure and to solicit involvement from other companies, because we know this makes Rust a better language for everyone.

Unfortunately, there is sometimes a lingering perception that Mozilla “owns” Rust, which can discourage companies from getting invested, or create the perception that there is no need to support Rust since Mozilla is footing the bill. Establishing a foundation will make official what has been true in practice for a long time: that Rust is an independent project.

We have also heard a few times from companies, large and small, who would like to support Rust financially, but right now there is no clear way to do that. Creating a foundation creates a place where that support can be directed.

Read more

Also: I am broot: The Reg chats to French dev about Rust tool that aims to improve directory navigation

Programming: GCC, Python, Perl, Rust and More

Filed under
  • It Looks Like GCC's Long-Awaited Git Conversion Could Happen This Weekend

    The long in development process of converting GCC's SVN repository to Git for using this modern distributed revision control system for developing the GNU Compiler Collection in the 2020s may finally be complete in the days ahead.

    Joseph Myers of CodeSourcery and one of the GCC steering committee members announced that Eric S Raymond's Reposurgeon utility should now be up to the task of converting GCC's SVN repository to Git and doing so the best following a number of last minute improvements.

  • Proposal for the transition timetable for the move to GIT
    On Wed, 8 Jan 2020, Eric S. Raymond wrote:
    > They use your feedback to find places where their comment-processing
    > scripts could be improved; we've used it learn what additional
    > oddities in ChangeLogs we need to be able to handle automatically.
    I've used comparisons of authors in the two conversions - in cases where 
    they get different human identities for the author, not just different 
    email addresses or name variants - to identify cases for manual review, 
    since ChangeLog parsing is the most subjective part of doing a conversion 
    and cases where different heuristics produce different results indicate 
    those worthy of manual review.
    Apart from about 1600 with no changes to ChangeLog files but a ChangeLog 
    entry in the commit message, which I reviewed mostly automatically to make 
    sure I agreed with Maxim's author extraction with only limited manual 
    checks on those that looked like suspect cases, that involved reviewing 
    around 3000 commits manually; I've now completed that review.  Some of 
    those are also subjective cases even after review (for example, where the 
    commit involved one person backporting another person's patch).
    In the set of around 1200 commits with both ChangeLog and non-ChangeLog 
    files being changed, which did not look like backports, for example, I 
    arrived at around 400 author improvements from this review (not all of 
    them the same authors as in Maxim's conversion), while for around 800 
    commits I concluded the reposurgeon author was preferable.  (The typical 
    case where reposurgeon does better is where successive commits add new 
    ChangeLog entries under an existing ChangeLog header.  The typical case 
    where I added fixes was where a commit made nonsubstantive changes under 
    an existing header, as well as adding new entries, which is hard to 
    distinguish automatically from a multi-author commit so reposurgeon 
    conservatively treats as a multi-author commit.)
    In the case of ChangeLog-only commits, where reposurgeon assumes they are 
    likely to be fixing typos or similar and so does not extract an 
    attribution from ChangeLog files in such commits, manual review identified 
    many cases (especially in the earlier parts of the history) where the 
    ChangeLog was committed separately from the substantive parts of the patch 
    and so a better attribution could be assigned to those substantive 
    I consider the reposurgeon-based conversion machinery to be in essentially 
    its final state now; I don't have any further authors to review, Richard 
    doesn't have any further Bugzilla-based commit summaries to review and we 
    don't know of any relevant reposurgeon bugs or missing features.  I'm 
    running a conversion now to verify both the current state of the fixups 
    and the Makefile integration of the conversion and subsequent automated 
    validation, and will make that converted repository available for final 
    checks if this succeeds.  Compared to the previous converted repository, 
    this one has many author fixups, a fix for a bug in the author fixups 
    where they broke commit dates, and reposurgeon improvements to avoid 
    producing unidiomatic empty git commits in the converted repository for 
    things such as branch and tag creation.
    This converted repository uses the ref rearrangements along the lines 
    proposed by Richard (so dead branches and vendor branches are available 
    but not fetched by default); the objects from the existing git mirror will 
    also be included in the repository (so existing gitweb links to such 
    objects in list archives continue to work, for example, as long as they 
    aren't links to objects that were made unreachable at some point in the 
    mirror's history), but again under ref names that are not fetched by 
    As noted on overseers, once Saturday's DATESTAMP update has run at 00:16 
    UTC on Saturday, I intend to add a README.MOVED_TO_GIT file on SVN trunk 
    and change the SVN hooks to make SVN readonly, then disable gccadmin's 
    cron jobs that build snapshots and update online documentation until they 
    are ready to run with the git repository.  Once the existing git mirror 
    has picked up the last changes I'll make that read-only and disable that 
    cron job as well, and start the conversion process with a view to having 
    the converted repository in place this weekend (it could either be made 
    writable as soon as I think it's ready, or left read-only until people 
    have had time to do any final checks on Monday).  Before then, I'll work 
    on hooks, documentation and maintainer-scripts updates.
    As well as having objects from the existing git mirror available under 
    refs that are not fetched by default, that mirror will remain available 
    read-only at git:// (which already exists, 
    currently a symlink to the mirror).
  • Serverless Python And Why You Should Try It Out

    At the January 2020 Python Frederick event, Patrick Pierson showed the group how you can use Python in different serverless services on AWS and GCP. He also showed a couple of serverless frameworks like Serverless and Chalice.

  • Convert Strings to Numbers and Numbers to Strings in Python

    Python allows you to convert strings, integers, and floats interchangeably in a few different ways. The simplest way to do this is using the basic str(), int(), and float() functions. On top of this, there are a couple of other ways as well.

    Before we get in to converting strings to numbers, and converting numbers to strings, let's first see a bit about how strings and numbers are represented in Python.

    Note: For simplicity of running and showing these examples we'll be using the Python interpreter.

  • Python first()

    Python prides itself on being a newbie-friendly language; its developers have gone out of their way to try to ensure that easy tasks are straightforward to program. A recent discussion on the python-ideas mailing list looked at a use case that is common, but often implemented in an inefficient, incorrect fashion, with an eye toward making it easier to do correctly. Finding the first match for a regular expression in a body of text is where the conversation started, but it went in some other interesting directions as well.

  • Learn PyQt: Build GUI layouts with Qt Designer for PyQt5 apps

    When laying out your Qt GUIs it can be quite a tricky task to place every widget in the right position on your forms. Fortunately, Qt offers a set of layout managers that simplify the process of widget positioning and will allow you to easily create any kind of layout. To lay out the widget in a form, you can create everything in code, or you can create your layout with Qt Designer. In this tutorial, you'll learn how to use Qt's layouts with Qt Designer to build complex GUIs for your applications.

    Additionally, we'll create a dialog example using several widgets with a coherent layout to reinforce your knowledge and put everything together into a fully functional dialog just like you would create in a real-world application.

  • No more rhyming and I k-means it!

    "... anybody wanna peanut?" - Fezzik, TPB

    When last we saw our heroes, they had just applied PDL::Stats::Kmeans to a CSV file of car data with no thought regarding their own well-being.

    In today's episode, we see them slice through data to identify clusters of cars, only to find they know less than they did before!

    Read on, true believers!

  • Russ Allbery: DocKnot 3.02

    DocKnot is my set of tools for generating package documentation and releases. The long-term goal is for it to subsume the various tools and ad hoc scripts that I use to manage my free software releases and web site.

    This release includes various improvements to docknot dist for generating a new distribution tarball: xz-compressed tarballs are created automatically if necessary, docknot dist now checks that the distribution tarball contains all of the expected files, and it correctly handles cleaning the staging directory when regenerating distribution tarballs. This release also removes make warnings when testing C++ builds since my current Autoconf machinery in rra-c-util doesn't properly exclude options that aren't supported by C++

  • This Week in Rust 320

    Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.

EXT4 Gets More Direct I/O Optimizations - Can Help Some Database Workloads Around ~140%+

Filed under

A few days ago I wrote about a big improvement to write performance for EXT4's Direct I/O code path but that is not the only DIO optimization coming for Linux 5.6. Thanks to IBM, another big EXT4 DIO boost can be found for database workloads.

Other EXT4 development work currently in its queue ahead of the Linux 5.6 cycle is helping the inode lock scalability for Direct I/O mixed read/write workloads. The issue was pointed out by an Alibaba engineer last summer in a significant performance regression with EXT4's DIO performance under mixed read/write scenarios. The Alibaba engineer bisected the issue to a mainline kernel commit from 2016 when the performance became worse. The problem was quite noticeable with an Intel P3600 NVMe solid-state drive.

Read more

Programming: Remote Work, Bash, Perl and Python

Filed under
  • Are you ready to work remotely?

    Here is a one question test for anyone considering remote work. You can ask yourself this question and if the answer is yes, a remote position will likely work well for you. If the answer is no, then I think you’d be happier with an onsite position. By the way, some people are never going to want to work remotely for a variety of reasons, and that is no big deal.

    That question is: “Are you comfortable asking a dumb question in public?”

  • Create temp file in Bash using mktemp and trap

    When working on Linux Bash, sometimes there is need to create temporary file. A common way of creating temp file on Linux is creating some file in /tmp directory. However there is security risk when creating temp file in /tmp directory. This post will show how to securely create temp file in Linux Bash.

  • Create demo project templates with one script

    When you're standing on a stage or doing a live demo in an online session, getting your project into a perfect-looking state may appear easy. But a lot of work goes on behind the scenes to create working, easy to use, and repeatable demo projects.

    When you're doing a demo, the technology in a project must support your bigger story about the project without failing. My fellow JBoss technology evangelists and I often have to set up different technologies, so it became necessary for us to tune some sort of generic framework or template to put these demo projects into.

  • Paws XXXXVI (The game she is over)

    Well I left off on form my last post with this Moose error;

    Attribute (Items) does not pass the type constraint because: Validation failed for 'ArrayRef[Str|Undef]' with value [ { Method: ARRAY(0x5184cf0) } ] at /wwwveh/lib/x86_64-linux-thread-multi/Moose/ line 24

    but before I tackle that on I wanted to have a closer look at my changes I did to the template; I wanted to clean that up nicely and then my plan is to see if my changes have Borden anything else.

    So in cleaning it up I found what might be a bug.

  • Excellent Free Tutorials to Learn Perl

    Programming is about solving problems and good communication. But before code is written, you need to know how to solve the problem. Breaking the problem into component parts assists in the process. And being able to model the problem so that it’s easy to implement and test also helps. Combine this with a solid understanding of the programming language itself – a good programming book contributes to all aspects of problem solving. Perl has the virtue it can solve a problems in a few lines of code. Perl programmers solve problems and get things done.

    The popularity of a book is influenced by personal feelings, tastes, and opinions. Programming books accord to this general rule. There is a wide range of Perl books. As Perl is an open source programming language, with an eclectic heritage written by Larry Wall with thousands of contributors, it is welcome some authors have released their Perl books under a freely distributable license.

    Perl is a high-level, general-purpose, interpreted, scripting, dynamic programming language released under the GPL or Artistic license. Perl’s syntax has its roots in shell scripting tools, borrowing features from other languages including C, shell script (sh), AWK, and sed. It is available for most operating systems. Perl is implemented as an interpreted (not compiled) language. It is procedural, with variables, expressions, assignment statements, control structures, blocks and subroutines.

  • Deploying Django Applications to AWS EC2 with Docker

    In the fast-paced field of web applications, containerization has become not only common but the preferred mode of packaging and delivering web applications. Containers allow us to package our applications and deploy them anywhere without having to reconfigure or adapt our applications to the deployment platform.

    At the forefront of containerization is Docker, which is a tool that is used to package and run applications in containers that are platform agnostic. Serverless technology is also flourishing in this era of containerization and is proving to be the go-to option for developers when deploying their applications with more and more providers allowing users to deploy containerized software.

    While building an application is important, making it available to the end-users is also a crucial part of the product. In this post, we will package a Django application using Docker and deploy it to Amazon's EC2.

  • Bash Script to Send eMail With a List of User Accounts Expiring in “X” Days

    The password enforcement policy is common to all operating systems and applications. If you want to implement a password enforcement policy on Linux, go to the following article.

2019 at Bootlin, a year in review

Filed under

First of all, the entire team at Bootlin wishes you a Happy New Year, and best wishes for 2020 in your personal and professional life. The beginning of the new year is a good time to look back and see the achievements of the past year, which is why we review the 2019 year in terms of Bootlin news and activity.

Read more

Also: Bootlin Wraps Up Feature Development On The Allwinner Cedrus VPU Driver

Programming Leftovers

Filed under
  • Automating the creation of research artifacts

    In my work as a programming language researcher, I need to create artifacts that are easy to understand and well-documented. To make my work easier, I found a simple way to automate generating source code documentation, creating HTML and PDF versions of user documentation, compiling a technical (research) document to PDF, generating the bibliography, and provisioning of virtual machines with the software artefact installed for ease of reproducibility of my research.

  • Parallel Programming: December 2019 Update

    There is a new release of Is Parallel Programming Hard, And, If So, What Can You Do About It?.

    This release features a number of formatting and build-system improvements by the indefatigible Akira Yokosawa. On the formatting side, we have listings automatically generated from source code, clever references, selective PDF hyperlink highlighting, and finally settling the old after-period one-space/two-space debate by mandating newline. On the build side, we improved checks for incompatible packages, SyncTeX database file generation (instigated by Balbir Singh), better identification of PDFs, build notes for recent Fedora releases, fixes for some multiple-figure page issues, and improved font handling, and workarounds for ever-troublesome a2ping. In addition, the .bib file format was dragged kicking and screaming out of the 1980s, as suggested by Stamatis Karnouskos. The new format is said to be more compatible with modern bib-file tooling.

  • BH 1.72.0-3 on CRAN

    The BH 1.72.0-1 release of BH required one update 1.72.0-2 when I botched a hand-edited path (to comply with the old-school path-length-inside-tar limit).

    Turns out another issue needed a fix. This release improved on prior ones by starting from a pristine directory. But as a side effect, Boost Accumulators ended up incomplete with only the dependented-upon-by-others files included (by virtue of the bcp tool). So now we declared Boost Accumulators a full-fledged part of BH ensuring that bcp copies it “whole”. If you encounter issues with another incomplete part, please file an issue ticket at the GitHub repo.

    No other changes were made.

  • Flang Fortran Compiler Set To Land Next Week For LLVM 10.0

    As reported last month, Flang is expected to land in the LLVM 10.0 source tree ahead of the feature freeze for the v10.0 release due out in February. That landing is now scheduled to take place next week.

    The plan is to merge the Flang Fortran compiler front-end into the LLVM mono repository on Monday, 13 January. That allows Flang to be integrated prior to the upcoming LLVM 10.0 branching / feature freeze.

    Details on the plans for merging Flang into the LLVM source tree can be found on the development list.

  • Perl Weekly Challenge 42: Octal Numbers and Balanced Parentheses

    These are some answers to the Week 42 of the Perl Weekly Challenge organized by Mohammad S. Anwar.

    Spoiler Alert: This weekly challenge deadline is due in a couple of days (January 12, 2020). This blog post offers some solutions to this challenge, please don’t read on if you intend to complete the challenge on your own.

  • Checking sphinx code blocks

    I'm too lazy to manually check code blocks in autogenerated sphinx documentation to see if they are valid and reasonably up to date. Doing it automatically feels much more interesting to me: here's how I did it.

  • From Browser To Dj

    Maybe you have heard about Django and that it can help you build websites. You might be new to Python, new to web development, or new to programming as a whole.

    This new series, Understand Django, will show you what Django is all about. Throughout this series, I hope to reveal how Django is a powerful tool that can unlock the potential of anyone interested in making applications on the internet.

    We’re going to take a high level approach to learning. Rather than starting at the bottom with all the pieces of Django, I’ll give you the big picture, then explore each layer more and more to reveal how much Django does for developers under the hood.

    Let’s get started from the very top of a user’s internet experience: at the web browser.

  • Letting Users Change a wx.ComboBox’s Contents in wxPython

    This week I came across someone who was wondering if there was a way to allow the user to edit the contents of a wx.ComboBox. By editing the contents, I mean change the names of the pre-existing choices that the ComboBox contains, not adding new items to the widget.

    While editing the contents of the selected item in a ComboBox works out of the box, the widget will not save those edits automatically. So if you edit something and then choose a different option in the ComboBox, the edited item will revert back to whatever it was previously and your changes will be lost.

  • Python 2 series to be retired by April 2020

    The CPython core development community is urging users to migrate to Python 3 as it will be the only version that will be updated for bugs and security vulnerabilities.

    After nearly 20 years of development on the Python 2 series, the last major version 2.7 will be released in April 2020, and then all development will cease for Python 2. Users are urged to migrate to Python 3 to benefit from its many improvements, as well as to avoid potential security vulnerabilities in Python 2.x after April 2020. This move will free limited resources for the CPthyon core developer community for other important work.

    The final Python 2.7 maintenance release was originally planned for 2015. However, it was delayed 5 years to give people adequate time to migrate and to work closely with vendors and redistributors to ensure that supported Python 3 migration options were available. Part of the reason for this delay was because the stricter text model in Python 3 was forcing the resolution of non-trivial Unicode handling issues in the reference interpreter and standard library, and in migrated libraries and applications

    Python 3 is a noticeable improvement to Python. There is ground-up support for Unicode and internationalization. It better expresses common idioms and patterns, which in code makes it easier to read and reason about. Improvements in concurrency, fault handling, testing, and debugging provide developers with the opportunity to create more robust and secure applications.

  • Exploring HTTPS With Python

    Have you ever wondered why it’s okay for you to send your credit card information over the Internet? You may have noticed the https:// on URLs in your browser, but what is it, and how does it keep your information safe? Or perhaps you want to create a Python HTTPS application, but you’re not exactly sure what that means. How can you be sure that your web application is safe?

    It may surprise you to know that you don’t have to be an expert in security to answer these questions! In this tutorial, you’ll get a working knowledge of the various factors that combine to keep communications over the Internet safe. You’ll see concrete examples of how a Python HTTPS application keeps information secure.

KDE/Qt: Krita, Multithreaded Qt, Kevin Ottens Reflects on 17 Years

Filed under
  • Krita Weekly #8

    The number of bugs has risen to 457 as it was a vacation season. Also, Dmitry is on parental leave, so the increase is quite normal.

  • The Eight Rules of Multithreaded Qt

    While the concept of multithreading may be straightforward, code with threads is responsible for some wicked bugs, which can be nearly impossible to reproduce or track down. This makes writing bullet-proof code using threads a tall order. Let’s look a little deeper into why that is.

    First, you need better than average knowledge about the internals of your frameworks, language, and compiler to know how to avoid threading trouble-spots. You need to know about synchronization primitives and appropriate design patterns so you can create multi-threaded code that operates correctly under all conditions. And you need to understand how to use debugging tools with multiple threads to be able to find those tricky to reproduce issues that are inherent in multithreading bugs.

    When it comes to Qt and multithreading, it’s especially true that you need to know your framework and design patterns. Qt gives you the power to make amazing multithreaded apps – as well as shoot your foot off. We’ve honed our multi-threading expertise over the years by finding and fixing threading bugs in both the Qt framework and Qt client code. Here’s a short list of our top rules for avoiding the most common pitfalls to have your Qt apps run right the first time:

  • Kevin Ottens: Looking back at 2019

    Talking about KDE, I started working with the community in 2003… it means that during the next spring I’ve been around for a whooping 17 years! I’ll never beat someone like David Faure at the “oldest dino still around” contest but that starts to be a very respectable number of years I guess. Of course, on such a long period of time I added roles or changed roles several times.

    The two most demanding projects I ever undertook were facilitating the creation of the KDE Manifesto and the transition from kdelibs to KDE Frameworks. Add to that that both happened around the same time (although one ended earlier) and I can tell you that around 2015 I was very much burnt out. That’s in part why I decided to focus only on Zanshin for a while, but had troubles to sustain even this.

    I thus took kind of a longer break which got extended due to my son being born. As I was finally coming back to ramping up again on Zanshin and started my work on Community Data Analytics (more on that below), that’s when the first pneumonia kicked in (see above) ruining all my efforts to keep my pace.

    And then end of 2019, we started talking about Qt 6 and KDE Frameworks 6… that’s my chance to somewhat come back. I’m not at full capacity yet, but as you might have noticed I participated in the KF6 Kickoff Sprint, I’m helping with the organizational work and reporting about progress. So let’s say for now I’m having a light stewardship role in KDE Frameworks. That’s a good area to keep in touch and do more, in particular through my new job as hinted at above.

    Of course I’m not loosing hope doing more in Zanshin again and resuming my Community Data Analytics explorations. We’ll see what 2020 brings on that front.

Sailfish SDK 3.0 is now available

Filed under

This new release contains several updates for the entire SDK system. Some of the changes are already visible through the interface within this update, but more will become available in future releases building on the enabling features we’ve included in this release. An example of these upcoming changes is the possibility to support different kinds of virtualization technologies for the build engine and the emulators.

Command line interface

Our command line tool (sfdk), which we already introduced in version 2.2, receives an upgrade in this release. As a result of these changes it is now possible to use the SDK within a continuous integration environment.
For users who are comfortable using Qt Creator you can continue using it as before. However, if you want to script parts of the development process, or if you’re just happiest working from the command line, then sfdk provides important benefits. We’ll look briefly at some of the things you can do below to give you a taste.


We hope you enjoy using the new SDK tools and we look forward to bringing you the other improvements we’ve been working on in the future.

Read more

Programming: API Copyrights in the US Supreme Court, Fork Bomb and More

Filed under
  • Turns Out Oracle Copied Amazon's S3 APIs; When Confronted, Pretends That's Different (Spoiler Alert: It's Not)

    Oracle has waged a many years long war (now heading to the Supreme Court) arguing that copying APIs is copyright infringement. Many people who actually understand what an API is, have explained why that is absolutely ridiculous, but tons of non-technical (always non-technical) people keep insisting that an API is just as copyrightable as software. Indeed, they often insist that an API is no different than software itself. This includes Oracle's main lawyer on the case, Annette Hurst, who just a few months ago insisted that APIs were executable code (they are not).

  • Reusing software 'interfaces' is fine, Google tells Supreme Court, pleads: Think of the devs!

    Google last night strode into the last-chance saloon of the US Supreme Court, warning judges (PDF) that if they did not overturn a Federal Circuit ruling in Oracle's favour over its use of Java code in the Android mobile operating system, this could "upend ... the computer software industry."

    "New entrants into a software market 'reimplement' existing tools," argued Google, adding in a plea in the umpteenth appeal in the near decade-long spat that amounts to: "Think of the devs!"

  • Understanding Bash fork() Bomb Sad){ Plain Face:& };: code

    The fork bomb is a form of denial-of-service (DoS) attack against a Linux or Unix-based system. It makes use of the fork operation. The Sad){ Plain Face:& };: is nothing but a bash function. This function get executed recursively. It is often used by sysadmin to test user process limitations on server. Linux process limits can be configured via /etc/security/limits.conf and PAM to avoid bash fork() bomb. Once a successful fork bomb has been activated in a system it may not be possible to resume normal operation without rebooting the system as the only solution to a fork bomb is to destroy all instances of it.

  • Starbucks’ API key found in public GitHub repository – reports

    JumpCloud is an active directory management platform billed as an Azure AD alternative, which provides user management, web app single sign-on (SSO) access control, and Lightweight Directory Access Protocol (LDAP) service.

  • How to set up OctoPrint on your Raspberry Pi

    If you own a 3D printer, you’ll likely have at least heard of OctoPrint from the ever benevolent 3D printing online community. It has the potential to transform your 3D printing workflow for the better, and it’s very easy to set up. This guide will take you through the setup process step by step, and give you some handy tips along the way.

Programming: 9 Skills Businesspeople Can Learn From Developers, Java/J2EE, and Python News

Filed under
  • 9 Skills Businesspeople Can Learn From Developers

    Developers love detail, it’s what makes good code good. Effective software engineers don’t just have organizational structures to know what work they should be working on when and where, they also have naming and labeling conventions so that the nomenclature of every piece of work they do is appropriately classified and supported by the correct amount of annotation. This is especially important if a developer leaves their role, i.e., every piece of work has a trail of information detailing its genesis and provenance, as well as its onward development and augmentation.

  • Celebrating 20 years of enterprise Java

    AS we celebrate the last 20 years of enterprise Java, it is important to look back at the platform's history to better understand where it came from and how we arrived where we are today.

    Enterprise Java emerged during a pivotal time in the history of enterprise computing. When Java 2 Platform, Enterprise Edition (J2EE) 1.2 was introduced in December 1999, it not only marked the birth of enterprise Java, but also signaled an important shift in how organizations were thinking about the web.

    Roughly five years earlier, in May 1995, the Java programming language had been publicly released. The language was originally developed to address obstacles faced by a stealth innovation team at Sun Microsystems building the Star7, an interactive handheld home entertainment controller; however, after a tepid response from the television industry, the team instead set its sights on the internet.

    Web browsers were making the web more accessible to users, and when the Java language was first announced by Sun, it came with a crucial endorsement: Netscape, one of the leaders in the nascent Web browser market at the time, announced in 1995 that it would include support for Java in its namesake browser.

    By 1999, Java had developed a loyal following among application developers and Sun saw an opportunity to extend the language for traditional enterprise workloads. With the launch of J2EE, and another technology that was gaining prominence—the application server—enterprises now had a platform that was designed to meet their needs with capabilities for things like security, scalability, and reliability.

  • Python args and kwargs: Demystified

    Sometimes, when you look at a function definition in Python, you might see that it takes two strange arguments: *args and **kwargs. If you’ve ever wondered what these peculiar variables are, or why your IDE defines them in main(), then this course is for you! You’ll learn how to use args and kwargs in Python to add more flexibility to your functions.

  • Python Software Foundation Fellow Members for Q4 2019

    Congratulations! Thank you for your continued contributions. We have added you to our Fellow roster online.

    The above members have contributed to the Python ecosystem by teaching Python, contributing to and maintaining CPython, organizing Python events and conferences, starting Python communities in their home countries, and overall being great mentors in our community. Each of them continues to help make Python more accessible around the world. To learn more about the new Fellow members, check out their links above.

    Let's continue to recognize Pythonistas all over the world for their impact on our community. The criteria for Fellow members is available online: If you would like to nominate someone to be a PSF Fellow, please send a description of their Python accomplishments and their email address to psf-fellow at We are accepting nominations for quarter 1 through February 20, 2020.

  • PyCoder’s Weekly: Issue #402 (Jan. 7, 2020)
  • Tutorial: Python Regex (Regular Expressions) for Data Scientists

    Diving headlong into data sets is a part of the mission for anyone working in data science. Often, this means number-crunching, but what do we do when our data set is primarily text-based? We can use regular expressions. In this tutorial, we’re going to take a closer look at how to use regular expressions (regex) in Python.

    Regular expressions (regex) are essentially text patterns that you can use to automate searching through and replacing elements within strings of text. This can make cleaning and working with text-based data sets much easier, saving you the trouble of having to search through mountains of text by hand.

    Regular expressions can be used across a variety of programming languages, and they’ve been around for a very long time!

    In this tutorial, though, we’ll learning about regular expressions in Python, so basic familiarity with key Python concepts like if-else statements, while and for loops, etc., is required. (If you need a refresher on any of this stuff, our introductory Python courses cover all of the relevant topics interactively, right in your browser, and they’re free!)

Syndicate content

More in Tux Machines

Type Title Author Replies Last Postsort icon
Story Librem 5 phone hands-on—Open source phone shows the cost of being different Rianne Schestowitz 1 24/01/2020 - 5:49pm
Story Five reasons why your business should adopt open source software Rianne Schestowitz 24/01/2020 - 5:48pm
Story MNT Reform 2 Open Source DIY Arm Linux Modular Laptop Coming Soon (Crowdfunding) Rianne Schestowitz 6 24/01/2020 - 5:45pm
Story Conversion/Converseen Software Roy Schestowitz 24/01/2020 - 5:37pm
Story 4 Tools To Record Your Linux Desktop (Screencast) In 2020 Rianne Schestowitz 24/01/2020 - 5:29pm
Story Here’s the New KDE Plasma 5.18 Default Wallpaper Rianne Schestowitz 1 24/01/2020 - 5:24pm
Story Audiocasts/Shows: Open Source Security Podcast and More Roy Schestowitz 24/01/2020 - 5:23pm
Story GNU Guix: Guile 3 & Guix Roy Schestowitz 24/01/2020 - 5:18pm
Story today's howtos Roy Schestowitz 24/01/2020 - 5:11pm
Story Software: Kid3 Audio Tagger, Cockpit 211 and Red Notebook 2.16 Roy Schestowitz 24/01/2020 - 4:59pm