1 0
post icon

My first impression of the iPad

I’ve had the iPad now for 24 hours so I thought I’d write up my first impression.   I’m no longer the Apple fan boy that I once was.   I’m a bit more cynical about Apple these days so when I purchased my iPad I did it with eyes wide open.  I opted for the cheapest model available which is the 16GB version without 3G.

Out of the box the iPad feels very nice to hold.   It’s got a pleasant heft to it and feels very solid.  The weight feels very evenly distributed so it is easy to hold no matter what orientation.  Upon opening the box you’ll find the iPad, a standard iPod cable, and a wall charger.   There are no headphones included which was a bit of a disappointment for me.

The iPad came fully charged which was a nice touch, however in order to begin using it you must connect it to iTunes.   While Apple offered to do this in the store for me I declined and activated it when I got home.   This step seems a bit strange to me since there is no mobile phone service to activate.   I understand the rationale for the iPhone but I don’t see the need for the iPad.

After plugging the iPad into my computer for it to activate with iTunes the first thing that caught my attention is that in the upper right hand corner of the screen where the battery indicator is at said “Not charging”.   It turns out that there is an issue with the charging capability of the iPad currently and it can only be charged with a Mac computer or the included wall charger.   My Dell desktop apparently was insufficient to give this thing juice.   Curious, I took my iPad out to the car and plugged it in to see how it would behave in the car.   Sure enough, no charge love there either.    I expect this to be fairly inconvenient if not fixed soon.   I charge my phone almost exclusively at my desk and in the car.   I can get a sync and a charge at the same time this way.

I brought the iPad back inside and hooked it up to my PC again to let it sync with iTunes.  You have all the same sync capabilities as the iPhone so I won’t cover that in detail.   Given that I only purchased the 16GB version it filled up very fast.    The sync copied over most of my iPhone apps so my first experience  with 3rd party apps were the upscaled iPhone ones.

After the sync I opened up Facebook for iPhone to see how it worked.  It’s great that the iPad can use iPhone apps but in reality I can’t say that I would really want to.   For example take a look at this screenshot of Facebook scaled up to the “2x” mode.  As you can see the text becomes very grainy and it just looks plain awful.

IMG_0002

In comparison I downloaded the latest version of NetNewsWire from NewsGator which is an iPad native application and it looks simply stunning (notice the “Not Charging” in the upper right).

IMG_0004

There are a number of great apps similar to NetNewsWire that were available at lunch.   The much anticipated Netflix is probably my favorite.   I was able to stream a movie live from Netflix without any hiccups over my wifi.   It was a very enjoyable experience to watch a movie this way and I’m looking forward to using that extensively on my many work trips in the hotel.

I was a bit surprised that Apple has cut out some of the applications that ship with the iPad compared to the iPhone.   The stocks, weather, calculator, and voice memo applications are all suspiciously missing.

Purchasing content with the app store is just as easy on the iPhone.   The cost of applications seems to have gone up dramatically.   Many apps are looking at $9.99 price tags which seems a bit high to me.   I’m sure the market will adjust as both more applications and iPads are on the market.

Reading books via iBook is very pleasant.   I’m particularly impressed with the page turn effect.   I know it’s just eye candy but I still love it.  I previously owned a kindle so I’m hopeful that Amazon will release a kindle application (and that Apple doesn’t block it) similar to the one they have for iPhone.    I have a several titles I’ve already purchased in the Amazon store and I’d hate to not be able to access those on the iPad.

The last comment I’ll make is that 16GB is surprisingly little.  When I opted for the small version I didn’t really expect to load it down with media.   I expected that most of the time I would be using Pandora/Netflix for movies and music so storage wouldn’t be an issue.   It turns out many of the iPad applications are surprisingly large.   For example the “Real Racing HD” game comes in at a whopping 171 MB.

Leave a Comment
post icon

Using powershell to set SSP profile properties

I recently put together a powershell script that can be used to update a profile property of all of the users stored in the SharePoint SSP.  At NewsGator we use a boolean property field to indicate if a particular part of our product has been activated or not.  There are some cases where this boolean flag needs to be reset for all users. To do this I put together a simple powershell script to reset this value for all users.

This could easily be adapted for other users so I thought I would post share it.

###########################
# "Configure Settings"
$SSPName = "SSPAdmin"
$MySiteUrl = "http://mysite/"
$propName = "newsgator-x-onboarded"
$propValue = "true"
###########################

#Load the SharePoint assemblies
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles")

$ServerContext = [Microsoft.Office.Server.ServerContext]::GetContext($SSPName);
$UPManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServerContext);
$enumProfiles = $UPManager.GetEnumerator();
"Total User Profiles available:" + $UPManager.Count
$count=0;

#Loop through the SSP entries and update the property
foreach ($oUser in $enumProfiles)
{
    $count = $count + 1;
    $u = $oUser.Item("Accountname");
    Write-Output "($count):  Setting '$propName' to '$propValue' for $u";
    $oUser[$propName].Value = $propValue;
    $oUser.Commit();
} 


Leave a Comment
post icon

Activating features in bulk on the MySite with PowerShell

I recently came across a client who needed to activate a couple of features on their MySites in batches.   Given that they have a significant number of MySites already created we needed to find a way to stage the deployment of the new functionality that the features offer.   I put together a PowerShell script that iterates through the SSP looking for users who:

  • Have a MySite
  • Either one of both of the required features are not currently active

For each of the users that match the above criteria both of the features are activated. A counter is incremented and once we reach the desired number of users for the batch the script exits. When we are ready to process another batch the script effectively picks up where it left off since we’re skipping the users who are already activated.

You could then have the execution of this script automatically executed on a regular basis during low utilization hours. Eventually everyone will have the features activated and the new functionality deployed. You could continue to let the script execute to catch any new users (if you decide not to staple the features like we are).

For others looking to do something similar I’m posting the original script in its entirety.


###########################
# "Configure Settings"
$SSPName = "SSPAdmin"
$mysiteurl = "http://mysite"
$ngsite_feature_id = "6a91335c-5ecc-4afc-aa68-14d73afbb1bc"
$webpart_feature_id = "5174F049-99D9-4d68-96E0-93AB2AE1C7BC"
$userCount = 500
$stsadm = "$env:programfiles\Common Files\Microsoft Shared\Web Server Extensions\12\BIN\STSADM.EXE"
###########################

#Load the SharePoint Assemblies
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles")

#Create the SSP objects
$ServerContext = [Microsoft.Office.Server.ServerContext]::GetContext($SSPName);
$UPManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServerContext);

$enumProfiles = $UPManager.GetEnumerator();
"Total User Profiles available:" + $UPManager.Count
$count=0;

#Loop through every user who has an entry in the SSP
foreach ($oUser in $enumProfiles)
{
    #Get the username for the user
    $u = $oUser.Item("Accountname")

    #How many have we activated?  If more than $userCount above stop processing
    if ($count -ge $userCount) {
        Write-Output "Okay, we're stopping for now because we've activated for $userCount MySites"
        break
    } else {

    #Does the user have a MySite?  If so continue
    if ($oUser['PersonalSpace'].Value -ne $null) {
        #Create an SPSite (Site Collection) and SPWeb (Web) object for the given users MySite
        $siteurl = $mysiteurl + $oUser['PersonalSpace'].Value
        $spSite = new-object Microsoft.SharePoint.SPSite($siteurl)
        $spWeb = $spSite.OpenWeb() 

        #Let's check to see if either of the features we want to activate are currently activated.  
        #If not we should activate them.   Remember that the NewsGator Site Feature is "site" scoped thus we use SPWeb
        #The web part feature is Site Collection scoped so we have to use SPSite
        if (($spWeb.Features[$ngsite_feature_id] -eq $null) -or ($spSite.Features[$webpart_feature_id] -eq $null)) {

            #Execute STSADM -o activatefeature to activate the NewsGator Site Feature for this user, if it fails capture that and stop execution of the program.
            $sResult = &stsadm -o activatefeature -id $ngsite_feature_id -force -url  $siteurl
            if(!($sResult -like "*Operation completed successfully*")){
                Write-Host -ForegroundColor "red" -BackgroundColor "white" "Activate of site upgrade feature failed for $u on $siteurl : `n $sResult"
                break
            }

            #Execute STSADM -o activatefeature to activate the Webpart deployment feature, if it fails capture that and stop execution
            $sResult = &stsadm -o activatefeature -id $webpart_feature_id -force -url  $siteurl
            if(!($sResult -like "*Operation completed successfully*")){
                Write-Host -ForegroundColor "red" -BackgroundColor "white" "Activate of mysite web parts feature failed for $u on $siteurl : `n $sResult"
                break
            }

            #increment the count and output a status
            $count = $count + 1;
            Write-Output "($count):  Features activated on $siteurl for $u succesfully";
        } else {
            Write-Output "Skipping $siteurl for $u as they are already active."
        }
    } else {
        Write-Output "Skipping $siteurl for $u as they do not have a MySite."
    }

    #Clean up our objects to prevent a memory leak
    $spWeb.Dispose();
    $spSite.Dispose();
    $siteurl = $null;
    }
} 

Leave a Comment
post icon

My response to the new healthcare legislation

I wrote part of this blog article a few months ago when the healthcare bill was just starting to pick up steam. Now that it has passed I felt compelled to update it and post it in response to many of my very liberal friends rants.

Let’s define morality. Merriam-Webster has several definitions however I think the most appropriate one is “conformity to ideals of right human conduct”. The open questions out of that statement are of course who defines what is “right” and who gets to enforce it?

If my four year old son has a toy and another child does not, he knows that the right thing to do is share his toy. I don’t have to tell him. I don’t have to force him. Every action that I do sets an example for him in which he uses to build his own definition of “right”. If he refused to share, and I insisted that he did, my ownly recourse would be to force him on threat of punishment.

I honestly believe that the vast majority of people are good, caring, and compassionate. I believe that they have their own moral compass that guides them as to what is right and wrong. I believe that morality can never be forced as it is a part of who we are. While we can’t force someone to be moral by the definition of the majority, we can punish them for not agreeing. That is what is happening with healthcare and a great many other things in our country today.

I believe that most people would openly assist those in need in whatever way they can. Healthcare organizations have programs to assist those in need. Pharmaceutical companies have programs to get drugs to those that need them but can’t afford them. The statement I often hear is that “Nobody should go without the basic right of healthcare”. While that statement is partially true in that “Nobody should go without healthcare” it is not a right. A right is something granted to us as Americans by the bill of rights and our constitution. A right is something to be protected by the government, not given.

Like so many government programs they are yet again using their guns (by threat of jail) to force morality on the people. I find this particularly interesting in that my liberal friends are also very outspoken about the government staying out of their personal morality. Why is it okay for the government to force people to share their wealth with the less fortunate (an act which should be governed by an individual’s morality) but not okay for them to tell them how to live their lives? How can you possibly be for nationalized healthcare while also against the ban on gay marriage? How can you be for repeal of drug prohibition while supporting new social legislation?

The role of the government is to protect my rights as granted to me by the constitution and the bill of rights; it is not to tell me how I should live my life. If I want to share my wealth with those less fortunate that should be my decision. If I want to get married to another man that should be my decision. If I want to smoke marijuana that should be my decision. Unless my actions infringe on the rights of those around me in a truly free country the government has no authority to have a say about my actions. This new healthcare bill is just another way for the government to force us to the majority’s idea of what is “right”.

There are many folks out there who have not been courteous and respectful during the debate on healthcare. To anyone who used disrespectful, selfish, or hateful tactics to try and stop the passing of this legislation, I fully deplore your actions. However the partisan nature of the comments I see flying in rebuttal to those people are completely disrespectful and not helpful either. Just like you would never go around stereotyping all persons of a specific race or ethnicity, you should not stereotype all republicans and democrats.

While I am certainly not a republican, I am very offended by a couple specific tweets I’ve read from my more liberal friends.

A few examples:

“Let’s just say it: the most profound difference between Dems & Repubs = the former cares about those less fortunate; the latter does not”

“I truly wish that the small percentage of tea-baggers who can read at a 10th grade level would read this: http://bit.ly/bcTDj7”

“Hope americans are watching these old white gnarled hands of GOP hate try to keep health impoverished americans crushed and hopeless”

“Those on the other side of the aisle for whom it applies: Hope you have nightmares tonite about “socialized” medicine & the end of the world”

“”Party of no” spewing lies hate and fear. Any of these guys look like they are suffering from health care poverty?”

“Unbelievable listening to middle age white gop hate mongering men attack America in the people’s house.”

I don’t believe for one second that the members of congress who opposed this bill are also opposed to helping those in need. I believe that they understand that trying to legislate a solution to a problem as far reaching as healthcare would ultimately prove disastrous.

Assuming you can get past the argument of morality and think that the government should be implementing such a policy, we are ultimately left with the effectiveness of their solution. When has the government done anything better than a private organization? Why would they be able to manage healthcare better? The problem with our healthcare system is too much government intervention not too little.

Instead of adding more laws we should think about repealing some already on the books. If the healthcare system was deregulated and liability limited, doctors would be able to practice medicine without fear of getting sued. Insurance companies who offer malpractice insurance would be able to lower their premiums to the doctors. The ability to actually make a good living as a medical professional without the fear of going bankrupt at the slightest mistake would entice more of our brightest minds into the profession.

With the additional legislation just passed it is only going to be costlier for them to do business. Organizations which provide their employees premium coverage are now going to be taxed for doing so. With the increase in cost employers will compensate by reducing benefits to those “legally required”. The decrease in benefits means that there will be fewer people able to have access to cutting edge treatments and procedures. Fewer people with access will mean that the cost will stay prohibitively high or that the research dollars will not be spent to create them in the first place.

In the pharmaceutical realm deregulation would mean companies wouldn’t be afraid to spend larger amounts of money on R&D if they didn’t have to worry about getting sued all the time. They wouldn’t have to worry about their patent expiring and a generic hitting the market that completely undermined their research efforts and took away any chance they had at making a profit. They wouldn’t have to worry about paying out billions and billions of dollars in a class action lawsuit when a drug that hits the market doesn’t perform as expected or has undesired side effects. They would know that because there are folks who have “premium” coverage out there they can charge the amount required to recover their investment and know that there is a market for it.

We are free to choose what we put in our body based on the recommendations of a doctor we trust. Why do we need the FDA to tell us what is okay? Do you know there are drugs out there that could save the lives of millions of people but are blocked by FDA trials? Individuals need to take responsibility for their own action, and where the individual doesn’t have the knowledge to make the right decision, they need to turn to someone they can trust. Can you honestly tell me you trust the government more than your family doctor?

If all of the above happened and doctors, hospitals, and pharmaceutical companies were allowed to do what they do best, save people’s lives, healthcare prices would drop dramatically. It would become affordable to the vast majority of Americans. For the few that still were unable to afford it there are still private solutions and charities. It is not the government’s responsibility to provide for its people.

I have friends who are on Medicare/Medicaid (In full disclosure my Mom was before she passed away as well) and it drives me nuts how abused the system is. They have better coverage than I have and I consider the policy that my employer offers me to be very generous. When I see them take a sick child to the ER because of a fever it drives me insane. They didn’t pay a single cent but the taxpayer just paid through the nose when all they needed to do was ensure rest, liquids, and maybe a little Tylenol. Again, healthcare is not a right it’s a privilege.

When something is available without individual cost and consequence it will encourage abuse. A system which holds nobody accountable is one that will inevitably fail.

Leave a Comment
post icon

TapLynx is compatible with iPad

I’m super excited about the new iPad from Apple. This is exactly the device I’ve been looking for to simplify all the various gadgets I carry with me on a daily basis. For daily use with one device I can replace my kindle and my laptop. I certainly don’t expect it to fully replace my laptop, but I expect it to be great for when I’m traveling.

The great thing is that NewsGator already has a framework in place that will enable folks to create applications on the iPad called TapLynx

Can’t wait to get mine!

Leave a Comment
January 28, 2010
post icon

My solution for reading RSS across several computers and an iPhone

I’ve been a long time Google Reader user. It’s great having one place that remembers exactly what you have read and what you haven’t. I had never really spent any time using a desktop feed reader as the online ones have always met my needs. Recently however I started a new job at NewsGator Technologies. We make a number of products focused around RSS including several desktop readers. In order to “eat the dog food” I began the process of moving over all of my RSS consumption to utilize the various NewsGator products.

I’ve tried using the NewsGator online service in the past however it didn’t provide me a compelling reason to switch from Google Reader. This time I was determined to figure out the best possible way to utilize the various products in a way that would make it easier and quicker for me to follow the large number of feeds I’m subscribed to (currently 62, some of which are fairly high volume). I try to limit my news reading to no more than an hour or so a day, but in that hour I have a lot of content to skim through and read. Finding a really efficient process is critical to maximizing the use of the limited time.

After tweaking with things a bit, here is my new setup:

  • I’ve setup my account on the NewsGator online server (I’m using an internal to NewsGator version of the public server, but it’s the same thing).
  • I’ve configured my feeds into the NewsGator server to be fetched and have the posts stored for my retrieval via one of the various clients. My feeds are organized into 4 categories (Technology, Blogs, Local News, National and International News).
  • I’m using NetNewsWire on my home iMac and my MacBook Air, The iPhone version of NetNewsWire, and FeedDemon on my work laptop.

The advantages of using NetNewsWire and FeedDemon versus Google Reader are numerous. Here are some of my observations after just a few days usage:

  • The biggest single advantage is offline viewing. NetNewsWire can fetch all of the content and then store it locally on my Mac to view when I’m away from an internet connection. This is also true of FeedDemon although I haven’t used that yet.
  • With NetNewsWire there is no waiting for page loads of the content or images. Because everything is fetched in advance I’m only communicating with the NewsGator servers, which are very fast. All of the content is downloaded when I first sync so when I’m actually reading the posts I can just click through them with no delay. This is a huge time saver when I’m only looking at titles on 85-90% of the posts that I receive, being able to move on to the next one without waiting the 1-2 seconds it takes in Google reader to catch-up multiplied by the thousands of posts I skim in a day is certainly time saved.
  • My process with Google Reader was to skim the posts for the ones that I’m actually interested in reading and then open the permalink in a new tab. This will cause the page to load in the background while I continue skimming Google Reader. This process worked well, but what works even better is the built in browser within NetNewsWire. When the permalink is clicked in NetNewsWire it is opened up in a tab right within the application. That page is opened up in a “tab” of sorts identified by a helpful thumbnail image of the resulting page. NetNewsWire keeps all of these pages open while I’m reader so that I can easily consult them without filling up my browser tabs.
  • Something I haven’t taken advantage of before now are feeds that contain media rich (audio and video) downloads. Google Reader has no real way to accommodate this. In NetNewsWire however you can configure feeds to push content straight to a helper application like iTunes. This allows content distribution via RSS without the need of a central service. I look forward to more and more content providers using this approach for rich media in the future.
  • I use the “clipping” functionality to save off various posts that I find interesting enough to share with others. With the online service you can configure NewsGator to publish an RSS feed of your “clippings”. I’ve setup this feed to be syndicated to my wordpress blog so anyone can go and see the stories that I found interesting.
  • I can access my feeds from anywhere using my iPhone. The iPhone application has the same benefits as the desktop client and the portability of the iPhone. If only it could sync against other NewsGator servers than the public one. @brentsimmons when is this coming?
  • Brent also created a list of unique features of NetNewsWire that might be helpful.

So overall I’m very happy with this solution. I went into this feeling fairly pessimistic that it would actually be an improvement over Google Reader. The end result however is that I’ve been able to shave a significant amount of time off the feed reading that I do. I guess this means I can just start subscribing to more feeds :-)

Leave a Comment
post icon

Compare Apple TV shows in standard and high definition

With all the news today from Apple, I think one of the most overlooked announcements was that TV shows are available now in HD. HD is sort of a vague term though and just really means higher resolution (more pixels) than a standard NTSC broadcast. They failed to tell us what resolution the new TV shows are actually provided in. Because the target delivery device for the HD content is the Apple TV and it has been documented to have a hard limit of 1280 x 720, we can assume that the resolution is at least less than or equal to this for the new content. The standard resolutions which are used by broadcasters are:

1080p or 1920 x 1080 (progressive)
1080i or 1920 x 1080 (interlaced, which means only half the picture is displayed at a time)
720p or 1280 x 720
480i/p or 640 x 480 in 4:3 mode or 854 x 480 in 16:9

Anything less than 720p and you really can’t call it HD, it is just “enhanced definition” TV.

Here is a handy chart showing the various resolutions in comparison (taken from Wikipedia).

I pulled some screenshots from my iMac playing back an episode of the office. Here is a comparison between the standard definition and the high definition versions of the same scene. The first shot is the standard definition, and the second is the high definition. Click the thumbnail to view the full-size image.

 

If you look in iTunes at the info for “The Office” video files, it is reporting that the resolution of the “Standard Definition” version is 853 x 480 (or 480p) and that the resolution of the “High Definition” version is 1280 x 720 (or 720p). You can see some improvement, specifically around the text on the milk carton, but I don’t really see enough to justify the extra $1.00 per episode.

I’d really have liked to see Apple step up and offer content in 1080p. If they are going to lure me away from my DirecTV service and my DVR, they need to offer me something more compelling. I already get my shows in 1080i and will be getting them soon in 1080p form DirecTV. If they had come out and started offering 1080p content I would be buying all my TV shows from iTunes. As it is I can get higher resolution content for an arguably cheaper price from DirecTV service. Until they can get the massive amount of content, all available in 1080i or greater, I think I’ll stick to my current solution.

Leave a Comment
post icon

Updated Apple TV supports 1080p resolution

I just upgraded my Apple TV with the new “Take Two” update. Everything works as promised, and I noticed one extra goodie in the video settings dialog. The Apple TV now natively supports 1080p video output!

1080p selection on Apple TV

Attached photographic proof!

Leave a Comment
February 12, 2008
post icon

The future of American politics, what do Ron Paul supporters do after he loses?


Libertarian Party Logo

I won’t be able to caucus for Dr. Paul today because I am a registered Libertarian. I would have had to change my voter registration way back in December to Republican in order to participate. That doesn’t stop me from supporting him. I’ve donated significant money to his campaign and I have advocated him at every opportunity within my social group. I know, just like every other Ron Paul supporter, that he has no chance of winning today. His campaign is not about winning, as great as that would be. Nobody comes out and says it like it is, but it is true. His campaign is about spreading a message, a message of liberty and the constitution. I sincerely hope that the Paul campaign comes up with some way to get his name on the ballot in all 50 states, either as an independent or a Libertarian. If that doesn’t happen I hope that Dr. Paul, as well as his supporters, can rally around whomever the Libertarian party selects as their nominee.

The Ron Paul movement has been amazing to watch as a long time Libertarian. In example, during the 2004 presidential campaign candidate Michael Badnarik received only $1,000,000 in campaign donations. This includes donations prior to the party nomination all the way up to Election Day. Ron Paul has amassed a hefty sum of $30 million+ and it is only February. The message Dr. Paul is sharing is not new, it is that of the constitution, but clearly he has struck a chord with the American people that up until now no Libertarian has. I suspect that this can be credited to two factors. The first is the coming of age of a new generation of voters. The Libertarian message is something that hits home with young voters who are tired of the status quo. Second, I think that Dr. Paul’s affiliation with the Republican party and his existing seat as a Congressman has lent a much needed credibility boost to his ideals, as well as allowed him to participate in the debates and gather some national media attention.

Given the incredible amount of momentum that this movement has, it will be a shame if it all goes to waste. When Dr. Paul finally pulls out of the race come Republican National Convention time, where will that leave us, the unwavering Paul supporters? I sincerely hope that the Libertarian party can seize this opportunity to bring the masses of Paul supporters into the folds. One of the challenges the Libertarians have often had is finding common ground. Libertarians by their very nature are independently minded. If you have an entire political party of folks like this, it becomes a little bit like herding cats. I strongly believe that the lack of adoption of Libertarian ideals thus far is very closely related to this core issue within the party.

Dr. Paul has an amazing power to unite us to a common goal. While I don’t agree 100% with everything Dr. Paul says, and I doubt you will find any Libertarian that does, I agree with 99% of it. Dr. Paul moves us in the right direction, and as a party, the Libertarians need his influence.

We need to do everything we can to keep the spirit of what Dr. Paul is trying to accomplish alive. We can make a difference, while maybe not yet at the national level, we can influence local politics today. I encourage you to run for your local City Council where you live on the Libertarian Platform. Join the Libertarian Party. Attend your Libertarian state convention. Vote for Libertarian candidates. Maybe even run for a state level position?

Links:

Just stay active, and keep the momentum alive.

Leave a Comment
post icon

Automatically backup your Mac to Amazon S3

With the new version of OS X (Leopard) Apple has included some great functionality in Time Machine. Your Mac will automatically backup to an external drive every hour. It includes the ability to recover deleted files in a timeline. The one downside to the Time Machine approach is that the data isn’t remotely stored. A couple years ago my wife and I had a house fire where most of our things were destroyed. Fortunately the fire was extinguished before it spread to where our computers were so we didn’t lose any data. If it had been elsewhere in the house it could have been a serious situation for us if we lost all of our digital files.

After the fire I have followed a manual process of backing up our files on an external drive that I store in our fire safe. The problem with this is it requires me to actually do the work, which I often put-off. When Amazon S3 was introduced I immediately saw the potential to use it as an automatic remote backup source. I hadn’t invested much time in it up until now, but I just got a new computer (MacBook Air!!) and while setting it up I thought it would be a good opportunity to get my backup situation in order.

There are some great tools already in existence that can do most of the heavy lifting for you. The primary tool for doing remote directory syncs is called s3sync which is a script written in Ruby. Lucky for us OS X comes with Ruby pre-installed so there isn’t much work to get it working.

Here is my step-by-step guide to getting your machine setup to do automatic daily backups to Amazon. I developed these steps on my MacBook Air running Leopard however they should work for previous versions of OS X as well.

Step 1) First off, your going to need and Amazon Web Services account. Head over to http://aws.amazon.com/ and sign-up for an account to use S3. The prices are very cheap ($0.15/GB/Month). Once you have your account setup you will need two things to use Amazon S3. Your Amazon access key and your secret key. These are what s3sync will use to authenticate you to Amazon.

Step 2) I’ve packaged together a zip file with all the files you are going to need to get this setup along with SSL. Download the file at http://images.vallery.net/s3backup.zip. You can go to http://s3sync.net/ to see if a newer version if you like but you’ll need to figure some of this out on your own.

Step 3) You need to create a “bucket” in amazon to store your files. A bucket is similar to a folder, however it is globally uniquely named across all Amazon S3 users. In order to create the bucket you are going to need one of the S3 GUI applications that exist. I have included in the zip file the one I have used called “S3 Browser”. You can find the latest version at http://people.no-distance.net/ol/software/s3/. Once you launch S3 browser click on “connection” then “new connection”. You’ll need to provide the access details you got from Amazon in step 1. Once you have connected click the “Add” button which will allow you to create a new bucket. Because the name has to be globally unique I used “vallery-macbookair-backup” where vallery is my last name. Keep track of this bucket name because you need it in the next step.

s3browser.png

Step 4) Once you have the zip file I created downloaded it should automatically extract itself into your downloads folder creating a new folder called “s3backup”. Within the s3backup folder are all the files and scripts you will need in order to get this working. There is one key file that needs to be edited in order to make this all work which is called “backup.sh”. Open the file “backup.sh” and replace the place holder access key, secret key, bucket name with the ones you obtained form Amazon and step 3.

backupsh.png

Step 5) Now that you have all the files ready to go you need to select a place to store them. The application will run as root at the system level in order to prevent file access issues, therefore I recommend storing the entire s3backup folder in your /Library folder. You should copy the entire folder using finder to /Library. There are a few other paths in “backup.sh” that will need to be updated if you choose to store the file elsewhere.

Step 6) You need to setup your Mac to automatically run the backup shell script on a regular interval. There are a couple ways to do this. Since I am Unix guy I immediately started looking at cron. I discovered however that Apple recommends you use launchd for scheduled tasks. It is fairly complex to setup a scheduled task using launchd but thankfully someone has already created a simple GUI that will let you do it. The application Lingon can be used for this. I’ve included the latest version at the time of writing this in the s3backup directory but you can always obtain the latest version from http://lingon.sourceforge.net/. Once you have launched Lingon you need provide some information. Click the “New” button to start a new agent. Choose “Users Daemons” so that the script will run as root and have access to all of the users on your Mac. Once you have created your new daemon you need to give it a name. I recommend something like com.vallery.s3backup where vallery is your name. You need to give the command line action for what to execute. Again, this assumes that you have stored the s3backup folder in /Library. Enter: “/bin/bash /Library/s3backup/backup.sh > /dev/null”. Lastly you need to give it a schedule as to when to run. I have mine setup to “At a specific date” with “Every day” selected and the time set to 4:00am. This is great if your leave your Mac on all the time. You might select a different option so that you can make sure your Mac isn’t in use when it is doing the backup. Click the “Save” button. It will require you to type in your admin password and then restart your computer.

lingon.png

That is it, your system should run the first backup as schedule. It will take a long time initially as the upload speed is limited to your internet connection. Once the initial upload has taken place it will only upload files that are new or have changed going forward. The script is setup to backup everything in the /Users folder. If you would like to limit what is being backed up you can change this to something else.

In the unfortunate event you actually need to get data out of the s3 store there are a number of applications that you can use to do this. Initially I have been using Panic’s Transmit however it seems to have problems with the way s3sync is storing the data. I found another great free app called “S3 Browser” which has worked well for me. You can also use the Firefox plugin S3 Fox.

Leave a Comment