Tuesday, April 29, 2008

my public shared items

if you've been reading my blog for a while, you'll know that i really like the idea of sharing information and knowledge with people. here are some past posts about sharing with technology:
  • more people are sharing
  • outward thinking
  • hackystat and my outboard brain
  • i got 2 people to use google reader today
  • re: Encouraging people to contribute knowledge
  • twitter, sharing, hackystat ideas
  • no one is sharing

    (wow that is a lot of things about sharing....) anyway, i wanted to revisit what i wrote in google reader process improvement. i started to adopt my proposal into my google reading process and have actually expanded to areas other than "p-google". here are my complete list of my public shared items:

  • my shared items - this is a generic list of things that i like. posts that make it to here are items that i really like. if you are going to only subscribe to one feed, subscribe to this one. (haha of course that is just my personal opinion, i have heard people say that my shares suck)
  • p-environ - this feed is for environmental things that i come across. these postings aren't necessarily good or bad; its just that they are somewhat interesting and have to do with the environment. i started this feed to discuss things with my cousin dana.
  • p-google - this feed is for google stuff. duh.. i set this feed up because i noticed that i like a lot of things from google and that people that read my shared stuff might not care a lot about google stuff. i like google stuff, so i wanted a place to put it; then figured why not make it public.
  • p-robotics - this feed is for robotics stuff. robotics is coming on strong these days. its a buzz word these days. anything with robotics gets some attention, especially in hawaii. anyway, i set up this blog for my friend tom (oleg the intern), to help feed him information that might be helpful to him as he figures out what interests him. i also am sending to this feed to lynn, maybe it might be useful for her.
  • my shared stuff - this feed comes from google's share stuff mechanism. it is basically a collection of the "loose pages", postings that i read outside of google reader, that i like.

    anyway, those public shares are the articles, blogs, and web sites that i like. for some reason i like to try to stay on top of this reading and sharing thing. i guess it is addicting and becomes like a habit.
  • Monday, April 28, 2008

    re: JSR-666 Extension: Significant whitespace

    i just read JSR-666 Extension: Significant whitespace, and while i get the JSR-666 (The Java Specification Request from Hell), i'm not sure if i understand if the posting was a joke or not.

    In many software development teams that I've worked on, code reviews are done by printing out the code to be reviewed. This is in turn read and scribbled on with red ink by developers suffering from a delusion that their coding standard is better than mine. An example of some such code:

    public boolean equals(Object o)
    if (Calendar.getInstance().get(Calendar.MONTH) == 1
    && Calendar.getInstance().get(Calendar.DATE) == 29)
    return true;
    return new Random().nextBoolean();
    catch (Throwable t)
    // Something must have gone wrong, try again
    return new Random().nextBoolean();

    When reading the above code, the obvious problem that jumps out is that it contains no less than ten curly braces. When printed for a code review, this is a waste of valuable ink. The squids of the world have been working overtime to provide the ink needed to print out all the code that needs to be reviewed, it is about time we gave them a break. I'd therefore like to propose to the JSR-666 expert group an extension that curly braces be replaced with significant whitespace.

    The previous code example would become:

    public boolean equals(Object o)
    if (Calendar.getInstance().get(Calendar.MONTH) == 1
    && Calendar.getInstance().get(Calendar.DATE) == 29)
    return true;
    return new Random().nextBoolean();
    catch (Throwable t)
    // Something must have gone wrong, try again
    return new Random().nextBoolean();

    A fine piece of code that would pass any code review.

    This feature will also solve a number of other problems, for example, it will eliminate the age old argument over whether braces belong on a newline or not. It will also force developers to write neatly structured code.

    This feature will not require any JVM changes, but will require compiler changes. Existing code may need to be changed, however, if the existing code was well formatted to begin with, it should suffice to simply run the following command in vim: :%s/\{|\}//g

    i guess its april fools again. its actually funny cause this dude works at atlassian. so, my guess is that this crazy blog posting was actually some sort of marketing ploy to market crucible. (so, i guess i might have to explain why its funny.... so, its funny cause i hope that atlassian people; people that develop software development tools, use their own products and not paper code review). thats the only conclusion that i can come up with. i guess it the marketing ploy worked cause i'm on my blog talking about crucible. anyway, crucible looks like a pretty good tool and we plan on giving it a serious try.

    anyway, sorry for this boring post. i just thought his posting was funny.

    ICS classes sound interesting

    FYI - the ICS department is going to have a couple of interesting courses next semester. here are a couple of the interesting ones:

    1) ICS 481: Intro to Computer Graphics - I hear that someone from pixar is going to teach this course (i don't have any evidence though)
    2) ICS 491: Special Topics with Dr. Ikehara - I think this course is going to be about robtics
    3) ICS 491: Social Informatics, technology for collaboration and online communities with Dr. Suthers (see the write up below) - I'm not sure but I think Dr. Suthers taught this for his graduate level students this semester.
    4) ICS 432: Concurrent Programming - sounds like cool stuff
    5) ICS 632: High Performance Computing

    I heard a few students talking about delaying their graduation because of excitement surrounding the robotics and graphics classes. i think its great that the students are really excited about the classes they are taking. when i went to school the exciting class was ICS 415 intro to web programming; we didn't have high performance computing, robotics, etc. so, i'm really glad that the students get to learn about these interesting topics. it makes learning a lot more fun!

    and of course, the class that i always recommend ICS 413 is being offered (interview with randy, make students awesome).
    here are the other courses that UH ICS is offering next semester (Fall 2008 Class Availability); go check it out.

    Tuesday, April 22, 2008

    re: High-tech jobs growing in Hawaii

    here is an article on hawaii's tech jobs. basically, there is a bunch of good news:

    A trade group report being released today ranks Hawaii among the top five states in the nation in growth of technology jobs.

    With 6.3 percent growth in tech-industry jobs between 2005 and 2006, Hawaii ranked fourth nationwide

    Hawaii also ranked in the top five states with the fastest growth rate in tech wages since 2001.

    Between 2001 and 2006, Hawaii added 1,100 jobs, with most of the growth in the latter three years. In 2006, there were a total of 14,902 high-tech jobs and 1,387 high-tech establishments with a total payroll of $1 billion.

    but there were not so good stuff:

    Hawaii ranked No. 46 in high-tech employment and No. 26 in high-tech average wages. A total of 30 out of every 1,000 employees in the private sector in Hawaii are employed by high-tech firms.

    Hawaii, however, ranks near the bottom when it comes to research & development per capita (at No. 38) and venture capital investments (No.45).

    what does that all mean?
    it means the industry is growing a lot. but, we are 46th in the nation (well, the study didn't say if that was a per capita number). our wages are increasing, but we are still in the middle ranking 26 in the nation.

    and.... we aren't doing that much research and development and VC work.

    so i guess that means there is a lot of IT work here in Hawaii (nothing against IT work).

    Thursday, April 17, 2008

    my 100th post

    this is my 100th posting to this blog. i started this blog way back in august 2007 while i was on two week vacation from work. my blog started out as a engineering log about my hackystat development but quickly morphed into something else. i'm actually really surprised that i made it this far.

    the turning point was when i was recruited by google (i'll write a separate blog about that). it was a time of uncertainty for me. the fear of wanting to leave hawaii for "bigger" opportunities re-focused me. i was a bit confused at this point. honestly, i was a little upset that i was even considering moving away from hawaii. after the google opportunity faded, i focused my attention on the students and the high tech industry.

    with this new goal, i set out to make a difference. not knowing how to go about doing this i started writing things like, why you NEED to do a Honors Thesis and we need a Fog Creek in Hawaii. i think at this point dr. johnson sent my blog around to his students. another turning point is when i visited the local office of 21csi for their "grand opening". during that event i really tried to do some networking to learn more about hawaii's high tech industry. the result of that effort was meeting ian kitajima. a week later i wrote a post about knowing your industry. i learned a lot about the dual use group. but, i didn't really know what to do with that information.

    for the next few months i worked on hackstat stuff and tried to help write posts that students would like. here are some examples:
  • twitter, sharing, hackystat ideas
  • work on your soft skills
  • why i work on hackystat
  • re: blogging, open-source software, and rockstars!
  • think about things other than code
  • don't be afraid to speak up
  • outward thinking
  • student portfolios
  • finding what you are passionate about

    those are just some examples. but, i found that i really like blogging about things that i actually helped in. for example, lacy veach and helping kids with scratch. or going to career fairs; i love going to career fairs cause you can talk to the students and help them. and my wiimote demonstration was a lot of fun! talking with the honors students was also very enlightening. and most of all i like helping to make students awesome!

    i had the idea of helping students learn more about the people in our industry. hawaii has a lot of great people! i wanted to show the world how awesome our people were. so, i started my blog interview posts. to date, i've done 7 interviews.
  • interview with lynn fujioka - this interview was really successful and got a lot of attention from the techhui group. hopefully a lot more people know about lynn's efforts.
  • interview with randy cox
  • interview with ian kitajima - this interview was pretty inspiring and it was cool to see it posted on oceanit's website
  • interview with dan leuck
  • interview with russ tokuhama
  • interview with ryan k
  • interview with austen

    i learned a lot from doing these interviews. hopefully, people read them and got to know these awesome people.

    those of you that actually follow my blog, have probably noticed that i tend to think a lot about a lot of different things; hackystat, the environment, being socially conscious, hawaii's tech industry, sharing information, and other random things.

    a hundred posts is a lot. and i really learned a lot about what i value from actually forcing myself to write. hopefully, other people thought it was valuable too. i have no idea. its really hard to what i do helps, so i don't really concern myself with trying to please other people. but.... i have been keeping track of my analytics with google. here are some my very low numbers (but i don't really care about popularity);

    moving forward i will continue on my quest to help people. i know that is a general statement. don't worry about me. i'll figure it out... i'm at a good point in my life and i really feel lucky to be able to do what i do. i'm appreciative of so many things and have the overwhelming urge to help people. i suppose my blog is supposed to be a small representation of that.

    let me know what you think by adding a comment!
  • Monday, April 14, 2008

    interview with randy cox

    randy is the engineering manager at pukoa scientific. and he was one of my first managers at another company. he actually was the one that convinced me to come work for that company. he is a great guy. he was very supportive of my ideas and i could tell that he really cared. thats very important to me. to be honest, randy's sincerity is really one of the reasons why i chose to come work for him. did i mention he is a great guy; no really he is a great guy.

    What inspired me to get back into programming?

    My drive to get back into programming was my attempt to improve myself. It could be a mid-life crisis thing :). I am bored of management, and wanted to excel in something new. Personally, I am happiest when I am coding. I think good programming skills make you a better manager, and managerial experience make you a better programmer. So I was very excited to take this class.

    What are some of the lessons I learned about myself from taking the class?

    First, I learned what I have forgotten, that I really enjoy coding and really enjoyed learning. I also received training in patience. It was difficult working in teams when procrastination is so prevalent. In addition, although my background is in Electrical Engineering and I was intending to study Signal Processing, I have learned that Computer Science is what really makes me excited.

    What insights additional insights did you gain from the class, because you were a manager?

    I believe, ICS 613 Software Engineering's core teachings is managerial . During my 18 year managerial career, I have been in constant battle with software depreciation (and losing). I actually resigned to the fact the software depreciation was inevitable in large companies. Everyone had there own way of coding, people who did not understand the overall architecture created their own designs within subsystems, or people just coding things arbitrarily more complex then needed. The task of controlling and enforcing was too difficult or unfeasible to keep the code base "clean". Once the legacy code base reaches the point of no return = "spaghetti", your staff end up living in purgatory, you fight fire after fire, you build band-aids, the quality of your work diminishes and your brightness engineers start walking. You never get the chance to "rewrite" the application because it can never compete with nifty new marketing features. Look at any of the big companies out there and you will see large legacy applications maintained by legacy experts in archaic languages (COBOL, BASIC, etc.).

    Enter Aaron and other alumni from ICS. I got a taste of the set of QA tools now available. I learned the principles of continuous re-factoring. I found that today's software engineering methods may actually eliminate this age old nemesis of mine. I think today's students don't really understand the value of this. I can see how students who understand the principles of this class may become disillusioned working for bigger companies that do things old-school.

    What lessons have you adopted from class into your work?

    I pretty much would like to adopt the entire software process from this class at work. We are slowly implementing these processes, but there are a few challenges to overcome. Finding the balance between improving the process from my point of view versus micromanaging the software manager takes some finesse. Also, things need to be staged (instructions, tools, etc.) in a systematic way to avoid chaos.

    You mentioned, "I think today's students don't really understand the value of this." I'm not sure today's students learn that much about that. Let's dig deeper into this area.

    I've said for years that the classes that Dr. Johnson teaches should be mandatory in the ICS curriculum. Learning the tools and processes he teaches in his class are mandatory in any software development. Do you think the core teachings of Software Engineering should be required in the ICS curriculum?

    Definitely, I really think that this separates the “professional programmer” from the “amateur programmer”. It’s so easy to pick up a language and have fun programming something. It takes hard work and discipline to make that code “industrial strength”. Unit tests, constant refactoring, javadoc, etc. can be tedious for the lazy programmer, but critical in achieving quality.

    [end interview and some of aaron's thoughts]
    randy is a hacker. that is so obvious. i'm totally stoked that he has found his way back to hacking! i totally see what he's saying with

    Finding the balance between improving the process from my point of view versus micromanaging the software manager takes some finesse. Also, things need to be staged (instructions, tools, etc.) in a systematic way to avoid chaos.

    thats really good insight. i just wonder what that finesse is.

    i want to revisit my last question about requiring software engineering in the ics curriculum. Here are some of my (aaron's) thoughts about that. A professor could give a presentation about the state of the art software development tools. And even give the students an assignment to download, install, and play with them. But, I think that would almost be useless. Learning doesn't work that way. You need constant interaction with the subject matter to gain experience and insights. Thus, its rare that classroom assignments does the trick. Class projects are a lot better, because it allows the student to work on something, refactor it, be evaluated, and try again. Yet, class projects has its limitations too. So, it seems that students really need to to theses, work in research labs, dissertations, etc to get the experience they need to really learn. That's reality i guess, but seems like a shame. In regards to software engineering principles, I'm tired of the software being ignored in "other classes". (i'm not picking on any professor here) For example, lets say we have a programming class project in a database class. Would the professor require the class to use a configuration management tool? Or have a continuous build? I doubt it. The problem that I see is that the core principles of Software Engineering are only important some times. that works vice versa too. when in a software engineering class we should be aware of the "right" thing to do for, lets say, data structures and algorithms.

    I remember when I was taking a multimedia for the web programming class, the professor asked us a Big-O Notation question. We all looked around confused, saying to our selves "um excuse me but we are supposed to be learning about web programming". No one answered the question. In fact, I'm not even sure any one knew the answer. I had no clue. The professor was astonished, because he obviously thought that was an easy question. Looking back at that event and knowing that I still suck at Big-O questions, I realize that I'm not good at that because we were forced to only care during one or two classes. And we are indirectly forced by all the other classes to not to care about Big-O.

    anyway, i guess i'm making a plea for more synergy across disciplines in the classroom.

    i just remembered that randy gave a great talk at the ics dual-use-industry internship presentation. actually, a few students came up to me and asked if 413/613 was a required class to work at our companies. i said no, but it certainly helps A LOT. :)

    Tuesday, April 8, 2008

    ics alumni association

    i've been pushing for more student activities in the ICS department for a long time. and its only in the last year or so that i've figured out that its basically up to the alumni association to provide students with opportunities. too bad we don't have one...

    i've been learning about how the college of engineering works a little. and i've seen the great fund raising that the college and alumni association support. these fund raising dollars seem to go to a few places; (1) student activities and (2) outreach to younger kids, and (3) to student scholarships, etc. of course, i'm not exactly sure. but, i do know that a lot of what makes that possible is volunteer time that the students and faculty put in to make a lot of the events possible. for example, i was really impressed with the college of engineering junior engineering expo and asked on COE coordinator what they do to make those events possible. she said:

    Donations help assist with the costs associated with these events, but the dedication of our staff, faculty and especially our engineering students to volunteering for this event really makes the event happen.

    The engineering student clubs each coordinate one of the games so they create the rules, and set up, run, and judge the competition on event day.

    We take care everything else - coordinating with the teachers, logistics involving equipment needs and organizing volunteers, awards, and anything else that needs to be done.

    wow! so it is pretty cool how the colleges and departments unite like that. their student projects are also really impressive is the student projects like micro mouse, cube satellite, bridge making, and the baja racer. whats great is that the college provides the students with an opportunity to compete against other schools doing the same projects. that's pretty neat. you can learn a lot more about all their activities at the engineering banquet. it usually is a really fantastic night. its quite amazing to see so many people supporting the college and more importantly the students.

    the ics department has those capabilities. we have a lot of great professors, students and faculty. i know we can reach that goal one day. i just takes some initiative to get the ball rolling. so, i'm trying to start an ics alumni association of some sort. here is the startings of our ics alumni association. and here is my first plea for help:


    Welcome to the first ever UH ICS Alumni mailing list email. We have a small group, only because I actually know you and your email addresses. But, the plan is for that all to change.

    There are a lot we can do, but it seems that we must do it on our own. But, I do have an informal plan. Here it is.

    1) Learn from other alumni groups. I have a contact that is a part of the administration of the College of Engineering Alumni group. I hope to learn a lot about how they organize things. Or maybe even borrow a few things.
    2) Learn about how to integrate with the ICS department.

    thats the entire plan so far. The goal of this all is to help the department but more importantly help the ICS students. We can do that by:

    1) mentoring
    2) providing industry knowledge to the department and students
    3) funding student research
    4) funding student programming competitions and other student activities
    5) not sure what else goes here, but it will definitely center around the students some how.

    help is definitely welcome! if you'd like to help me, just let me know.

    thanks, Aaron

    join our group!