Archives for category: Technology

Kickstarted funded and then some. Here’s hoping this comes to fruition. It’s got an API to make apps, I’d love to make a sleep monitor with this

Clean, simple design, virtually logo-less. I’ll have to get my hands on one to see if it’s rugged enough to replace my old standby, the Timbuk2 Classic Messenger.

Opensource eclectic animation by Bleeple.

Download the Cinema 4d Files here: http://beeple-crap.com/resources.php

After hours of frustration after a failed upgrade attempt, try restoring without the power plug. The usb alone should be enough to power your AppleTV 2, and for some odd reason, causes the restore to actually work.

“Men wanted for hazardous journey. Small wages. Bitter Cold. Long months of complete darkness. Constant danger. Safe return doubtful. Honour and recognition in case of success.”

Ernest Shackleton.

This is the perhaps most accurate description of a job at an actual startup. If this sounds like something you’d be interested in, read on.

Remember, Most startups fail. Failing, however, is a crucial step towards not failing.

General advice: read as many of Paul Graham‘s essays as you possibly can. from the top down. Paul Graham has literally helped several hundred startups get off the ground. Some essays will not really be useful right now, but the ideas in there are generally very very good. Check out news.ycombinator.com on a fairly regular basis. Read the comments, lookup every word and acronym you don’t know. Watch these videos

Try to answer these questions as quickly and cheaply as possible:

  1. what is the addressable market size? meaning, in the world, right now, how many people would pay for this? How many people would be interested to the point of being regular visitors?
    this is intended to give some sort of idea about how big the opportunity is.Use tools like quantcast.com to help evaluate how big the audience is that your product might reach. Imagine if you are making a management tool for independant contractors: How many people visit http://www.contractortalk.com/ on a monthly basis? that’s about your addressable market.
  2. figure out the minimum viable product. Try to get your product down to one sentence. Perhaps even one or two pages. (not counting boilerplate, like “about us”, “FAQ” etc.)Don’t get caught up in vision of the final product. No plan ever survives first contact with the customer. Try to get to the very essence of what it is that your idea does. It should literally be one sentence, or possibly less than a sentence. The minimum viable product for google was literally a place to type in text, hit enter, and get search results from a database of websites.When people think of ideas, they go from version 0 to version infinity almost immediately. You should never stop thinking about version infinity, the absolute pinacle of what it is that your idea could be, but, you should laser focus on version 0.1, the absolute minimum of what it is that your idea does. Literally, the one thing, that without it, your idea doesn’t exist, it’s still an idea. It really should be one thing. sometimes you can get away with two. sometimes.Then, you make the one thing and you show it to as many people as possible. Maybe you don’t even make it, you tell people online that you are going to make it, you setup a website where people can give you their emails so that you can tell them when you make it, and then, when you have their emails, you ask them about it, you get them involved, you show them mockups, get them to beta test, ask them to pay you for it upfront. the works. Your customers are your partners.
  3. Fail often, fail fast, and fail cheaply.
    failure is the process of stumbling towards success. This means relentlessly testing assumptions that you have as quickly as possible, with as little downside as possible. the difficulty is figuring out how to test accurately yet also as cheaply as possible. thus, use what is already there to try to invalidate your assumptions. Think of it like science: you’ve got strong hunches that you want to prove correct, but you can’t be sure of them, and aren’t going to bet the farm until you’ve got a sure thing. The only way to be sure is to test it and be honest with yourself about the results.

How are you going to fail as fast as possible? Remove as many people, steps, and processes as possible from getting your idea in front of someone who doesn’t care about you. (Your family and friends are useless in this regard, insofar as they will not tell you that your idea is a stinker)

Crucially, if your idea happens to be related to computer and software in any way shape or form, learn how to program your computer. There are a ton of awesome resources out there to learn how to write software and for starting a business, but it can be daunting to try to separate the wheat from the chaff.

The two best languages at the moment are, in my humble opinion: ruby and javascript. Ruby because it is easy and understandable, yet also powerful, javascript because it is ubiquitous, interesting, and easy to play with: if you’ve got a browser, you can mess around with javascript. I’d look through each one below and see what seems like it’s your thing. Also, remember: it’s not that hard and more importantly there is no speed limit.

Free ruby stuff:

Free javascript

At this point, you should be ready to start failing. Go forth, claim your destiny.

Stay tuned for the next installment of this multi-part series.

Graylog2 rocks, however, the install instructions leave much to be desired, simply because they don’t mention any of the other required services and how those services should be setup.

I’m here to help.

This writeup is going to written for Ubuntu 10.04, however, if you’re installing graylog, I assume you know how to install packages on your linux distribution of choice.

First, we’re going to need all the prerequisite libraries and servers: mongo, elasticsearch, and the java jdk.
Here are some links that helped me:
mongodb ppa instructions for Ubuntu
Mongo user creation.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
wget https://github.com/downloads/Graylog2/graylog2-server/graylog2-server-0.9.6.tar.gz
wget https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.6.tar.gz
tar -xzf graylog2-server-0.9.6.tar.gz
tar -xzf graylog2-web-interface-0.9.6.tar.gz
cd graylog2-server-0.9.6
cp graylog2.conf.example /etc/graylog2.conf
cd ..
mv graylog2-server-0.9.6 /opt/graylog2-server/
tar -xzf graylog2-web-interface-0.9.6.tar.gz
mv graylog2-web-interface-0.9.6 /opt/graylog2-web-interface
 
# needed to compile ruby
apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion libcurl4-openssl-dev
# getting ruby for the web interface.
bash -s stable < http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages
 
# the default ubuntu mongodb is horribly broken
apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" >> /etc/apt/sources.list
apt-get update && apt-get install mongodb-10gen -y
 
# bind only on the localhost
echo "bind_ip = 127.0.0.1" >> /etc/mongodb.conf
/etc/init.d/mongodb restart
 
# elasticsearch
wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.0.deb
dpkg -i ./elasticsearch-0.19.0.deb
 
# only bind to localhost
echo "network.bind_host: 127.0.0.1" >> /etc/elasticsearch/elasticsearch.yml
 
#possibly necessay, if you start to get the "out of file descriptors" error in
# /var/log/elasticsearch/elasticsearch.log
echo "fs.file-max = 100000" >> /etc/sysctl.conf;
sysctl -p

Elastic search should be reasonably configured from the start for our purposes.

Setting up the mongodb user and database ( yes, I know, 123, but it’s the default, and mongodb should only be listening to loclahost.)

1
2
3
4
5
6
$ ./mongo
use admin
db.addUser("theadmin", "anadminpassword")
db.auth("theadmin","anadminpassword")
use graylog2
db.addUser("grayloguser","123")

you’ll also want to specify these values explicitly in the mongoid configuration file in the webserver. In /opt/graylog2-web-interface/config/mongoid.yml add these values, and delete the other production values.

1
2
3
4
5
6
7
# or specify values manually
production:
   host: localhost
   port: 27017
   username: grayloguser
   password: 123
   database: graylog2

the nginx upstart script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# nginx
 
description "nginx http daemon"
start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [!2345]
 
env DAEMON=/opt/nginx/sbin/nginx
env PID=/opt/nginx/logs/nginx.pid
 
expect fork
respawn
 
pre-start script
        $DAEMON -t
        if [ $? -ne 0 ]
                then exit $?
        fi
end script
 
post-stop script
    start-stop-daemon --stop --pidfile $PID --name nginx --exec $DAEMON --signal TERM
end script

and this is what your /opt/nginx/conf/nginx.conf should look like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#user  nobody;
worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
pid        logs/nginx.pid;
 
events {
    worker_connections  1024;
}
 
http {
    passenger_root /opt/graylog2-web-interface/vendor/ruby/1.9.1/gems/passenger-3.0.10;
    passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p290/ruby;
 
    include       mime.types;
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    gzip  on;
 
server {
      listen 80;
      server_name graylog2.headliner.fm;
      root /opt/graylog2-web-interface/public;   #

I used this upstart scripts for the graylog2-server. if you copy and paste it into your /etc/init files (it’s late, if you need the exact commands, write a comment…)

now, for the magic:

1
2
3
4
/etc/init.d/mongodb start
/etc/init.d/elasticsearch start
service graylog2-server start
service nginx start

and you’re off.

 

You develop an instant global consciousness, a people orientation, an intense dissatisfaction with the state of the world, and a compulsion to do something about it. From out there on the moon, international politics look so petty. You want to grab a politician by the scruff of the neck and drag him a quarter of a million miles out and say, “Look at that, you son of a bitch.

— Edgar Mitchell, Apollo 14 astronaut, People magazine, 8 April 1974.

High res original footage available from NASA.