Register your Account

Sign Up with us and enjoy!

A password will be e-mailed to you.

Choosing a Security Camera

Posted May 1, 2011



There are a lot of options when deciding on a security camera system. CCTV, IP Cameras, Analog or Digital….

You want to protect your home or small business with video security, but you’ve done some Googling and discovered there are a lot of confusing technologies out there. It’s true the state of video security technology is a mix of old and new technologies that deliver ok but not great solutions. All of the confusing technologies can be reduced to two options an Analog CCTV or an IP camera system.

Analog CCTV is the older entrenched technology. The problems are the cameras require running cable everywhere, the video resolution is worse than IP cameras and not improving, and remote access isn’t built-in.

The IP security camera is getting ready to make the older technology obsolete. The reason the shift has been so slow is IP cameras have their own problems. Equivalent IP camera systems are still on average more expensive than Analog systems, and there is a learning curve to set them up.

Cam.ly takes existing IP cameras and in addition to making them easier to set up and use, provides you with all the features that you want and need out of your camera security system. For example, motion detection, alerts, and cloud storage are all bundled into Cam.ly, and there is still much more to come.




JavaScript Interview Question

Posted January 20, 2011



We recently came across a good JavaScript interview question. We won’t disclose the name of the company using it, but we hope that this helps interviewees test their knowledge, and employers looking for good ways to design questions:

  1. Look at the following code. What does it do? What happens if you click on the li elements?
  2. Establish what happens when you click on the li elements. Can you guess? Ask the interviewee to explain why this happens.
  3. Ask how the code can be fixed so that clicking on each element outputs an alert corresponding to its order in the list (the desired behavior)

This simple exercise covers a lot of bases in evaluating someone’s JavaScript understanding in a short period of time. What do people think? What are good followup questions?

<html>
<body>
<ul>
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
</ul>
</body>

<script type="text/javascript">
  els = document.getElementsByTagName('li');
  for(i=0; i < els.length; i++){
    els[i].addEventListener('click', function(){alert(i);}, false);
  }
</script>
</html>







One startup’s journey into SEO

Posted January 15, 2011



Cliff Notes (for those with an internet attention span):
How Google works:

Tools:

Actual Blog Post
Cam.ly has done some hacking on SEO. I’ve tried to be thorough in my investigation. I’ve read everything said about SEO on Hacker News and checked out seoMoz and seobooks. I want to give my not-so-expert (although we are on the first page for some searches) advice on SEO. Overall the process is simple, but there’s a lot of confusing information and snake oil out there. There’s also a lack of non-commercial advice. This is the story of one startup’s adventure into SEO.

First you have to understand how Google works. Here is the most comprehensive resource I’ve found on how Google ranks web pages: http://www.vaughns-1-pagers.com/internet/google-ranking-factors.htm. We always go back to this list whenever we make a web page and make sure we did our best on every point. I mean EVERY POINT. Be thorough as each point counts. This is where SEOquake, SEOmoz cheatsheet, and YSlow come in handy. SEOquake will help you make sure you’ve hit a keyword density that is high but not over the spam threshold. Check SEOmoz cheatsheet to make sure you put keywords in every appropriate spot. Use YSlow to keep your page load time low. The one item that this list doesn’t really hit is the rumored super bonus for having the exact match of a search without spaces in your domain name.

Example:
Search: Easter egg
These domains get a super bonus www.easteregg.com, www.easteregg.net, and www.easteregg.org

These domains have a good match for the search but don’t receive the super bonus: www.easter-egg.com, www.easter_egg.org, www.easter1egg.net

We can verify that your domain name is very important. We receive a disproportionate amount of traffic from Vietnam. Before we registered the cam.ly address we were unaware of the actress Cam Ly from Vietnam. Now we disappoint many of her fans when they land on our page to only find security cameras.

Picture of the actress Cam Ly

Picture of the actress Cam Ly

You’ve learned incoming links are important from the resource above. So, first think of easy links you can get because they relate to you or your product. If you went to college, you probably still have some connections there that can get you a link from your school. Colleges usually have a high page rank. Use your location to get links. We’re in Austin, so we searched “Austin startups” and found a few places to list us and talk about us. You should also make a Google places page for your startup because these come up as first page results now. I don’t know what your product is but use it to get links. SEOmoz has a lot of great tools that will help you find sites that might link to you (most of their tools are link finding tools), but they cost money and are confusing to navigate. A simpler and freer solution is to use Blekko’s /seo slashtag. Search a competitor’s domain or any related website with /seo and it will give you a lot of useful information about that site’s links. The list is also ordered by how important each link is so the best links come first. I was using this tool the other day and noticed that a CMU robots resources page was linking to a competitor SuperCircuits (which is a simple store front security camera reseller). I promptly wrote the owner of the page explaining that our cameras would be a much better fit because our cameras run linux and we sell them open and encourage hacking.

Now that you sought out a lot of links to improve your pagerank, you need to choose which keywords to target. The best tool I’ve found for this is Wordtracker, which fortunately offers a free trial. Wordtracker estimates the traffic various searches are receiving (which Google AdWords estimator will also do), and it will also suggest other keyword searches to target and gives you a competitive estimate on each search. You should think long and hard about searches people interested in your product enter. Come up with a huge list and check out the traffic each search gets and how competitive it is. Focus your main pages on a few keywords.

After focusing your main pages for a few keywords you should think about the long tail of searches. Blogs are a great way to attack longtail searches. Google eats up blogs. We made a game called the pinata buster at http://cam.ly/pinata_buster (its down right now) and a blog post about the pinata buster http://cam.ly/blog/2010/10/how-the-pinata-buster-works. Even though the webpage http://cam.ly/pinata_buster has more links and likes the blog post is higher when you search ‘pinata buster’. Our blog post is on the first page and the actually game is on the fourth. Google will also index a blog quickly and it’s rewarding to see it in searches two days after publication.

According to Patrick McKenzie (an SEO expert read some of his stuff here and here) there are two types of content for your blog: pillar content and bill’er content. Pillar content is to put your blog on the map (gather links and attention). Pillar content is usually a more enjoyable read. This blog entry is pillar content. Bill’er content is designed more to sell your product. Your customers are having difficulties right? That’s why you designed a product to make their lives easier right? People search Google to solve problems. What would a potential customer specifically search when they have a problem that your product can solve. Write content about these specific problems.

That has been the journey so far.




Give the Gift of a Custom Linux Distro

Posted December 23, 2010



For all of you hackers and geeks who need a last-minute christmas present, we have just the thing for you. It’s a homemade gift, which shows that you care, but you don’t need to be crafty in the traditional sense. Total cost of materials is around 10 cents, or free if you happen to have some blank CD-R’s laying around.

Yes, in case you haven’t guessed by the title, we’re talking about giving away a custom linux distro.

You Nix Custom Linux Distro

Family members, friends, and co-workers might, at first, give you some strange looks when they take a look at a CD-R with “YOU-NIX” written on one side with a sharpie. This is where you explain that you made a “custom operating system” just for them.

How do they try it out? Simple. I recommend that you build your custom operating systems as live-cd’s, similar to Knoppix . That way, people can boot nearly any computer off of the cd, and it won’t harm whatever is already on the computer. It’s a great way for people to try out their operating system whenever they want.

Before Cam.ly, I helped to make a web service that makes creating your own linux distro easy: Suse Studio. There is also Fedora Revisor, Debian / Ubuntu Remastersys, or Instalinux.

Suse Studio Robot

One of the great things about Suse Studio is that is makes personalizing the look of your distro really easy. I simply upload some photos of freinds and click “build”, and it automatically generates a custom bootsplash image for me.

Unfortunately, Suse Studio still seems to be requiring invites. You could request an invite, but if it doesn’t come in time, feel free to use this basic 140MB Tux-in-a-Santa-hat themed distro as a starter. Then, you can use ISO Master to modify the branding or whatever else you want.

You could try to edit the ISO directly by first mounting it with a command like:

mount -t iso9660 -o loop disk1.iso /mnt/disk

However, it will mount in read only mode. Since you’re trying to make a bootable image, you will need to make sure that if you copy the contents off, and try to burn them again, you will need to make your new iso bootable. That is why using ISO master is probably an easier solution.

If you really want a custom-branded distro, and can’t get a Suse Studio invite in time, leave a comment below with a link to a graphic, and I’ll try to make you a branded distro with Suse Studio before Christmas Eve.

Happy Holidays from the Cam.ly Team!
Santa Tux




Startup Title Junk

Posted December 21, 2010



John Gruber at Daring Fireball wrote a little today about title tags. His main issue is that many news websites have annoyingly long and possibly SEO-focused title tags. He wishes every site had super simple human readable title tags (for example Google’s title tag is “Google” and Apple’s title tag is “Apple”). In an ideal world I obviously agree with John. It would be great if every title tag was simple. Google and Apple obviously don’t need to worry about people discovering their brand though a search engine like many early-stage startups.

I’ve been thinking of writing a blog post about how many small companies and startups get the title tag wrong. The original title of my post was going to be Can you afford to miss out on title tag traffic. Cam.ly knows of websites run by friends that make no effort to optimize their title tag for Google. It’s unfortunate, because these websites have done the hard work to establish a web presence. Some of these sites have a PageRank of 5. They could gain substantial search engine traffic with a simple title tag change.

One of the websites is a web based magazine quarterly called the Wag’s Revue. Their title tag is “Welcome to the Wag’s Revue”. They show up on the first page for searches like “welcome revue.” I know that not many people search google to find something to read, but if their title tag explained what they were an “Online Literary Magazine” they might acquire new readers every quarter.

Airbnb has a brilliantly engineered title, and with a little bit of effort, they optimize the search experience for 2 major types of search engine users:

1. People who already know the brand “Airbnb”. For whatever reason, they are typing the name into google. Maybe they don’t know if it’s “Airbnb.net”, or maybe they just type everything into google. People who operate websites with any traffic know that this is a surprisingly significant percentage of search engine traffic.

2. People who are looking for what Airbnb offers without typing in the brand. These people may never have heard of Airbnb before.

Look at what happens in the first case where we type in “airbnb”:

Airbnb with ShortName Title

Perfect. For the user who is looking specifically for “Airbnb”, it is very clear where to navigate.

However, if you take a look at their title tag, this is what you will see. A very keyword-rich descriptive title:

<title>Vacation rentals, private rooms, sublets by the night - Accommodations on Airbnb</title>

So, how did google show a different title? Digging further into Airbnb’s html source, you will find this:

 <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Airbnb" />

Airbnb is taking advantage of the open search description document.

Google will return the “ShortName” when a result turns up with a stronger match for the ShortName than the title.

It appears that google will try to automatically detect your “brand”. Some ways to try to indicate to google about your brand include putting it in your title along with a “divider” character, like a ‘|’ or ‘-’.
Now, take a look at the second case, where someone is just interested in finding a “vacation rental for the night”:

Airbnb with Descriptive Title

This is a much better result for someone who may not be familiar with the Airbnb brand yet.

So, as you can see, with some careful planing and using opensearch documents, you can craft a title tag to provide the best possible search experience for your users.

Edit: Previously, we incorrectly stated that we thought Airbnb was indicating to google about their “ShortName” via an opensearch xml document. The purpose of the opensearch xml document is actually to describe the search engine, which Airbnb runs on its main page.




Code Fearlessly

Posted December 2, 2010



When Dane Jensen first started to work on Cam.ly, he dove right into things and wanted to learn how everything worked. It was no small feat, considering that our system already used (in addition to others) Ruby on Rails, Haml / Sass, Javascript, Java, shell, c, and c++.

After a few days, he was ready for a task, and I gave him some tough problems that we had to solve. We had some great brainstorming sessions, and decided that there were a few potential ways that we could approach solving some of our major problems, which he would work on. A few days later, I came back to see how he was doing, and noticed that he had apparently lost a lot of his initial energy. I asked him how his work was going on the big problems and he explained that he was intimidated and didn’t want to break anything. Then I said two words to Dane that changed him forever:

“Code Fearlessly”

All of the code he was working on was versioned in git. He was working entirely on development machines (not production). There was absolutely no way for him to break anything.

I decided that “Coding Fearlessly” was critical to being an extremely productive programmer by watching Nat Friedman. Nat is one of the best programmers I know, and he truly loves working on software.

Fearlesss Nat, staring down some code

One day I watched Nat deleting and changing a lot of code that people had obviously spent a lot of time writing. Some people might feel scared to even save the file after deleting so much code. Nat didn’t hesitate at all. He said, “Ok, well this is all in git,” and just started deleting. He was right. There was nothing he could do that would set back anyone else’s work, and even if he pushed to a development server (not likely unless he was sure it was a good commit), it would probably only take someone a few minutes to roll things back to the way things were.

There has been a lot of excitement, hype, and potentially disappointment when software development processes such as, XP (eXtreme Programming), TDD (Test Driven Development), or BDD (Behavior Driven Development), work really well for some teams, but not others. A huge benefit of TDD is that in some teams, on some projects, it creates a safety net where people are able to code fearlessly, and as long as all of the tests pass, they can push code. The benefits from having developers who work fearlessly without disrupting each other are enormous on any project.

Thinking about it further, I realized that this also reminded me of a story that the inventor, roboticist, and entrepreneur, Thomas Massie, once told me. When he was a child, he was fortunate enough that his parents bought a computer, and he desperately wanted to start making robots with it. However, he was smart enough to know that it was a bad idea to start sticking wires into the family computer that cost thousands of dollars. So, Thomas hatched a plan. He figured out that he could scotch-tape photo sensors to the computer screen and write programs that turned portions of the screen either on full brightness or full darkness. That way, he could write programs that controlled motors, without electrically connecting anything to the computer itself.

Young Thomas Massie, and his robot arm

Many years later, at MIT, Thomas realized that as young child, he had re-invented the Opto-isolator, a device that gave him the freedom to work fearlessly with a computer.

While the benefits of “Coding Fearlessly” are clear to me, I think it’s important to make the distinction from “Coding Recklessly.” To truly code fearlessly, an environment must be created where there is truly nothing for the coder to fear. We developers are fortunate to finally have, as of the past few years, tools that can allow this for all developers cost effectively. Distributed version control (git, mercurial), virtual machines locally or in the cloud, laptops powerful enough to run databases, smartphone emulators, and many other pieces of technology (hardware or software), can all be used to put together development environments for software engineers that are very much unlike the days of the past.

Whoever is setting up the development environment for any project, whether your team is 1 person or 100 people, it doesn’t matter if you choose “agile” or “waterfall.” Your primary concern should be to create an environment where you developers can code fearlessly.