I love PortableApps!

I was telling a colleague about the virtues of KeePassX and how it’s part of the PortableApps suite,  when I realized just how much I’ve come to rely on my PortableApps USB flash drive. Switching between various Windows desktops and laptops, it’s been convenient to have the same apps available on each system – but especially to have the same config settings and user profiles. The apps are all free, and almost all of them are open source. The convenience of the new PortableApps Platform is also really great, with automatic checking of apps for updating, and then downloading and installing.

Here are the PortableApps I’ve been using on a fairly regular basis:

  • 7-ZipPortable – zip and tar archive file utility (I use the extremely efficient 7zip native format as well, but not as often).
  • FirefoxPortable – as a consumer I tend to stick with IE, but as a developer it’s FireFox with plugins: Web Developer, Developer Assistant, PHP Developer Toolbar – and especially Pencil for wireframing.
  • FreeCommanderPortable – a nice dual-pane file explorer with lots of goodies, and supports remote file systems using FTP.
  • GIMPPortable – for advanced bitmap graphics editing (no way can I justify PhotoShop for the occasional use I need).
  • WinHTTrack – for cloning websites locally for offline browsing or easy local inspection of HTML/images/content (WinHTTrack isn’t actually a PortableApp, extract the portable version from the Httrack project to the PortableApps directory, then refresh the men app icons).
  •  IcoFXPortable – for editing application icons.
  • InkscapePortable – for creating and editing vector graphics drawings (an alternative to Adobe Illustrator or CorelDraw – which I also can’t justify for only occasional use).
  • InfraRecorderPortable – a basic CD/DVD recorder (it’s nice to have the same recorder handy, regardless of what might be installed locally on a system).
  • IrfanViewPortable – my Goto graphics file utility for viewing and simple manipulation (cropping, scaling, filtering, converting between file types, etc.).
  • LibreOfficePortable – Fully-featured office suite for when MS Office isn’t available (maybe one day LibreOffice will merge back into OpenOffice, but I’m not holding my breath).
  • LightScreenPortable – an easy to use simple screen shot grabber.
  • Notepad++Portable – my Goto text editor for simple text and source code with syntax highlighting when an IDE is too much.
  • PDFTKBuilderPortable – Basic PDF manipulation such as compiling multiple documents into a single document, extracting one or more pages from a document, rotating a page in a PDF document, etc.
  • PuTTYPortable – the defacto ssh client (I especially like right-clicking to paste highlighted text at the cursor).
  • SumatraPDFPortable – in case Acrobat Reader isn’t installed (which is rare), but also as an alternative – sometimes it will render a not-quite-standard PDF when Acrobat Reader refuses to.
  • SynkronPortable – for synchronizing directories (e.g. between a local directory and one on my PortableApps USB flash drive).
  • TaskCoachPortable – TaskCoach is a cross-platform task manager I’ve started using for personal web app projects so it doesn’t matter whether I’m currently on a Windows or a Linux laptop.
  • ToDoListPortable – is another task manager, but Windows only. I started using this one first, and I’m still using it (as well as TaskCoach) because it supports assigning tasks to different users and then filtering on assignee (whereas TaskCoach is pretty much for one user’s personal tasks only).
  • VirtuaWinPortable – provides multiple virtual desktops for making sense out of too many open windows (although unless you have a fast processor and lots of RAM, you’re probably better off closing windows instead).
  • WinDirStatPortable – for understanding where all my drive space has gone.
  • winMd5SumPortable – for calculating and verifing md5 file checksums.
  • WinMergePortable – for three-way code merging, although mostly I’m using it with only two files for a nice graphical comparison of differences.
  • WinSCPPortable – another dual-pane file explorer, but with one of the panes being a remote Unix file system accessed via scp.
  • XAMPP – a Windows Apache/MySQL/PHP stack for web app development, plus a few extra goodies (you have to download XAMPP separately and extract to the root of your USB flash drive, and then use the XAMPP Control Panel PortableApp for easy access).


Adding Up SaaS Applications

Incorporating SaaS applications into an enterprise’s business processes can offer a number of advantages, including:

  • focusing internal resources on core strategic strengths instead of infrastructure services
  • being able to pick the best fit from a variety of mature low-risk best-of-breed applications
  • lowered internal IT hardware and support costs
  • well-defined costs

But as always, nothing comes for free and the cost of individual applications adds up quickly. For example, assuming a sales and development SME on a growth track with 100 employees, including a 10-person sales team, a couple senior admin/HR roles, consolidated project management across the organization and a product engineering team who working with part numbers and bills of materials, and using the following SaaS applications:

  • Taleo Recruit for talent recruiting – $500/month (Taleo Business Edition Recruit module, 5 users)
  • Saba People Cloud for basic talent management – $500/month (based on competitor Kapta pricing of $5/person/month)
  • Salesforce for customer relationship management – $1250/month (Enterprise version, 10 users)
  • KnowledgeTree for document management (engineering, legal, administration, etc.) – $2000/month (100 users)
  • Basecamp for project management – $99/month (100 projects, 40 GB storage)
  • Aligni for engineering to manage parts and bills of materials – $199/month (< 10,000 parts)

The total is $4,548/month, and doesn’t include an ERP system for managing financials – which could add another $3,330/month (for either a basic system with limited extensibilty, or the base price for an extensible system before add-ons and customization).

Now, I’m not saying this isn’t money well spent, and for many organizations it is. But bear in mind it’s cash off the bottom line and attention (a rare and precious commodity) taken away from something else in order to learn something new. Carefully consider the complete value – and the complete cost – before signing up for another monthly payment on a credit card, because that’s the easy part.

SourceForge, Encryption, and U.S. Export Control Restrictions

I was registering the Adapto project on SourceForge today, and when I got to the Export Control question, ended up spending more than few minutes researching U.S. export regulations relating to software and cryptography. Be warned though, I am not a lawyer and the following is not legal advice. I urge you to consult a professional for advice specific to your situation.

SourceForge is operated by Geeknet, Inc., a publicly traded US-based company. When someone outside the U.S. downloads code from a SourceForge project, SourceForge is actually exporting the code from the U.S.

Export of software including cryptography functions from the U.S. is controlled by the Bureau of Industry and Security (BIS) according to the Export Administration Regulations (EAR) and the Commerce Control List (CCL). This includes software that only calls encryption functions in an external library, such as the PHP openssl_public_encrypt and openssl_public_decrypt functions.

In 2010, the BIS amended the EAR by excluding software products where the use of encryption is ancillary to its primary function and the primary function is not information security or the sending, receiving or storing of information, where the cryptographic functionality is limited to supporting the primary function of the software product, and when details will be provided upon request to a U.S. authority (see EAR Controls for Items that Use Encryption on the U.S. BIS website).

Adapto is a small PHP framework targeted at creating data management applications with minimal code. Although Adapto includes cryptographic functions (implemented through PHP library functions), they are provided only for potential use by an application program and are not used in the normal operation of the framework. They are also not used in the tutorial demo application included with Adapto, and so it appears export of Adapto from the U.S. is not controlled.

Since Adapto does incorporate encryption, it has been noted in the SourceForge project Metadata, but since it is not controlled based on the above analysis, the project does not require reporting to the U.S. government as noted by SourceForge.


Git on Windows

Update 2012-09-14. Install Git-Extensions – nothing else needed! (msysgit and kdiff3 are included in the install).

I’ve been happily using Mercurial for personal projects (the cli on Unix and TortoiseHg on Windows), but avoiding Git has been like holding back the sea. The dike finally broke on Saturday, when Ivo Jansch announced he was forking ATK (the incredibly efficient PHP web app RAD framework he had created while at iBuildings), and I could see Git was going to become a much more significant part of my development flow (more on this to come I hope).

Refreshing my memory of Windows Git clients, it seem the main choices are:

Git for Windows (aka git-gui) is the official Windows client. I’ve tried it before and it works, although not as polished as TortoiseHg.

SmartGit, although commercial software, is interesting because it supports both Git and Mercurial, and a review recommended SmartGit for new Git users. The review also said SmartGit is “free for personal use”, but my interpretation of the free non-commercial license is that including SmartGit in any revenue-generating activity is not allowed. In other words, I don’t believe the license permits you to use SmartGit for managing your open-source project if you are also selling services related to the project. That said, I’m going to try out SmartGit first – if only to get my Git-legs back.

TortoiseGit is a port of TortoiseSVN for Git, and I suspect what I will eventually be using -  unless SmartGit is so impressive that I’m willing to part with $80 for a single-user commercial license.

I’ll update you after spending a couple weeks with SmartGit and TortoiseGit.


Samsung SCX-4200 on OpenSuse 12.1

I finally had a chance to setup my Samsung SCX-4200 printer with my Lenovo T61 laptop running OpenSuse 12.1

First, I tried the automatic printer recognizer in OpenSuse. No luck after installing the recommended printer driver, but it wasn’t a Samsung driver so perhaps that wasn’t too unexpected.

On the recommendation of G(r)eek Bitches’, I downloaded the Samsung SCX-4300 Universal Printer Driver from Samsung (the Samsung page has been changed since the article was written, so you’ll have to search the Samsung site). Extract the files from the tarball into a local temp directory and then execute the install.sh file in the Linux directory using sudo. Have the script add your username to the “lp” group and specify “scx4200″ as the printer. After completing the install, I printed some pages from a PDF using Document Viewer (included with OpenSuse) and then some source code from NetBeans. Other than some clunky driver dialogs with NetBeans, both printed fine.

However, there  were a number of error messages during install. All seems OK, so perhaps the driver package hasn’t kept up with OpenSuse (although I haven’t checked scanning functions yet).

dale@linux-zqvn:~/Downloads/temp/cdroot/Linux> sudo ./install.sh
root's password:

libstdc++.so.5 (gcc 3.0.x .. 3.3.x) not found, install … done
**** It seems Qt library is not installed, or X display is not accessible.
**** Custom Qt library will be configured for use with this package.
GUI mode installer execution failed, proceeding in text mode
**** Running text mode install
**** Press Enter to continue or q and then Enter to quit:

**** Non-priviliged users found:
nobody dale
**** Are you going to use USB-connected devices ?
**** If yes, users allowed to scan or manage printers should be added to lp
**** group. The list of non-privileged users proposed for addition is shown above.
**** Press y and then Enter to add users or Enter to leave lp group intact: y

**** Print drivers for the following device models available:
CLP-300splc CLP-310splc CLP-340splc CLP-350ps CLP-500splc CLP-510splc CLP-550ps CLP-600splc CLP-610splc CLP-620splc CLP-650ps CLP-660ps CLP-670ps CLP-770ps CLX-216xsplc CLX-3160splc CLX-3170splc CLX-3180splc CLX-3240splc CLX-6200ps CLX-6220ps CLX-6240ps CLX-6250ps CLX-8380ps CLX-8385ps CLX-9250ps mfp560 mfp65x mfp750 ML-1450ps ML-1510spl2 ML-1520spl2 ML-1610spl2 ML-1630spl2 ML-1630wspl2 ML-1640spl2 ML-1710spl2 ML-1740spl2 ML-1750spl2 ML-191xspl2 ML-2010spl2 ML-2150ps ML-2150spl2 ML-2240spl2 ML-2245spl2 ML-2250spl2 ML-2510spl2 ML-2525w ML-2550ps ML-2550Sps ML-2550Sspl2 ML-2560ps ML-2570ps ML-2580spl2 ML-2850ps ML-2855ps ML-3050spl2 ML-3470ps ML-3560spl2 ML-4050DMVps ML-4050ps ML-4550ps ML-6060ps ML-7300ps ML-8x00ps scx4100 scx4200 scx4300 scx4500 scx4500w scx4600 scx4623 scx4725 scx4x16 scx4x20 scx4x21 scx4x24 scx4x25 scx4x26 scx4x28ps scx5312f scx5635ps scx5835ps scx5x30 scx6545ps scx6x20PCL scx6x20 scx6x20PS scx6x22ps scx6x45ps scx6x55ps scx8030ps sf531p
**** Please enter model to install and press Enter: scx4200
INFO: Restarting udev …
Usage: udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]
info query sysfs or the udev database
trigger request events from the kernel
settle wait for the event queue to finish
control control the udev daemon
monitor listen to kernel and udev events
test simulation run

control: unrecognized option ‘–reload_rules’
INFO: Installing MFP port and SANE backend libraries …
cat: /etc/modprobe.conf: No such file or directory
INFO: Installing GUI lpr …
INFO: Fixing file ownership and permissions …
INFO: Registering SANE backend …
INFO: Registering CUPS printer …
redirecting to systemctl
INFO: CUPS restart OK
INFO: Creating menu entries …
mkdir: cannot create directory `/proc/Desktop’: No such file or directory
chmod: cannot access `/proc/Desktop’: No such file or directory
chown: cannot access `/proc/Desktop’: No such file or directory
mkdir: cannot create directory `/proc/.gnome-desktop’: No such file or directory
chmod: cannot access `/proc/.gnome-desktop’: No such file or directory
chown: cannot access `/proc/.gnome-desktop’: No such file or directory
./install.sh: line 1212: [: : integer expression expected
INFO: Adding users to lp group …
INFO: Finishing installation …
**** Text mode install finished