If it won't be simple, it simply won't be. [Hire me, source code] by Miki Tebeka, CEO, 353Solutions
Friday, October 28, 2011
Using dbus To Control Pidgin
I using Pidgin as my IM client, however after work I'd like to disconnect from our jabber server. Being the command like geek I am, I wrote the following. (Earlier version was written in bash using purple-remote
.)
You can learn more about Pidgin dbus interface here.
Saturday, October 15, 2011
Finding Module Version
A friend at work asked me how can he find which version of Python module is currently installed. The quick answer is to use pip:
pip freeze | grep <module>
pip freeze | grep <module>
Friday, September 30, 2011
Old Berlios Projects
Seems like Berlios is closing down. I've placed a backup of my old projects here. Let me know if you like to take ownership on one/several of them.
Using Generators in nose Tests
Sometimes you have many tests that do exactly the same thing but with different data. nose provides an easy way to do that with tests that return generators.
Saturday, September 24, 2011
Feynman On The Importance Of Playing
I'm reading "Surely You're Joking, Mr. Feynman" (very good read).
What he says about burnout, playing and doing the things you love is priceless:
Go out and play, I'm sure you'll make wonderful things.
EDIT: Thanks for HN for proof reading this. Also found a more complete excerpt here.
What he says about burnout, playing and doing the things you love is priceless:
But when it came time to do some research. I couldn't get to work. I was a little tired; I was not interested; I couldn't do research! ...
And then I thought to myself, "You know, what they think of you is so fantastic, it's impossible to live up to it. You have no responsibility to live up to it!"...
Then I had another thought; Physics disgusts me a little bit now, but I used to enjoy doing physics.
Why did I enjoy it? I used to play with it. I used to do whatever I felt like doing - it didn't have to do with whether it was important for the development of nuclear physics...
So I get this new attitude ... I'm going to play with physics, whenever I want to, without worrying about any importance whatsoever.
Within a week I was in the cafeteria and some guy, fooling around, throws a
plate in the air. ...
I had nothing to do, so I start to figure out the motion of the rotating plate...
And before I knew it (it was a very short time) I was "playing" - working, really - with the same old problem that I loved so much, that I had stopped working on when I went to Los Alamos; my thesis-type problems; all those old-fashioned wonderful things.
It was effortless. It was easy to play with these things. It was like uncorking
a bottle: Everything flowed out effortlessly. ...
There was no importance to what I was doing, but ultimately there was. The diagrams and the whole business that I got the Nobel Prize for came from that piddling around with the wobbling plate.
EDIT: Thanks for HN for proof reading this. Also found a more complete excerpt here.
Thursday, September 08, 2011
istail and ipeek
Prompted by a question in comp.lang.python:
Monday, August 29, 2011
"Top X" UI
Doing some experiments with data at work, one of the common tasks was "show top X items". However X was changing all the time. Finally I came out with a web based UI where you can set the top yourself. Hopefully someone else will find it useful.
Key points:
As usual, the code is in bitbucket.
Key points:
- Using jQuery, jQuery UI and flot
- Site is static, no backend needed
- Data is generated to a .js file
As usual, the code is in bitbucket.
Thursday, August 18, 2011
Crucible Command Line Client
At work, we use Crucible (which I mostly like). However we do reviews post commit (using feature branches). And creating a review from a patch is too much clicks to my taste. Hence crucible command line client. You can install it with easy_install crucible and then run it.
crucible has many options, but you can save many defaults in ~/.cruciblerc (see example at top of the crucible script).
crucible has many options, but you can save many defaults in ~/.cruciblerc (see example at top of the crucible script).
Wednesday, July 13, 2011
logio
The logging module is nice, one think I find myself missing here and there is the ability to treat logs as file objects. This help them "play nice" with many modules.
Here is a quick hack to do that, at the bottom there's an example on how to create CSV log files (and then we can use TimedRotatingFileHandler to rotate the logs).
Here is a quick hack to do that, at the bottom there's an example on how to create CSV log files (and then we can use TimedRotatingFileHandler to rotate the logs).
Thursday, July 07, 2011
PDB - The Movie
I did it again, this time showing how to work with PDB (the Python debugger).
Could it be the proximity to Hollywood that causes me to do these movies?
Could it be the proximity to Hollywood that causes me to do these movies?
Saturday, June 25, 2011
ingress
One of the many cool features in Twisted is "manhole". It lets you connect to any running server and get a shell (over ssh or telnet) in the server environment. This is very helpful when debugging.
It's very easy to implement this using SocketServer which is in the standard library, this way even if you're not running under Twised, you can still have this feature. I've created ingress just for this (easy_install ingress), using it is super easy:
The code itself is not that complicated. (Could have been simpler if there was a way to override writing to stdout in code.InteractiveConsole).
It's very easy to implement this using SocketServer which is in the standard library, this way even if you're not running under Twised, you can still have this feature. I've created ingress just for this (easy_install ingress), using it is super easy:
import ingress ingress.install()
The code itself is not that complicated. (Could have been simpler if there was a way to override writing to stdout in code.InteractiveConsole).
Thursday, June 09, 2011
3 IDLE Tips - The Movie
I've managed to make a screencast, giving tips on how to use IDLE.
(Yeah, I know - it sucks, but that's how I learn ... ;)
(Yeah, I know - it sucks, but that's how I learn ... ;)
Sunday, May 29, 2011
avrocat
After playing a bit with simpleavro, I've decided it'll be better done in the Unix tradition of "doing one thing well" and using pipes. Hence avrocat was born, a "cat" like utility for avro files.
EDIT: Seems like avrocat is finding itself into the "avro" package.
usage: avrocat [-h] [-n COUNT] [-s SKIP] [-f {json,csv}] [--header]
[--filter FILTER] [--schema]
filename
`cat` for Avro files
positional arguments:
filename avro file (- for stdin)
optional arguments:
-h, --help show this help message and exit
-n COUNT, --count COUNT
number of records to print
-s SKIP, --skip SKIP number of records to skip
-f {json,csv}, --format {json,csv}
record format
--header print CSV header
--filter FILTER filter records (e.g. r['age']>1)
--schema print schemaEDIT: Seems like avrocat is finding itself into the "avro" package.
Saturday, May 28, 2011
Wednesday, May 18, 2011
Delicous Monkey
Sadly, the official Delicious Firefox addon does not support Firefox 4.
I couldn't find any other addon online the gives me keyboard shortcut for saving the current page in Delicious.
Lucky for me, there is GreaseMonkey. Below is a short script to have CTRL-M save the current page in Delicious.
I couldn't find any other addon online the gives me keyboard shortcut for saving the current page in Delicious.
Lucky for me, there is GreaseMonkey. Below is a short script to have CTRL-M save the current page in Delicious.
Saturday, May 07, 2011
Convert PDF to JPEG
The wife needed a quick and dirty solution to convert PDF files to JPEG. Below is a quick UI (using Tkinter) about ImageMagic's "convert" utility.
Tuesday, April 05, 2011
A simpler named decorator
Everybody loves decorators. However there's is a difference if a decorator is called with or without () (as in @logged vs @logged("foo")). In the first case, the logged will be called with the function it decorates. In the second case, logged is called with a string and should return a function that accepts the function to be decorated. Below is a simple solution to support both cases in one decorator.
Saturday, March 26, 2011
A Whirlwind of Python
I gave a fast paced talk about Python at work, you can download it here. (Unzip and open index.html)
Inside the zip file are also the files used to create the talk. I've used s5 as framework and generated slides from Python source files using Pygments.
Thursday, March 03, 2011
Convert oggs to mp3 - the fast way
I've created a quick script to convert all .ogg files in a given directory to .mp3 (using oggdec and lame). However it was running too slow to my taste, a good excuse to play with multiprocessing.Pool. On a short list of 4 .ogg files the processing time went from 32 seconds to 12 seconds.
Wednesday, March 02, 2011
Adding XML support to ctags
I use ctags a lot with Vim. It let me jump to definitions quickly.
At work we have a lot of spring XML configuration files, and it was pretty easy to add support for XML to ctags. Just add the following to ~/.ctags.
At work we have a lot of spring XML configuration files, and it was pretty easy to add support for XML to ctags. Just add the following to ~/.ctags.
--langdef=XML --langmap=XML:.xml --regex-XML=/id="([a-zA-Z0-9_]+)"/\1/d,definition/
Subscribe to:
Posts (Atom)
