Arthur Chang

Abandon

Through the glass

 

I found myself a week ago, on the first floor of a three story building, surrounded by walls, a few pool tables, and a gigantic hole above my head showing me the sky above.  I was in an abandoned building, burned a few months ago, part of an old naval base.  It's amazing finding myself in these really different places, places where I would never have imagined existed or ever visiting, and getting quite an experience that I can't say is beneficial, harmful, or just plain useless except to satiate my desire to explore and learn.

I was afraid 70% of the time, and the rest of the time plainly numbed by the completely crazy places I was visiting, all my senses just overwhelmed to a point where none of it seemed real.  Here are a few tamer shots I've taken below.  If you are interested in all of the pictures from my group that went out, click here: http://www.flickr.com/photos/tags/sfbasmareisland/interesting/

 

Abandoned

 

 

in the halls

 

 

Come on In!

 

 

outside

 

 

Skeleton of Ship Tags

 

 

Auditorium ruckus

 

 

Come on In!

Tagged  //   abandoned   photography  

Ruby String Concatenation Escaping

Quick post about something strange I came across recently.  When you concat two ruby strings, it does an extra escape on each string.

The \r\n were double escaped so when you print the string, you don't actually get carriage return or newline characters, you literally get the slash r slash n.  That's all =)

Tagged  //   code   ruby  

Week Seven

work

The last few weeks (since the start of FanPulse) have sort of been taken up by family and friends over the holidays, mixed in with a lot of hard work.  I'll call this past week, Week Seven, since the previous few I spent most of my time hanging out and not doing as much coding and meetings as usual.

This last week we worked almost entirely from home, except for Thursday we went over to Dogpatch.  Working from home is pretty cool, you wake up and sort of just start working.  The worst part is you totally forget what's outside and work 15 - 16 hour days without realizing it.

It's probably worse to work too much in one day than to work too little, though the measure should probably be in weeks rather than days.  It's definitely quite OK to work a lot for a day or two, but over a long period of time, it'll really wear you out.

The nice part of week seven is that I felt a lot of confidence in the product, and that we were all on the same page.  We didn't have to discuss much, as we knew exactly what each other co-founder was thinking and had in mind.

The flow and process really clicked, and we pumped out a ridiculous amount of features.  If you, your developers, biz people, and all co-founders really agree and realize the product in the same light and know the gritty details, however pleasant or ugly, production skyrockets.  

I really felt that the last week was amazingly productive, even more than before, because FanPulse is almost ready for it's final app store release.  When you're really close to a first release, it's amazing how all these features just come together all of a sudden into a nice polished minimum viable product.

I'm totally excited, and I'm driven to work not because of deadlines or pressure, but because I really want to see what games my friends checked into, or what games I should be watching so I can keep up with the chatter amongst my social group, or what have you.  I want to use it!

If you guys want to venture into the "edge" version of our newest release, let me know.  We can send you the latest files and have you try it out even before it hits the app stores.

The photo above was taken on the Thursday we were working out on Dogpatch Labs.  It was a fairly foggy day, but nice light nevertheless.

Tagged  //   startup-week-by-week  

What startups are looking for in services they use

clovey dew

Are you an entrepreneur or a company that wants to make some success in providing some service for startups?  Get started by understanding what startups need.

Startups want to concentrate on their core features, any paperwork or supporting services they have to deal with, build themselves, and maintain is incredibly gross to anyone.  This is a huge problem for a lot of startups: minimizing overhead busy work.  Why would a company have to go through the mundane and standard processes of accounting, legal paperwork, and even technical features that are common everywhere?  Either it be a technical feature that supports the core product or a completely unrelated element of maintaining a startup company, it needs to be something that can run in cruise control.

Be a company that creates a service that solves the problem of abstracting perviously unavoidable tasks by basically creating the notion of: "set and forget."  The way I measure the value of a service provided for startups is how little people think about the service.  If things just work, and frees up time for core product development, then that is a good service.

A prime example is something like Superfeedr.  Julien of Superfeedr came to Dogpatch Labs to meetup with me, walked me through a lot of features I didn't understand, and really took his time to understand my problem.  He assured me his service would be the answer.  It took me a few days to setup, and months later, I haven't had to think about Superfeedr ever again.  It just works.  It's a feature that works so well I have had to dedicate no time into maintaining or tweaking it.  Time and peace of mind is the greatest gift any company could give me.

It's a good sign when people ask me how well the product is working, and have a lot of questions on how I'm solving problems of my supporting features, and I have no clue.  All I do know is that it works amazingly well, exceeded expectations, and never caused me to need to go into details of understanding why it works.

I'm also not advocating not doing your research and keeping an eye out for updates, better solutions, and so on, but there are plenty of times when it's of more value to be able to depend on a service that works well, might not be exactly the newest and cutting edge, but frees you up to really develop the aspects of your product that will get you users, get you rich.  There's always time later to optimize, and if you chose the right products to go with, those guys are going to optimize for you.

So that brings me to another point, gaining the trust of startup companies to just set and forget.  How do you portray that your service is going to be dependable to us?  Ideally in the long run, the product is going to be tried by many companies and have a really good reputation.  I have no problem seeing the all star products all currently using and advocating the use of some product and just committing to it. I trust everyone else did their research and have had good experience.  But getting to that point is difficult.

The factors that are important to getting to the point of being trustworthy is to be human.  Put a face and a team behi nd the product.  Be completely transparent so we know that you're not hiding your problems or success.  Be honest, you are making money too, and we want to know how and why.  Don't try to seem like a completely altruistic group of people, because that just seems way too suspicious.  I don't have any problem with a company making money off of me, as long as I'm getting tons of value and the prices are reasonable enough for me to continue on with business.

The initial partnerships or customers you have are really important.  Choose companies that are popular, blog and talk a lot about cool supporting companies around them.  The best I've seen go out in person to meetup, chat, and talk about their product.  Personalized service and real face to face assurance really helps validate any product.  It's hard to do, but worthwhile if you're talking to people that are heavily influential.

And when you are answering questions, don't position yourself as someone who knows more about the product and the features than the company you're trying to persuade to use your product.  Don't be stubborn or egotistic.  Listen to their feedback, their needs, and give in once in awhile.  Let them know you've definitely been aware of any issues or features they want but are not yet built, and acknowledge that the fact that they are giving you the feedback substantiates the priority of those products.  Constant and dynamic evolution of products are a good sign that it won't be left in the dust in today's pace of technological advancements.  Also making any startup feel like they have played a hand as an early adopter in helping shape the cool supporting product will help further the startup's advocation and evangelization of your product.  Asking for advice and feedback is one of the most valuable ways to keep networked with a lot of startups.

I have no doubt the majority of the companies out there have great products for startup companies, but the steps to actually getting into the hands of these startups as a viable product really hinges on the basic concepts of making life easier and enforcing constant trust is incredibly important.

Below is my plug for the companies that have made FanPulse progress so quick and has helped maintain such high quality throughout our development process.  If I missed you, that's probably a good sign, but let me know anyway and I'll add you to the list:

 

  • Superfeedr - Pushes feeds to our webhooks.  No need to manage feed pulling processes ever.
  • Heroku - Keeps our backend up and running all the time.  Provides awesome addon features that just work and need no monitoring on our part.  Also allows us to scale up in an instant, deploy new code, and more.
  • Evri - Deals with our initial sports related Natural Language Processing.  Works all the time, it's awesome.
  • Chatterous - Helps the founders communicate easily, even maintaining history when we need to go back.
  • Github - Repository to store code, place to find and track plugins and addons to help development, provides a pretty slick bug tracker as well that we don't have to maintain.
  • Amazon AWS (s3, ec2) - Helps us scale, do backups, and more, with little worry or effort.

 

(first photo taken last week on a walk with my family through Lands End in San Francisco, CA)

Tagged  //   startups  

Rails find all without associations

Finding all rows in one table that has a certain amount or no associations at all is a little tricky with ActiveRecord.  In fact, you just sort of have to hack it up or use find_by_sql instead.  Here's a smooth solution I used to find all entries without tags and notes (as an example):

Entry.find_in_batches(
  :select => "entries.*",   :joins => ["LEFT OUTER JOIN tags ON entries.id = tags.entry_id", "LEFT OUTER JOIN notes ON entries.id = notes.entry_id"],
  :conditions => "entries.entry_type = 0 and tags.id is NULL and notes.id is NULL",
  :batch_size => 500
) do |batch|
  # do something
end

Above, I'm using find_in_batches, which is an awesome new Rails 2.3 feature that batches your finds for you.  No more limiting and offsetting manually needed!  It works great.  I'm using this in a daily cron to clean up weird stuff, so there is sometimes a lot of entries to play with.  Read more about the Rails 2.3 release.

 

Tagged  //   code   ruby on rails  

Fisherman's Wharf Photoshoot with SFBAS

It's almost been a year since I organized the last photo shoot with the San Francisco Bay Area Shooters (a photo group on Flickr dedicated to organizing photo outings in and around the San Francisco Bay Area).  At one point I was going out every other weekend with this group, ranging from four to two dozen photographers each time.  It's a great hobby to really connecting everything else in life, either it be other hobbies, work, or random cool locations and subjects to take pictures of.

I decided to try to jump start the photoshoots once again, and this time we went out to Fisherman's Wharf in San Francisco, CA.  This is most likely the most touristy part of Northern California, which certainly yielded some great photo ops.

We started out with 13 people, then finding a few along the way, and eventually the group dwindled to four.  The relaxed nature of these shoots is encouraging, as it allows those with less time during the day to come out and shoot, and those who are bored or crazy go shoot for the entirety of the day (and sometimes early mornings of the next).  I saw a few old friends, and met a good amount of new friends.

We started off from Ghirardelli Square, and walked along Bay and Embarcadero.  We went out to a few Piers, back out, and then finally all the way to Pier, near the Ferry Building off Embarcadero.  It was quite the walk, but worth it =)  The weather was cold, but we were all prepared.  Here are a few of my favorites from the shoot:

 

Death for food

 

 

Fresh

 

 

lit

 

 

self motivating

 

 

arcade

 

 

secure

 

 

f line

 

 

christmas is coming

 

 

creep

 

 

watching youth

 

Finally, see all the photos from all the photographers out at the shoot here: http://www.flickr.com/search/?q=sfbas_ghirardelli&z=m&ss=2&s=int

Tagged  //   photography  

Week Six

The ropes

Here's week six in my series of documenting the early stages of my new startup.  The purpose is to document our progress, our maturity, and what we learn and experience every week.

This past week has really shown me a few key things.  

Lots of startups are trying to launch right around Christmas, either to tag onto the shopping spree of the economy, or to get things finished so they can go relax for the holidays.  There's quite a buzz in the startup community about now, and you learn a lot from them.  There's also a high level of stress, especially the balance between work and holiday festivities, which include shopping, family and friend events, traveling, and more.  Best thing to do?  Stay out of it.  Depending on Christmas for your app to launch successfully shouldn't be your strategy, though I won't deny the boost it could give.  Either way, the ultimate success of your product won't hinge on it being ready for Christmas, if it does, you have other problems to worry about.  Other stresses include the Apple App Store closing down to any changes or submissions you might have during and around the Christmas day, long lines to get approved, and other elements of your product that are totally out of your control.

Another cool characteristic about this time of the year is that you're more likely to be around friends and family.  Holidays are a great time to practice the elevator pitch.  I've learned a lot about my product by talking to a lot of people, strangers and friends alike, that I probably couldn't have in the same amount of time with my co-founders or buried in code.  I left my echo chambers last weekend to go on a photoshoot with a seriously eclectic group of people.  There were new faces, familiar faces, and old faces at the shoot.  The photo posted above is from the event at the Maritime Museum in San Francisco.  I met a few developers in enterprises, a few from Google, a few from startups, and then also a bunch of other people in various trades and fields.  All of which had at least some interest in sports.  If not before we talked, definitely after =)

At the event, I was able to take a breather and walk at least 7 - 8 miles, enjoying the outdoors and the holiday decorations.  I also talked to a lot of different people, about the new company, about my new product, and about what they thought about it.  Sure I wasn't the only one talking the whole time, but I did get a lot of reactions and feedback.  By the end of the night, my pitch had matured dramatically from when the day started.

I am a developer most of the day, coding, but that doesn't mean that's all I need to concentrate on.  Founder status requires the responsibility of keeping your head above the clouds, out of the echo chamber, and putting on many hats.  Gathering data from feedback and analytics through the product is one thing, but also just trying to describe and basically convince people that your product is awesome gives you an idea of what people want before even seeing the product.  In essence, I was trying to sell vapor.  I get a little credibility for the vapor since I'm actually building it.  This weird "Matrix" type stuff I do on the backend seems to add just enough mystery for people to give me a little more cred than I would have otherwise =)

What I've done in this exercise is further gain another set of feedback from a totally different group.  I've also further improved the pitch.  I've substantiated more of the product's focus, and have more ideas on how to market the main features.  Sure it's not the final or only set of data go off of, but getting out and doing something completely different with a totally different group of people has definitely helped me as an individual become better in experience and knowledge to continue development of the product.  It also helped me step back a bit in my thoughts of my product, to reorganize what I have been doing for a few weeks, and describing it in it's most primitive of forms.  It really helps to be able to get out of the huge hole you've dug in your product, so you can remind yourself what fresh minds really think about a potential product of yours.

This further substantiates my belief that being a successful entrepreneur and developer is strongly aided by your ability to take part in other activities outside of your daily work.  I'm not saying go out to random venues to try to push your products, nor take time away from development or from the product in order to try to gain more feedback.  But go out and enjoy the world from a different perspective completely, keep your own self achievements a little more diverse, and you'll be amazed at how people think outside of the world's startup bubble.

Practicing your pitch also gets you organized, fresh, and thinking.  It keeps you from putting yourself into dead ends, or too far down the wrong road.

Also partaking in some holiday fun will help you rejuvinate some of that spirit and excitement that is constantly being sucked away by memory leak issues, internet explorer compatibility issues, and dealing with battling third party services (apple, facebook, etc) that you depend on.

Happy holidays everyone!

Tagged  //   photography   startup-week-by-week   startups  

Week Five

Hole

 

Week five has been really exciting, and here is a little recap of it as part of my series of documenting the early stages of my new startup.  The purpose is to document our progress, our maturity, and what we learn and experience every week.

It's been a pretty exciting week.  Along with our great beta testers, being part of the target audience really helps as we can visualize and understand the app with first hand experience.  I couldn't imagine building something without having any interest in using it when it was done.  Building something that you will eagerly use is as exciting as it is motivating.

Week five was awesome, everything we did had a substantiated direction.  Instead of waiting around and trying to justify what we've built, we've proven a few theories, and totally eliminated others.  All the polishing we did made the app better, and what makes the app better?  By improving that core feature / functionality that everyone understands and uses.  We didn't spend time working on a page that only 2% of our users saw, and nobody really cared for.  We didn't spend any time adding in features that had nothing to do with our core functionality.  Everything we did helped people do what they naturally came to the app to do.

One big question we talk a lot about is, what's the pitch?  One thing to realize is that if your product doesn't dictate a clear enough pitch, it's definitely not focused or clear enough itself.  If we were making a machine that materializes a hamburger, and that's all it did, our pitch would be quite clear: "Our product makes hamburgers out of thin air."  I wish that's what we were making, but the reality is, few things are that simple to start out with.  It could have started with an idea to make food from air, an entire meal, multiple meals, for an arbitrary amount of people, possibly creating liquids to drink too, and with kosher and vegetarian modes, and what have you.  All of that is what a lot of different people want, but why promise so much when you could simplify to start with just making a hamburger and doing that really well to prove what you're capable of.

Once everyone knows exactly that one core feature that's where the excitement starts.  You no longer have as many lingering questions, nor too many tasks to tackle.  You don't have to hire tons of people to take care of each category of what your product has, but instead the core team that you like a lot working on the same core elements.  Simplifying will also help you release early and often, without ever needing to explain exactly what all the new things will help you do.  You'll know that you're going to get a better hamburger, and because of that you're excited right away.  You don't need to read into the bulleted list of features to know that.

Simplifying is the best decision to make, but it can also be the hardest one because you're letting go of all these features you were really excited about.  The best way to think about it is that nobody else is thinking as much into it as you, you're down a path way further in maturity than your product is, and that each of these features probably has a place and time in your product, but that time is later.  Wait until the audience understands and loves your core features, and then be the good guy who gives these people all the little features that they start to need.  The demand is what wil l keep your product alive after launch, the demand is what is going to help investors decide to invest, and the demand will show you the possibilities of generating revenue.  Launch with something that is awesome, just one thing.  You'll be surprised!

Anyway, the photo at the top is a picture of one of the natural bridges near Davenport, California.  I went down there a few times that day, trying to find the perfect lighting and weather.  It was raining pretty bad, and I was hoping for some breaking fluffy clouds, but settled for a dark semi-long exposure to capture a minimal look on these cool structures.  More on my Flickr stream: http://flic.kr/photos/kinetic

Tagged  //   startup-week-by-week   startups  

SSL Certificates for your iPhone App and Heroku Backend

Master Key

 

So here's the deal, you want to use SSL to transport some data that wouldn't make too many people happy if they knew it was in plaintext, but you don't need all the fancy seals and all that.  Why?  Because it's an iPhone app, not a bank website.  In iPhone apps, what you really want is to secure the data, you don't really care for the vain side of showing how secure it all is.  FanPulse follows high quality products with the same notion that apps, especially ours, always maintain the best security for your information.  No need to flaunt this fact, it's a standard, it must be done.

The issue that we came about was that we went with a provider who seemed pretty good for domain management, and has some awesome customer support representatives.  So we tried out GoDaddy.  Bad idea!  This 10 minute procedure of setting everything up on Heroku ended up taking an entire night because GoDaddy has some really deeply chained certificates.  What this means is, the certificates work only with Windows machines and browsers, not your iPhone, nor your Safari.

Sure there are ways around it, including this one which is actually one of the cleaner ways of doing it.  But one day when you move off of that server, or you're simply on a cloud solution like Heroku, it's not that easy nor clean.  Simply put, don't use GoDaddy.  Now we have to get a refund, which doesn't include a $15 "admin" fee.  really, what did you guys do that was $15 worth?  I spent more hours that cost way more messing around with your cert!

I tried out RapidSSL.com's free trial package, which is fully functional, and free for 30 days.  It's fast, not chained, worked right out of the box, and within 5 minutes it all worked, even on Heroku.  So screw trying to go with GoDaddy, no matter how attractive Danica Patrick is, and go with an unchained SSL Cert with someone like rapidssl.com.

To get started with this whole SSL Cert thing, you'll need a Certificate Signing Request (CSR).  Follow the instructions on this awesome post here to get your CSR.  Once you submit that to the Certificate Authority (ie rapidssl which actually sends it off to geotrust), it will go through a few verification steps, including sending an email to the person who registered the domain (rapidssl actually lets you choose amongst a few choices), and calling your phone number with an automated recording, asking for a confirmation code.  Once that's all done, you click a few more approve buttons and you get an email with your cert.  Finish off the last few steps in the post I just linked to in order to generate your .pem.

Now here's the Heroku part.  I would highly suggest using SNI_ssl, and their SNI_ssl addon.  it's the cleanest way to do it in a cloud instance.  If for some reason you want to support Internet Explorer and continue to allow people to torture them selves in the world's worst browser ever, you'll want to do the whole custom ssl thing.  BUT, if you're following this post because you have an iPhone app that needs to talk securely to your Heroku backend, just go with SNI:  

heroku addons:add sni_ssl

Before you can install your cert onto Heroku, you have to remove the password from your key:

openssl rsa -in fanpulse.key -out fanpulse_nopw.key

I used the fanpulse.key file as an example of the key we generated, replace that with your own.  Once you have this non-password protected key, install it onto Heroku:

heroku ssl:add cert.pem fanpulse_nopw.key

There's a tiny bit of lag, so wait a little (a minute or two) and then check your site with https://blah and from your iPhone app / simulator.  It should be dandy at that point.

Lastly, the picture of the key above is a picture I took on Alcatraz Island in the San Francisco Bay =)

Dogpatch Labs

Working consecutive days at Dogpatch Labs reminds me of the time when I was in the Rails Rumble competition with Joe, Kevin, and Rob.  That was intense, 48 hours to start and finish an app, fueled by competition and adrenaline.  The last few days at Dogpatch has not been much different surprisingly.  Now working on our own app, the motivation and drive is different but more meaningful.  Rather than just a quick reward of trying to win a competition, this is going to make one cool app that we built and can be proud of.

The environment at Dogpatch is pretty awesome.  Windows all around looking out to the SF Bay waters, sailboats, and more.  The people are all really cool, and it's like working in real life with the great startup communities you usually only have contact through emails and virtual mediums.

Dogpatch Labs is our second headquarters for FanPulse, working out here a few times a week, it keeps things a little more dynamic.  Also allows us to meetup with all the folk over here in San Francisco easier.

 

wall

 

 

window

 

 

workers

 

 

_DSC6313

 

Tonight we're having a holiday get together, I'll take more pictures then.  (Garry/Sachin, you guys coming out?)

 

Update, pictures from the FanPulse holiday get together (big excuse to reveal a small RC3 beta, get feedback, and drink beers with Dogpatch Labs residents at 4pm on a Thursday):

Joe of FanPulse hooking up the app to my Twitter discovery backend API call before the party started:

joe

 

Win, founder of Omoboto hanging out at the party:

_DSC6301

 

David of Hollr enjoying the afternoon:

david_hollr

 

Vishwas of FanPulse

_DSC6342

 

Joe of FanPulse and Jeff Glavan

joe_jeff

 

The revealing of FanPulse's upcoming RC3 release

_DSC6387