
Blog
Moving TurnKeyLinux.org from Drupal to Hugo
TurnKeyLinux.org has accumulated a lot since the first Drupal version went online: appliance pages, documentation, release notes, screenshots, FAQs, blog posts, taxonomy terms and …
Topic
110 matching pages

Blog
TurnKeyLinux.org has accumulated a lot since the first Drupal version went online: appliance pages, documentation, release notes, screenshots, FAQs, blog posts, taxonomy terms and …

Blog
TurnKey 19, based on Debian 13 “Trixie”, is getting close. Development has moved beyond changing a version number. The base system, installer, repository configuration and …
Blog
The TKL team is thrilled to unveil 10 fresh updates to our appliance lineup! See here for all v18.x announcements. These 10 updated apps are available now on the TurnKey …
Blog
Finally, following the announcement last week, we're back again with another batch of updated appliances - 20 to announce this time! See here for all v18.x announcements. These 20 …
Blog
We're thrilled to announce the forth stable release of version 18.0, bringing another 10 updated appliances, including updated ISOs and Hub builds, with Proxmox/LXC support builds …
Blog
We have the 3rd v18.0 stable release batch ready to roll (see all v18.x related announcements here). This batch brings the total number of v18.0 stable releases so far to 23! As …
Blog
We have the 2nd v18.0 stable release batch ready to roll (see all v18.x related announcements here). This batch brings the total number of v18.0 stable releases so far to lucky …
Blog
Happy to announce the stable release of Turnkey v18.0. Took a little longer than I had hoped and there are only two this time. Regardless, we've finally made it to the stable …
Blog
I'm happy to announce the pre-release of the next major version of TurnKey GNU/Linux. The first v18.0 Release Candidates of Core and TKLDev are ready for download, inspection and …
Blog
We have the 6th (and hopefully final) release for 17.x (see previous v17.x announcements here if you wish). There may be some stragglers, but we're fairly close to …
Blog
We have the 5th release for 17.1 (see previous v17.x announcements here if you wish). We're fairly close to finishing the initial v17.x release, with only 4 appliances …
Blog
I hope everyone had a happy holiday season; Turnkey associates have definitely been busy over the holidays. We have a 4th installment of stable v17.1 appliances and the 7th …
Blog
In what appears to be the new way I do things (i.e. here and here), following a question from TurnKey Hub user Rob, I'm posting this "tutorial" as a blog post. Via Hub support, …
Blog
TurnKey Hub user Vishal recently asked about installing PostgreSQL v14+ on TurnKey. He noted that he was interested in Postgres 14 or higher because of the new IVM extension …
Blog
This will be technically the 3rd installment of stable v17.1 appliances and the 6th release for 17.x (see the first 5 announcements here if you wish). As previously noted, all of …
Blog
After a bit of a delay - due to other competing priorities; such as our webserver dying - the v17.x release continues. As per previous updates all these appliances are being built …
Blog
TurnKey user Ed Carp was recently trying to install TKLBAM on Linux Mint 20.3/Una (which is based on Ubuntu 20.04/Focal). Despite my best efforts, he kept hitting issue after …
Blog
After a bit of hiccup, I am pleased to be back to announce the ongoing release of v17.x appliances. Because of the bug, the previously released v17.0 appliances have been patched …
Blog
2022-05-17 Update: All affected appliances have now been bugfixed and rebuilt as v17.1. The v17.x release will continue, with all new appliances to be released as v17.1. As first …
Blog
2022-05-17 Update: Please note that due to a bug, all v17.0 appliances have now been bugfixed and rebuilt as v17.1. The v17.x release will continue, with all new appliances to be …
Blog
2022-05-17 Update: All affected appliances have now been bugfixed and rebuilt as v17.1. The v17.x release will continue, with all new appliances to be released as v17.1. Important …
Blog
2022-05-17 Update: All affected appliances have now been bugfixed and rebuilt as v17.1. The v17.x release will continue, with all new appliances to be released as v17.1. Important …
Blog
2022-05-17 Update: All affected appliances have now been bugfixed and rebuilt as v17.1. The v17.x release will continue, with all new appliances to be released as v17.1. Important …
Blog
Update 2022-04-13: Please see the v17.0 stable release announcement for details about the stable v17.0 Core & TKLDev releases. Drum roll please... I'm proud to announce the …
Blog
I'm back with another v16.x update. I anticipate that this will be the last v16.0 appliances. I hope to start looking at a v16.1 update/rebuild soon after the holiday period. This …
Blog
I'm finally back with most of the outstanding v16 initial appliance release. This time it's 7 apps updated to v16.0. Just like the previous batch, this next instalment of v16.0 …
Blog
Update 2020-10-19: Please see the eleventh instalment of updated appliances. I'm back with some more updated appliances. This time it's 7 apps updated to v16.0. Just like the …
Blog
Update 2020-08-31: Please see the tenth instalment of updated appliances. Update 2020-10-19: Please see the eleventh instalment of updated appliances. I'm back with some more …
Blog
Update 2020-08-27: Please see the ninth instalment of updated appliances. Update 2020-08-31: Please see the tenth instalment of updated appliances. Update 2020-10-19: Please see …
Blog
Update 2020-07-27: Please see the eighth instalment of updated appliances. Update 2020-08-27: Please see the ninth instalment of updated appliances. Update 2020-08-31: Please see …
Blog
Update 2020-07-16: Please see the seventh instalment of updated appliances. Update 2020-07-27: Please see the eighth instalment of updated appliances. Update 2020-08-27: Please …
Blog
Update 2020-06-29: Please see the sixth instalment of updated appliances. Update 2020-07-16: Please see the seventh instalment of updated appliances. Update 2020-07-27: Please see …
Blog
Update 2020-06-09: Please see the fifth instalment of updated appliances. Update 2020-06-29: Please see the sixth instalment of updated appliances. Update 2020-07-16: Please see …
Blog
Update 2020-05-25: Please see the forth instalment of updated appliances. Update 2020-06-09: Please see the fifth instalment of updated appliances. Update 2020-06-29: Please see …
Blog
Update 2020-05-20: Please see the third instalment of updated appliances. Update 2020-05-25: Please see the forth instalment of updated appliances. Update 2020-06-09: Please see …
Blog
Update 2020-05-15: Please see the second instalment of updated appliances. Update 2020-05-20: Please see the third instalment of updated appliances. Update 2020-05-25: Please see …
Blog
Update 2020-05-04: We've finally published Core and TKLDev as stable releases (v16.0); along with a few others. The RC releases noted here are no longer available for download. …
Blog
Update 2020-05-04: We've finally published our first batch of 10 v16.0 appliances. Please see the full announcement for details. Update 2020-03-10: v16.0rc1 ISOs of both Core and …
Blog
In the wake of the "mini-nightmare" (to quote a user) that was the Debian MariaDB auto removal fiasco; we're back with ~70 updated appliances (all the ones with MySQL/MariaDB). …
Blog
I'm pleased to announce the 4th and final stage of the v15.0 release. This final instalment consists of 31 new, updated and/or bugfixed appliances. It follows release parts 1, 2 …
Blog
UPDATE: Stage 4; the 4th and final instalment of v15.0, includes the remaining v15.0 appliances, plus a number of bugfixed and updated v15.0 apps - 31 in total. All appliances are …
Blog
UPDATE: Stage 3 includes 35 additional appliances; including info on 3 new v15.0 appliances, plus other notes of interest. Stage 4; the 4th and final instalment of v15.0, includes …
Blog
UPDATE: Stage 2 includes OVA/VM, OpenStack and Xen. Docker and Proxmox/LXC builds published too. Stage 3 includes 35 additional appliances; including info on 3 new v15.0 …
Blog
UPDATE: Stage 1 of v15.0 stable release is now available. It includes 47 updated appliance ISOs. Stage 2 includes OVA/VM, OpenStack and Xen. Docker and Proxmox/LXC builds …
Blog
About 3 weeks since my last announcement, I am super excited to announce the final few v14.2 appliances! And the completion (almost) of the v14.2 release! Yay! So this will be the …
Blog
This release update was a bit quicker! :) Barely 2 weeks since the last one, here comes another v14.2 update...! Today I'm announcing 17 more appliances updated to v14.2, as well …
Blog
Almost another month has passed since my v14.2 - update #2 announcement. I must say that this is taking longer than I'd hoped, but we're getting there. Today/Tonight (depending on …
Blog
What!?! Another month (actually a month and a half) has gone by and we're only just announcing the next batch?! Well, I better get on with it then! Today I'm announcing 25 more …
Blog
Wow, has it really been almost a month since I announced v14.2 Core?! Looks like it has! Time flies when you're having fun I guess... :) I'm pleased to announce 27 new updated …
Blog
Just shy of a year since our v14.1 release I am relieved to announce that Core v14.2 is finally ready for prime time! It's been a while in the making, but v14.2 Core is now …
Blog
About seven months after the release of v14.0 we are proud to announce the updated v14.1 release. All of the v14.1 appliances are available for immediate launch in the cloud via …
Blog
systemd sysv init compatibility mode is magical. That is in the sense that it tries to handle compatibility with sysv init scripts while you are distracted looking somewhere else. …
Blog
$ python -c 'import this' The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than …
Blog
I've never come across a problem I couldn't solve using the following technique / problem solving methodology, and I've come across some tough ones. …
Blog
Drum roll please... May I proudly introduce: The TurnKey Linux v14.0 release! A long time coming... Wow is it mid September already!? What has happened to the year?! To be honest …
Blog
Update: v14.0 stable is available in all build types: OVA & VMDK, Proxmox, OpenNode & Docker (Proxmox build is somewhat generic LXC/OpenVZ container) and Xen & …
Blog
[UPDATE:] This blog post has been converted to a Doc page and has had some updates since this post was published. For the upcoming v14.0 stable release, we are doing things a …
Blog
Update: v14.0 stable is available in all build types: OVA & VMDK, Proxmox, OpenNode & Docker (Proxmox build is somewhat generic LXC/OpenVZ container) and Xen & …
Blog
Here's a super easy way to invalidate the disk cache, which is useful for testing IO performance in the real world, where you can't rely on all of your reads being served up from …
Blog
I hate repeating myself. It's boring. Life is too short. Like any self respecting hacker I will go out of my way to avoid it, even when I suspect it would cost me more to automate …
Blog
A few weeks ago I talked with a friend studying computer science who I discovered had never experienced the joy of programming with a high level language. Not only that but he …
Blog
Implementing Cloudtask took more time than I had planned due mainly to the challenges of parallel programming, which I hadn't done that much of before. Also, parallel programming …
Blog
When I was developing Cloudtask, I discovered none of the interfaces in the Python multiprocessing module were powerful enough for my needs so I had to roll my own. The result is …
Blog
I caught myself today repeating a few basic operations by hand what seemed like a zillion times. Over and over again. I didn't really notice it at the time but it was really …
Blog
OK, I admit it. I used to program in Perl. And I liked it! My Perl programs were terse. If I could shave a line off, I did. In fact, I spent a non-trivial amount of time figuring …
Blog
Methodology The basic methodology for optimization: Discover where you program is spending its time (hotspots vs coolspots) A good way to get an overview is to use the Python …
Blog
1) Always be experimenting! Trying to squeeze out more performance out of your program? Don't be afraid to experiment! In practice what that means is you setup small, simple …
Blog
During the first few months of my Drupal experience I looked for answers to any issues that came up first in the official documentation, then on Google. It's a big Drupal world …
Blog
Many languages encourage programmers to use a getter/setter pattern. Like this: instance.set_foo(value) print instance.get_foo() Many years ago, as a junior programmer still …
Blog
The following is written for programmers who don't really understand object oriented programming yet. They probably understand the language semantics, but don't really understand …
Blog
Let's say you have the following program: cat>example.py<<'EOF' #!/usr/bin/python import time while True: print 'hello world' time.sleep(1) EOF chmod +x ./example.py If …
Blog
I didn't want installation of one of TurnKey's components to freeze up too long if it was installed offline so I looked for a nice way to detect that without bringing in …
Blog
When I go offline I pull my network cable. This causes DNS queries to take forever to resolve. Actually 40 seconds but it feels like forever. I ran across this most recently when …
Blog
As a programmer I believe less is more. Good code is small, simple and elegant and many times favorable to larger, noisier code that does the same. It's not just about aesthetics …
Blog
A couple of weeks ago I was corresponding with @wvengen, a free software developer from the Netherlands who has been using TKLDev to package Foodsoft into a ready-to-use Foodsoft …
Blog
Want to roll your own Debian Wheezy based images? You're in luck because we just finished upgrading TurnKey's build chain, including new versions of TKLDev and TurnKey Core ready …
Blog
Recently I've been looking into a powerful but complex web application technology we're considering using in future versions of the Hub. The problem: how do we update a browser …
Blog
I just tracked down a nasty bug in my code to a gotcha with Python iterators. Consider the following code... class Numbers(list): def even(self): for val in self: if val % 2 == 0: …
Blog
In a nutshell, think of your users. They read top to bottom. They have a very limited attention span. Even if they read all the way through, they're probably going to pay more …
Blog
If you like using a single getter/setter function for your properties, watch out if using None for the default. If you do that you won't be able to set your property to None! …
Blog
I was in the middle of developing a new feature for the TurnKey Hub when I received a bug report that needed to be fixed. What to do? Throw away my current changes? Checkout a …
Blog
A few weeks ago I looked into Amazon FPS (Flexible Payments Service), just to see what our options are for premium services like commercial support. You know, the stuff we can't …
Blog
You're looking at a block of Python code. It's not immediately obvious what it does. It's sort of a mess and you realize it needs to be refactored. But how? What mental algorithm …
Blog
Do you find yourself occasionally wishing you could freeze a misbehaving program at an arbitrary point in time and then examining what was going on interactively? That's exactly …
Blog
First, a little background Django has an excellent messages framework which provides support for cookie and session-based messaging, for both anonymous and authenticated users. …
Blog
Recently I've been going over the Hub logs and fixing issues which have caused exceptions to be raised in the application. One in particular had me stumped for a while. An …
Blog
To regression test, or not to regression test Building up a proper testing suite can involve a good amount of work, which I'd prefer to avoid because it's boring and I'm lazy. On …
Blog
"Premature optimization is the root of all evil" Today while programming I found myself thinking about the performance impact of various basic Python operations such as method …
Blog
Every now and then Liraz and I find ourselves chatting about how much we love Python, but more so the lessons we have learned from coding, and how to apply them to create …
Blog
I use Git. I use it a lot. I basically use it for everything I do, from code revision control to revisioning my notes, my journal, even my email archive (don't ask, it's a long …
Blog
When settings.DEBUG is set to False, exception tracebacks will be sent to settings.ADMINS. To make it simpler to track down how and why the exception was raised, it's beneficial …
Blog
I'm finding a big part of the context switch involved in getting back to a high level of productivity on my programming is relearning old lessons. In particular one of the most …
Blog
Musings on Lisp by a routinely Pythonic programmer Last week I did some maintenance on various Python projects I haven't touched in years (literally), and I was surprised by how …
Blog
It all started with a happy accident I have a confession to make. This contest, which is directly fueling the largest expansion of the TurnKey library since the project started, …
Blog
So you developed a Django web application and now need to deploy it into production, but still need to actively continue development (bugfixes, tweaks, adding and testing new …
Blog
Over the last few months donations have been trickling in and gradually piling up. Since there's a limit to how much beer we can reasonably drink we've been brainstorming ideas …
Blog
Every web application needs a navigation bar. Common practice is to indicate to the user where he or she is, and is usually implemented by using a visual aid such as a bold …
Blog
In a previous post I explained why we decided to convert most of the images on this site from PNG to JPG and how we used ImageMagick to batch it. What I didn't get into is how we …
Blog
By reducing the file size of your CSS, JavaScript and images, as well as the number of unnecessary browser requests made to your site, load time of your applications pages can be …
Blog
Psssst. Hey you... yeah you. Word on the street is your shell scripts don't do any error handling. They just chug happily along even when everything is broken. Because a lowly …
Blog
While reading CSS books and experimenting I found it helpful to take notes and put together a cheat sheet for quick reference. I figured others might find it useful so I'm …
Blog
Recently I needed to transfer data between entities, but I needed to keep the data secure from prying eyes, and its integrity intact from busy little fingers on the wire. I needed …
Blog
9 things I didn't know about CSS that I should have known years ago but I only picked up from a couple of good CSS books. Having dabbled in web development over the years, I've …
Blog
So you're building a web application, and using the excellent contrib.auth subsystem to manage user accounts. Most probably you need to store additional information about your …
Blog
Smack yourself in the forehead if you don't use the following snippet (or an equivalent) in all custom shell scripts that could benefit from a hooking mechanism: run_scripts() { …
Blog
Or, Celery + RabbitMQ = Django awesomeness! As you know, Django is synchronous, or blocking. This means each request will not be returned until all processing (e.g., of a view) is …
Blog
I recently eliminated a bit of code that was supposed to handle upgrading our build infrastructure from using one distribution (e.g., Ubuntu 8.04 LTS) to another (e.g., Ubuntu …
Blog
When I first learned about Django signals, it gave me the same warm fuzzy feeling I got when I started using RSS. Define what I'm interested in, sit back, relax, and let the …
Blog
Lately I've been going over a hellish patch-work of old shell scripts we wrote to automate some internal processes and I realized something: friends shouldn't let friends program …
Blog
The problem: working on a live web site is a bad idea Anyone who's ever worked on a sufficiently complex web site knows it's a bad idea to work directly on the live server hosting …