Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Monday, June 15, 2015

The Default Files Folder Pattern

Software installation best practices

When you've got critical settings files that absolutely should never be overwritten or cleared back to defaults, this pattern has always worked well for me. It can apply to both Windows, Linux and Mac based software.

The installation method can either be a simple file copy utility/archive or something more complex like a Windows installer.

An example target structure might look something like this:

/MyApplication
    /bin           => Application binaries.
    /defaults      => A default version of all
settings files.
    /docs          => Documents or manuals.
    /settings      => Critical settings files.

             
The settings folder contains the critical settings files and is not part of the installer. The installer includes only the bin, defaults and docs folders. So installing the software only overwrites bin, defaults and docs, but never the settings. This applies equally to Windows installer packages - for this case, just don't include the settings folder in the Windows installer package. The defaults folder contains the default version of all of the the files expected in the settings folder.

Whenever the software accesses a particular file in settings the following lazy initialisation logic is used ...

- Does the settings folder exist?
    - Yes: Continue
    - No:  Create the folder and continue
   
- Does the file exist?
    - Yes: Open it
    - No:  Copy the file from the
defaults folder into the
           settings folder, then open it

By following the above logic, you ensure that an existing critical settings file is never overwritten.

From reading the latest report on the deadly Airbus A400M crash, its claimed that the cause was that their software installation procedure did the equivalent of overwriting a settings file or clearing it back to defaults. In this case, the settings file contained calibration parameters that were critical to the operation of 3 out of the 4 propeller engines.

Follow @dodgy_coder

Subscribe to posts via RSS

Saturday, August 30, 2014

Essential free windows software

Here's a quick checklist of the free software I usually install on new Windows machines ...

Browser: Firefox - still the best browser in my opinion, with a wealth of developer tools. Chrome is also good but I found it to be prone to crashing, so gave up on it. After installing Firefox, I remove the Internet Explorer link on the task bar.

Email: Thunderbird - runs a bit slow sometimes, but the Thunderbird portable version is great to carry around on a USB thumbdrive. Check out these tips on how to speed up Thunderbird on Windows 7.

Anti-virus software: Microsoft Security Essentials. Nothing fancy but gets the job done.

DVCS (Distributed Version Control System): Git for Windows. Includes a command line shell which features decent help for all the git commands. You can use this to pull from and push to remote repositories hosted on services such as GitHub and BitBucket.

SVN client: Tortoise SVN client which integrates with Windows Explorer right click menus.

Flash: Adobe Flash Player. Be sure to uncheck the McAfee Anti-virus installer option. I really hate installing Adobe software onto a new PC. My only reason for doing it is for the many websites that still rely on flash.

File archive/compression tool: 7-Zip supports many formats, such as zip, rar, gz and tar, is fast, and open source.

Media player: VLC Media Player. This is a great music and video player which also can be used to rip DVDs and CDs. After installing it, I remove the Windows Media player link on the task bar.

Text editor: Notepad++. An excellent replacement for Notepad which supports syntax highliting for probably every known programming language, including Golang, via a simple language syntax file.

PDF creation: PDF Creator installs itself as a printer on your system, so when you print to it, it prompts you for the PDF filename to create.

PDF viewer: Sumatra PDF. This is an extremely fast PDF viewer, written in C++. It has a simple, uncluttered user interface. It also supports other formats such as XPS. Makes a nice change from the bloated incumbents, Adobe Reader and Foxit Reader. Refreshingly there's no adware or spyware in the installer and they also offer a portable version (no install required).

Office software (spreadsheet, word processor, slideshow): Libre Office and Open Office are free alternatives to the more widely used Microsoft Office, which still claims top spot in the number of businesses using it. Try and get the discounted MS Office Student Edition, or a discounted MS TechNet license to save money on the standard price. This site offers digital downloads of the various MS Office installers, however you will still need a valid license key to install it.

CD/DVD burner & ripper: ImgBurn

Bitmap graphics editor: either Paint.NET or GIMP. Both are excellent alternatives to the long established Adobe Photoshop.

Vector graphics editor: Inkscape is a fully featured alternative to Adobe Illustrator.

Diagram editor
: Dia is useful for creating things like flowcharts, network topology maps and block diagrams ... its an excellent free alternative to Visio.

Graphic file viewer: IrfanView is a compact and fast picture viewer for Windows. Its claim to fame is that it has been around forever (well at least since 1996) and is maintained by a humble dude from Bosnia called Irfan Skiljan (pronounced "Earfan") hence the name of the software. It has built in support for many file formats such as PCX, TIFF, RAW and other arcane formats such as those used on Amiga, Atari and Silicon Graphics machines. You can also use it to do batch format conversions.

Digital darkroom software: LightZone is a great free alternative to Adobe Lightroom. You'll just need to sign up for an account on their website before getting a download link.

3D graphics and animation: Blender is a free and open source 3D animation suite. It supports the entirety of the 3D pipeline - modeling, rigging, animation, simulation, rendering, compositing and motion tracking, even video editing and game creation.

3D modeling: SketchUp is an easy to use 3D modeling program. It has uses primarily in the fields of architecture, interior design, mechanical engineering and industrial design. Its free for personal and educational use. Their website has a large repository of 3D models that you can download.

Video editing: Blender mentioned above (under 3D graphics) can also do video editing, but for a standalone video editing program for Windows, one of the best available is Lightworks. The standard version is free, but they offer also paid pro version which has more advanced features. A decent alternative to Adobe Premiere. For only basic video editing, then the free Windows Movie Maker from Microsoft is a good option.

Password safe: KeePass. Comprehensive list of features, is open source, and is under active development.

File synchronisation: Dir Sync Pro. Useful for keeping local offline backups of entire directory structures or hard disks.

Binary hex editor & viewer: FRHED (FRee Hex EDitor) is a great little program. What's more there's no installer, just a simple .exe file you can put anywhere you want. Great for viewing, editing and searching through binary files.

Task manager: Process Explorer by Windows guru Mark Russinovich is like the Windows Task Manager on steroids. You can find out which files and DLLs a particular process is using.

C# REPL: CShell is an interactive C# interpreter, also known as a REPL (Read-Evaluate-Print-Loop). Such tools are par for the course for scripting languages like Ruby (irb). CShell lets you try snippets of C# code or call a DLL in a couple of lines, without having to fire up a heavyweight tool like Visual Studio.

Follow @dodgy_coder

Subscribe to posts via RSS