A very brief post on the inflaton particle, or what created the Big Bang

Andromeda Galaxy by Spitzer Space Telescope
Andromeda Galaxy by Spitzer Space Telescope

I’ve been completely nerding out with books on cosmology and looking over astrophysics articles recently. As a photographer I’ve been interested in space telescopes and I wanted to share this incredible view.

This is a false-colour image of the Andromeda galaxy by the Spitzer Space Telescope in 2005.

What’s more amazing to me is the analysis of the cosmic background radiation that surmises the need for an inflaton particle, or what we know was “the instant at or before the big bang”, and that due to it’s extreme energy and effect of quantum jitters on a Plank-length scale, the universe is at a macro-scale uniform, but at a micro-scale different enough to unevenly distribute the density of the Higgs field, allowing for particles to collide and create astroids, planets, stars and galaxies as we know it.

Without the inflaton particle and the quantum jitter to be just the way it was, we wouldn’t be here today.

This theory also surmises that there are an infinite amount of universes that were created in the same way, but most weren’t so lucky to have created the particle properties we see and feel today.

With an infinite amount of universes, an infinite amount of space and an infinite amount of time, our cosmic expanse allows us to also surmise that there are an infinite amount of lives playing out, just like ours, only with extremely minute differences.

And *boom* goes your brain.

How to speed up rsync on your Mac (and stop the dreaded “building file list…”)

UPDATED (2013-08-06): Added notes about requiring Xcode to compile rsync (if compiling is the route you choose).

Quick Story

I have a 3TB hard drive full of my RAW (.CR2) photography files that I replicate to another drive every time I Adobe Lightroom. Recently the main drive recently crashed but luckily I had my backup up and running and synced the night before! For those interested, the USB cord was pulled while in operation. I usually take time to recover my fallen hard drives, but because I had a backup, I quickly moved on.

My rsync Command

Now that my backup photography hard drive is my new main drive, I had to sync 3TB of data to a new backup drive. For this, I usually run a simple rsync command as such,

rsync -av /Volumes/Photography/ /Volumes/PhotographyBackup/

Screen Shot 2013-08-05 at 3.14.55 PM

Easy enough, but the rsync command sat on “building file list…” for hours and hours and hours because 3TB and millions of files is a large “file list” for rsync to create.

Quick Aside

Do not use the -z flag for local hard drive to hard drive data transfers as -z is the “compress” flag and can bring your computer to a crawl when you don’t need to use it in the first place.

You can add –delete to remove make sure files deleted on the SOURCE drive are deleted on the DESTINATION drive. e.g. If I delete /Volumes/Photography/old_folder/, it won’t delete it off of /Volumes/PhotographyBackup/ without using –delete.

rsync -av --delete /Volumes/Photography/ /Volumes/PhotographyBackup/

You can also view statistics of the transfer when it’s complete.

rsync -av --stats /Volumes/Photography/ /Volumes/PhotographyBackup/

rsync Out-of-Date on Mac OS X

As of this writing, Apple’s Mac OS X 10.8 Mountain Lion’s rsync is at version 2.6, while rsync has had 3.0+ released for some time now. Luckily rsync 3.0+ has a reduced memory footprint and creates a chunked (bit-by-bit) “file list”, rather than waiting for the entire list to be made first and then beginning transfer. This means moving to rsync 3.0+ will dramatically speed up the time before rsync begins its first transfer, e.g. fix the “building file list…” hang.

They state this explicitly in rsync 3.0+ by saying “sending incremental file list” rather than rsync 2.6′s “building file list…”.

Quick Note on Linux

I looked up Debians’s & Ubuntu’s, Fedora’s and SuSE’s package version for rsync and luckily they have been using 3.0+ for some time, so if you’re on a modern Linux distro, you don’t need to follow these instructions. If you’re on a Linux server or an old Linux desktop/laptop install, you may want to check for yourself.

Installing rsync 3.0+ on Mac OS X

Do not run all of these commands, you have a choice of which one you prefer.

A) Use Homebrew

If you use Homebrew, you can run this command,

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/rsync.rb

B) Download & Compile

i) Download the Stable Version

Please visit the stable folder to find the most recent stable version as the version numbers may have changed.

cd ~/Downloads/
curl -O https://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
tar -xzvf rsync-3.0.9.tar.gz
cd rsync-3.0.9

Or…

ii) Download the (in development) Nightly Version

cd ~/Downloads/
curl -O https://rsync.samba.org/ftp/rsync/dev/nightly/rsync-HEAD.tar.gz
tar -xzvf rsync-HEAD.tar.gz
cd rsync-HEAD*

Compiling

./configure
make
sudo make install
chmod +x ./rsync

Possible Errors

If you receive,

configure.sh: error: no acceptable C compiler found in $PATH

or,

-bash: make: command not found

It is because you don’t have the proper compiler tools installed. Apple requires Xcode to be downloaded and installed from the App Store and have the “Command Line Tools” installed to compile software.

Once the app has been downloaded and installed, to install “Command Line Tools” go to “Xcode” -> “Preferences” -> “Download” and install “Command Line Tools” there.

Running the Command

Staying inside the folder it was compiled, you can now run your rsync command similar to before,

./rsync -av /Volumes/Photography/ /Volumes/PhotographyBackup/

Or because rsync 3.0+ has a full-transfer progress indicator, rather than a file-by-file progress indicator, feel free to use –info=progress2 as an option.

./rsync -a --info=progress2 /Volumes/Photography/ /Volumes/PhotographyBackup/

Screen Shot 2013-08-05 at 4.05.33 PM

Ah, the open source licensing issue.

In my office, I manage a team of programmers who develop iPad apps for clients. We use HTML5, CSS3, jQuery, a customized version of jQuery Mobile, PhoneGap and an Objective-C PhoneGap plugin which consists of a lot of small libraries put together and tweaked.

The issue we face — since the Internet has become a boon for programmers, with such open source collaboration websites such as GitHub – is that licensing is either a) poorly described or explained by the project, or b) the programmers who use, fork, or rewrite open source code may not understand the implication of their actions.

At one company I worked for, we had a programmer that modified GPL code all the time and rewrote the copyright headers stating it was “Copyright John Smith.” Had I been older and had high cholesterol, I would have had a heart attack.

Yes, I work for companies that only write closed-source software, but I love and use all sorts of open-source software, and contribute back when I can. I told him he had to fork the vanilla source and rewrite his changes again, properly documenting his changes as he went, and keeping the attribution at the top of each source file. Unfortunately, I told my boss we now had to maintain this fork as an open source package because we’re selling commercial software that contains modified GPL code and he refused.

I don’t work their anymore and I don’t think they got the message that what they were doing was illegal and unfaithful to the original developers.

At my current employer, in our intranet, I wrote documentation on licensing. I wrote out this table describing the differences between licenses that we have come across. I know there are thousands more licenses and thousands more columns I could add explaining the differences — e.g. the GPLv2 and GPLv3 are identical according to this chart. Please understand the use for simplification.

 License Link with code using a different license? Must host source code of derived work? Copyright must be maintained [Attribution]? Promotion of authors and contributors allowed? Modifications must use same license [CopyLeft]?
Apache v2.0 Yes No Yes Yes No
GPL v2.0 No Yes Yes Yes Yes
GPL v3.0 No Yes Yes Yes Yes
MIT (Expat) Yes No Yes Yes No
New BSD License Yes No Yes No No

The issue with my current employer, as all employers I’ve had in the web development field, is that they refuse to put resources in to maintaining open source software. Legally, you have to do this any time you modify GPL code and package it in a piece of software — whether open source or closed source, proprietary or free.

Thus unfortunately, I stated to my employees that they must gain explicit permission to use GPL code, as I know my employer will not maintain it. It’s not the fault of the GPL or the programmers that chose the GPL for this, but the business practices of some companies. We actually had an employee leave over the fact that we don’t maintain open source code because we refuse to use GPL code. He was right to do so and I completely understand his position.

It’s not that GPL is poison, but corporations need, by and large, more education on how to use, write and re-write software, especially using existing libraries on the web. Until then, we have to use Apache, MIT, BSD and public domain licenses, while maintaining proper attribution.

What are your thoughts?