Wednesday, January 30, 2008

where did aaron go

wow... i haven't blogged as much as i want to these past few weeks. i'm like pretty busy (haha. a 007 quote there). yet, i do feel a revolution coming soon. i know its coming. stay tuned.

Sunday, January 27, 2008

a global warning

i just watched, a global warning? on the history channel. this show was pretty good.

one of the more striking ideas that i learned from the show is that there are natural global warming/coding cycles. a lot of people have said that our warming is just natural. but, what i learned from the show, is that scientist believe that earth should be in its cooling cycle now. but, we are getting hotter. they said, that this proves that man made global warming is real.

the danger is if we destroy the natural global cycle who knows what is going to happen. the belief is that our pollution will amplify the cycles. extreme code and extreme hot - levels that we haven't seen since the massive weather changes that killed the dinosaurs.

there are a lot of new programs on global warming hitting tv now days. National Geographic has some good shows. like this one coming out: Six Degrees: could change the world (feb 10). CNN, Discovery, 20/20 and 60 Minutes have also put out some shows.

as steve would say, now we just have to do something about it. the more i think about it, the more i'd like to work in this area. i started to think how i can contribute. one way, i think is educational software (something i know nothing about). not sure where to start.

Tuesday, January 22, 2008

next step needs some tech

i just visited the Next Step shelters tonight to help serve dinner to its residents.

i've volunteered at other shelters in the past. this one was different. this one seemed different. this shelter provided the sense of hope. at least thats what i felt. i was told that nearly half of the residents have jobs. thats both very impressive and also very sad. sad in that even our minimum wage workers are struggling so much. i don't know every resident's story, but believe me that most residents look like the average worker in hawaii.

anyway, one thing that we did talk about was the need for more technology. more computers, more structured learning about tech. tech is needed for jobs, training, and education. yet, access to computers at Next Step is limited. There is often lines to access the 4 computers they have up and running.

it should be easy for any tech company in hawaii to swoop in and set up a few machines for the residents access. its pretty obvious to me that bringing tech to this situation is very straight forward and easy for tech companies. i just wonder why its taken this long for it to come to our attention.

come on hawaii tech people lets do something about that. here is what i'm thinking - lets use the vast amount of old computers out there as thin clients connecting to a state of the art server that has some sort of virtualized desktops. hawaiian telcom can swoop in and bring us some kick ass business internet connection. hmm.. then there is education; i haven't figured out that one yet.

anyway, this is pretty good example of socially conscious programming.

don't get me started on the other idea of having a internet bus cafe. thats really cool and seems very useful.

Saturday, January 19, 2008

rising sea levels

inspired by Hawaii Climate Crisis documentary, i started to look at some ways to do some simulation of rising sea water. i'm in the early stages of learning more about the crisis and how software can help spread awareness and maybe even help stop the environmental problems we are having.

here are some links that i found and are kind of interesting. if you have more, please leave them in the comments section:

  • animation roundup: rising sea levels, filling grand canyon, global clouds
  • watching the sea level rise, virtually
  • mapping sea level rise on kauai
  • flood maps (using google maps)
  • chlimate change and sea level
  • risingtide
  • univeristy of hawaii energy efficiency (google groups)

    this list is in no way complete. i'll start looking more. we need some sort of hawaii tech industry coalition to look how the software, engineering, and research industry can help.
  • Thursday, January 17, 2008

    outward thinking

    i've been growing a concept called outward thinking. outward thinking is pretty easy to understand; its opposite of inward thinking. (that was a joke). here is what it really means.

    outward thinking is the ability to frame your thoughts in a larger context. that means thinking about how your actions might affect other people or even other concepts. here are few examples:
  • it is the ability to identify that a project task maybe a duplication of another task on another project. and then doing something about it.
  • it is the ability to think of including bob the developer in a discussion because you remembered that john sent you an article about the subject.
  • it is the ability to evaluate the design of a framework in the context of the larger problem.
  • it is the ability to commit yourself to helping other people realizing their dreams.

    i believe the world needs more outward thinking and outward acting people. i'm constantly amazed at the level of people naive sense of the larger issues. i've seen this in many areas, whether its my friends having no clue why al gore just won a noble piece prize (like it or not). or whether its fellow programmers getting lost in the mundane tasks, they lost the ability to come up for air and really evaluate the problem.

    a good analogy for this concept is the blinders that are used on horses, so that the horses are only focused on whats in front. blinders make you lose sight of your neighbors. blinders make you lose sight of the larger problem. blinders trick you into thinking that the next mundane task is the only possible next move. basically, i think blinders suck. but, yet there are too many people with blinders on.

    i try to outward think as much as possible for several reasons:
  • i have the utmost respect for the people around me. i rely on them to help me grow as an engineer and as a person. you have to take off the blinders to appreciate and utilize that opportunity.
  • i want to help others, but to do that you must first be aware of their goals, aspirations, and needs. you need to have the ability and commitment to the people around you.
  • i know i can't the problems alone
  • i know that i don't know all the problems.
  • i know that i don't know all the success stories to learn from.
  • i know i can't create success with blinders on
  • and its just way more fun

    outward thinking is very important to me. its something that i've been working on these past few years. its maybe something that i grew when playing and coaching baseball all these years, but was too blinded to see it.
  • Sunday, January 13, 2008

    interview with ryan k

    ryan k, as i call him, was one of my direct managers when i was first starting out in the software industry. he is the type of manager that preaches kaizen (continual improvement). together we tackled all sorts of learning opportunities like creating tech meetings, internal technical articles, programming puzzles, etc. he is one of those rare managers that gets it.

    here is how this interview works. the questions that i ask are highlighted in bold. ryan k's responses are in italics.

    Imagine you are the CEO of a new company (that has money). Describe the culture that you would want to create. Then answer this; do any of the companies that you know even come close to that ideal culture?

    I think there are a lot information that is not really given in your hypothetical question that would alter my answer. Mainly the type of business and how much money and probably a bunch of other things. But I think I know what you are trying to get at, so I'll try to answer the question under the assumption my new company has a lot of cash laying around for R&D and that it deals with software in some sort of fashion.

    The Culture:
    For the software group I would want 3 things....and in this order.

    1. Striving for Excellence. I would want a group that had an internal drive toward quality and timeliness. They would all really enjoy what they are doing and have pride in what they do. They should have the perseverance to go the extra mile to get things done on time and done right. This quality needs to be in all the individuals on the team and not just be a vague group goal. Everyone needs to want to produce the best quality that they can deliver and also be aware of how much they can produce to accurately schedule tasks. As a company, this culture would be something that is expected, from the top down.

    2. Continuous Learning. I would encourage learning of new skills and new technology. In other companies, I've seen this done by having the individual think of things they want to learn or some narrow minded managers looking to solve short term needs. I would want a person or group to identify the next generation of technology and create areas where people can focus their education that would best benefit them and
    the company.

    I would also encourage people to continuously research new technology areas to be submitted to the "Continuous Learning Group" so that the most up to date technology can be assessed.

    3. Innovation. I would encourage the submission of new ideas from anyone in the company. Ideas that are beneficial to the company future would be subsidized. The person that submitted the idea would be allowed to spend some of their time and have company resources to develop the idea along with other support personnel as needed.

    These three things should, if we have the right people, amount to a fun job.

    Do I know of any company that does this? No. Maybe Google but I don't know anyone that works there so I can't really say. But Google seems to have this type of aura about them. Who knows how much is truth and how much is just Internet Myth, though.

    If there were Hawaii companies that had this culture, I would be doing everything that I could to get there. I don't know for sure but for some reason I think companies like Oceanit and Ikayzo might be on the right track.

    One other comment. I think creating the ideal culture and for a company to support continuous learning and innovation, you need to have money to support that (and the learning and innovation need to bolster the company earnings in the future)....or you need the people to sacrifice their own time to make some of it happen. Because the bottom line is making money.....otherwise there wouldn't be a company to work for.

    That was a very insightful response. Thanks!

    I found your comment about Hawaii to be very interesting. You point out that Hawaii probably doesn't have this culture. You also mention that maybe Oceanit and Ikayzo might be leading the way. I agree with the maybe. The fact is that I'm not sure either. I think that "maybe" is a major problem. To me the problem with Hawaii is that there seems to be no dominating leaders here. There doesn't seem to be a strong company or leader that is able to show us the path to excellence. Anyway, thats my opinion.

    Here is your question:

    What do you think is holding Hawaii back? Is it the cost of living? Is it the brain drain? Is it Hawaii's relaxed culture? Is it Hawaii's tendency to shy away from risk?

    What is holding Hawaii back from creating a technology company that is innovative and cutting edge?

    I think that Hawaii schools, mainly UH, does not do the type of research that is on the cutting edge, create students that are exposed to new and great ideas, and drives them to create great things with what they've learned. I really shouldn't say that UH doesn't do it at all...but they definitely do not do it enough. These types of students, I believe, are a key component of creating companies and company cultures that are innovative.

    Another reason is that there are not enough companies that are creating "new" things. Everyone seems to be filling immediate, or sometimes, yesterdays needs. The days of the dot-com startups are long gone and funding for new ideas is a lot harder to get. Even a traditional technology company setting, the type of environment that you are envisioning can be a somewhat risky endeavor. You need to have faith that if you invest in the best and create a productive, forward thinking atmosphere, that production, quality, and profit will rise. Because just doing things like everyone else, will most likely get things done. As a President of a company, it's a much safer call to take the low road.

    So the bottom line is that there is no motivation to create a company that you are talking about. The only reason to do so is that you either have faith that it will be more productive in the long run or you are just way too altruistic.

    ps. I really do not think that there are no people or companies like this in Hawaii....I just think they are few and far between.

    I totally agree with the workforce comment. Its very hard to find rockstar students. I think it starts with the students, then to workers, then to leadership. But, since you are a manager lets focus our last question the students (or new hires).

    I recently had a debate with a few of my co-workers on how to find the right students for an internship program. A few of my peers value things like thinking in code or being able to break down problems. Being a software guy, I am totally for that. But, I've been recently thinking that some of those skills can be grown. Students that I'm looking for have rockstar attitudes, rockstar smarts, and rockstar passion. I feel that those types of things can't be taught. The students I'm looking for are the future leaders of Hawaii.

    Here is your last question:

    What types of things do you look for when hiring someone? How do you find the right people that will embrace the culture you described above?

    First of all, I'm assuming you are talking about hiring a full time programmer and not an intern. Because I think you may look for a slightly different type of person to be an intern....maybe. So anyway, what I look for when hiring a full time programmer.

    First of all, they need to be intelligent. Not necessarily a genius, but pretty
    smart. GPA wise, I would look for 3.2 and better. Perseverance and passion can only take you so far, intelligence sets the bar.

    The next thing I look for is that they know, to a certain degree, how to code and they know what they are talking about. I just want to know that they have attempted to understand or have worked with code at a deeper level than a Hello World app. Ok, not that simple, but at least things like understanding Design Patterns, working with threads, or recursion. A good understanding of something at that level or deeper.

    I then try to get an understanding of how much the person likes to code. I guess this is the passion for coding part. I try to determine if the person enjoys coding and why. I know why I like it and it seems as though for other people who really seem to like coding, it is a very similar feeling. But it may not be like that for everyone, so I also try to find out if the person has any side (non-work) programming type projects going on or at the very least that they are familiar with what is going on with cutting edge technology. I usually ask what they think the next "big" thing will be in technology. You can usually tell if someone has already been thinking about things which sometimes indicates that their interest is more of a passion and less of a job.

    The final thing that I try to look for is a combination of problem solving, perseverance, innovation, and just getting things done. I would look for someone who I feel will do whatever it takes to get the job done right. Someone who, when they work on a project, will be able to balance a good design, features, and deadlines. These people tend to look for their solutions, not just with past knowledge, but are able to research new solutions in areas that are new to them. In my opinion, coders who are good at debugging, seem to do fairly good in this area.

    Oh, and one last final thing. Personality. You need to be able to work well with others. This, by itself, can nullify all the other things.

    So in order of importance:
    1. Intelligence
    2. Passion for Coding
    3. Problem Solving, Perseverance, and Innovation
    4. Coding Smarts
    X. Personality

    [End Interview]

    my comments
    one of the things that is very evident in ryank's comments is that concept of kaizen. haha, and i totally like that he only mentioned money once. some of the interesting things is that coding smarts is number 4 on his list of importance for hiring. i really agree with that. well, i've realized that if we were in silicon valley we can really focus on coding smarts, because they have a large talent pool. maybe in places like hawaii, we don't have that luxury. maybe thats why, i've started to put less emphasis on coding smarts.

    Wednesday, January 9, 2008

    less text more information

    i totally like the CNN Election Webpage. I like it because it has less text, but has more information.

    Its full of graphics, pictures, charts, tag clouds, etc. Its concise and easy to find information. its easy to for your eye to wander and discover things you didn't know.

    reading text is good for somethings. Its good to get detailed information (maybe)... One thing is for sure, text is pretty boring. CNN's approach is cool and eye catching and fun.

    more information should be displayed like this. (haha. i guess that was my only point).

    undergraduate programming is crazy

    i just finished reading undergraduate programming from mr. joel. i had to read it a couple times...

    basically he says:

    JavaSchools are not operating in a vacuum: they're dumbing down their curriculum because they think it's the only way to keep CS students. The real problem is that these schools are not doing anything positive to attract the kids who are really interesting in programming, not computer science. ... It would be a huge magnet to the talented high school kids who love programming, but can't get excited about proving theorums.

    woah.. i can't believe he just said that. that sounds like trade schools to me.

    i can't believe that we've come to that approach. while i think its good that we have programmers, i value things like critical thinking, research abilities, having broad area of knowledge, etc. bottom line is that being a software engineer is much more than writing code. being a great developer requires more knowledge than just knowing how to write code.

    does the industry really just want programmers?

    anyway... i'm a little confused about his post.

    Sunday, January 6, 2008

    atlassian has a stream of consciousness, hackystat should have on too

    atlassian just put out an interesting blog; JIRA Studio: Stream of Development Consciousness.

    basically, they want to expose a developers activity across different functions in one single place. its an outboard brain type of thing. see help me help you and hackystat and my outboard brain.

    atlassian's attempt to do this is really cool because they are actually providing the functionality in an integrated fashion. the only problem with their approach is that it is limited to atlassian products. duh... hackystat can expose so many more hooks and so many more different types of activities.

    we will get there one day. i just wanted to point out that where i once thought we were so a head of the game, in terms of metrics and reporting, people like atlassian is a head of the game in other areas.

    wow.. i just had a cool idea. what if hackystat used open social to expose certain metrics. thats way cool.

    Saturday, January 5, 2008

    hackystat ui idea

    i know it is so lame, but i'll admit it. i haven't really looked at javafx. but, after looking at it really quickly, it seems to me that javafx could be a potential implementation tool for a hackystat user interface. it seems similar to adobe air, but better.

    here is an interesting demo. note josh's comment:

    One thing I've noticed when building my demos is my development style. It's totally different than when writing Java programs. When I code Java, I think first about the objects and interfaces, create empty .java files, and then start writing the implementation. When I write JavaFX script using the preview mode in NetBeans my style is completely different. I immediately start throwing up shapes and UI components, constantly moving code around and renaming things. Once I have something solid only then do I split it into separate classes. It's definitely a less rigorous but more fluid development experience. And, dare I say it, more fun!

    javafx seems like a cool little thing. i'm not sure how useful it really is. it maybe worth checking out for a quick and dirty hackystat ui. maybe its something we can use for a client side telemetry wall viewer.

    anyway... just an idea.

    Thursday, January 3, 2008

    interesting geek discussions about useless stuff

    if you seen the Aardvark'd movie, you'll remember the long segment about proving whether its possible to jump to a ledge of the neighboring building. a pretty useless discussion. but, the cool thing was that it was a geek discussion. the interns used physics, took objective measurements, debated, argued, and used more geeky stuff. all in the name of figuring out the answers to interesting problems. this is what engineers do. they think about things that are interesting, and they talk geek. they figure out ways to make things better and they do it.

    the following two examples are our aardvark'd useless geek discussions:

    i got to thinking about something that has been on my mind for a long long time. its something that i haven't figured out how to figure out. i finally talked to some people about it. here is the basic question:

    how many streetlights does honolulu have? and what does it cost to power them?

    (haha. i'm not lying. these are the kind of things that i wonder about.) the basic idea is that we all talk about energy savings. for example, the tv commercials that talk about CFLs light bulbs. so, its kind of an obvious question to wonder about the efficiency of the street lights. i mean, there are probably tens of thousands of street lights in honolulu. and in my opinion, a lot of the lights seem very wasteful. for example, the light outside of my house - do we really need that light? why does it _need_ to be there? i actually, just went outside of my house and counted 15 lights in my direct view up and down my street. all these lights are pretty closely bunched, all within a 100 yard square area (my best guess). thats a lot. and while i was outside, i saw no cars and no people walking around. yet the lights were on and shining brightly.

    so, i brought this up to a couple of my engineers. we did some searching and talking. we found these resources:

  • Power of a Streetlight
  • Initial Rated Light Output of Various Lamps

    through some additional searches, we found that honolulu uses high-pressure sodium lights. we also found the wattage and lumens for that light. the interesting thing is in the second link:

    A typical suburb in the U.S.A. has 3000-4000 streetlights, costing the taxpayers of that town more than half a million dollars a year in electricity costs alone.

    wow! that is a lot of money. i can only imagine how many streetlights we have in honolulu. it could be tens of thousands. i plan to do more research to find the specifics. i want to find out how many lights there are and how much it really costs.

    my fellow engineers brought up very good points:
  • lights are a good thing. it helps keep away bad people - because people can see them
  • we should look into some urban planning resources to find out how they figure out these things.
  • even 5 million dollars isn't a lot of money in the grand scheme of things. DOT operations costs must be tens or hundreds of millions of dollars.
  • do lights really help prevent car accidents?
  • what if we just made the lights dimmer?

    i'm the first to admit that this streetlight obsession is a little strange. it is interesting. but, i don't know if anything can be done about it. nor am i sure it is really a problem. it just seems to me that streetlights are very low-tech and probably inefficient if their main purpose is to help people see while driving at night. for example, when it rains and the pavement is wet; streetlights actually make it harder to drive at night. at least, i think so. maybe more of the lights should be on the road. what if the lanes were slightly illuminated or glowed a little. what if cars had better headlights.

    anyway, this is interesting. and it spurred an interesting conversation.

    rubik's cube
    i just recently finish my first rubiks cube. haha. stop laughing at me. but this accomplishment got me thinking more about the rules associated with the cube. i first started to ask people how many unique pieces are on the cube. a lot, actually almost every single person (and these are engineers), got it wrong on the first guess. i heard things like 54 and 27. those are all wrong. the answer is 26.

    once we talked about that, we found that each piece was unique. then we discovered that each piece was situated in space and that each piece had rules associated with it. for example, a corner piece can only be placed in a certain side of a cube (keeping the colors situated a certain way). that is cool. rules are good.

    we then had the idea of doing a virtual cube solver. the idea is similar to the robot solvers out there. but the virtual solver would help you step through the different algorithms to solve the cube. you learn the algorithms as you follow along. for example, there are fast solver algorithms and beginner algorithms.

    this idea made us think about how to input the current state of the cube into the computer. we thought that taking a picture with webcam could solve the problem. a program could recognize colors. but how do we represent the sides of the cube? and how many sides of the cube do we need to take a picture of? so, we spent a while discussing how many sides do you need to look at to figure out all the pieces in the cube? take a while to think about that. i think the answer is 3 sides and a few key pieces. its a hard problem to figure out with math. we resorted to covering the sides and guessing. we need a program to figure this out. thats a cool and interesting idea.

    next we thought about how many different combinations can you mix a rubiks cube into. keep in mind the rubiks cube rules and laws. obviously the answer is not 26! (factorial). instead the answer looks like (8! × 3^8−1) × (12! × 2^12−1)/2 = 43,252,003,274,489,856,000.

    haha. what? we then tried to figure out why the heck that formula works. i'm not sure i totally understand the math behind it. but, all i know is that its cool.

    anyway, this was interesting. it was interesting to talk through these ideas, questions, math questions, etc. its fun to work in a group to figure out an interesting idea. its fun to learn form others. this is what engineers do. these kinds of problems drive engineers to work for hours.
  • a discussion with russ

    i had an interesting email discussion with russ. here the highlights.

    More food for thought:

    Only Code Has Value?
    by Terry Coatta, Vitrium System
    From File Systems and Storage, ACM QUeue, Vol. 5, No. 6 - September / October 2007

    What this experience brought home for me is that if you have well-written code, you can easily understand what the code is doing.
    However, even the best-written code can't reveal why it is doing it.
    That's because the question of "why" is not centered on the code itself, but on the context it operates in and the design decisions made during the development of the system. The best way to communicate those ideas is not code, but comments and design documents. To me this clearly demonstrated that it is not just code that has value.
    I've been through enough experiences like this that I simply don't believe the "only code has value" proposition. Clearly code is the core value product of the software development process. But it's not the only thing of value, and if we want to maintain and extend our code, we need to gear our software development processes accordingly.

    I typically find that many ask about doing something but don't have a clue about why their doing it; other than something like "my boss said so".

    Thanks for the link. On a somewhat similar yet-possibly-opposite theme, take a look at CodingHorror's recent posting, Nobody cares you're your code looks like:

    One of my EE friends constantly says software is a tool to solve a problem. I totally agree with half of that statement. The other half is that the software (documentation included) better be awesome too.

    Yes, I agree that "nobody cares what your code looks like"; just that it works. The problem comes when your code doesn't work and you're not the one trying to fix it. The uglier it is the harder it is for someone else to understand it. In this case uglier means not readable to the point of being decipherable and understood by someone else. In my case, that someone else would include me; a lot of times I don't understood what I wrote.

    Yes, I agree that "software is a tool that solves a problem".
    Unfortunately, software becomes a problem when it no longer solves the original problem it was written to solve and/or it someone wants it to solve additional problems (the changeability nature of software according to Brooks in "No Silver Bullet"). Then it becomes *the* problem when you need to "fix" or change it.

    So what we're still stuck with is how to produce software quickly (number of hours) and inexpensively (number of programmers). Test-driven development may be one practice (it's a discipline) that can help in the area of producing the desired or expected outcome or behavior. But still, no one cares what your code looks like; no one meaning users, managers, and people that don't have to maintain it. It's kind of like cars. No one cares that under the hood things looks like crap as long as the car's outside looks nice and the car runs well and had gas in it.

    aaron's thoughts:
    after thinking about what russ was saying i'm reminded that different people value different things. project managers have their own priorities. developers have a different set of priorities. and users have their own priorities. they are all different. project success is defined differently amongst the different stakeholders. i think the only ones that truly appreciate that fact are developers. developers need to keep the project manager happy by making something that works. developers need to keep the users happy. and developers need to keep themselves happy (with good code). developers have to worry the most. a good project manager would understand that.