Wireless IP Security Cameras | Cam.ly Blog http://cam.ly/blog Wireless Security Cameras: The Camly Sun, 01 May 2011 22:02:53 +0000 en hourly 1 http://wordpress.org/?v=3.0.1 Choosing a Security Camera http://cam.ly/blog/2011/05/choosing-a-security-camera/ http://cam.ly/blog/2011/05/choosing-a-security-camera/#comments Sun, 01 May 2011 19:43:10 +0000 admin http://cam.ly/blog/?p=315

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.

]]>
http://cam.ly/blog/2011/05/choosing-a-security-camera/feed/ 0
JavaScript Interview Question http://cam.ly/blog/2011/01/javascript-interview-question/ http://cam.ly/blog/2011/01/javascript-interview-question/#comments Thu, 20 Jan 2011 17:01:43 +0000 admin http://cam.ly/blog/?p=293

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>




]]>
http://cam.ly/blog/2011/01/javascript-interview-question/feed/ 6
One startup’s journey into SEO http://cam.ly/blog/2011/01/one-startups-journey-into-seo/ http://cam.ly/blog/2011/01/one-startups-journey-into-seo/#comments Sat, 15 Jan 2011 23:05:54 +0000 admin http://cam.ly/blog/?p=212

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.

]]>
http://cam.ly/blog/2011/01/one-startups-journey-into-seo/feed/ 6
Give the Gift of a Custom Linux Distro http://cam.ly/blog/2010/12/give-the-gift-of-a-custom-linux-distro/ http://cam.ly/blog/2010/12/give-the-gift-of-a-custom-linux-distro/#comments Thu, 23 Dec 2010 02:12:06 +0000 admin http://cam.ly/blog/?p=266

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

]]>
http://cam.ly/blog/2010/12/give-the-gift-of-a-custom-linux-distro/feed/ 2
Startup Title Junk http://cam.ly/blog/2010/12/startup-title-junk/ http://cam.ly/blog/2010/12/startup-title-junk/#comments Tue, 21 Dec 2010 03:09:15 +0000 admin http://cam.ly/blog/?p=227

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.

]]>
http://cam.ly/blog/2010/12/startup-title-junk/feed/ 10
Code Fearlessly http://cam.ly/blog/2010/12/code-fearlessly/ http://cam.ly/blog/2010/12/code-fearlessly/#comments Thu, 02 Dec 2010 06:41:31 +0000 admin http://cam.ly/blog/?p=183

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.

]]>
http://cam.ly/blog/2010/12/code-fearlessly/feed/ 26
How the Pinata Buster Works http://cam.ly/blog/2010/10/how-the-pinata-buster-works/ http://cam.ly/blog/2010/10/how-the-pinata-buster-works/#comments Wed, 27 Oct 2010 06:47:58 +0000 admin http://cam.ly/blog/?p=119

If you haven’t played the Pinata Buster you can do that here.

The Pinata Graveyard

Rhett and I created the pinata buster as a fun example that showcases the cam.ly security camera and interface. A few friends have asked me how the pinata buster works, so here’s an overview of how we hacked together this demo.

Two Systems
The Pinata Buster can be better understood if we divide it into two systems. The first system makes it possible to see and hear the pinata buster. This system includes the security camera that records video and the web browser interface for interaction. We will call this the Cam.ly security camera and interface. The other system is all the magic (i.e. swinging the stick, playing the music, and updating the monitor) that happens when the user clicks Bust Pinata. We’ll call this part ‘The Busting Machine’.

Serving live video over the internet
The Cam.ly security camera and interface system is super simple to set up. Plug power into the camera and connect it to the internet. Point and shoot. We slightly changed the interface for the pinata buster. We won’t talk more about this part because how it works exactly is a trade secret.

The Busting Machine
When Bust Pinata is clicked our server locks out others from hitting the pinata and then does a http request to a web server running on the computer that controls The Busting Machine (The Busting Computer). The http request

agent.get('http://localhost:7777/cgi-bin/test.pl?usernick=' + usernick)

runs this perl script from cgi-bin:

#!/usr/bin/perl -w

my @values = split(/&/,$ENV{'QUERY_STRING'});
foreach my $i (@values) {
    ($varname, $mydata) = split(/=/,$i);
}

open (MYFILE, '>/home/rhett/usernick');
print MYFILE $mydata;
close MYFILE;
system('/home/rhett/music_player.rb &');
system('/home/rhett/servos/phidgets-examples/AdvancedServo-simple &');

The script has to do three things:

  1. Swing the stick
  2. Update the monitor
  3. Play music

Swinging the stick

We built this part with a wheelchair and a servos on a control board. We took the wheelchair dismantled most of it and mounted it on it’s side to a coffee table. Car hauler straps keep the wheelchair firmly connected to the coffee table. The coffee table is weighed down by the two big batteries that power the wheel. The whacker can go full speed without any wobbling. Connecting the stick to the wheel proved to be the hardest physical problem. We tried many complicated ways to tie the stick to the wheel. We tried a lot string in a intricate arrangement of sailor knots. We tried loads of duct tape. We tried sailor knots and duct tape. The solution we use now holds up as well as the intricate sailor knots but takes much less time to set up. Now we just use a single length of rope in between two screw ties.

Thats a machine that can whack a pinata pretty good, but we need to command it with a computer. We thought about reverse engineering the logic signal that was sent to the speed controller, but that seemed like a little bit of overkill for what needed to be done. Instead we built a small control board to pull the joystick forward. We pressed mounted a servos and screwed in the wheelchair’s control arm to a piece of poplar wood. We screw tied a braided string to the joystick and tied the other in to the servos. The servos was bought from Phidgets which provided us with a C API and example code. Using that we were able to write a simple C program that pulls the joystick for 5 secs then releases it.

Updating the monitor

The monitor is showing a webpage on the localhost served by the web server running on The Busting Computer. The webpage has javascript that is always pulling the name from a file.

   setInterval(function() {

$.ajax({ url: "http://localhost/cgi-bin/user.pl", context: document.body, success: function(data){
      $('#username').html(data);
      }});
},
	     1000);

Here is the user.pl script used in the above code:

#!/usr/bin/perl -w

use CGI qw( :standard );
use CGI::Carp qw( fatalsToBrowser );

print header;

open( FILE, "< /home/rhett/usernick" ) or die "Can't open $filename : $!";
while(  ) {
    print;
}
close FILE;

You can see that this javascript is pulling the name from the file /home/rhett/usernick, which is updated by the first perl script. Here is the line of code that updates that file:

system("echo '$mydata' > /home/rhett/usernick");

Playing the music
This is pretty easy we have 4 different Mexican Hat Dance songs. We randomly choose one and play it with the shell command mpg123-alsa.

#!/usr/bin/ruby
music_files = ['2.mp3', '3.mp3', '4.mp3', '5.mp3' ]

index = rand 4
chosen_file = music_files[index]
`/usr/bin/mpg123-alsa /home/rhett/pinata_music/#{chosen_file}`

Building an real world internet game
The idea for the pinata buster came because we wanted to build a cool demo to show off our awesome product. It was a lot of fun to build and play. There are an infinite number of different interactive games you could build that would be cooler. I think it would be cool if people started building more of these. If you have any ideas for a cool interactive game comment below or better build it.

]]>
http://cam.ly/blog/2010/10/how-the-pinata-buster-works/feed/ 1
Cam.ly comes with new stands http://cam.ly/blog/2010/10/cam-ly-gets-new-stands/ http://cam.ly/blog/2010/10/cam-ly-gets-new-stands/#comments Wed, 13 Oct 2010 05:46:13 +0000 admin http://cam.ly/blog/?p=93

Cam.ly now ships with new stands. We were so happy we had a photo shoot to show all the new places you can hang a cam.ly. The cam.ly can now go anywhere in seconds. These stands make hanging cam.ly almost as easy as connecting cam.ly to wireless. We want cam.ly to be as easy as possible to set up anywhere. These new stands make a lot of the set up with cam.ly more convenient. The stands remind us a lot of our own product. The stands are versatile and robust. They can be used in a lot of environments and don’t break. Cam.ly similarly can be used for a variety of purposes security cam, nanny cam, or a baby monitor. We hope you’ll enjoy all the new places cam.ly can go.





]]>
http://cam.ly/blog/2010/10/cam-ly-gets-new-stands/feed/ 0
All Camlys now come with audio http://cam.ly/blog/2010/09/all-camlys-now-come-with-audio/ http://cam.ly/blog/2010/09/all-camlys-now-come-with-audio/#comments Tue, 07 Sep 2010 21:58:09 +0000 admin http://cam.ly/blog/?p=88

We are happy to announce that all of our IP security cameras now come with live audio recording capability. Every camera has an internal microphone.

This comes standard, and everyone who already purchased Camlys will receive a free software update to enable audio on their cameras.

For those interested in specifications, the audio is encoded in the AAC format up to 32kbps. This is compatible with Adobe Flash, Iphones, Ipads, Linux, Windows, OSX, and pretty much every major device out there.

We will not be raising the prices of our cameras for this feature, and we hope to offer additional value from our cameras in the future at the lowest price possible.

]]>
http://cam.ly/blog/2010/09/all-camlys-now-come-with-audio/feed/ 0
Solar Powered Home Security Camera http://cam.ly/blog/2010/08/solar-powered-home-security-camera/ http://cam.ly/blog/2010/08/solar-powered-home-security-camera/#comments Wed, 25 Aug 2010 06:29:41 +0000 admin http://cam.ly/blog/?p=37

Setting up a solar powered security camera is easy. When you’re done you can feel good about using a renewable power source and all powerful because you’ll have eyes everywhere. The best part of setting up a security system with cam.ly is you’ll have the reassurance of checking up on what’s important to you from anywhere with an internet connection or your iPhone. I set up my security camera to watch over my front door.

Here is a youtube tutorial on setting it:

Here’s what you are going to need:

1. A cam.ly S-100 Wireless IP Security Camera with Internet DVR


2. A SunForce solar panel (you need a barrel connector I’m not positive this particular solar panel comes with one)



3. iSun Battery Pack



4. 8 rechargeable batteries


5. DC/DC converter



6. Various mounts and screws.


Here is how the system looks when its all connected:

The only tricky part of the system is connecting the solar panel to the battery pack. Make sure you find a solar panel that is capable of connecting to the battery pack you choose.

You can mount the whole system using tools you probably have in your house, I did. The bare minimum of what you are going to need is a hammer, nails and a screw driver. If you want to be fancy you can buy some mounts for the battery pack and dc/dc converter and a cordless drill (I’m looking at you Jake Ludington). I won’t waste your time with advice on how to mount the system. If you can hammer a nail or screw in a screw then you can figure all that out. The only advice you really need is set up the solar panel so it is south facing.

]]>
http://cam.ly/blog/2010/08/solar-powered-home-security-camera/feed/ 0