Opinions and motivations of a tech-skeptical software developer @ an NGO working in education
Building a future with equal access to learning opportunities (via technology!) is a long and winding road: We need to consider sustainable scenarios for our technology and face up to true challenges — not be tempted by hype or simple fixes.
About a decade ago, when bandwidth was a sparsity in rich ...
Simple answer: If you're already running Wagtail or planning to run it on your site, you'll probably benefit from an integrated blog like wagtail_blog. It may not be full of features in itself, but since Wagtail is, you can easily go where you want. I'm adding support ...Read the rest of this entry »
I fail to use automatic standby because:
So you might fall asleep in front of a movie. Or you might go out and forget your laptop.
Basically, if I for instance ...
Version numbers matter! Using a consistent version numbering throughout your project's life matters, too. Changing project name is a high price to pay for cleaning up version errors.
So there's some good news! The Python community's PEP-440 specifies how to use versions.
Here are some examples of ...Read the rest of this entry »
[also brought on FAIR Denmark]
Facebook has launched Internet.org, maybe a solution that will provide internet access to lots of people who need it? In this post, I'll explain what I think about it, because certainly it doesn't seem like a project we can just ignore.
Others ...Read the rest of this entry »
When reinstalling, upgrading or moving settings, thumbnails may be missing in Shotwell. The problem can look like this:
Each time you import photos, Shotwell will generate thumbnails in two different sizes. If you loose them, you have the problem that they are regenerated on-demand, everytime you scroll by an image ...Read the rest of this entry »
I had an older Nokia and got a new one which I needed to upload my phone book to. In order to connect to Nokia 301 from Gammu, plug the phone in with a USB cable and select the "Modem" option on the phone. The others won't work.
Wammu ...Read the rest of this entry »
I've badly been looking for a way to both run an internal network server on
eth0 and connecting to any kind of internet device, be it on
wlan0 or a USB dongle.
That way, I can be online and browsing documentation, downloading new stuff etc. on the server but ...Read the rest of this entry »
I have been trying to get an automated network install running. The starting point is a Kickstart (Kickseed) setup that works fine on LAN. Problem is: Computers do not do PXE netbooting from WLAN, and secondly that the debian installer was not configuring the network correctly. But the steps are ...Read the rest of this entry »
So, you need to limit choices, because the list of related choices is too long? Then do NOT use
limit_choices_to parameter on the ForeignKey! Why? Because you risk having options missing in your forms, deleting relations unknowingly.
For instance, consider that you have the following case, expressed in pseudo code ...Read the rest of this entry »
Warnings are often suppressed through many layers of control mechanisms in Python and Django. However, you should really be aware of these and clean them up once in a while!
In other cases, the Warnings reflect an inconsistent state, such as if you are mixing naive and timezone-aware variables. It ...Read the rest of this entry »
Here is a very simple mechanism for wrapping a decorator around your views to protect them against brute force attempts. For instance, if you have a secret file download available only with the right secret (/view/id/secret-hash/), you expose your view to simple brute force attempts.
Simply put, this ...Read the rest of this entry »
This script uses iptable forwarding and dnsmasq to share an internet connection with full relay of remote DNS servers and a local DHCP server. Before trying the script, here is the over all steps:
You connect to the internet in your normal fashion. For instance with a 3G dongle and ...Read the rest of this entry »
There is a new book coming up with a very remarkable abstract, to be released on March 5, 2013:
In the very near future, â€œsmartâ€ technologies and â€œbig dataâ€ will allow us to make large-scale and sophisticated interventions in politics, culture, and everyday life. Technology will allow us ...Read the rest of this entry »
Yesterday, I succeeded in moving a GTK2 project* with a custom Cairo widget to GTK3. It's about 750 lines of Python and took ~5 hours to migrate, mainly because my method was about googling and solving all Exceptions one by one. That's not very advisable.
You can read ...Read the rest of this entry »
If you've ventured just a little bit into GTK and threading, you have probably noticed how things can explode if you manipulate GTK objects directly from a thread. GTK is not threadsafe.
However, this tip might help you get stuff done properly:
1) Do your actual work ...Read the rest of this entry »
This software allows for a computer refurbishing organization (such as FAIR) to keep track computers being broad through a refurbishing system, including individual hardware profiles, hard drive wiping, and ...Read the rest of this entry »
If you have a nicely running Ubuntu system with all your favourite packages installed, it might not seem like a good idea to start all over or to replace your hard drive. But here's a tip: To save a list of all packages that are currently installed! This should ...Read the rest of this entry »
Here's an example for a custom change_form.html located in app/templates/admin/appname/modelname/change_form.html - and the cool thing is that it accesses the actual instance of the object, which I found to be very convenient and undocumented. If you want it to be more explicit than ...Read the rest of this entry »
A little tip that can really improve your battery life and give you peace of mind while working: Install thinkfan: A simple fan control program.Installation
Here is how it goes on Ubuntu: Step zero is to become superuser ( sudo bash ). Then you install the thinkfan package.~# apt-get ... Read the rest of this entry »
If you are running an old version of django-cms, you can still upgrade Django. I would strongly suggest doing this since it's very uncomplicated. However, if you are running django-cms 2.0, you should first upgrade to 2.0.2 and run the South migrations, which is also totally ...Read the rest of this entry »
In case you need a quick way of getting rid of spammers on your apache server, use this method as a temporary solution until you find a better one.
Please take not that it will evaluate EVERY SINGLE REQUEST through a Deny policy in Apache's mod_access - it does not ...Read the rest of this entry »
THIS DOES NOT WORK WITH APACHE SINCE IT DOES NOT USE /etc/hosts.deny - See this post instead
Use the following Python script to maintain a file in the hosts.deny syntax so that your Debian/Ubuntu box (or other Linux server) is kept undisturbed by forum spammers -- COMPLETELY undisturbed ...Read the rest of this entry »
I have been hunting spontaneous crashes with errors from the C GTK libs. The errors looked somewhat like these:Warning: g_object_ref: assertion `G_IS_OBJECT (object)' failed gtk.main() Warning: instance of invalid non-instantiatable type `AtkSelection' gtk.main() Warning: g_signal_emit_valist: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed gtk.main() (...) Warning: instance of invalid ... Read the rest of this entry »
If you are trying to disable an Upstart script (something that can be started/stopped with "sudo start/stop service-name") , you should really use the method described by Luis Alvarado on AskUbuntu. Please use this to avoid editing scripts that are actually maintained ...Read the rest of this entry »
Eggplant community open source project that I've participated in since early days. A direct market between biodynamic food coops and growers.
Kolibri Next-gen offline learning software for distributing interactive learning materials through an extremely flexible platform for all kinds of contexts.
KA Lite a stand-alone offline solution for interactive ...Read the rest of this entry »