The UIImagePickerController is a must for creating iPhone apps, everyone loves taking pictures and sharing them with their friends :). The UIImagePickerController is the ViewController responsible for allowing the user to either Take a Photo or to Choose a Photo from their Photo Library. And utilizing it in your code is extremely easy. I have created a short screencast showing you the basics of implementing the UIImagePickerController in MonoTouch. Note at 14 minutes in or so I sausage fingered Window.AddSubview and called it Window.AddSubView and took me a minute to figure it out :)
Hope you enjoyed the screen cast here's the code for the project I created.
So I have noticed a trend for having pretty full functioning In-App WebBrowsers for most iPhone Apps. I think this is good on many levels, one I think this provides a good experience for the user & I think as a developer this should be your number one goal. Also, it keeps people in your app & that's really what we want, if you want people to use your app and recommend to friends and family members you need to think about all these "little" things because they can really make or break your app in some people's eyes. Well enough of my opinion on app development, let start talking about the fun stuff, the code!
Apple has done an awesome job of giving us alot of browser functionality right out of the box with the UIWebView, it's really powerful and has almost everything you need to make a working albeit basic In-App WebBrowser with just a few lines of code. Just a note this post was inspired by a post over at iCodeBlog
Here is a quick screenshot of what our end product is going to look like

Let's Get Started!
First let's open up MonoDevelop and let's create a new iPhone MonoTouch Project (
File -> New -> Solution)

We could have choosen an Empty MonoTouch Project; but choosing the iPhone MonoTouch Project does a little bit of the work for us :) Name the project and hit forward.
Now we need to add a View Interface Definition with Controller, right click (or is it called two finger click on a Mac?) on the project name, then goto Add File ..

I called mine MiniBrowserViewController; but of course you can call yours whatever you'd like.
Building the UI with Interface Builder
I know some .NET developers have had a hard time making the transition to using Interface Builder, I myself was one of those people. But since it can be a kinda tricky thing i'm just going to do a quick screen cast, showing you how I built the UI with Interface Builder.
Hooking It All Together
So the first thing we want to do is tell our app that we have our own view, we want to do this in the Main.cs, inside the FinishedLoading function we are going to put this code (note because of formatting issues that I just put code in a screen shot):

One more thing to note in this code that because our Custom View is not a nav controller or tab bar controller we need to account for the status bar ourselves, we do that by newing up our miniBrowserController.View and then drawing a Frame around it. Hat tip to Brent over at codesnack.com for that little tip.
MiniBrowserViewController
The first thing we want to do is override the ViewDidLoad method of the UIViewController we are going to do several things in this method we are going to setup the delegate for the UIWebView, hook up delegates for all our UI elements and do some initialization for our app.

Having our controller be the UIWebView delegate is really important this allows us to control all the events and methods for the UIWebView and respond and update our UI accordingly. Another thing to note in this code is the use of the NSUrl and NSUrlRequest, that's how we get the UIWebView to load our Urls. Unlike the UIButton (which uses the .TouchDown event) we use .Clicked event to respond to being pushed in the UIBarButtonItem. The Back and Forward buttons make use of the .GoBack() and .GoForward() methods of the UIWebView, letting it do all the heavy lifting. Another feature I added to this was an open in safari button (which I think is a great feature for an In-App Browser) this is also relatively easy. Create a NSUrl and new it up with whatever text is in the addressBar, then pass it on to the OS to open in Safari. The last thing of note in this section is the .EditingDidEndOnExit method of the UITextField addressBar, which fires when you hit the "Go" button on the keyboard.
Being In Control of the Browser UIWebViewDelegate
So this is where all the magic happens for updating our UI based on what's happening with the UIWebView, again UIWebView does most of the heavy lifting we just have to overload a few methods. We pass in an instance of our MiniBrowserViewController when we new up the delegate so that we have access to the UI elements.

First we overload the ShouldStartLoad method, this allows us to update our addressBar.text with the update URL text when a user clicks a link on the page they are view or if they use the back and forward buttons. There are also two methods that let us know when the LoadStarted and when the LoadingFinished. So we put some code in there to update the activityIndicator to let the user know what's going on. Also snuck some code in the LoadingFinished to enable or disable the Back and Forward buttons.
To Sum Things Up
Now this is in no way shape or form a full-featured browser; but this should be enough code to get your started and add a great feature to your MonoTouch app. Also note that you must put http:// in the addressBar to get it to respond of course you can easily add some code to handle cases where the user doesn't put in http:// but i'll leave that as an exercise for you. I also didn't add a refresh button which I didn't realize until I had written this post and didn't feel like adding one and retaking screenshots and adding the code (that was just out of sheer laziness =P) So without further ado you can grab the full project over
here
So you've got the great MonoTouch SDK that's letting you write C# code on your iPhone. You thought of the coolest app ever in the world, you put it out in the AppStore - you see lots of activity on the REST API that you built it on; but your AppStore stats don't seem to match up. WTF?!? You're thinking well looks like your app has become a victim of piracy. With Apple and all of it's infinite wisdom decided that all that was really needed to protect iPhone apps was their DRM, because the iPhone OS is secure :) Well the problem with that of course is that the iPhone OS isn't secure and it's very easy to write programs to exploit the fact that the DRM is removed by the device itself when the app goes to run. In an over simplified version of how to crack an app on the iPhone, when the iPhone app is ran it's loaded into memory and then decrypted, well the cracking program simply dumps the contents of the memory, then the header on the app is changed to decrypted (instead of the default encrypted). Voila! DRM Free app easy as 1-2-3. So there are some things that you can do to prevent debuggers and such from running while your app is executing; but those are all pretty advanced concepts. What I wanted to present with this blog is some easy to implement bigger style iPhone app protection.
So lets examine the constants between all pirated iPhone applications (this actually only applies to the current batch of pirated iPhone apps a few of these things have been addressed by one iPhone cracker; but no cracking applications support his new protocols).
MODIFICATIONS TO THE INFO.PLIST FILE
Checking the Info.plist file is the most common way to see if an application has been pirated. It contains essential configuration information for a bundled executable.
Information about the Info.plist (known as Information Property List File) can be obtained here.
The Info.plist file has to be modified so the resulting cracked .ipa can be installed on the iDevice. For that the key-pair {SignerIdentity, Apple iPhone OS Application Signing} is added to it.
In that process the Info.plist is converted from binary to plaintext XML and the key-pair is added.
So we have many options to check the Info.plist:
a) The size of Info.plist:
b) The date it was created or changed
c) If Info.plist is plaintext XML:
d) For the keypair key-pair {SignerIdentity, Apple iPhone OS Application Signing}
I am providing some sample MonoTouch code for checking options C/D please note that these should not be used in a commercial AppStore application, this is merely a proof of concept of protecting your code with MonoTouch. First any strings that reference Info.plist should be obfuscated (doing this will make it harder for the cracker to simply search for this string and patch)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public bool IsInfoplistPlainText()
{
var basedir = Path.Combine (Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), ".."); string appName = "ApplicationName.app"; try { XmlDocument doc = new XmlDocument(); string xmlFile = (basedir + "/" + appName + "/info.plist"); XmlTextReader reader = new XmlTextReader(xmlFile); doc.Load(reader);return true;
}
catch
{
return false;
}
}
|
This next example is checking for the key signer pair that must be added to all cracked apps, again this shouldn't be used as is in any commercial application; any strings should be obfuscated & this also shows the technique of not using standard coding practices to deal with xml, more likely to throw off the would be cracker :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public bool InfoplistSignerKeyPairExists ()
{
var basedir = Path.Combine (Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), ".."); string appName = "ApplicationName.app"; string xmlFile = (basedir + "/" + appName + "/info.plist"); TextReader tr = new StreamReader(xmlFile); string filecontents = tr.ReadToEnd ();if (filecontents.IndexOf ("SignerIdentity") >= 0)
{
if (filecontents.IndexOf ("Apple iPhone OS Application Signing") >=0 )
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
|
REMOVING OF THE ITUNESMETADATA.PLIST
The iTunesMetadata.plist is removed because it contains information about the person who bought the app (Name, AppStore account info, ...). We only has to check if the file exists and the application will know if it’s a valid or pirated version. The code is uber simple :)
public bool iTunesMetaDataExists ()
{
var basedir = Path.Combine (Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), "..");return File.Exists (basedir + "/iTunesMetaData.plist");
}
PRESENCE OF THE _CODESIGNATURE FOLDER AND CODERESOURCES
Every legit app has a folder called _CodeSignature with a file named CodeResources in it. It is removed because it might contain information about the buyer. Again we can easily check if the folder and/or the file exist.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public bool CodeSignatureFolderExists ()
{
var basedir = Path.Combine (Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), ".."); return Directory.Exists(basedir + "/" + appName + "/_CodeSignature"); } public bool CodeResourcesFileExists () {
var basedir = Path.Combine (Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), ".."); if ( CodeSignatureFolderExists () ) return File.Exists (basedir + "/" + appName + "/_CodeSignature/CodeResources"); else return false;
}
|
CRYPTID: LC_ENCRYPTION_INFO
This is the most advanced check (at least for AppStore applications). We have already learned that in order to remove Apple’s DRM the decrypted binary (except the header) is dumped from the RAM. Then the encrypted part (the header is never encrypted) of the original binary is replaced with the dumped data. Finally, the cryptID in the header is changed from 1 (encrypted) to 0 (decrypted). What we do then is check if the cryptID is 0. For example they open the binary and start checking for the cryptID at 0x1000 upwards. This is one technique not isn't widely used from I can tell so I will not be posting any code samples as I do not want to encourage crackers to add this to their arsenal of defeated checks. If you want to dig deeper take a look at the Mach-O file format reference here.
So i'm doing something a little different on the blog, what you say, actually blogging? Well yes that; but also I'm going to talk about some programming stuff, I've fallen in love with the awesome MonoTouch SDK for the iPhone. It brings C# to the iPhone. The thing that I think I like so much is that now wiring controls to events isn't a huge pain in the ass. That is really what kept me from learning or getting excited about Objective-C, I just hated all the "extra" code need to wire up controls to events. I know the Cocoa fan boys are gonna say that i'm over reacting; but that's just the way I feel :)
So enough of the ranting, I'm just going to get to the meat and potatoes of this thing. The UrbanSpoon animated UIPickerView is probably one of the coolest effects on the iPhone, not only is it a great visual effect; but also adds a level of interactivity to your app. Something that is a must on the iPhone. A feature such as this can really set you apart from your competitors.
When I was working on my iFindTudors app (still not in the iTunes Store yet; but check soon =P) I wanted to incorporate the effect, at the time I was developing it in the Titanium Mobile SDK so I had to recreate the effect (and for that matter the entire UIPickerView control, at the time the version I was using didn't support that API - additional note the UIPickers are coming in Titanium Mobile SDK 0.70 which is just around the corner =P ) in HTML/CSS/JS. Which had it's challenges but prepared me for doing it in MonoTouch.
I can't believe how incredibly easy this effect is to actually achieve. First you will need a set of images of the UIPickerView with various items selected. You can just drag an UIPickerView onto a window in Interface Builder and take screen shots, you can use a iPhone UI PSD or you can make a quick little app that has your data in the UIPickerView and run it in the simulator. I opted for the last option. Take 5-10 screenshots each with a different value selected. open these in photoshop or your favorite photo editor and blur the text.

Lather, rinse, repeat for all the images, and save them with sequential names (well you don't really have to use sequential names, but that's easier). I went with blur01-blur09.
So now it's time to fire up MonoDevelop, choose the iPhone project, not the empty one - cause that's just more work :) you will see Main.cs (this is where your main code lives) and MainWindow.xib (this is where your GUI lives). First thing we are going to do is add the images to the project. First right click on your project name Add -> New Folder . Name this folder "images". Now right click this folder and goto Add Files, Select all your images, before hitting open goto "Override default build action" and set it to content.

Now it's time to set up our user interface in Interface Builder. So double click MainWindow.xib, this will open up Interface Builder. Then we drag a UIPickerView, UIImageView and two UIButtons onto the window. When dragging the UIImageView onto the window place it ontop of the UIPickerView, so that when we show it, that it hides the wheel of the real UIPickerView.

Make sure that you add the outlets for these items, then save the XIB and we can exit interface builder.
Now it's time for some code! There are only a few things that we need to really make this work. A Picker with our data, a UIImageView with the array of our images setup to perform our animation and the code to fire the animation and stop it.
So we want to first setup our UIImageView with our images.
// We need to start the app with the imageViewPicker Hidden
imageViewPicker.Hidden = true;
// Create an array of UIImages that the imageViewPicker will use for the "spinning" animation
// Make sure when you add these images to your solution that you change their build action to "content"
// So that they will be included in the App bundle.
// I choose 9 images; but I am sure it will work ok with more or less :)
// BTW, I really roughly cut these out that's why the animation looks a little rough, if you take your time
// you will have a much better result, this was just quick n dirty :)
imageViewPicker.AnimationImages = new UIImage [] {
UIImage.FromFile ("images/blur01.png"),
UIImage.FromFile ("images/blur02.png"),
UIImage.FromFile ("images/blur03.png"),
UIImage.FromFile ("images/blur04.png"),
UIImage.FromFile ("images/blur05.png"),
UIImage.FromFile ("images/blur06.png"),
UIImage.FromFile ("images/blur07.png"),
UIImage.FromFile ("images/blur08.png"),
UIImage.FromFile ("images/blur09.png")
};
// Set the animation duration, I used half a second so we get that real "spinning" feeling, ticker with this as needed
imageViewPicker.AnimationDuration = .5;
// Start the program with the animation turned off.
imageViewPicker.StopAnimating ();
We are half way home now! Next let's wire up the buttons so they before their jobs. First the button to start the spinning.
// buttonSpin TouchDown Event
buttonSpin.TouchDown += delegate {
// Show the imageViewPicker & Start the Animation
imageViewPicker.Hidden = false;
imageViewPicker.StartAnimating ();
};
Basically all we are doing is make sure the UIImageView is visible and then kicking off the animation that we setup in our array of images. And we we want it to stop we just do the inverse, and we also have to set the selected index to a random number that way it performs just like a slot machine :)
// buttonStop TouchDown Event
buttonStop.TouchDown += delegate {
// Hide the imageViewPicker & Stop the Animation
imageViewPicker.Hidden = true;
imageViewPicker.StopAnimating ();
// Get A random number from 0 - 9
// in a real world scenario you would want to call the GetRowsInComponent method of the UIPickerView
int n = _r.Next(9);
// Lets select our random index and set the animation to true so that it looks "cool" :)
pickerChoices.Select(n,0,true);
};
So that's it! That awesome effect can be yours with just a few lines of code and a couple of pngs! Drop me a note in the comments if you would like me to do a screencast explaining this further or if there are other effects you'd like to see ported to
MonoTouch.
So grab the
MonoTouch UrbanSpoon Animated UIPickerView Demo solution and get cranking in MonoDevelop :) Btw, feel free to use this code in any project in any way however you feel :)
If you have any suggestions on improvement or anything please let me know.
Added a video of the finished product too
Here is a list of people to follow on follow friday from people that i follow and follow me.
Tired of those laundry lists? These are reccomendations, not just retweets..
Here were the instructions:
come up with a list of people you recommend for follow friday.
make a list of people you really interact with and a short blurb about why u follow them.
140 chars.. per description max.
@martinbowling #followfriday
@oilman cause he always has some wild adventure
@persianwiki providing a great look at what's really happening on the streets of iran
@oncee IT Manager in Charleston, WV always tweets awesomely helpful info
@jordankasteler has awesome insight to using social media in creative and new ways
@davesnyder it's BIG DAVE nuff said :)
@rfr an incredible gifted designer, he <3''s the environment
@steveplunkett #followfriday
I follow @kimsherrell because she is an intelligent person who adds value to your twitter stream.
I follow @cyandle because he is my twitter homie.. #seo #ppc
I follow @zerbetron because she's got that Boom Boom Pow and she is a fellow webmaster chair dancer.
I follow @melyssatweeting because she has a good brain.
I follow @jackleblond because he's a good man, no b.s. yet open minded, good sense of humor and sometimes he even posts some cool recipes.
I follow @mandaotto because she is real and smart, and an amazing artist.
I follow @martinbowling because he has a great sense of humor, he's quite intelligent and crafty.
I follow @lookadoo because she is a great friend, a good voice of reason and wisdom.
I follow @mosquitohawk because he has a good sense of humor and an interesting viewpoint.
I follow @dannysullivan because he is the walter cronkite of SEO.
I follow @blueyedmuse because she is smart, funny and tweets good stuff.
@zerbetron #followfriday
#followfriday For the best in geekery & nerddom, I recommend @geekgirldvia. She's smart, funny, & knows enough about BSG to be dangerous!
#followfriday A nerd in search of love? Worry not! @geeksdreamgirl helps nerds & geeks find their perfect match. Super nice and lots of fun
Interested in SEO & Social Media? Follow @cyandle. Great guy and he's always got fun and exciting things to say. He rocks! #followfriday
If you do SEO, & you're not following @steveplunkett, you should get your head checked! He's an SEO Jedi Master. #followfriday
@MichelleRobbins is a SEO smarty-pants, BSG nerd, super smart cookie & all around nice gal. I love her tweets & you will too! #followfriday
@lookadoo #followfriday
Learn all you need about Online Reputation Management & best practices in online marketing from @andybeal. His training classes kick it!
Get blogging, WordPress, SEO & many tech tips from @DazzlinDonna. Donna's stream is like tapping into a business marketing coach!
Just received my autographed copy of "What Success Takes" by @garrettpierson! I had the honor of reviewing his book, changed my approach!
I am in debt to @pageoneresults for 2 hours of his SEO consulting time! I'm wiser & now broke! "Web Standards" should be his middle name.
Friendship & geekship combined, @professor is the genius behind @Blogsville. Don't miss out on this blogging lineup!
@GlobalFusion is more than a specialist in Spanish SEO, he's a thought leader. Admire his wisdom, approach & ethics in SEO.
I've learned a lot about using Social Meda sites from @BrentCsutoras. He knows the insides of StumbleUpon, Reddit, Digg! Add SEO, too!
The Social Media Queen is @TheNanny612! Don't tell, but I have a #girlcrush on her!
Obsessed w/the science of search, @SEOdojo speaks to SEO geeks & wannabe-gurus! Reading his newsletter is on my TO DO list!
One of the youngest & earliest prodigies I've followed is @PluginID. He knows how to make money blogging & will show you how, too!
I started reading Barbara Rozgonyi @wiredprworks before Twitter. She's become a friend and PR mentor!
If I had children, I would homeschool using Montessori lessons by @loribourne. I met her on SEOmoz & the friendship optimized from there!
Forget music! I tune in to the latest in search marketing on @WebmasterRadio @BrascoAtWMR is more than a radio genius! <3>
Get the latest analysis in search from @BruceClayInc by listening to @SEMSynergy every Wed! They translate SEO into understandable tidbits.
@Remarkablogger shares blogging, tech & SEO tips. His insights convinced me to learn Thesis, so here I am with a new theme to learn!
@mandaotto #followfriday
@graywolf
a great go-to for all things seo
@tonyadam
all around great yahoo guy
@cshel
another very smart seo gal
@shanatweeting
great social media expert
@mosquitohawk #followfriday
#1
I follow @RavenJon because he has an awesome SEO toolset (@RavenTools) & is an all around nice guy with sharp spidy sense.
#2
I follow the hip @JoannaLord because she's witty, has great taste in music & is a great contributor of social media & search knowledge.
#3
I follow the brilliant @steveplunkett because when he talks SEO tactics, you better be taking notes. Where does he get those great tidbits?
#4
I follow @jrcornthwait - He's king in the land of HTML emails (& has good taste in food, design & isn't afraid to call it like he sees it).
#5
I follow @carondelet of the Brute Squad because there's always something to be said for someone who can exchange obscure movie lines w/ you.
#6
I follow @lookadoo because she cares. I also can't wait to meet her in person at some future conference. Smart, motivated & entrepreneurial.
@melyssatweeting #followfriday
@VegasWill
A great follow. Tweets all signal and no noise.
@FoundByPat
Super Dad. Really relevant tweets. Exceptional wit.
@StevePlunkett
Everything’s bigger in Texas – including his brain and the strength of his tweets – fun follow.
@cyandle #followfriday
@sspencer - his presentations always provide so much information for the audience...
@rustybrick - one of the top bloggers in the IM industry..
@dannysullivan - the father of seo; and always keeps his tweeple up-to-date..
@copyblogger - one of the top bloggers in the IM industry..
@oilman - always willing to help out other when it comes to learning new IM stuff i.e. paid links..
@StoneyD - always provides in depth posts regarding IM checklists..
@katemorris - great at PPC...
@yoast - always on top with his wordpress plugins..
@TheMadHat - can make a mean bacon explosion..
@streko - king of the porkroll..
@melanienathan - she knows her linkbuilding..
@davidmihm - great at teaching us local search..
@theGypsy - great at keeping us up-to-date on patent info..
@shanatweeting - even though she's a mega phillies fan you can tolerate her.. :)
@professor - great at development work..
@davesnyder - knows his social media...and likes to cuddle from what i hear..
@graywolf - if i need a mean cake he could do it..
@Pamela_Lund - if you need custom USB flash drives she can hook u up..
@sugarrae - knows her affilaite marketing stuff..
@BrentCsutoras - knows his social media...
@andybeal - great online reputation mgt expert..
@brianchappell - knows his social media & online reputation mgt..
@yummyman - great at teaching us local search..
@lookadoo - a great all around person to follow..
@pearsonified - thesis king..
@bbille - always willing to help a brother out..
@pageoneresults - sphinn's worst nightmare..
@JoannaLord - knows her PPC..
@wiep - master link baiter..
@GymJunkies - can pump u up..
@steveplunkett - mad IM scientist..
@martinbowling - great at development work..
@SmokinManBBQ - it always tastes better when the smokinman' cooks it..
@itcn - can develop some great stuff..
@styletime - great at designs and wordpress..
A friend of mine on Twitter @utahseopro sent me these questions to answer and post on my blog which he is also posting on his blog, Utah SEO Pro Blog.
1. How long have you been working in Organic SEO and Internet Marketing and what attracted you to it?
I started in Web Development in 1999, doing lots of ASP.NET coding. And sometime 2001/2002 some of the people I was doing dev stuff for, started asking for help with their internet marketing. I kind of did it as a side service for a while, then figured hell why not jump in feet first and really do it full time. I like this side of stuff a little more cause I get to use my creative side, I still <3 development stuff and writing code; but getting to do creative stuff has always been a passion of mine.
2. In your opinion, what's the measure of a good SEO/PR/Blogging professional?
Looking out for the clients best interest, making sure that they are doing what they need to do to succeed. Not doing shady underhanded things in their name & being a good part of the community.
3. Whose Blog do you read the Most?
Wow that's a toughie, I have been so busy that I haven't been reading much of anything consistantly but I still check the @SEOMoz blog the most.
4. What's your best "SEO secret" or blogging tactic?
As you can tell from my own blog I am not the model blogger, I do it all wrong and don't write enough content; but something that I tell all of our clients to do is check up on Google Trends and find trending keywords that relate to their industry and blog away :) Cause at the end of the day content is still king or atleast a high ranking member of the kings court.
5. Search engine algorithms are getting smarter, and a lot of people predict Organic SEO services will become obsolete. How do you plan to adapt?
No matter how the algorithms change, they are still an algorithm and still can be gamed steered in the right direction of content :) I will make sure that I help my clients stay at the forefront of what's going on, incorporating emerging technologies into their marketing plan.
6. Please Describe the biggest challenge you face in your current job.
Not having enough time to do some of the stuff I really want to do. I stay really really really busy (i know judging from my twitter stream most would say I am lying =P ) and don't get enough time to do all the testing and experimenting that I want to do. Also getting clients to buy into my crazy social ideas, that's a pretty big challenge too, alot of people are afraid to put their brand out there - afraid someone might say something bad.
7. Do you have any advice for someone who is interested in Organic SEO, Digital Communications/Digital PR and ORM, but doesn't have a background in it, on how to get started in this field?
Read, Read, Read and read some more. Practice writing, watch emerging trends, study viral memes, goto conferences, network, tweet like there is no tomorrow :)
8. If you could rank for any keyword phrase you don't currently rank for, what would it be?
I am thinking Zima cause it would still be pretty sweet to see my self top 10 for Zima
9. Assuming you had never gone into (what you do now), what would you be doing now (professionally)?
I would like to pursue some type of acting or comedy. Maybe even get back into pro wrestling :)
10. Do you have any interest in politics?
I am a political junkie, I love all things political. I like reading Howard Zinn & Noam Chomsky, love watching Bill Maher, Keith Olberman & Rachel Maddow. I'm as wonky as they come with out being a total political insider :) And as you can tell am a little left leaning :)
Thank you to @MelaniePhung for writing the questions.
Thanks to the following for their participation:
@almacy - A Digital Strategy Expert.
@melaniephung - A DC SEO Strategist.
@martinbowling - A lover of Zima.
@utahseopro - A Utah SEO Consultant.
@fairminder - A Boston Website Design and SEO specialist.
@cyandle - A Google Adwords Professional.
@melanienathan - An Edmonton SEO specialist.
@jackleblond - A VP of Internet Strategy.
@djpaisley - A Digital Communications Strategist.
@vinceblackham - A Utah SEO specialist.
@researchgoddess - A Staffing Social Media Specialist.
@monicawright - A Maine SEO professional.
Use Promo Code Zima, Get Discounted Rate on Andy Beal's Online Reputation Management Master Class
Quick story (stop me if you've heard it already): Some of my "friends" played a prank on me, creating a viral meme suggesting that I, one of the world's true beer snobs, secretly enjoy drinking Zima as opposed to, say, a nice snifter of Sam Adams Utopias.
My reputation, of course, was on the line here. Yet the timing was perfect. I'd just finished taking one of Andy Beal's Online Reputation Management Master Classes, which taught me more in one day about online rep management than a full year of reading blog posts. The result? I turned the "Zima Incident" into the best doggone URL shortener on the planet. (Never mind the fact that Andy Beal was the one who got the ball rolling on the Martin Bowling Loves Zima meme in the first place.)
To commemorate the event, the Marketing Pilgrim himself, Andy Beal, is offering $100 off of the registration fee for his upcoming Online Reputation Management Master Class on January 14th in lovely Las Vegas. Having an extra $100 to spend in Vegas is always a good bet, but just remember: what happens in Vegas doesn't necessarily stay in Vegas. All the online reputation management in the world isn't gonna help you if you're caught drinking water from a vase in the hotel lobby after a night of Irish Car Bomb contests that led, as such contests usually do, to Hunter Thompson-esque debauchery in the YouTube age. But I digress.
Look, the master class isn't a bunch of blog posts and a Power Point presentation. It's limited to 25 people, which means you get one-on-one time with the guy who wrote the book--literally--on online reputation management. This is a nothing-held-back, handing-you-the-ORM-playbook kind of seminar, jam-packed with a full day of getting your learn on. This isn't a theoretical seminar either, but full of tips and tricks that are applicable to real-world circumstances. I'm telling you, you'll be able to put this stuff into practice for you and your clients from day one. Andy's the master.
So, head on over to Marketing Pilgrim for the full scoop. Just don't forget to use promo code "Zima" to get $100 more to use on the craps table.
Cheers!
Ok so this probably doesn't really deserve a whole post; but today while I was checking on my replies over at my favorite microblogging service twitter. I noticed something very strange.
This is my replies tab, but as you can see ScottPolk is sending a message to MelissaCruz but it says that it's a reply to me (MartinBowling) but my name isn't anywhere in the tweet. I am sure it's just one of those things; but thought it might be worth noting. Let me know if you have any twange happenings.
Matt Cutts is getting the ball rolling on the don't vote blog meme to help promote Google's new voter registration effort, so you just have to tag five friends to get them to register and they gotta tell five more friends, so here it goes
My Tags:
Dave Snyder - Cause Angry Voters Are Good Voters :)
Andy Beal - Cause I know he has been monitoring the candidates reputations and knows all the dirt
Marty Weintraub - Cause he's crazy enough to do the right thing no matter what :)
Brian Carter - Cause a little laughter goes along way
Utah SEO Pro - Cause NoFX would want me to make sure he was registered!
So go register, get the facts and get your ass out there and vote! And make sure your friends are registered and voting, it's not important how you vote - just that you do. If you don't participate then we all loose!
As I was putting together the Scared Clear Zima Meme Contest I forgot one very important group of people, the people already going to Scary SEO. How could I forget you guys! How irresponsible of me, so I am amending the contest to include a prize for those of you who are already going to Scary SEO (but please be sure to specify when you drop your link that you don't want to be eligible for the other prizes). I am going to give you a $50 bar tab + pay your way into the IMCharity Party. So you can party like a rock star and help a good cause! So anyone going to Scary SEO make sure you don't forget to enter the Scared Clear Zima Meme Contest. Also we are looking for things to raffle off at the Scary SEO IMCharity Party so if you or your company would like to provide a prize please drop me or Dave Snyder an @ reply or dm on twitter.com (yes I nofollowed that link because twitter refuses to follow my links =P)