Language Selection

English French German Italian Portuguese Spanish

Create modular server-side Java apps direct from mvn modules with diet4j instead of an app server

Filed under

In the latest release, the diet4j module framework for Java has learned to run modular Java apps using the Apache jsvc daemon (best known from running Tomcat on many Linux distros).

If org.example.mydaemon is your top Maven project, all you do is specify it as the root module for your jsvc invocation, and diet4j figures out the dependencies when jsvc starts. An example systemd.service file is available.

More in Tux Machines

Analyzing Distrowatch Trends

Free software is so diverse that its trends are hard to follow. How can information be gathered without tremendous effort and expense? Recently, it occurred to me that a very general sense of free software trends can be had by using the search page on Distrowatch. Admittedly, it is not a very exact sense — it is more like the sparklines on a spreadsheet that show general trends rather the details. Still, the results are suggestive. As you probably know, Distrowatch has been tracking Linux distributions since 2002. It is best-known for its page hit rankings for distributions. These rankings do not show how many people are actually using each distro, but the interest in each distro. Still, this interest often does seem to be a broad indicator. For instance, in the last few years Ubuntu has slipped from the top ranking that it held for years to its current position of fifth, which does seem to bear some resemblance to its popularity today. However, Distrowatch’s search page for distributions is less well-known. Hidden in the home page header, the search function includes filters for such useful information as the version of packages, init software, and what derivatives a distro might have, and lists matching distros in order of popularity. Although I have heard complaints that Distrowatch can be slow to add or update the distros listed, it occurs to me that the number of results indicates general trends. The results could not be plausibly used to suggest that a difference of one or two results was signficant, but greater differences are likely to be more significant. Read more

4MLinux 31.0 STABLE released.

The status of the‭ 4MLinux 31.0 series has been changed to STABLE. Edit your documents with LibreOffice and GNOME Office (AbiWord 3.0.2, GIMP 2.10.14, Gnumeric 1.12.44), share your files using DropBox ‬85.4.155,‭ surf the Internet with Firefox 71.0 and Chromium ‬78.0.3904.108,‭ send emails via Thunderbird 68.3.0, enjoy your music collection with Audacious 3.10.1, watch your favorite videos with VLC 3.0.8 and mpv 0.29.1, play games powered by Mesa 19.1.5 and Wine 4.21. You can also setup the 4MLinux LAMP Server (Linux 4.19.86, Apache 2.4.41, MariaDB 10.4.10, PHP 5.6.40 and PHP 7.3.12). Perl 5.30.0, Python 2.7.16, and Python 3.7.3 are also available. Read more

Programming: C, Perl, Python and More

  • C, what the fuck??!

    A trigraph is only a trigraph when the ??s are followed by one of the nine string literals. So in this case, the C preprocessor will replace the code above with the following: [...]

  • Rewriting Perl Code for Raku IV: A New Hope

    Back in Part III of our series on Raku programming, we talked about some of the basics of OO programming. This time we’ll talk about another aspect of OO programming. Perl objects can be made from any kind of reference, although the most common is a hash. I think Raku objects can do the same, but in this article we’ll just talk about hash-style Perl objects.

    Raku objects let you superclass and subclass them, instantiate them, run methods on them, and store data in them. In previous articles we’ve talked about all but storing data. It’s time to remedy that, and talk about attributes.

  • Mike Driscoll: PyDev of the Week: Ted Petrou

    I graduated with a masters degree in statistics from Rice University in Houston, Texas in 2006. During my degree, I never heard the phrase “machine learning” uttered even once and it was several years before the field of data science became popular. I had entered the program pursuing a Ph.D with just six other students. Although statistics was a highly viable career at the time, it wasn’t nearly as popular as it is today. After limping out of the program with a masters degree, I looked into the fields of actuarial science, became a professional poker play, taught high school math, built reports with SQL and Excel VBA as a financial analyst before becoming a data scientist at Schlumberger. During my stint as a data scientist, I started the meetup group Houston Data Science where I gave tutorials on various Python data science topics. Once I accumulated enough material, I started my company Dunder Data, teaching data science full time.

  • Authorized Google API access from Python (part 2 of 2)

    In this final installment of a (currently) two-part series introducing Python developers to building on Google APIs, we'll extend from the simple API example from the first post (part 1) just over a month ago. Those first snippets showed some skeleton code and a short real working sample that demonstrate accessing a public (Google) API with an API key (that queried public Google+ posts). An API key however, does not grant applications access to authorized data. Authorized data, including user information such as personal files on Google Drive and YouTube playlists, require additional security steps before access is granted. Sharing of and hardcoding credentials such as usernames and passwords is not only insecure, it's also a thing of the past. A more modern approach leverages token exchange, authenticated API calls, and standards such as OAuth2. In this post, we'll demonstrate how to use Python to access authorized Google APIs using OAuth2, specifically listing the files (and folders) in your Google Drive. In order to better understand the example, we strongly recommend you check out the OAuth2 guides (general OAuth2 info, OAuth2 as it relates to Python and its client library) in the documentation to get started. The docs describe the OAuth2 flow: making a request for authorized access, having the user grant access to your app, and obtaining a(n access) token with which to sign and make authorized API calls with. The steps you need to take to get started begin nearly the same way as for simple API access. The process diverges when you arrive on the Credentials page when following the steps below.

  • Friendly Mu
  • Announcing Google Summer of Code 2020!

    Are you a university student interested in learning how to prepare for the 2020 GSoC program? It’s never too early to start thinking about your proposal or about what type of open source organization you may want to work with. You should read the student guide for important tips on preparing your proposal and what to consider if you wish to apply for the program in mid-March. You can also get inspired by checking out the 200+ organizations that participated in Google Summer of Code 2019, as well as the projects that students worked on.

  • Decentralised SMTP is for the greater good

    In August, I published a small article titled “You should not run your mail server because mail is hard” which was basically my opinion on why people keep saying it is hard to run a mail server. Unexpectedly, the article became very popular, reached 100K reads and still gets hits and comments several months after publishing.


    As a follow up to that article, I published in September a much lenghtier article titled “Setting up a mail server with OpenSMTPD, Dovecot and Rspamd” which described how you could setup a complete mail server. I went from scratch and up to inboxing at various Big Mailer Corps using an unused domain of mine with a neutral reputation and describing precisely for each step what was done and why it was done. The article became fairly popular, nowhere near the first one which wasn’t so technical, but reached 40K reads and also still gets hits and comments several months after publishing.


    The content you’re about to read was part of the second article but it didn’t belong there, it was too (geo-)political to be part of a technical article, so I decided to remove it from there and make it a dedicated one. I don’t want the tech stack to go in the way of the message, this is not about OpenSMTPD.

today's howtos