Open Source PDF Editor for Linux (and a windows one but not OSS)


# Update – I discovered a better PDF Editor than flpsed and have written about it here

I spend so much time typing and so little time writing these days, that when I have to use a pen, any length of writing ends up becoming a bit painful, especially so because I am left-handed and we are reknown for holding our pens incorrectly (among other things)

So, I haven’t used Adobe Acrobat for viewing PDF’s for a long time.. since Version 6.0 when it took forever to load and asked you to install 3 plugins which were 10mb downloads everytime you just wanted to view a PDF. So back then, I switched over to Foxit Reader. Anyway, I was reasonably quickly enchanted by Foxit’s own PDF Editor and used it quite a bit for a while to edit, annotate pages especially one time where we had to convert approx 900 wordperfect files to PDF with a Macro that added a footer and header and occasionally it would insert a blank page for no obivous reason, so PDFEditor was great to just remove the page and fix the page numbers on those odd few that happened.

Anyway, the point is that while we have A LOT of options on Linux and Unix for working with PDF’s (one which I am working with at the moment is JOOReports for batch processing Invoices and Statements by creating templates in OpenOffice), there is no simple, easy to use PDF Editor.. except flpsed. While it’s ultra-simplistic (no cut & paste, no undo, no select, move, delete etc) it will get the job done. It can work with both PDF and PostScript files and if you need to work with something else, well I guess you could convert it using Ghostscript. An easy install on Debian / Ubuntu flavours.

It’s in unstable repository, so you will need to have that enabled to do so and then:

sudo apt-get install flpsed

Be aware that you can only “open” a Postscript file. For PDF’s, you need to import them (I converted my pdf to postscript using pdftops before I saw the menu option ;)

EDIT: This post became reasonably popular quite quickly. There’s no true PDF importer that gives full editing capabilities in Linux as far as I know but I did find this PDF to HTML converter for Linux @ $34.95. From there, you should be able to open the html in openoffice and then save it as an .odt file or export back to PDF with your changes.

Technorati Tags: , , , , ,

Powered by ScribeFire.

VMware’s licensing practices following Microsoft’s lead?


Today, I tried to organise some VMware licenses for a customer who was running the ESX Starter Pack. Both my customer and myself were never aware that

  • To upgrade from ESX 3.0 Starter to Standard or Enterprise, you have to be an ‘Enterprise Partner’
  • To become an Enterprise partner, you need to pay US$1000 and ALSO
  • You need to have a Vmware Certified Professional as an employee

Did I get that right? They won’t sell me their product unless I get a VMware Certified Employee? That can’t be right.. come to think of it, maybe the licensing team at Ingram Micro who told me this information must think that the client is onselling the license… I will double-check that tomorrow. That half makes sense.

Anyway, to become a VMware certified Professional you can’t just go in and sit the exam after reviewing the some book. You need to do one of their courses @ US$2200, then and only then can you book your exam. It just happens I am booked to do the course next week in Canberra.

Maybe, it would all seem a little less relevant if I had bought some VMware shares when they were released, I read they jumped 75% in 1day while the rest of the market was near-crashing. The problem that occurs when a company goes public is that less importance gets place on the end customer because they now have two customers.. the share holders and the end-users.

Now that VT Processors are in the marketplace, it seems there’s some pretty decent reasons to take XenSource much more seriously. Although, they seem to have jumped into bed with MS of late also.

Technorati Tags: , , , ,

Powered by ScribeFire.

Beyond the Linux OS – Nexenta, ReactOS, Syllable & Haiku


I recently stumbled upon this very interesting interview with (ex) Linux kernel developer Con Kolivas. The article is definitely worth a read as Con expresses much of his frustrations with the performance of the Linux kernel for desktop users (much of it relating to scheduling) as well as some of his frustrations with the kernel development process.

I know myself that FROM A USER’S PERSPECTIVE, very high disk i/o can kill a HP DL-585 with 5 x 15K SAS drives, meanwhile the same task running on a lower end HP9000 running HP-UX11a will manage just fine. Go and run bonnie++ or gzip 2 x 4GB archives and also try and USE Linux, you will notice a a severe almost unusable system.

Now, I am one of those people who get caught reading comments of articles. I find some of my nicest little gems there, other suggestions etc. I came across Haiku and Syllable OS, two open source Operating Systems that AREN’T linux. Most people familiar with Linux will be aware that it’s roots are in Unix and so too are the BSD’s but Haiku and Syllable OS do not have Unix roots. Haiku has it’s roots in BeOS and Syllable is a fork of “written-from-scratch” OS called AtheOS.

Now, these aren’t the main two Operating Systems of interest to me. The really interesting ones for me are Nexenta OS and ReactOS. Why these two?

When I was looking to move from PCLinuxOS (and decided upon Ubuntu) I was taking a very strong look at running OpenSolaris for my desktop but I was seeing myself spending too much time trying to build from source or trying to get a decent desktop running as I wanted it. What drew me to Solaris? Three things:

ZFS was the main thing. It provides true snapshotting capabilities, among other things and I really wish something like OpenFiler offered ZFS as it’s main file system rather than LVM on Ext3. I would also like to do some Solaris Certification, so I want to get down and dirty with Solaris – when you work in IT with Financial Services, everything is very conservative – for godsakes, it’s a major problem trying to get approval to get bash and vim installed grrr. anyways..

Anyway, Nexenta OS is essentially Ubuntu on a Solaris kernel, as I understand it.. so I can have my pie and eat it too.. the best of both worlds – I expect it will probably end up replacing Suse 10.2 as my virtual machine fairly soon.

Next on the list, I mentioned ReactOS, why? It’s a windows clone ie: it’s designed to be an open source clone of windows. ie: it’s aim is to be 100% compatible with windows programs, drivers etc. Why is that necessary, why is that powerful? Because it can give to the windows world what we have in the Linux world. ie: distributing mini-virtual machines that are preconfigured with specific sets of services, databases etc. I know of quite a bit of software written for Windows that has no need for 90% of the windows ‘features’. The web hosting industry is a perfect example. Most of those running Windows are only doing so for asp, VB.net and C#.net and MSSQL of course. Now, the dotNet land has been mostly filled by the fruition of Migueld e Izaca’s dreams in mono. Ok, now we can compile and run .Net programs in Linux but there’s many who still need to run win32 applications that haven’t been (and won’t for a while) be compiled in Mono.

Many people dual boot their Linux PC into Windows just to play games – they are still tied to Bill and his crew. That’s where the power of a project like ReactOS shines. It starts to break those ties. It’s an alternative.

I’d still love to take Syllable and Haiku for a test-drive.. but I have too much on my plate at the moment. Maybe one day.

Technorati Tags: , , , , , , ,

Convert IIS ssl certificate to use in Apache


Last time I did this, I found the instructions pretty easily on how to migrate SSL’s from IIS to Apache. This time I found it hard to locate the documentation, so for my own lack of memory and when google fails you, here it is:

First we need to export the certificate from IIS into a pfx file. To do that:
Click Start->Run->type: mmc [enter]
Click ->’Console’ -> ‘Add/Remove Snap-in’.
Click -> ‘Add’ -> ‘certificates’ snap-in and click on ‘Add’.
Select -> ‘Computer Account’ -> click ‘Next’.
Select ‘Local Computer’ and then click ‘OK’.
Click ‘Close’ and then click ‘OK’.

In the menu for ‘Certificates’ and click on the ‘Personal’ folder.

Choose your certificate to export and select ‘All tasks’ -> ‘Export’.
In the wizard, check the box to include the private key, continue until you have a .PFX file.

Move the Certificate to the machine Running Apache:

Now, we are going to use openssl to extract the private key, and the cert file.

# Export the private key from the pfx file
openssl pkcs12 -in iis.pfx -nocerts -out apache.key.pem
# Export the certificate file from the pfx file
openssl pkcs12 -in iis.pfx -clcerts -nokeys -out apache.cert.pem
# ****This removes the passphrase from the private key so Apache won’t
# ****prompt you for your passphase when it starts
openssl rsa -in apache.key.pem -out apache.key

Technorati Tags: , , , ,

Troubleshooting Apache with mod_status, strace, apachetop, iftop & top

Ok – some real-life critical experience today.. one of our web servers notifies us (thanks to csf / lfd firewall ) that the server has had a high load for greater than 5 minutes. I get logged in and see the 5,10 & 15 minute load average exceeding 30 and this server normally runs at a load of <1

Here’s the MRTG Graph of the load:

A quick look at top showed me approx 15 httpd (apache) processes maxxing out the CPU. Now, it’s a shared server with hundreds of Virtual hosts and we need to find out which site is causing the issue.

Now, here’s the fun part – mod_status can help us out here, if we have it enabled.

/etc/init.d/httpd fullstatus or /etc/httpd/bin/apachectl fullstatus

should give you some output like

Srv PID Acc M CPU SS Req Conn Child Slot Host VHost Request
0-0 4419 0/403/403 _ 70.45 5 9 0.0 2.20 2.20 220.181.19.162 www.domain.com GET /096.htm HTTP/1.1
1-0 4420 0/270/270 _ 7.97 4 20 0.0 1.33 1.33 66.249.72.228 www.domain.com.au GET May24.htm HTTP/1.1
2-0 4421 2/274/274 K 8.49 2 319 0.0 1.03 1.03 66.249.72.228 www.cdomain.com.au GET /refrigeration/
3-0 4422 1/334/334 K 13.37 1 43 0.0 1.70 1.70 66.249.72.228 www.domain.com.au GET /image.php?number=11 HTTP/1.1
4-0 4423 0/211/211 _ 28.61 15 277 0.0 0.71 0.71 203.94.138.108 www.domain.com POST /mbalert.php HTTP/1.1

This obviously, isn’t the data from the moment the issue appeared but it was clearly obvious that it was one site causing the issue. I was a bit surprised because the majority of our servers run an Apache module called mod_evasive which in their own words does:

mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.

Detection is performed by creating an internal dynamic hash table of IP Addresses and URIs, and denying any single IP address from any of the following:
Requesting the same page more than a few times per second
Making more than 50 concurrent requests on the same child per second
Making any requests while temporarily blacklisted (on a blocking list)

Anyway, after a recent upgrade the server didn’t have mod_evasive installed. We know which site is causing the issue but the customer who owns the site is one of our best customers and it’s a Joomla site that we helped develop, so it’s important to keep it up and fix the issue.

Now, I need to know WHY the site is chewing so much CPU.

Tool #1. iftop – is like top for interface traffic. It shows local ip and port, remote ip and port and a graphic representation of the immediate traffic for the connection as well as totals and averages.

– are we seeing huge amounts of excessive traffic to the server, as in a DDOS attack? No let’s move on to the next tool.

Tool #2. apachetop – Apache top is like ‘top’ but for apache. The problem with it is that it needs to look at your server log and in this case, the Virtual Server has it’s own log, so we had to know which Website it was before using apachetop.

It’s most basic syntax is: apachetop -f /path/to/virtual_server.log

Ok, now we are able to see that the issue is from a web crawler called “webwombat” – An Australian search engine (that I have never heard of)

So, we grab the IP addresses of their bots and add them to the deny file for the firewall.. this is temporary to stop the load while we fix the underlying problem.

Tool #3. strace -What is strace?

strace is a system call tracer, i.e. a debugging tool which prints out a trace of all the system calls made by a another process/program.

strace is a hard tool to use with anything that spawns child processes. Because it only attaches itself to the process you tell it to and who knows which process is going to serve the next request? I guess you could change your httpd.conf to only run a single child process but for myself, I setup a small script with an infinite loop using wget or curl that calls a page of the site I am trying to catch. I then attach strace to one of the apache processes I see in top:

strace -p <processid>

and with my script running, within a minute or two I will see my chosen pid serve the request to the client (the script) and as it completes, I kill Ctrl-C out of strace (ensure you have a long buffer in your terminal window)

As the site in question is served, I noticed a very strange pattern that I didn’t see with other sites being served and here is a section of the output from strace:

setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\213\0\0\25”, 4) = 4
read(12, “\003568\2-1\n/uniforms/:index.php?opt”…, 139) = 139
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\253\0\0\26”, 4) = 4
read(12, “\003555\2-1)/refrigeration/glass-doo”…, 171) = 171
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\237\0\0\27”, 4) = 4
read(12, “\003554\2-1\35/refrigeration/chest-fre”…, 159) = 159
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\237\0\0\30”, 4) = 4
read(12, “\003553\2-1\36/food-preparation/meat-s”…, 159) = 159
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\271\0\0\31”, 4) = 4
read(12, “\003552\2-1:/food-display/hot-food-d”…, 185) = 185
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\242\0\0\32”, 4) = 4
read(12, “\003551\2-1 /food-preparation/spiral”…, 162) = 162
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\242\0\0\33”, 4) = 4
read(12, “\003550\2-1\37/uniforms/hospitality-cl”…, 162) = 162
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\240\0\0\34”, 4) = 4
read(12, “\003549\2-1\36/used-equipment/cash-reg”…, 160) = 160
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\242\0\0\35”, 4) = 4
read(12, “\003548\2-1 /miscellaneous/bag-seale”…, 162) = 162
setsockopt(12, SOL_SOCKET, SO_RCVTIMEO, “\2003\341\1\0\0\0\0”, 8) = 0
read(12, “\247\0\0\36”, 4) = 4

it was rows and rows of that. I go and take a look at the site. It has >700 items in a catalogue style layout. There were two issues:

Problem 1. The site is using SWMenu Pro – the client had requested that all 700 items in the catalogue be accessible from the flyout javascript menu and so, of course the client wasn’t talked out of his madness instead the developers complied – it currently pumps out >150kb of HTML for each page that loads. PHP was creating it for each page load. Fortunately has a caching option *that wasn’t turned on* – so you know what I did? Now the menu is cached, it no longer has to recreate it each time. That was half our problem fixed. Page load times dropped from approx 8 seconds, down to about 4-5 seconds.

Problem 2. OPEN SEF – I actually love Open SEF because it prevents you being a prime target to fresh Joomla security exploits by hackers using google. The problem in this case is that it is converting over 700 url’s on each page load. CPU killer number 2. This is a harder issue to fix but SWMenu has some good functionality that is just too hard to explain in writing.. but put simply, it allows you to manage an infinite amount of menu levels in a very granular way. I don’t feel I need to get into this just now but at least it’s there if we have further issues.

I watched Googlebot go over the site and load stayed very low and it’s certainly not the kind of site that will get on Digg, Reddit or Slashdot, so I am satisfied with that for now.

The only thing that needs to be done, is to install mod_evasive, this would prevent bots like webwombat from being able to make too many simultaneous requests. If you DO run mod_evasive be aware that you want to be careful with it. Some things to watch out for:

  • Make sure mod_evasive isn’t blocking google. Your customers wouldn’t be happy for the traffic they are losing.
  • If you do any load testing, make sure you disable mod_evasive before doing so

Good luck.. and kudos to all those who wrote the great tools above.

Technorati Tags: , , , , , , ,

Powered by ScribeFire.

Open Source Flashcard Learning with Granule or Jmemorize


Whether you are trying to study for your RHCE, MCSE, Solaris, Linux+  or some University exams or maybe even trying to learn a new language, having some flashcards can be extremely helpful – for both short-term and long-term learning.

I have a pretty good system setup: cross-platform, remote learning.

I have played with both Jmemorize and now Granule – Granule is written in C++ & GTK and Jmemorize is Java both run on different platforms and are based on the ‘famous’ Leitner system. Jmemorize has some fancy graphs and Granule doesn’t. Both use XML as their file format.

My setup is Ubuntu at home: apt-get install granule

a no-brainer

Windows is harder to install – it’s not hard, I just love saying that.

1. Download the zip file to your “Program Files” folder
2. unzip it.
3. Go into c:\Program Files\Granule-1.2.4-1-win32\bin\
4. Right-click -> Send to Desktop
5. Drag it into your Programs bar (so that it is indexed by Launchy)

Now the good part is that I use Mindquarry Collaboration server but this could easily work if you’re already using CVS or Subversion source control server. Basically, save your files that you created into your mindquarry team folder and synchronise.

Now, I synchronise the Mindquarry server every day when I arrive and leave the office and the same when I am finished at home. That way, I am free to continually add data that I want to practice memorising.

In my case, I am trying to increase my spanish vocabulary and subscribe to a few “Word a Day” RSS Feeds. I add each example to Granule each day and go through the whole set. Now, what I would really like is to be able to set them to use a transparent OSD (on screen display) every minute or so with a new word and 30 seconds later, it’s answer. I think that could help greatly.

Granule have some english dictionary words available for download here, if you also want to increase your english vocabulary, which is something I think we could all do with.

**UPDATE**

Considering my interest in Python and WXPython as well as the fact that Granule has corrupted the odd xml file where it saves it’s data, I thought I might also add that Pyflashcard is another alternative that runs on both Windows & Linux and maybe even a Mac. Read more about it on the author’s site.

Technorati Tags: , , , ,

Powered by ScribeFire.

What Windows Needs – Synaptic (or any other package manager)


The weekend saw me doing a Motherboard / CPU / HDD upgrade on one of our household’s PC’s – It’s a Windows 2003 server that had an IDE drive in it and the new Mobo was SATA. The day before, the system wouldn’t boot – some cool bad sector business had caused it. So, I didn’t have a working image to restore to the new hard drive and the system has been running for about 2 years anyway, so I figured it’s probably time for a fresh install.

But I forgot one thing – Windows doesn’t have a package manager. Here’s what I have installed so far.

In the GNU/GPL/LGPL etc front I have installed:

  1. 7zip (zip / rar / tgz etc)
  2. Filezilla (ftp client)
  3. Winmerge (diff tool)
  4. Pidgin (msn / yahoo / jabber client)
  5. OpenOffice (office suite)
  6. Mindquarry client (for Mindquarry Server)
  7. Firefox (browser)
  8. Putty (ssh client)
  9. Winscp (scp client)
  10. NXClient (nomachine X client)
  11. PDFCreator (pdf printer)
  12. Python2.5 (language)
  13. WXPython (widgets for python)
  14. BWgBurn (burning program)
  15. Notepad++ (notepad on steroids)
  16. Gvim (Graphical vi text editor)
  17. Launchy (free’s me from the Start menu)
  18. Keepass Password Safe (stores passwords – synch’s with mindquarry server and accessible from all my machines)
  19. tortoisesvn (Subversion client)
  20. Miro (ex-Democracy player ie: download free (non-pirated) movie content)

On the non-GPL but Free front:

  1. Skype
  2. Opera
  3. JRE 1.5
  4. Picasa
  5. Foxit Reader (win32 pdf reader without the bloat)
  6. Copernic Desktop Search (google desktop doesn’t play nice on Terminal Servers)
  7. .NET 2.0

Now that’s a lot of :

  1. Google
  2. Download -> wait -> Choose Version -> Save As
  3. Run -> click, click, click, click, finish

Those packages are just what I could think up off the top of my head – I am sure there’s a bunch more to come. What would be REALLY, really nice is if we had a package manager like synaptic so that I could just point it to a text file backup of my package selection and it goes away and downloads and installs it all for me. As you can see above, I think there’s enough quality open source packages that could justify such a cause.

The cygwin project is a prime example (although finding the packages you want could be nicer ie: searching) on how a package manager could work.

There are two projects in the works trying to achieve this but both are quite immature with a limited choice of programs to choose from:

The aptly named Windows Package Manager can install putty for you which is kind of harder than just ‘installing’ putty yourself but it’s a start and WinLibre, which I only discovered after installing all of the above programs already and it doesn’t have half of the programs I use anyway.

Maybe when I get through “Dive into Python” book I might take the project on – but then, the book’s author Mark Pilgrim has the same gripe about MacOSX in this post so I might just stick with my Ubuntu and plug any efforts I make in that area.

UPDATE: As chance would have it, Lifehacker wrote an article on a apt-get like tool for windows called win-get

I gave it a bit of a try but it kept failing at the point of running the installer ie:

C:\scripts\wx>win-get install vlc_playerChecking for mirrors…Searching For Best Mirror:Searching For Best Mirror…Pinging: ftp.snt.utwente.nl … No Reponse.–13:26:14–  http://ftp.snt.utwente.nl/pub/software/videolan/vlc/0.8.4a/win32/vlc-0.8.4a-win32.exe           => `vlc-0.8.4a-win32.exe’Resolving ftp.snt.utwente.nl… 130.89.175.1Connecting to ftp.snt.utwente.nl|130.89.175.1|:80… connected.HTTP request sent, awaiting response… 200 OKLength: 9,692,886 (9.2M) [application/octet-stream]100%[========================================================================================>] 9,692,886    187.52K/s    ETA 00:0013:27:12 (164.42 KB/s) – `vlc-0.8.4a-win32.exe’ saved [9692886/9692886]File Retrieved Successfully..Launching Installer…Unable to run installer.

Technorati Tags: , , , ,

Powered by ScribeFire.

Troubleshooting tools: ping, pathping, httping and nmap

Too many times I have heard people determine that a host is not up because they can’t ping it. Most of us (myself included) run for ping and traceroute whenever we have an issue with connectivity – but ping and traceroute rely on icmp being permitted on the routers or hosts that you are traversing to reach your final destination and many firewalls blocks these.

This is where we bring in some handy tools:

HTTping is ping for http-requests. It’s pretty much like using ping except the basic switch is:

httping -h hostname.com

On debian / ubuntu distros:

sudo apt-get install httping

httping can also access alternative ports BUT remember it is still making http-requests.. so, it won’t help checking your mail server. We can use Telnet for a quick check on most other ports – but specifically, httping helps us check latency in this scenario.

If you need a constant graphed monitoring solution for the same, checkout Smokeping

Sometimes getting to know your environment can help you sort out what your dealing with. For example, php now has a config in php.ini that prevents you from viewing the output from your typical phpinfo:

< ? phpinfo() ?>

So, you don’t have shell access (shared server), how do you find it out? It’s pretty easy using a cross-platform security tool called nmap.

sudo apt-get install nmap

And here’s a starting point:

nmap -A www.hostname.com -p 80

Returns us:

Interesting ports on 203.83.13.71:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.2.0 ((Win32) DAV/2 mod_ssl/2.2.0 OpenSSL/0.9.8a mod_autoindex_color PHP/4.4.1-pl1)

There’s some nice gui’s around for nmap and if you are getting interested in security scanning, then it’s also worth checking out Nessus

Now, back to performance and diagnostics – Sometimes, we see pings are slow and we do a traceroute but traceroutes do not provide the ability to see the response time over a timeframe. Microsoft came up with a hybrid of ping and traceoute called ‘pathping’ – There is no native utility in Linux (that I know of) but there is a nice perl script that does pretty much what pathping does.

You can get it for Linux (and I guess Mac also) by using this one liner as root:

wget -O /usr/bin/pathping http://calle.ioslo.net/professional/downloads/perl/pathping/pathping && \
chmod 755 /usr/bin/pathping

and to RTFM, if you haven’t already got it installed.

sudo apt-get install perl-doc

but not much to see there except the –numeric switch that prevents DNS lookups

ie:

pathping –numeric hostname.com

Hope the above helps.

Powered by ScribeFire.

Facebook & Django with Pyfacebook – and a blurb on open source

Update May 2009: If you made it here trying to find how to write Django apps for Facebook, probably the best resource I have seen to get started is How to build a facebook app in Django

Interesting links of the day:

Python, Django and Facebook with pyfacebook.

Jerry Seinfield’s GTD method on Lifehacker

Came across www.opensourcefood.com and Open Source House

Recipes are a perfect example of how open source works and yet can still be profitable / financially sustaining.

Imagine, my Open Source House that utilises Open Source Automation that I can control with my Open Source Phone that I can design new covers for using my Open Source Fabricator which synchronises, monitors, tunes my open source car or maybe even tracks my daily travel on my open source bike.

I am currently writing a full article about this.. stay tuned.

Technorati Tags: , , , , ,

Powered by ScribeFire.