RSS
 

Journey to Extreme Pitch

31 Aug

I recorded this video after coming home from Extreme Pitch. I wanted to give advice on what to do to calm yourself before a pitch. I think I managed to say don’t drink too much coffee and go to yoga, that advice probably won’t work for most people. Sorry guys! Read the rest of this entry »

 
No Comments

Posted in Startup

 

I Just Want to Submit a Frickin’ iPhone App to the App Store! (Part 3)

28 Jul

Way back in in “I Just Want to Create a Frickin’ iPhone App! (Part 1),” I walked you through the logistics of joining the developer program (no, you didn’t miss “Part 2,” I have not written it yet). Fast-forward a couple of months and it’s time to submit to the app store! For a company that has built a reputation on simplicity, Apple has concocted an arcane process and made it worse by not providing any complete nor accurate information to help with the application submission process.  Apple’s minimalistic approach is of no help… you often feel like your flying blind as you try to make your way through the process. I’ll try to give some heads-up and clarity if you, too, are going through this for the first time.

So, let’s hope I can remember all that I went through.

  1. Create specific App ID: iOS Provisioning PortalApp IDsNew App ID.  (Note: you cannot delete App IDs once they are created).
    1. Enter a name for this application. This is just for reference; it will not appear to a user.
    2. Select the “Bundle Seed ID”. Normally you will want to select the one that was assigned to you, in the drop down.
    3. Define the App ID Suffix.  This has to match the ID that is bound into the application, so you will probably want to copy the one assigned to the application you’ve been building, lest it be recognized as an entirely new application. This is not critical, but if you have beta testers and you change the App ID, the next update will not overwrite the older version of the app, they will have to delete the old one, explicitly.To find (or change) the current Bundle identifier in Xcode 4.x, select the Target of the project. The Summary tab shows the Bundle identifier in the “Identifier” field; or, in the “Info” tab, it shown as “Bundle identifier”. Of course, these settings come from the project’s .plist file, so you can access its “CFBundleIdentifier” (aka “Bundle identifier”) explicitly. The value in the app should be the reverse domain name, for example, “com.handthingsdown.htdmobile”; do not prefix the “Bundle Seed ID” to the bundle identifier in the app.
    4. This value should match the Bundle Identifier field when creating a new App ID. As noted in the “How To” tab, you can use wildcards for this value; however, a fully qualified ID is necessary to utilize the various services (e.g., Push Notification, Game Center, iCloud).
  2. Create an App Store provisioning file:  iOS Provisioning Portal →ProvisioningDistributionNew Profile.
    1. Be sure the “Distribution Method” is set to “App Store”.
    2. Select the App ID from the previous step to associate with your application.
    3. You wont have to — or be able to — select devices to include, as you would for ad hoc provisioning.
  3. Once the profile has been created, download and add it to your Xcode profiles.
  4. Create an archive build of your application, build for release and utilizing the App Store provisioning profile.
    1. If you haven’t already, you may want to duplicate the Release build-configuration to “Distribution App Store” (making sure that the target is not selected go to Xcode’s menu: Editor →Add Configuration →Duplicate “Release” Configuration.
    2. In the project’s target’s go to Build Settings →Code Signing →Code Signing Identity.  Below the build configuration you will use to build the Archive, set the “Any iOS SDK” setting to the provisioning profile you created for distribution to the App Store. (For the build configuration itself, I selected “Don’t Code Sign”; but I do not know if that matters).
    3. Modify build scheme’s Archive to use the build configuration you configured and build the Archive.
    4. From the Organizer’s Archive view, select and “Validate…” the binary. This performs (only) some tests of the module before uploading.
    5. We will jump away from Xcode for a moment….
  5. So you thought you were done signing up with programs with Apple? First an Apple ID, then the Developer Center, then an iOS Developer, and now iTunes Connect, itunesconnect.apple.com. Go to a web page and set up an account. This is where you will manage the applications that you submit to the App Store.
  6. Once your account is created, go to “Manage Your Apps” and select “Add New App”.
  7. Fill in the app name, SKU, and select a Bundle ID. Note that none of these settings can be changed once the app has been accepted by Apple.
  8. Click the “Ready to Upload Binary” button to start the process. The upload does not occur via the web page.
  9. Go back to Xcode. Since the Archive was just built, the Organizer window should be open with the Archive view shown. Be sure the correct Archive is selected (at the top of the list).
  10. Upload your application to Apple. There is the new, complicated way (which I used) and an old simpler way, that should still work—so I hear. So, back to Xcode…
    1. First, the old, simple way.  Ignore the messages on the iTunes Connect web page about the Application Loader. From Xcode’s Organizer window’s Archive’s view, click the “Submit…” button. That’s it!
    2. Now the difficult way:
      1. Click the “Share…” button. to build “iOS App Store Package”
      2. Select App Store certificate
      3. Open Application Loader and follow its steps to upload the .ipa file that was created in Xcode.
  11. Once the module has been submitted, there are additional automated checks that take place. So, wait an hour or so and check back at the iTunes Connect page. The status should change, if the module was accepted. If not, check your email to see what kind of errors may have occurred.
  12. If it passed the automated checks, you can now wait nervously for actual humans to vette the application. Expect this to take a full week.
Good Luck! Let me know what your experiences are.

Resources

Enhanced by Zemanta
 

I Think, Therefore I Tweet #twitterjunkie

15 Jul

I am addicted to Twitter. There, I said it, admitting it is the first step, right? Over the last year, posting to Facebook has diminished, especially as I became more and more fascinated by Twitter. The biggest attraction is real-time news whether it’s what’s trending locally, articles about technology or startups, or conversations about my favorite topics. I love reading and consuming what’s going on, even if I do most of my reading late at night and into the wee hours of the morning.

I love sharing information and the conversations around various hashtags opens my mind to different ideas. During the work day, I limit information consumption so I can power through my to do list and have productive meetings. Yet the minute I get a free moment I’m compelled to check the feed to see what’s going on. Does anyone else feel this way? Hidden obsessive-compulsive tendencies?

It’s ok, if you don’t follow me. I tweet up to a hundred times a day which can be overwhelming to a casual user or anyone new to Twitter.

This is what I post:

  • Content from startup or social media events.
  • Content I’m reading, using Twitter to “bookmark” since it’s automagically backed up on Backupify.
  • Conversations on the following hashtags: #startup, #leanstartup, #smcphx, #socialmedia, #UFC, #phxlatenite
  • Random thoughts throughout the day.
  • Checkins on Gowalla/Foursquare/Facebook/Google+

Here are the mobile Twitter apps I use for iPhone:

    • Echofon – my favorite for browsing the feed and having twitter conversations.
    • Smartr – to read articles tweeted by people I follow without the noise of the conversations.

Hootsuite – to schedule articles and shorten links.

  • Tweetdeck – to post tweets longer than 140 chars, it’s laggy on my device so I use it very rarely.
  • Twitter – I use this the least and can’t figure out why I haven’t deleted it.

What are your favorite Twitter apps? Who else is addicted to Twitter?

20110715-055338.jpg
Image credit: Steve Rhodes

 
 

Harder to Lose Klout When You Actually Engage

14 Jul

When you’re involved in social media, engagement is everything. Do you ever wonder what would happen if you suddenly stopped posting? This is the question I wanted to answer with the experiment on “How to Trash Your Klout Score“. Business owners believe social media needs near constant engagement, one of the questions I wanted to answer was what is the bare minimum you need to do so you can run your business or even go on vacation while still providing your customers a great online experience. I will post those guidelines after the experiment ends on July 17.

Seven days into the experiment, my Klout score is holding steady at 52 points. I had to tweet for an hour on July 8th for the Social Media Club Twitter Chat on the topic of Finding Balance for your Professional and Personal Life Online. If you look at each data point in the graph my score was going up incrementally for a couple days after this event. Since I stopped tweeting on my account it had a negative impact on Merlin U Ward’s (@MerlinUWard) brand, resulting in a 6% drop in reach for him. You can read the details and additional metrics on Merlin’s blog.

When I started the experiment on my Klout score, I never thought it would impact anyone else. Merlin bet my Klout score would drop 5 points, my goal was to drop 7 points. For people or businesses who only push out content or talk AT people, disconnecting may not have noticeable impact on anyone else’s reach. I believe Merlin’s reach dropped since we use Twitter as if it was instant messaging and texting to discuss my favorite topics, technology and business or fun things like #futzing and #wordswithfriends. I post a lot of articles on startups and entrepreneurship which ties into the conversations we are having publicly, you can think of it as tweet radio.

Klout score steady at 52 points after 7 days of inactivity.

The interesting side effect of this experiment is how the Klout score for my business account has gone UP. I’ve been tweeting out of the Hand Things Down Twitter account (@handthingsdown) and using it to have conversations I would normally have on my personal account. The other night, there was an informal Twitter chat about when the next #Twilight movie “Breaking Dawn” would be premiering. The Twilight series is near and dear to most moms which is the group I normally socialize with on this account. Since using @handthingsdown to have more conversations, the Klout score went up nearly 4 points in a week!

The lesson from the last few days; your Klout score will go up dramatically just by talking to people and BEING SOCIAL, it is after all social media. It’s not an exotic animal to be gawked at from the outside, it’s more like happy hour where you get to know people and discuss topics you are passionate about.

Enhanced by Zemanta
 
1 Comment

Posted in Marketing

 

How to Trash Your Klout Score

07 Jul

I’ve been following a social experiment with great interest over the last couple of weeks. Merlin U Ward challenged himself to become influential over #futzing in Klout in 10 days. He chose a word that wouldn’t be used in normal conversation for his “scientific” experiment. At first, I ignored using the #futzing hashtag on Twitter, hoping it would go away because I didn’t know what it meant. I also had no desire to accidentally have #futzing attached to my name. When I realized I can hide word in Klout I decided to join in on the fun, as a by product my own Klout score raised 4 points over 30 days, even going up 1 point in the last 5 days.

I thought this was interesting since social media junkies are all slightly obsessed with raising Klout. I’ve never been one to follow the pack so why not do the exact opposite for 10 days?

In an effort to see the results of influence within Twitter, I disconnected my Facebook account which resulted in an immediate 2 point drop in Klout. Then I disconnected Linkedin to receive a 4 point drop in Klout to 52 points.

10 Day Plan

  • Last tweets before going silent is to moderate the Social Media Club Phoenix Chat on how to separate your professional and personal life online on July 8 from 2:00 – 3:00 pm using the hashtag #smcphxchat
  • Respond to @mentions on DM to reduce the number of tweets from my account to nearly zero over the next 10 days. This will be hard since I’ve recently switched to using Twitter to replace instant messaging and text messaging. Most of my conversations are public, I have no secrets.
  • Don’t post any content I’m reading to Twitter, post directly to Linkedin.

Report back in 5 days with a screenshot showing the Klout score at that time.

If you want to follow this experiment, don’t forget to sign up to get it delivered to your mailbox or RSS reader. You can also follow on Twitter @CherylMarquez.


Klout score after disconnecting Facebook and before disconnecting Linkedin.

Cheryl Marquez's Klout is 56 on July 7

Klout score after disconnecting LinkedIn.

Cheryl Marquez's Klout score is 52 after disconnecting Facebook & Linkedin on July 7.

Note: This entire post was written on my iPod Touch in Evernote, then pasted into the WordPress app. This is why the screenshots of Klout are from an iOS device instead of the web.

 
3 Comments

Posted in Marketing

 

Startup Weekend Chandler Day 1

25 Jun
Image representing Startup Weekend as depicted...

Image via CrunchBase

Normal people look forward to the weekend to relax and hangout with their friends. Entrepreneurs, go to Startup Weekend and decide to get involved in another exciting project. Friday morning, I woke up, got ready, and packed my purse with everything I would need to work for the day. My gear included; netbook, power charger, phone, iPod, extended battery, headphones, mouse, notebook, pens, makeup, extra t-shirt with geek logo, webcam, mouse, and USB hub. Yes, I did pack all of that in my very stylish black patent leather purse that I had to use because they matched my shoes.

I stopped by Gangplank to drop off the stuff for the Women 2.0 Founder Friday happy hour. Hand Things Down was hosting this networking event for the ladies attending Startup Weekend. Then drove to the Chandler Public Library to attend Startup 101. Startup 101 was a chance to get a primer before the weekend for anyone new to the world of being an entrepreneur. They had panels talking about creating a team, product development, and execution.

I thought the best talk was about building teams and resolving conflict given by Derek Neighbors and Jade Meskill. Here are some of their key points.

  • Create a team with a common vision.
  • Look at the vision and use that to help guide decisions and conflict resolution.
  • Read “Core Protocols” to learn about conflict resolution.
  • Ask people at the beginning about their level of commitment.
  • You should NOT compromise, negotiate for the best of each idea.
  • Teams of developers and business people should sit together to discuss direction as the weekend progresses.

As the evening kicked off, the ladies of Startup Weekend got together for Founder Friday happy hour to get to know each other before we joined the guys. There was some good discussion and an exchange of Twitter handles so we could follow each other during and after the weekend.

When Startup Weekend kicked off, we heard about 28 pitches and then the mayhem of self-forming teams commenced. Two teams stood out for me. One of them was Chow Locally who is creating a locavore website to connect local farmers with consumers and delivering the farm fresh veggies and fruit to the Phoenix Public Market.  The second team I was interested in was called Surpriz.es and this is the team I joined for the weekend. Surprizes collects birthday freebies and presents them to you on your special day with Facebook and Twitter greetings. Now you can feel the birthday love all day as you go out and collect your freebies.

So that wraps it up for Day 1. Tomorrow I will be writing up birthday related blog posts for Surprizes and greeting people for their birthdays on Twitter. Sign up for your birthday Surpriz.es.

Enhanced by Zemanta
 
No Comments

Posted in Startup

 

Why We Switched to Facebook Comments

20 Jun

90% of visitors to online communities are lurkersEvery couple of weeks we participate in a Founder Institute master class to continue discussions and keep forward momentum for our startup. The subject for the last call was user acquisition. We went over the various tactics on how to drive engagement through social media channels like Facebook fan pages, Twitter, Quora, Youtube, and commenting on blogs related to our business. Each startup participates in a different mix of social outlets, it really depends on where the customers for your company hangout, a business to business (B2B) company may not require a YouTube or Facebook presence. B2B startups may spend more time on Linkedin discussions or Quora answering questions and establishing themselves as subject matter experts in an area related to their product offering.

Driving Awareness on Facebook

After the call, it was clear we needed to switch from using the Disqus commenting system to Facebook comments. Migration will be easy since we are fairly new and we haven’t received many comments using Disqus. While no one wants to be dependent on Facebook for all of the social aspects of their web properties, this is a case where it made sense for us to move to Facebook comments. Moms with toddlers who are on Facebook are our launch target and we want to make sure every comment made on the Hand Things Down blog shows up on their walls to further drive engagement with our brand.

Where does your customer hangout online?

On Wednesday night, I was at a Social Media Planning Meeting and Jeff Moriarity said one of the pros for using Disqus is conversation around your brand from all over the web is aggregated in one place. Here are some questions your startup will need to consider; Where does your customer hangout? What do they read? What videos do they watch? Are they more likely to use Facebook or Twitter? You also need to keep in mind that if your target customer is only on Facebook, perhaps Facebook commenting will help them move from being a lurker to an engaged member of your community.

Your company can listen for conversations around the web using a different tool. We are using Google Alerts to listen for any mentions of our brand and actively retweet or push original content on Twitter and our Facebook fan page.

Enhanced by Zemanta
 
 

Getting Press for Your Startup

02 Jun

Getting your startup in the newsWhen we were in the Founder Institute at the beginning of the year, we had weekly milestones for customer development, market research, competitive analysis or product development to keep our business moving forward. The biggest aspiration we had at the time was to graduate. We worked our butts off to polish the pitch deck and get the 0.1 version of the Hand Things Down mobile app done during our last three-week sprint.

We naively thought, once we graduate we can get back to a normal life. Then as you hit each milestone, you take a breath, maybe catch up on a little sleep and start charging towards the next goal. Startups usually go into beta, then start scrambling to get press for their big launch. We were very lucky to receive our first mention in a Mashable article by Jolie O’Dell on the “5 Ambitious Social Good Startups Created in a Single Weekend” while we were busy with the private beta for Hand Things Down.

Before you begin tackling the tactics below to make a splash with your web startup, make sure you create a compelling story to make people want to share what your company’s story with their friends. Then give them a product they can’t live without so they keep telling their friends about it.

Top 7 things you need to do to launch a web startup, according to Robert Scoble on Quora:

  1. Get a LaunchRock site or create a landing page from WordPress using the LaunchPad theme to collect email addresses.
  2. Make a blog.
  3. Make a YouTube video channel.
  4. Start Tweeting.
  5. Get a Facebook Page.
  6. List your company on Angel List (and StartupLi.st, CrunchBase, etc).
  7. Figure out the 10 journalists you want to have seen your product before you launch.
  8. Be lucky…added by me

If you are creating your startup team, the ideal combination is to have one person focused on business and marketing while the other founder focuses on development. My primary focus has been on creating content for the blog, writing guest blog posts on websites that our target customer regularly visits and of course social media. Social media includes tweeting regularly on the company Twitter account, posting questions and content on the Facebook page and commenting on Facebook pages our target customer might read AS THE BUSINESS FACEBOOK PAGE. Do all of these marketing activities even before your company releases the product to build your online brand. Social media marketing takes a long time to gain traction. If you don’t have time to create your blog, create a landing page where you can collect email addresses of interested customers that you can market to when you start your beta.

I added number 8 because luck will play a part in how hard or easy it will be to get your company in the news. Since we participated in Startup Weekend, Founder Institute – Seattle, and continue to be active in the startup community, we are sometimes listed on their websites under the Hand Things Down brand. Being listed in the Startup Weekend company directory got us included in the social good article on Mashable.

Lastly, guest blog and begin developing relationships with 10 journalists you would like to feature your company before you need press and establish yourself and your company as a thought leader in your space.

Image credit: Chlorine-lim

Enhanced by Zemanta
 
 

Memory Management Part I: Objective-C Object Ownership

16 May

Proper memory management by an application is key to stability of an application. Doing it incorrectly can cause a myriad of bad things to happen! The side effects can include corrupting application data, crashing the application, locking up use of the computer or device, or even crashing the system or causing it to reboot.  Thus, memory management concerns are always in the back of the mind of every programmer (and, if they are unfortunate, the front of their mind), especially when they learn a new language. This article introduces programming issues related to memory management. In my next article I will get more technical with best memory management practices in programming iOS/CocoaTouch View Controllers.

In older, procedural programming languages that allow memory allocation (non-object based languages such as C or  Pascal), managing memory was pretty straight forward:

int appFunction(int size)
{
	int *array = malloc(size * sizeof(int));
	⋮
	free(array);   // Done with the dynamically allocated memory
} // appFunction()
Example: C-language memory allocation.

With object-oriented programming, application designers tend to structure their designs as a fluid interaction of objects. The syntax of object-oriented languages (such as C++ or Objective-C) helps programmers to avoid memory management mistakes easier than procedural languages, particularly in more complex application designs.

Since Objective-C was invented along with the APIs and frameworks used for environments like iOS and Mac OS X, Apple assumes its use with a class hierarchy and, for all practical purposes, a dependence on the NSObject base-class. This class determines a whole gamut of conventions that are nearly indistinguishable from the Objective-C language itself, so it is hardly worth discussing the use of Objective-C without NSObject.  While it looks complex, the important thing is that the allocation and deallocation is handled at well-known locations in the code that will be used for other purposes, the initializer and deinitializer.

- (id)init:(int) size
{
	self = [super init];
	if (self)
		_array = [[NSArray alloc] init];
	return self;
} // -init
	⋮
- (void)dealloc
{
	[_array release];
	[super dealloc];   // Done with the dynamically allocated memory
} // -dealloc
Example: Objective-C memory handling

Just as, with C, where you need to internalize when you should call malloc() and free(), with Objective-C  you should internalize “object ownership” and when to send retain and release. These retain/release messages (sending a message is analogous to a function or method call, in other languages) implement reference-counting—a way of keeping track of how many objects are referring to the object.

Internalize this rule: If you do allocretain, or copy on an object, you own it and it is your job to release it… otherwise it isn’t.

In Objective-C, objects allocate other objects for its use or other’s use. These allocations are memory allocations. Cocoa (used in Mac OS X) and CocoaTouch (the Cocoa variant used for iOS) programming frameworks assume a clear understanding of who owns an object. Any number of objects can retain ownership another, either explicitly or implicitly. If one object allocates another, then there is an implicit ownership of that object.

stringOwner implicitly owns the allocated object, so it must release it.

	NSString *stringOwner = [[NSString alloc] init];
	⋮
	[stringOwner release];

tempString does not get ownership, but it can use it for the duration of the method.

	NSString *tempString = [NSString string];

stringOwner has claimed ownership via retain, so it must release it.

	NSString *stringOnwer = [[NSString string] retain];
	⋮
	[stringOwner release];

If an object is passed as a parameter to another method, it is possible that the other method may claim ownership of the object. In this case, the sender (AKA “caller” in other languages) can release the object if it won’t need it, later.

	NSString *stringOnwer = [[NSString string] retain];
	⋮
	[existingArray addObject:stringOwner];  // array is also, now, an owner
	⋮
	[stringOwner release];  // Not needed by this method (or class any longer)

The problem is that, despite Apple’s simple set of rules (or, better yet, the Rules of Thumb), it is often not clear which of their APIs retain ownership of the objects passed in, even by reading the official documentation. I usually find that if I am at all unsure, I need to google it—which often leads to the most reliable advice coming from Stack Overflow.

Apple must know this because they provide their excellent (though not perfect) Instruments tool that works with their Xcode development environment to help ferret out memory bugs and leaks.

Next, I will write about memory usage as it relates to iOS CocoaTouch View Controllers (because that also isn’ve very apparent).

Resources — The Basics

 

Frameworks: Beyond the Nuts and Bolts

06 May

Without frameworks our “big ideas” would still be stuck in the pre-industrial age. —Bill Lee, Berlin, 2008

I have been on a long hunt for a PHP framework so I was going to write up an article about PHP frameworks, but then I thought I should back up a bit and talk about what a framework is and why you should use one.

Software driven computing has existed for over 60 years. In the early days computer programming was performed using long series of numbers to represent the electronic switches tell a computer what to do—computers still work this way. Fortunately no one has to program computers by speaking computer-ese numbers anymore. With that kind of tedious programming, the most advanced programs would be tic-tac-toe games.

But numbers are the nuts-and-bolts of a computer’s operation. Designing a sky-scraper while having to dwell on every nut and bolt of its construction might limit us to working in ten story buildings. It is vitally important in designing complex systems to be able to think at more abstract, level. Programming using numbers quickly led to “assembly language” as mnemonic way of specifying those numbers, then to “third-generation” programming languages (such as C, C++, Pascal, Fortran) which allow programs to be written without regard to the numbers that the computers can actually interpret. This frees software designers to think about problem-solving without being encumbered by the tediousness of the numerical “nuts-and-bolts” needed by the computers that run the programs.

Constructing a building does not occur in isolation; its context involves the skills and machinery of those involved as well as governmental and environmental infrastructure. Over the past 30+ years, the complexity of computing has given rise to very advanced operating systems that define the context in which a program runs. Add to that, the interactions between a program and other programs or data that exist across a network or even the internet and the complexity of issues add to the tediousness of dealing with nuts and bolts. Again, if a software designer has to dwell on the minutia of all these elements, modern complex, powerful software would never be completed.

A framework attempts to encapsulate the complexities of designing and implementing software. A good framework allows software design to occur more abstractly, unencumbered by the tediousness of the contextual details of  the environment. Said a different way, a good framework allows the software designers to focus on the application’s purpose rather than the complexities of implementation.

Software is constructed in layers or components. Encapsulation is one of my favorite concepts in software design and implementation. It embodies the idea that there are specifics at every level or component within the software system that need not be exposed outside that implementation for that level. There are two key side-effects of this: (1) it prevents parts of the program outside the component from messing with or depending on implementation details which leads to (2) each component’s implementation can be changed or improved without fear of adversely affecting use of the component in unexpected ways. This leads to more stable, maintainable products.

Good programmers embed encapsulation within their design and implementation. Many object-oriented programming languages attempt to formalize this concept so that it is easy to do this. Well designed frameworks do the same, “protecting” some parts of the program from complex or variable implementation details.

There are good frameworks and there are bad ones. In a later article, I will discuss some of the issues to consider in picking a framework.

What have been your experiences in using programming frameworks?