MisterHouse is a fantastic home automation software with an impressive out-of-the-box feature set, and it only gets better if you know a bit of Perl.
You can conveniently set “modes”, which are settings with states you can define and use. You can then fire events upon state change, and so are they very useful to define some sort of macros.
A few examples :
- the “Security” mode could be “on” or “off” : setting it “on” would close the shutters and activate the alarm system; setting it “off” would do the opposite;
- the “Heating” mode could be “day”, “night”, “frost protection only” : setting it on “day” would set the target temperature to 20⁰C, “night” to 15⁰C and “frost protection only” to 7⁰C
- the “Cinema” mode could be “on” or “off” : setting it to “on” would close the blinds and dim the lights; “off” would bring those back to their former states.
This post will show how to setup a mode, we’ll use the “Heating” mode described above as an example.
Continue reading MisterHouse : Setting up “modes”
The following sample Facebook desktop application exports your friends birthdays in a vCard file format. This file is suitable to be imported into your GMail contacts for example.
Continue reading Facebook API : Exporting your friends birthdays into vCards format
This Perl one-liner is intended to print the 10 most frequent client IP addresses in an Apache log file. It can easily be recycled to count anything, though.
Continue reading Perl : Counting occurences of IP addresses in Apache logs
This code snippet demonstrates how easy it is to collect your twitter @mentions in Perl, coupled with curl for simplicity.
Continue reading Perl+Twitter : Getting @mentions from command line
Finance::Quote is a Perl module which can be used to obtain stock information from various internet sources. I thought I’d rather share this code snippet as an example showing how easy it is to use, before I turn it into a bloatware with an SQL backend to compute average price per share and what not 🙂
So here is a simple snippet demonstrating how to get the price of a stock :
Continue reading Perl : Using the Finance::Quote module to get your stock prices
As stated in Wikipedia :
D-Bus (Desktop Bus) is a simple inter-process communication (IPC) system for software applications to communicate with one another.
This post provides a simple code snippet in Perl to help you getting started with D-Bus programming. Continue reading D-Bus introduction in Perl
This little Perl one-liner can get handy when you need to translate “time in seconds since the Epoch” (for example in logs) to local time :
% perl -e 'print scalar(localtime(1202484725)), "\n";'
Fri Feb 8 16:32:05 2008
This was pretty useful today when browsing through Nagios event logs, where times are given in seconds from the Epoch.
By the way, the Epoch is defined as 00:00 UTC on January, 1st, 1970.
As you might have read in my previous post about accessing your cell phone with the AT-commands under Linux.
If not, you might want to start there for a little context.
I finally wrote and released on CPAN a Perl module which will help to automate cell phone operations such as saving/restoring the phonebook or sending an SMS.
Examples are included in the documentation. I believe I made it easy to use, but let me know if I’m wrong 😀 .
Features will be added on demand (if possible of course 🙂 ).
The module is Device::Modem::GSM.
This article explores your options to access your GSM cell phone from a linux system, and manipulate SMS and phonebook entries.
Doesn’t provide hints about how to unlock a GSM cell phone though 😉
Continue reading Linux + GSM : How to access your cell phone innards with Linux
When you perform a pattern matching with multiple “or” (|) clauses, such as /pattern1|pattern2|pattern3/, Perl regexp engine will try to match each of them one after the other in sequence, resulting in poor performance if you have a long list of “or” clauses.
In order to optimize such a pattern matching, you can use the Regexp::Assemble module.
Continue reading Perl : Optimizing pattern searches with Regexp::Assemble