Home
Ash's Journal [entries|friends|calendar]
Ash

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Quick refresher on Linux file system organization . . [28 Oct 2009|12:22pm]
Great graphic by linuxconfig.org

post comment

gzip vs zip [27 Oct 2009|03:33pm]
Despite the fact that I've been doing this tech thing for over seven years, I'm still such a newbie . . Learned that the two are not just two different implementations of the same compression-packing/decompression-unpacking algorithms today . .


gzip is normally used to compress just single files. Compressed archives are typically created by assembling collections of files into a single tar archive, and then compressing that archive with gzip. The final .tar.gz or .tgz file is usually called a tarball.

gzip is not to be confused with the ZIP archive format, which also uses DEFLATE. The ZIP format can hold collections of files without an external archiver, but is less compact than compressed tarballs holding the same data, because it compresses files individually and cannot take advantage of redundancy between files
post comment

Survey about start-ups from Paul Graham . . [27 Oct 2009|12:16am]
Another good read on Paul Graham's blog about the results from a survey about surprises at a start-up . . "What Start-ups are really like"

Embedding this one here because while I'm already aware of most of these thoughts from my time at the 'Egg and conversing with founders and VCs, I'd like to see whether I'm still surprised by any of these in two or three years time when my start-up is on the road to success (hopefully!) . .





1. Be Careful with Cofounders


This was the surprise mentioned by the most founders. There were
two types of responses: that you have to be careful who you pick
as a cofounder, and that you have to work hard to maintain your
relationship.

What people wished they'd paid more attention to when choosing
cofounders was character and commitment, not ability. This was
particularly true with startups that failed. The lesson: don't
pick cofounders who will flake.

Here's a typical reponse:

You haven't seen someone's true colors unless you've worked
with them on a startup.

The reason character is so important is that it's tested more
severely than in most other situations. One founder said explicitly
that the relationship between founders was more important than
ability:

I would rather cofound a startup with a friend than a stranger
with higher output. Startups are so hard and emotional that
the bonds and emotional and social support that come with
friendship outweigh the extra output lost.

We learned this lesson a long time ago. If you look at the YC
application, there are more questions about the commitment and
relationship of the founders than their ability.

Founders of successful startups talked less about choosing cofounders
and more about how hard they worked to maintain their relationship.

One thing that surprised me is how the relationship of startup
founders goes from a friendship to a marriage. My relationship
with my cofounder went from just being friends to seeing each
other all the time, fretting over the finances and cleaning up
shit. And the startup was our baby. I summed it up once like
this: "It's like we're married, but we're not fucking."

Several people used that word "married." It's a far more intense
relationship than you usually see between coworkers—partly because
the stresses are so much greater, and partly because at first the
founders are the whole company. So this relationship has to be
built of top quality materials and carefully maintained. It's the
basis of everything.


2. Startups Take Over Your Life


Just as the relationship between cofounders is more intense than
it usually is between coworkers, so is the relationship between the
founders and the company. Running a startup is not like having a
job or being a student, because it never stops. This is so foreign
to most people's experience that they don't get it till it happens.

I didn't realize I would spend almost every waking moment either
working or thinking about our startup. You enter a whole
different way of life when it's your company vs. working for
someone else's company.

It's exacerbated by the fast pace of startups, which makes it seem
like time slows down:

I think the thing that's been most surprising to me is how one's
perspective on time shifts. Working on our startup, I remember
time seeming to stretch out, so that a month was a huge interval.

In the best case, total immersion can be exciting:

It's surprising how much you become consumed by your startup,
in that you think about it day and night, but never once does
it feel like "work."

Though I have to say, that quote is from someone we funded this
summer. In a couple years he may not sound so chipper.


3. It's an Emotional Roller-coaster


This was another one lots of people were surprised about. The ups
and downs were more extreme than they were prepared for.

In a startup, things seem great one moment and hopeless the next.
And by next, I mean a couple hours later.

The emotional ups and downs were the biggest surprise for me.
One day, we'd think of ourselves as the next Google and dream
of buying islands; the next, we'd be pondering how to let our
loved ones know of our utter failure; and on and on.

The hard part, obviously, is the lows. For a lot of founders that
was the big surprise:

How hard it is to keep everyone motivated during rough days or
weeks, i.e. how low the lows can be.

After a while, if you don't have significant success to cheer you
up, it wears you out:

Your most basic advice to founders is "just don't die," but the
energy to keep a company going in lieu of unburdening success
isn't free; it is siphoned from the founders themselves.

There's a limit to how much you can take. If you get to the point
where you can't keep working anymore, it's not the end of the world.
Plenty of famous founders have had some failures along the way.


4. It Can Be Fun


The good news is, the highs are also very high. Several founders
said what surprised them most about doing a startup was how fun it
was:

I think you've left out just how fun it is to do a startup. I
am more fulfilled in my work than pretty much any of my friends
who did not start companies.

What they like most is the freedom:

I'm surprised by how much better it feels to be working on
something that is challenging and creative, something I believe
in, as opposed to the hired-gun stuff I was doing before. I
knew it would feel better; what's surprising is how much better.

Frankly, though, if I've misled people here, I'm not eager to fix
that. I'd rather have everyone think starting a startup is grim
and hard than have founders go into it expecting it to be fun, and
a few months later saying "This is supposed to be fun? Are you
kidding?"

The truth is, it wouldn't be fun for most people. A lot of what
we try to do in the application process is to weed out the people
who wouldn't like it, both for our sake and theirs.

The best way to put it might be that starting a startup is fun the
way a survivalist training course would be fun, if you're into that
sort of thing. Which is to say, not at all, if you're not.


5. Persistence Is the Key


A lot of founders were surprised how important persistence was in
startups. It was both a negative and a positive surprise: they were
surprised both by the degree of persistence required

Everyone said how determined and resilient you must be, but
going through it made me realize that the determination required
was still understated.

and also by the degree to which persistence alone was able to
dissolve obstacles:

If you are persistent, even problems that seem out of your
control (i.e. immigration) seem to work themselves out.

Several founders mentioned specifically how much more important
persistence was than intelligence.

I've been surprised again and again by just how much more
important persistence is than raw intelligence.

This applies not just to intelligence but to ability in general,
and that's why so many people said character was more important in
choosing cofounders.


6. Think Long-Term


You need persistence because everything takes longer than you expect.
A lot of people were surprised by that.

I'm continually surprised by how long everything can take.
Assuming your product doesn't experience the explosive growth
that very few products do, everything from development to
dealmaking (especially dealmaking) seems to take 2-3x longer
than I always imagine.

One reason founders are surprised is that because they work fast,
they expect everyone else to. There's a shocking amount of shear
stress at every point where a startup touches a more bureaucratic
organization, like a big company or a VC fund. That's why fundraising
and the enterprise market kill and maim so many startups.


But I think the reason most founders are surprised by how long it
takes is that they're overconfident. They think they're going to
be an instant success, like YouTube or Facebook. You tell them
only 1 out of 100 successful startups has a trajectory like that,
and they all think "we're going to be that 1."

Maybe they'll listen to one of the more successful founders:

The top thing I didn't understand before going into it is that
persistence is the name of the game. For the vast majority of
startups that become successful, it's going to be a really
long journey, at least 3 years and probably 5+.

There is a positive side to thinking longer-term. It's not just
that you have to resign yourself to everything taking longer than
it should. If you work patiently it's less stressful, and you can
do better work:

Because we're relaxed, it's so much easier to have fun doing
what we do. Gone is the awkward nervous energy fueled by the
desperate need to not fail guiding our actions. We can concentrate
on doing what's best for our company, product, employees and
customers.

That's why things get so much better when you hit ramen profitability.
You can shift into a different mode of working.


7. Lots of Little Things

We often emphasize how rarely startups win simply because they hit
on some magic idea. I think founders have now gotten that into
their heads. But a lot were surprised to find this also applies
within startups. You have to do lots of different things:

It's much more of a grind than glamorous. A timeslice selected
at random would more likely find me tracking down a weird DLL
loading bug on Swedish Windows, or tracking down a bug in the
financial model Excel spreadsheet the night before a board
meeting, rather than having brilliant flashes of strategic
insight.

Most hacker-founders would like to spend all their time programming.
You won't get to, unless you fail. Which can be transformed into:
If you spend all your time programming, you will fail.

The principle extends even into programming. There is rarely a
single brilliant hack that ensures success:

I learnt never to bet on any one feature or deal or anything
to bring you success. It is never a single thing. Everything
is just incremental and you just have to keep doing lots of
those things until you strike something.

Even in the rare cases where a clever hack makes your fortune, you
probably won't know till later:

There is no such thing as a killer feature. Or at least you
won't know what it is.

So the best strategy is to try lots of different things. The reason
not to put all your eggs in one basket is not the usual one,
which applies even when you know which basket is best. In a startup
you don't even know that.


8. Start with Something Minimal


Lots of founders mentioned how important it was to launch with the
simplest possible thing. By this point everyone knows you should
release fast and iterate. It's practically a mantra at YC. But
even so a lot of people seem to have been burned by not doing it:

Build the absolute smallest thing that can be considered a
complete application and ship it.

Why do people take too long on the first version? Pride, mostly.
They hate to release something that could be better. They worry
what people will say about them. But you have to overcome this:

Doing something "simple" at first glance does not mean you
aren't doing something meaningful, defensible, or valuable.

Don't worry what people will say. If your first version is so
impressive that trolls don't make fun of it, you waited too long
to launch.


One founder said this should be your approach to all programming,
not just startups, and I tend to agree.

Now, when coding, I try to think "How can I write this such
that if people saw my code, they'd be amazed at how little there
is and how little it does?"

Over-engineering is poison. It's not like doing extra work for
extra credit. It's more like telling a lie that you then have to
remember so you don't contradict it.


9. Engage Users


Product development is a conversation with the user that doesn't
really start till you launch. Before you launch, you're like a
police artist before he's shown the first version of his sketch to
the witness.

It's so important to launch fast that it may be better to think of
your initial version not as a product, but as a trick for getting
users to start talking to you.

I learned to think about the initial stages of a startup as a
giant experiment. All products should be considered experiments,
and those that have a market show promising results extremely
quickly.

Once you start talking to users, I guarantee you'll be surprised
by what they tell you.

When you let customers tell you what they're after, they will
often reveal amazing details about what they find valuable as
well what they're willing to pay for.

The surprise is generally positive as well as negative. They won't
like what you've built, but there will be other things they would
like that would be trivially easy to implement. It's not till you
start the conversation by launching
the wrong thing that they can
express (or perhaps even realize) what they're looking for.


10. Change Your Idea


To benefit from engaging with users you have to be willing to change
your idea. We've always encouraged founders to see a startup idea
as a hypothesis rather than a blueprint. And yet they're still
surprised how well it works to change the idea.

Normally if you complain about something being hard, the general
advice is to work harder. With a startup, I think you should
find a problem that's easy for you to solve. Optimizing in
solution-space is familiar and straightforward, but you can
make enormous gains playing around in problem-space.

Whereas mere determination, without flexibility, is a greedy algorithm
that may get you nothing more than a mediocre local maximum:

When someone is determined, there's still a danger that they'll
follow a long, hard path that ultimately leads nowhere.

You want to push forward, but at the same time twist and turn to
find the most promising path. One founder put it very succinctly:

Fast iteration is the key to success.

One reason this advice is so hard to follow is that people don't
realize how hard it is to judge startup ideas, particularly their
own. Experienced founders learn to keep an open mind:

Now I don't laugh at ideas anymore, because I realized how
terrible I was at knowing if they were good or not.

You can never tell what will work. You just have to do whatever
seems best at each point. We do this with YC itself. We still
don't know if it will work, but it seems like a decent hypothesis.


11. Don't Worry about Competitors


When you think you've got a great idea, it's sort of like having a
guilty conscience about something. All someone has to do is look
at you funny, and you think "Oh my God, they know."

These alarms are almost always false:

Companies that seemed like competitors and threats at first
glance usually never were when you really looked at it. Even
if they were operating in the same area, they had a different
goal.

One reason people overreact to competitors is that they overvalue
ideas. If ideas really were the key, a competitor with the same
idea would be a real threat. But it's usually execution that
matters:

All the scares induced by seeing a new competitor pop up are
forgotten weeks later. It always comes down to your own product
and approach to the market.

This is generally true even if competitors get lots of attention.

Competitors riding on lots of good blogger perception aren't
really the winners and can disappear from the map quickly. You
need consumers after all.

Hype doesn't make satisfied users, at least not for something as
complicated as technology.


12. It's Hard to Get Users


A lot of founders complained about how hard it was to get users,
though.

I had no idea how much time and effort needed to go into attaining
users.

This is a complicated topic. When you can't get users, it's hard
to say whether the problem is lack of exposure, or whether the
product's simply bad. Even good products can be blocked by switching
or integration costs:

Getting people to use a new service is incredibly difficult.
This is especially true for a service that other companies can
use, because it requires their developers to do work. If you're
small, they don't think it is urgent.

The sharpest criticism of YC came from a founder who said we didn't
focus enough on customer acquisition:

YC preaches "make something people want" as an engineering task,
a never ending stream of feature after feature until enough
people are happy and the application takes off. There's very
little focus on the cost of customer acquisition.

This may be true; this may be something we need to fix, especially
for applications like games. If you make something where the
challenges are mostly technical, you can rely on word of mouth,
like Google did. One founder was surprised by how well that worked
for him:

There is an irrational fear that no one will buy your product.
But if you work hard and incrementally make it better, there
is no need to worry.

But with other types of startups you may win less by features and
more by deals and marketing.


13. Expect the Worst with Deals


Deals fall through. That's a constant of the startup world. Startups
are powerless, and good startup ideas generally seem wrong. So
everyone is nervous about closing deals with you, and you have no
way to make them.

This is particularly true with investors:

In retrospect, it would have been much better if we had operated
under the assumption that we would never get any additional
outside investment. That would have focused us on finding
revenue streams early.

My advice is generally pessimistic. Assume you won't get money,
and if someone does offer you any, assume you'll never get any more.

If someone offers you money, take it. You say it a lot, but I
think it needs even more emphasizing. We had the opportunity
to raise a lot more money than we did last year and I wish we
had.

Why do founders ignore me? Mostly because they're optimistic by
nature. The mistake is to be optimistic about things you can't
control. By all means be optimistic about your ability to make
something great. But you're asking for trouble if you're optimistic
about big companies or investors.


14. Investors Are Clueless


A lot of founders mentioned how surprised they were by the cluelessness
of investors:

They don't even know about the stuff they've invested in. I
met some investors that had invested in a hardware device and
when I asked them to demo the device they had difficulty switching
it on.

Angels are a bit better than VCs, because they usually have startup
experience themselves:

VC investors don't know half the time what they are talking
about and are years behind in their thinking. A few were great,
but 95% of the investors we dealt with were unprofessional,
didn't seem to be very good at business or have any kind of
creative vision. Angels were generally much better to talk to.

Why are founders surprised that VCs are clueless? I think it's
because they seem so formidable.

The reason VCs seem formidable is that it's their profession to.
You get to be a VC by convincing asset managers to trust you with
hundreds of millions of dollars. How do you do that? You have to
seem confident, and you have to seem like you understand technology.


15. You May Have to Play Games


Because investors are so bad at judging you, you have to work harder
than you should at selling yourself. One founder said the thing
that surprised him most was

The degree to which feigning certitude impressed investors.

This is the thing that has surprised me most about YC founders'
experiences. This summer we invited some of the alumni to talk to
the new startups about fundraising, and pretty much 100% of their
advice was about investor psychology. I thought I was cynical about
VCs, but the founders were much more cynical.

A lot of what startup founders do is just posturing. It works.

VCs themselves have no idea of the extent to which the startups
they like are the ones that are best at selling themselves to VCs.
It's exactly the same phenomenon we saw a step earlier. VCs get
money by seeming confident to LPs, and founders get money by seeming
confident to VCs.


16. Luck Is a Big Factor


With two such random linkages in the path between startups and
money, it shouldn't be surprising that luck is a big factor in
deals. And yet a lot of founders are surprised by it.

I didn't realize how much of a role luck plays and how much is
outside of our control.

If you think about famous startups, it's pretty clear how big a
role luck plays. Where would Microsoft be if IBM insisted on an
exclusive license for DOS?

Why are founders fooled by this? Business guys probably aren't,
but hackers are used to a world where skill is paramount, and you
get what you deserve.

When we started our startup, I had bought the hype of the startup
founder dream: that this is a game of skill. It is, in some
ways. Having skill is valuable. So is being determined as all
hell. But being lucky is the critical ingredient.

Actually the best model would be to say that the outcome is the
product of skill, determination, and luck. No matter how much
skill and determination you have, if you roll a zero for luck, the
outcome is zero.

These quotes about luck are not from founders whose startups failed.
Founders who fail quickly tend to blame themselves. Founders who
succeed quickly don't usually realize how lucky they were. It's
the ones in the middle who see how important luck is.


17. The Value of Community


A surprising number of founders said what surprised them most about
starting a startup was the value of community. Some meant the
micro-community of YC founders:

The immense value of the peer group of YC companies, and facing
similar obstacles at similar times.

which shouldn't be that surprising, because that's why it's structured
that way. Others were surprised at the value of the startup community
in the larger sense:

How advantageous it is to live in Silicon Valley, where you
can't help but hear all the cutting-edge tech and startup news,
and run into useful people constantly.

The specific thing that surprised them most was the general spirit
of benevolence:

One of the most surprising things I saw was the willingness of
people to help us. Even people who had nothing to gain went out
of their way to help our startup succeed.

and particularly how it extended all the way to the top:

The surprise for me was how accessible important and interesting
people are. It's amazing how easily you can reach out to people
and get immediate feedback.

This is one of the reasons I like being part of this world. Creating
wealth is not a zero-sum game, so you don't have to stab people in
the back to win.


18. You Get No Respect


There was one surprise founders mentioned that I'd forgotten about:
that outside the startup world, startup founders get no respect.

In social settings, I found that I got a lot more respect when
I said, "I worked on Microsoft Office" instead of "I work at a
small startup you've never heard of called x."

Partly this is because the rest of the world just doesn't get
startups, and partly it's yet another consequence of the fact that
most good startup ideas seem bad:

If you pitch your idea to a random person, 95% of the time
you'll find the person instinctively thinks the idea will be a
flop and you're wasting your time (although they probably won't
say this directly).

Unfortunately this extends even to dating:

It surprised me that being a startup founder does not get you
more admiration from women.

I did know about that, but I'd forgotten.


19. Things Change as You Grow


The last big surprise founders mentioned is how much things changed
as they grew. The biggest change was that you got to program even
less:

Your job description as technical founder/CEO is completely
rewritten every 6-12 months. Less coding, more
managing/planning/company building, hiring, cleaning up messes,
and generally getting things in place for what needs to happen
a few months from now.

In particular, you now have to deal with employees, who often have
different motivations:

I knew the founder equation and had been focused on it since I
knew I wanted to start a startup as a 19 year old. The employee
equation is quite different so it took me a while to get it
down.

Fortunately, it can become a lot less stressful once you reach
cruising altitude:

I'd say 75% of the stress is gone now from when we first started.
Running a business is so much more enjoyable now. We're more
confident. We're more patient. We fight less. We sleep more.

I wish I could say it was this way for every startup that succeeded,
but 75% is probably on the high side.

post comment

Apache Virtual Hosting Basics . . [24 Oct 2009|01:29am]
Using "Name-based Virtual Hosts" will typically suffice for most needs . .
(Paraphrased from the Apache Documentation)

To use name-based virtual hosting, one must designate the IP address[es] (and optionally port[s]) on the server using the NameVirtualHost directive. Typically, any and all IP addresses on the server will be used which can be specified using the * wildcard as the argument to NameVirtualHost.

Next, one must create a <VirtualHost> block for each different host that is served. The argument to each <VirtualHost> directive should match an argument to one of the NameVirtualHost directives (ie, an IP address, or * for all addresses). Inside each <VirtualHost> block, there must be at least one ServerName directive to designate which host is being served and a DocumentRoot directive to point to that host's content.

Remember to create a <VirtualHost> block for an existing host when adding virtual hosts to an existing web server. The ServerName and DocumentRoot included in this virtual host should be the same as the global ServerName and DocumentRoot. Listing this virtual host first in the configuration file will make it the default host.

Example for "www.domain.tld" & "www.otherdomain.tld" both hosted at the same IP address:

NameVirtualHost *

<VirtualHost *>
ServerName www.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

More than one domain can be served by a virtual host by using the ServerAlias directive, placed inside the <VirtualHost> section. For example, if added to the <VirtualHost> block above:

ServerAlias domain.tld *.domain.tld

then requests for all hosts in the domain.tld domain will be served by the www.domain.tld virtual host. The wildcard characters * and ? can be used to match names.

One note about directives . . Configuration directives set in the main server context (outside any <VirtualHost> container) will be used only if they are not overriden by the virtual host settings.

Now when a request arrives, the server will first check if it is using an IP address that matches the NameVirtualHost. If it is, then it will look at each <VirtualHost> section with a matching IP address and try to find one where the ServerName or ServerAlias matches the requested hostname. If it finds one, then it uses the configuration for that server. If no matching virtual host is found, then the first listed virtual host that matches the IP address will be used.

As a consequence, the first listed virtual host is the default virtual host. The DocumentRoot from the main server will never be used when an IP address matches the NameVirtualHost directive. If you would like to have a special configuration for requests that do not match any particular virtual host, simply put that configuration in a <VirtualHost> container and list it first in the configuration file.
post comment

Apache's mod_access reminder . . [23 Oct 2009|06:38pm]
Ordering is one of:

Allow,Deny
First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected. Last, any requests which do not match an Allow or a Deny directive are denied by default.
Deny,Allow
First, all Deny directives are evaluated; if any match, the request is denied unless it also matches an Allow directive. Any requests which do not match any Allow or Deny directives are permitted.

Keywords may only be separated by a comma; no whitespace is allowed between them.

Possible Results:Result of Allow,DenyResult of Deny,Allow
Matched Allow onlyRequest allowedRequest allowed
Matched Deny only Request denied Request denied
No match Default to second directive: Denied Default to second directive: Allowed
Matched both Allow & Deny Final match controls: Denied Final match controls: Allowed
post comment

Lesson about Ubuntu 8.04 (Hardy Heron) . . [23 Oct 2009|04:51pm]
* Just found out that creating a user will default the user's shell to /bin/sh instead of /bin/bash.
post comment

"The Root to the Branch" by Lee Hyun-soo [20 Oct 2009|12:58pm]
[ mood | thankful ]

This is a rather touching poem my aunt had sent me a while back which got buried in my stuff. Didn't find it until I moved to LA . . It's been translated from Korean.



When you were a young sprout, you emerged from the ground,
Out from the darkness,
Eventually rising up towards the sun,
I only went deeper and deeper into the ground,
My blind hands making its way into the darkness.
When your trunk continued to grow and your spring green leaves started to appear,
As usual, I moved more and more underground in the closed darkness.
When your flowers finally bloomed and you played with the dancing bees and butterflies,
I endured hardship from the huge rocks underneath.
With no eyes to see I had to find an opening as tiny as the end of a needle.
One day you were lashed by a fierce rainstorm,
When you groaned from your torn and twisted branches,
I only felt frustration for you.
I believed.
I embraced this darkness with my whole body,
So that you would not fall.
And when all the tests disappeared and autumn arrived,
You grew beautiful fruits.
In order for me to gather as much water as I could,
I again moved deeper into the ground.
Even when your leaves and fruits fell to the ground and you took your winter rest,
I gasped for breath in the soil.
When spring returns you will live gloriously once again.
Even if you forget me, I will not mind.
Even if you forget me like the black darkness, I will not mind.
post comment

Lessons on LA geography . . [16 Oct 2009|03:04pm]
The area loosely bounded by the I-405 on the west, I-10 & I-5 on the north, I-605 on the east and I-405 on the south is what's referred to as "South Central". This is approximately a 15mi. x 15mi. area . . it's a fairly significant portion of the city and county.
post comment

Apache 2.2 & PHP 5.2.11 Deployment on Windows [15 Oct 2009|02:04pm]
Apache:
* Change DocumentRoot
* Check security directives

PHP:
* Set up PHPRC environmental variable
* Comment out non-essential extensions
* Alter doc_root & include_path
* Verify extension_dir
* Verify LoadModule directive for PHP in httpd.conf
* Comment out PHPIniDir directive for PHP in httpd.conf
post comment

My life in dimensions . . [12 Oct 2009|05:19pm]
It's kinda' neat. I've just moved pretty much all my belongings into my new apartment and can fit it all in my room. I think it might be the biggest room I've ever lived in at 12'7" x 10'4" with a 2'3" x 10' closet. Actually, I think my room in NY was bigger but I didn't have such a spacious closet before . . nor did I have such a high ceiling. I'm digging this super-high, sloped ceiling with a random window. It's totally useless but makes it feel quite roomy . .
post comment

Undergrad Rankings 2009 [12 Oct 2009|05:17pm]
Rank 1 Harvard University
Cambridge, MA
100 Tuition and Fees: $37,012 19,230 7.9%
Rank 1 Princeton University
Princeton, NJ
100 Tuition and Fees: $35,340 7,497 9.9%
Rank 3 Yale University
New Haven, CT
98 Tuition and Fees: $36,500 11,446 8.6%
Rank 4 California Institute of Technology
Pasadena, CA
93 Tuition and Fees: $34,584 2,126 17.4%
Rank 4 Massachusetts Institute of Technology
Cambridge, MA
93 Tuition and Fees: $37,782 10,299 11.9%
Rank 4 Stanford University
Stanford, CA
93 Tuition and Fees: $37,881 17,833 9.5%
Rank 4 University of Pennsylvania
Philadelphia, PA
93 Tuition and Fees: $38,970 19,018 16.9%
Rank 8 Columbia University
New York, NY
91 Tuition and Fees: $41,316 23,196 10.0%
Rank 8 University of Chicago
Chicago, IL
91 Tuition and Fees: $39,381 12,386 27.9%
Rank 10 Duke University
Durham, NC
90 Tuition and Fees: $38,975 14,060 22.4%
Rank 11 Dartmouth College
Hanover, NH
89 Tuition and Fees: $38,679 5,848 13.5%
Rank 12 Northwestern University
Evanston, IL
87 Tuition and Fees: $38,461 18,431 26.2%
Rank 12 Washington University in St. Louis
St. Louis, MO
87 Tuition and Fees: $38,864 13,338 21.7%
Rank 14 Johns Hopkins University
Baltimore, MD
86 Tuition and Fees: $39,150 19,858 25.4%
Rank 15 Cornell University
Ithaca, NY
85 Tuition and Fees: $37,954 20,273 20.7%
Rank 16 Brown University
Providence, RI
84 Tuition and Fees: $38,848 8,318 13.7%
Rank 17 Emory University
Atlanta, GA
80 Tuition and Fees: $38,036 12,755 26.6%
Rank 17 Rice University
Houston, TX
80 Tuition and Fees: $31,248 5,456 23.0%
Rank 17 Vanderbilt University
Nashville, TN
80 Tuition and Fees: $38,579 12,093 25.3%
Rank 20 University of Notre Dame
Notre Dame, IN
78 Tuition and Fees: $38,477 11,731 26.7%
Rank 21 University of California--Berkeley
Berkeley, CA
76 In-state: $8,352; Out-of-state: $30,022 35,409 21.6%
Rank 22 Carnegie Mellon University
Pittsburgh, PA
75 Tuition and Fees: $39,833 11,064 37.9%
Rank 23 Georgetown University
Washington, DC
74 Tuition and Fees: $39,212 15,318 18.8%
Rank 24 University of California--Los Angeles
Los Angeles, CA
73 In-state: $8,228; Out-of-state: $29,897 39,650 22.8%
Rank 24 University of Virginia
Charlottesville, VA
73 In-state: $9,870; Out-of-state: $31,870 24,541 36.7%
Rank 26 University of Southern California
Los Angeles, CA
72 Tuition and Fees: $39,124 33,747 21.9%
Rank 27 University of Michigan--Ann Arbor
Ann Arbor, MI
71 In-state: $11,738; Out-of-state: $34,230 41,028 42.1%
Rank 28 Tufts University
Medford, MA
70 Tuition and Fees: $40,342 10,030 25.5%
Rank 28 University of North Carolina--Chapel Hill
Chapel Hill, NC
70 2008-2009 In-state: $5,396; Out-of-state: $22,294 28,567 34.0%
Rank 28 Wake Forest University
Winston-Salem, NC
70 Tuition and Fees: $38,622 6,862 38.4%
Rank 31 Brandeis University
Waltham, MA
67 Tuition and Fees: $38,762 5,327 32.4%
Rank 32 New York University
New York, NY
66 Tuition and Fees: $38,765 42,189 32.1%
Rank 33 College of William and Mary
Williamsburg, VA
64 In-state: $10,800; Out-of-state: $30,592 7,892 34.1%
Rank 34 Boston College
Chestnut Hill, MA
63 Tuition and Fees: $39,130 13,903 26.2%
Rank 35 Georgia Institute of Technology
Atlanta, GA
62 In-state: $7,506; Out-of-state: $25,716 19,413 60.9%
Rank 35 Lehigh University
Bethlehem, PA
62 Tuition and Fees: $38,630 6,994 27.9%
Rank 35 University of California--San Diego
La Jolla, CA
62 In-state: $8,798; Out-of-state: $30,819 27,520 41.6%
Rank 35 University of Rochester
Rochester, NY
62 Tuition and Fees: $38,690 9,712 42.7%
Rank 39 University of Illinois--Urbana-Champaign
Champaign, IL
61 In-state: $13,060; Out-of-state: $26,714 43,246 69.1%
Rank 39 University of Wisconsin--Madison
Madison, WI
61 In-state: $8,020; Out-of-state: $22,270 42,030 52.7%
Rank 41 Case Western Reserve University
Cleveland, OH
60 Tuition and Fees: $36,238 9,814 73.3%
Rank 42 Rensselaer Polytechnic Institute
Troy, NY
59 Tuition and Fees: $39,165 7,521 44.1%
Rank 42 University of California--Davis
Davis, CA
59 In-state: $9,364; Out-of-state: $31,385 30,568 52.6%
Rank 42 University of California--Santa Barbara
Santa Barbara, CA
59 In-state: $9,055; Out-of-state: $30,724 21,868 49.2%
Rank 42 University of Washington
Seattle, WA
59 In-state: $7,692; Out-of-state: $24,367 41,517 61.0%
Rank 46 University of California--Irvine
Irvine, CA
58 In-state: $8,775; Out-of-state: $28,796 26,984 48.7%
Rank 47 Pennsylvania State University--University Park
University Park, PA
57 In-state: $14,416; Out-of-state: $25,946 44,406 51.2%
Rank 47 University of Florida
Gainesville, FL
57 In-state: $4,373; Out-of-state: $23,744 51,474 39.5%
Rank 47 University of Texas--Austin
Austin, TX
57 In-state: $8,930; Out-of-state: $30,600 49,984 43.5%
Rank 50 Tulane University
New Orleans, LA
55 Tuition and Fees: $40,564 11,157 27.0%
post comment

Yummy donuts in SF . . [23 Sep 2009|03:37pm]
Dynamo Donut - Crazy good.
2 comments|post comment

A Pet PSA [04 Sep 2009|02:39am]
[ mood | sad ]

Howdy fellow animal lovers!

So I've mentioned this to some folks since . . well, we work together and see each other every day and I've been uber distracted recently. But my super awesome feline buddy, Mushroom, has renal lymphoma and is gradually slipping away. It sucks and makes me sad ( = angry in bong speak) but that's not the point.

What I'm writing about is some things I've learned over the past year after watching my childhood dog die of colon cancer and now with Mushy (I could just be a terrible person for not knowing these things in advance but no one really mentions these things in the first time pet owner manual.):

1. Annual dental cleanings are important once they're a few years old. Vets may not even recommend or notice the furry one's teeth but it's important to do anyway, at least every other year. Be forewarned though that it's pricey, starting at $350 for kitties and more for dogs. (Mushy lost most of his teeth a few months ago and it's a really sad sight. Stupid vet a year ago mentioned nothing. Makes me want to trade in pacifist happy dancing bong for punchy kicky angry bong.)

2. Pet insurance actually might not be a scam. Mushy was in the hospital for just three days but racked up about $4000 in charges. About $1000 covered special procedures like two ultrasounds, but pretty typical treatment and hospitalization for an ailing furball can easily cost $1000 a day. When I think about the $30/mth for pet insurance and how it pays off 50% of costs, I'm now thinking it probably makes sense to pick up some coverage once my next furry ones become middle aged. A lot of cats and dogs seem to develop some form of cancer after they're over the hill and shelling out absurd amounts of money once this sort of thing suddenly smacks you in the face just kind of adds insult to injury. (Oh yah, Mushy's recurring chemo is running $300/mth but could've been $800/wk for treatments that address a different form of cancer.)

3. Even a couple of days of reduced appetite and increased thirst is indicative of something kind of whack going on in the little one. (I really kick myself for this one.) Should've realized that the higher metabolism translates to faster trouble. But Mushy was almost a full pound too light due to dehydration and lack of food after behaving abnormally for the week I was on vacation. It's probably a good idea to get a sense of exactly how much food and water one leaves out and how much gets consumed in a day just to set a baseline. And then, probably should mention what's abnormal to pet-sitters.

Ok, I'm done with my feel good PSA. Hope this is useful for you and your current and future furry ones. Thanks for humoring me too.

Peace,
Bong & Mushy

post comment

PHP MySQLi tips when using SPs [13 Aug 2009|12:55am]
  • Depending on the state of the MySQLi object, it could throw "commands out of sync" errors or just very quietly refuse to return results. To help debug the process, it's useful to grab the MySQLi->info, MySQLi->affected_rows, and/or MySQLi->fields properties prior to any future queries just to find out what the current state of the connection object is.
  • post comment

    Basic tagging protocol . . [11 Aug 2009|06:17pm]
    1. svn update
    2. svn info
    3. svn ls <BASE_SVN_URL>/tags <- Get list of tags to verify the next version
    4. svn log --stop-on-copy <BASE_SVN_URL>/tags/<LATEST_TAG> <- Get the last revision before this current version
    5. svn log -r <LAST_CHANGED_REVISION>:HEAD <- Verify the work within this current version
    6. svn cp -r <LAST_CHANGED_REVISION> <BASE_SVN_URL>/trunk <BASE_SVN_URL>/tags/<NEW_TAG> <- Tag
    7. Increment version
    
    post comment

    PHP variable assignment . . [03 Aug 2009|09:51pm]
    Some things to remember . .

  • Assignments to an object automatically are by reference.

  • Assignments to arrays or locations in arrays are by value.

  • Even creating an array or a multi-dimensional array will copy all involved arrays by value unless specifically dereferenced!
  • post comment

    PHP's hash performance . . [03 Aug 2009|09:45pm]
    This basic profiling code . .
    $starttime = microtime(true);
    
    $sitedate = array();
    for ($i = 0; $i < 3000; $i++) {
    	for ($j = 0; $j < 365; $j++) {
    		$sitedate["site$i"]["date$j"] = "value-$i-$j";
    	}
    }
    
    $endtime = microtime(true);
    
    echo "Build Time = " . ($endtime - $starttime) . "\n";
    
    $starttime = microtime(true);
    
    for ($i = 0; $i < 3000; $i++) {
    	for ($j = 0; $j < 365; $j++) {
    		$junk = $sitedate["site$i"]["date$j"]; 
    	}
    }
    
    $endtime = microtime(true);
    
    echo "Look-up Time = " . ($endtime - $starttime) . "\n";
    

    . . yields some interesting results . .

    Build Time = 2.6185610294342
    Look-up Time = 1.4036040306091
    
    Build Time = 2.5939750671387
    Look-up Time = 1.4107542037964
    
    Build Time = 2.6068668365479
    Look-up Time = 1.407210111618
    
    post comment

    JS Execution context notes . . [31 Jul 2009|01:23pm]
    Execution Context
    - scope[]     <- Activation+Variable => [ .arguments, .<local>[.vars, .funcs], .this ]
                     |
                     \- Enveloping execution context's scope[] 
    
    post comment

    Paul Graham's view on cities . . [30 Jul 2009|01:35pm]
    A good read about some of the more popular cities in the US. His take is fairly spot on:
    * New York - Money
    * Silicon Valley/SF - Power
    * Berkeley - Living better
    * LA - Fame
    * DC - Connections
    I particularly liked his opinion on why there aren't more start-ups in NY. He basically says that you're treated like shit in NY unless you have money. People aren't incentivized to trade off the present against the future and instead go for the quick (and soul-less) buck in finance.
    1 comment|post comment

    MySQL lesson . . [29 Jul 2009|06:57pm]
  • Apparently using temporary tables in joins is horrifically slow. I suppose it makes sense on some level since those constructed tables don't have indexes and MySQL can't figure out how to optimize the joins. What's surprising is that running a join against a temporary table produces far worse performance than calling a stored function for each record in that temporary table.
  • post comment

    navigation
    [ viewing | most recent entries ]
    [ go | earlier ]

    Advertisement