Cosplay Christmas in the Park

12 28 2008

Last Sunday Yukari and Kitty organized a cosplayer get together at the Christmas in the Park festival in downtown San Jose. I decided to attend because it sounded like a lot of fun, and it was an opportunity for me to do cosplay photography outside of a convention. I was planning on putting together a Kohei cosplay from Tsukuyomi (Moon Phase). It would have been perfect, because not only is Kohei a rare adult male anime main character, he’s also a photographer. Unfortunately, the week leading up to the event was super extra crazy, and I ran out of time.

I took my Canon 40D with battery grip, 580EXII flash with a LumiQuest BigBounce, flash bracket, and the Sigma 50-150 f/2.8 lens. I would come to regret my lens choice; I didn’t end up needing most of the zoom range, while a wider angle would have come in handy many, many times throughout the night. For the next event I attend I plan on taking my Sigma 17-50 f/2.8 instead. Also, this was my first event with the BigBounce; it worked well, but it lost more light than I expected.

We were going to meet up by the big Christmas tree at 4pm, and then wander around. The first person arrived around 3:30pm. I arrived at 4:10pm and was worried I was going to miss everyone, but this turned out to be unfounded. Due to traffic issues and confusion as to where we are meeting (the tree was big enough you could only see about 1/3 of the way around from any one spot), the group wasn’t really assembled until around 4:40pm.

As people I arrived I tried to take a picture or two of everyone:

Of course, everyone had to pose at the Christmas tree photo spot:

I got a chance to practice balancing my flash with the ambiant light:

Once everyone was assembled we purchased ride tickets and walked over to the carousel

 

and the Arabian Nights ride. 

After a quick group pose at the snake sculpture (where I once again wished I had taken my 17-50)

we went over to the San Jose Convention Center, where we were the first cosplayers to wait outside for the start of Fanime 2009.

 

Eventually, we started getting hungry so we walked over to Smile Sushi on First Street. They were able to seat us quickly, despite being such a large group, by splitting us across two large tables. The food was excellent, and it was nice to socialize with other anime fans.

After dinner, we walked around some more,

rode the other carousel

 

saw a cute dog

 

and decided not to go ice skating. The ice was in such bad condition, it really was more like snow skating.

 

At that point everyone was getting tired from walking, so we sat down at some tables and chairs left outside for festival goers.

 

By around 11:15pm everyone was getting tired, and the gathering broke up. I had a very fun time, and look forward to the next event.

In the end, I took about 450 photos. After editing, about 160 of them were good enough to post. They are available at http://photo.oscarc.net/gallery/6887154_WQK89. Overall, I think they are not too bad. My two biggest mistakes were bringing the wrong lens, and underestimating how much light I was losing because of the BigBounce, both of which I know I will be able to fix next time.



Faster Hardware or Faster Software?

12 25 2008

In his post Hardware is Cheap, Programmers are Expensive, Jeff Atwood asserts that companies should “always try to spend your way out of a performance problem first by throwing faster hardware at it.” While there are certainly cases where this is true, most of the time throwing hardware at a performance problem as the first step is the wrong thing to do.

Though it’s not clear in his post, I’m going to assume he’s talking about server software. When you’re writing software that runs on a client (desktop, laptop, smartphone, or other embedded device), upgrading the hardware is not an option. Trying to sell shrink-wrapped software that will only run on 5% of your target market’s current hardware is generally not a good idea (except perhaps if you’re selling a PC game).

On the server side, Jeff overlooks several key points. Most importantly, a poorly-written app will often times not be able to take advantage of faster hardware. A single-threaded, extremely-inefficient program will run only marginally faster when given a multi-core, 8GB of RAM, fast-CPU box. An app that uses a very large database with no indexes also may not benefit much from faster hardware. Throwing hardware at a bad architecture will not make it better.

In addition, new hardware imposes additional costs beyond the initial purchase price. You need to pay sysadmins to set up and maintain the hardware. You need to pay power and cooling for the new hardware, which is not cheap if you’re at a good datacenter. Because your datacenter and network get more complex as you add lots of servers, management/overheard costs do not increase linearly either. Going from one server to ten is usually less than a 10x increase in operational costs, while going from ten servers to a hundred is usually more than a 10x increase in operational costs.  Upgrades are also disruptive, and will impact your users/customers.

If you have a more complex application, it may not always be clear what needs to be upgraded. If your site is running slow, do you upgrade your load balancers, firewalls, webservers, appservers, database servers, or the SAN?

Jeff also overlooks the most important metric when looking at servers apps: cost per user. Many dot-coms went under because their software required too much hardware per unit of revenue. In other words, if you need one $2000 server for every 200 users, and an average user generates $0.10 of revenue per month, it will take 100 months  (over 8 years!) to pay back the cost of the hardware. (Remember, this is before overhead and other fixed costs.) At that rate, getting bigger doesn’t help; it just makes you lose money faster! If you could support 2000 users on the same server, you will pay back the cost of the hardware in less than a year. Now you would have a shot at getting to profitability.

Put another way, Jeff is weighing the cost of a software engineer versus one server, but this is not a fair comparison. Most server-side applications run on many systems, with some form of load balancer to spread out the workload. The alternative to improving the code usually isn’t buying one new server; it’s buying ten, twenty, or fifty new servers (assuming the application will scale to that many servers.) If you have 20 servers, a 2x improvement in speed saves at least $40,000 right off the bat (not counting the overhead savings discussed earlier); now the ROI is starting to favor improving the code before buying new hardware. There may also be multiple deployments — one for each customer, or one per department, plus one for QA, one for engineering, etc — which also increases the number of servers that would need to be upgraded.

So when is it appropriate to buy new hardware as the first step? If your app is running on one or two servers that are a few years old, buying new hardware as the first step makes sense. If your servers have exceeded their useful life (3-5 years is usually what I plan on), replace them. If the workload on your application has increased, it’s easy to justify replacing the hardware. If upgrading your existing hardware (adding RAM or replacing the disks) will improve your app’s performance, this is an easy and relatively inexpensive first step.

Finally, it’s important to keep in mind that code optimization yields diminishing returns. For a small app it may only be worth spending a day or two on optimization. For a large app it may be worth taking a week or a month. In either case, after a while, all the low-hanging fruit have been optimized; then the cost of upgrading the hardware vs the cost of continuing to optimize the software needs to be compared, and a decision made. Replacing hardware can be the right thing to do; usually, though, it’s not the right thing to do first.



Pre-Chanukah Dinner

12 23 2008

A week ago Sunday Caroline, Mai, and I were invited to one of our friend’s house for dinner. The womenfolk went upstairs to chat and sort through old clothes while the guys stayed downstairs. We then all sat down together for a dinner of burgers, fried zucchini, and tatter tots. It was excellent, and we had a wonderful time.

I brought my new LumiQuest BigBounce to test out, even though it wasn’t the best tool for this location. I took many photos, but a lot of them didn’t turn out very well because I wasn’t used to the BigBounce. I took it off a few times so I could see how it compared to direct flash and to ceiling bounce.

You can see the rest at http://photo.oscarc.net/gallery/6836023_dpeSN.



Morality and Atheism

12 12 2008

If I wrote a post every time CBN had an exceedingly stupid comment in one of their “news” articles, I would have enough content to fill a second blog, so I generally try to avoid the temptation. In this case I’m going to make an exception.

In the “news” article entitled “Atheists Rollout Anti-God Campaign“, American Family Association president Tim Wildmon says “”How do we define ‘good’ if we don’t believe in God? God in his word, the Bible, tells us what’s good and bad and right and wrong. If we are each ourselves defining what’s good, it’s going to be a crazy world.” In other words, the only absolute moral code is in the Bible; all other moral codes are arbitrary and relative.

This is false on two levels; first, the Bible by itself does not provide an absolute moral code in many cases, and second, non-Biblical moral codes can be just as absolute as he alleges the Biblical code is.

First, does the Bible provide an absolute moral code? Certainly Jews and Christians draw very different conclusions from the same text. Is it immoral to mix milk and meat? Is it immoral to paint portraits? Is it immoral to drive on the Sabbath? Different religious scholars have drawn extremely varied conclusions from studying the same exact texts. Seems to me to be a case of “each [religion] ourselves defining what’s good” based on their own belief structure.

Perhaps Tim was only referring to the Christian Bible, implying that non-Christians can’t have a good moral code. That doesn’t solve the problem either; the recent split in the Episcopal Church shows that even two groups of clergy in the same denomination can derive two different moral codes from the same Christian Bible, at least in one area. One of the two defined gay bishops as ‘right’, while the other defined it as ‘wrong’.  Each congregant now needs to define for themselves which they believe is right, so they can determine which denomination they will affiliate with. Sounds like “each ourselves defining what’s good” again.

Different interpretations of the Bible aside, there is another problem. The Bible, being very old, does not provide much guidance about modern moral questions. There are many conservative Christians that claim that cloning is evil, but I’m not exactly sure why. Certainly the Bible doesn’t mention cloning. There is mention of the sanctity of life, but which takes priority — the source of the cloned cells or the life of the person who will be healed by those cells? Several positions can be well-supported by the Bible; because someone who came to a different conclusion than you does not mean they don’t believe in the same Bible you do. Hmm… “each ourselves defining what’s good”.

Another interpretation of what Tim said is that all moral codes derived from a monotheistic Bible are (at least) not arbitrary, because despite some differences they all share a common core. This too is questionable. Some Orthodox Rabbis have derived a moral code that condones assassinating the Israeli Prime Minister, with lots of textual support from the Bible. Catholics and Protestants have been killing each other for hundreds of years in the name of Christianity.  What exactly is this common core, this so-called “Judeo-Christian” ethic that conservative Christians like to refer to?

And then there’s the notion that non-Biblically-based moral codes are arbitrary. Such a clam can only be made out of ignorance. Kantian ethics is based on the Categorical Imperative, which forms a basis for deriving what is and is not moral. Objectivism, too, is based around a core set of principles which is used to derive a moral code. I’m not claiming that all Objectivists or or Kantians derive the same moral code, but as I have shown neither do all theists, or even all Christians. In all three cases — Kantian ethics, Objectivism, Christianity — “each ourselves defines what’s good” using their guiding principles and writings as a starting point.

Also, if non-Biblically-based moral codes are arbitrary, shouldn’t we expect that a larger percentage of atheists would be criminals? Are divorce rate higher among atheists? Are marital infidelity rates higher among atheists? Are theft rates higher among atheists? There doesn’t seem to be any evidence supporting any of these statements. Tim’s “crazy world” prediction doesn’t seem to bear out.

At core, I think Tim is making a much simpler claim: (His version of) Christianity is correct; everyone else is wrong. He certainly has the right to believe that. Stating “it’s going to be a crazy world” if the world didn’t share his beliefs, though, is a bit much.



Shuffle! Anime Series Review

12 10 2008

Shuffle! is an example of how to do a harem anime well. By avoiding a lot of the common mistakes for this genre, Shuffle! tells an entertaining story with strong emotional impact about growing up, taking control of your own destiny, and appreciating your friends and family.

The main character, Rin, is surprisingly likeable. He’s not a wimp or an idiot. He’s not accident-prone or unlucky. Rin’s character is fleshed out well. When he ends up surrounded by girls vying to be his girlfriend, it’s not hard to understand why he’s so reluctant to choose any of them. Once you see his history with girls, it’s not hard to understand why he’s so shy around them. When he does finally pick, and yes, he does finally pick one girl and sticks with it, it’s not a surprise at the time, but it’s also not who you would have expected near the start of the show. Even more surprising, his pick and its consequences are not the last plot arc in the series.

Unlike most anime series in this genre, where often times the gaggles of girls are virtually indistinguishable, here all the characters are fleshed out well. Because the series has 24 episodes, there is time to delve into the background of all four females leads and secondary characters like Ama and Miss Nah without shortchanging the overall plot arc. When the show is over, you feel as if you’re friends with Narine, Sia, Kaede, et al. Kaede, especially, reminded me of a girl I knew in high school.

The pacing of the series was also excellent. I’m often accused of having a short attention span, but Shuffle! kept me interested until the end. The middle of series didn’t drag; just as it seemed that this was going to be just another harem comedy, secrets from the past start coming to light, moving the show from comedy to drama. We continue to learn more secrets till the end; one key character’s background isn’t revealed until the next-to-last episode. There is a happy ending, but to get there all the characters had to suffer greatly.

What didn’t I like? Not much. The ocassional breast jiggling was a bit over the top; at points it started to distract from the drama. At the end, the girl who had the most trouble dealing with Rin’schoice ended up accepting it a little too quickly in my opinion, though there was some justification because of other events going on. The initial coincidences about how Rin met both Nerine and Sia as a kid were a bit contrived, though I think the big revelation near the end may explain this somewhat.

Overall, I highly recommend this series. In the US, it’s available on DVD from Funimation and for free & legal viewing online at http://www.hulu.com/shuffle.



Dinner with Friends

12 08 2008

Caroline, Mai, and I went over to the Swansons last night and had a great time. The food Erik and Emily made was wonderful, and then we got dessert from Claim Jumper. Mai really enjoyed playing (and fighting over toys) with a child closer to her own age and everyone else had fun playing the game Settlers of Catan.

As usual, I took pictures:

You can see the rest on my photo site.



Public vs. Indexed

12 06 2008

It shouldn’t be surprising that advances in technology often outrun society’s ability to adapt to them. A good example is public records laws. When many public records laws were originally passed, searching through public records was difficult and time consuming. You (or someone you hired) had to go down to the courthouse and manually read through tons of documents. This effectively meant that public documents were really only available to people with a lot of time (or money, to pay for someone else’s time).

When those records were put online and indexed by search engines, the information contained in them became easily accessible to everyone. Want to know what your neighbor paid for this house? Google it. Want to know when your boss got married? Google it. Once people realized how public public records were, the amount of information made available was reduced to protect people’s privacy. In principle, that information had always been available; in practice, it was only made available in a usable format after it was indexed.

In fact, search engines have made it much easier to find all sorts of information about a person. Before Google, when you met someone at a convention, you couldn’t find out much about them afterwards unless they chose to share their personal contact info. Now, you could plug in the info from their badge into Google and (usually) find a wealth of info about them. Fanime has about 10,000 attendees; if only .1% of them are stalkers, that’s ten stalkers walking around Fanime.

However, right now, there is a good way to protect against this — don’t put a real name or any Internet aliases on your badge. For conventions that always print a real name, black it out with a marker. Without a search term, text-based indexes are useless . Stalkers could take a picture and post it on various forums, but that is hit-or-miss, doesn’t scale, and alerts the target that someone is stalking them.

This is a good way to protect yourself for now, but what happens when you can search by photo? Facial recognition has been around for a while, but it has always required tremendous computing power and was somewhat unreliable, In last year or so, Google rolled out facial recognition in a limited fashion for Picasa. This means the technology is getting easier and cheaper to deploy. In the future, what if Google developed an image-based index? In other words, what if you could point Google at a picture and ask for more pictures of the same person?

If that happened, anyone who has pictures of themselves posted online could be found with one photo. If a stalker took one picture of my daughter at the mall, without even knowing her name they could find all my photos of her, and probably eventually find her address and other info.

Of course, eventually, society will adapt. Google text-search encouraged people to make their blogs “friends-only”  and reduced the amount of information in public records. Some people always restricted their blog, but it didn’t become the norm until people realized how much info about themselves could be found through Google. Likewise, once people realized the impact of search by photo, most people would probably restrict photo access to friends/family.  But just as it’s pretty much impossible to suppress all text info about yourself online, it will be impossible to suppress all photos of yourself online, and we will all lose a little more privacy.