Danny's Tech: Where West and East Intersect

Thursday, September 28, 2006

Google Project management

slashdot pointed to Stevey's blog on Google SW process. It sounds like a great place to work at. If and whenever I start a company, I'd make sure the work environment would be similar.

One note: Stevey dogs pair programming [actually they do it 5% of the time it seems], but I believe in the value of pair programming: maybe not 100% but more than 5%. But then I've never done XP or pair programming so it's hard to say how it works in the real world...

Copyright 2006, DannyHSDad, All Rights Reserved

Wednesday, September 27, 2006

Mashup Software Engineering

I was thinking about programmer directed coding (the way things are today, where "professionals" write code for the users) while contrasting with what I wanted to see: user directed programming. Or Computer Assisted User Coding Energy or CAUSE (I didn't know what to put for "E" actually).

And then I thought, why not mashups? There are music and video mashups and I found out this morning that there is web page mashups. Why can't users just take parts of the programs they like and mash them into a new program? For example, take the physics game engine of Burnout, the scifi-ness of Star Wars and online connectedness of second life. [Lame examples, I know but I'm not very creative this morning.]

Where am I going with this? I'm not sure but I think this is the direction I want to see things headed....

Copyright 2006, DannyHSDad, All Rights Reserved.

Monday, September 25, 2006

Metaprogramming

I'm not the only person who wants to program in a generic way: DSL or Domain Specific Language is a proposal for metaprogramming without worrying about the details of the target languages. He points to ANTLR parser generator -- i.e., alternative to Lex/Yacc. [Interestingly enough, Microsoft has already released DSL tool kit for Visual Studio.]

I don't think so: I don't want more complexity for the sake of cleanness of implementation [i.e., make it easy for computer to process rather than easier for user to program], the trend with parser generators. I want high order functions easy to use and give me more power to do what I want. Much like what they are trying to do with the next generation GUI's. All in all, programming should be as painless (or approachable) as Excel "programming."

Copyright 2006, DannyHSDad, All Rights Reserved.

Sunday, September 24, 2006

Composition Tools: music, coding and home redesign

I was reading the Psalms, and thought, wouldn't it be great to have a computer tool that I can create music to any given words? I'd have a palette of generic sounds [scary, intense, action, drama, shattering, etc] with variations [short scary, slow pace scary, etc.] and then ability to change various aspects [pitch, tempo, etc. individually or as a group]. Words can be set to music and changed appropriately, too. And help you create multi-part harmony, polyphony, etc.

It would work something like my free sketch and coding tools. A constraint based tool allowing quick prototyping [be it music, dance choreography, or user interface of a program or game] and computer assisted detailed refinement along with "what if" power of spreadsheets would be the kind of tool I believe would be very useful. Not only educational tool but also practical for professionals.

I guess the next step is to reverse engineer what exists today [computer program, music, or even a video of a dance] by decomposing and allow you to edit and enhance the original program or just copy the good parts and paste to your own creation (with enough smarts to edit the original to avoid copyright violations).

Another interesting tool would be able to take photo of a furniture you want to buy, and place it into your existing home and visualize what it would look like. Or take a picture of your existing home and suck out the furniture, and then take a picture of the new you home you want to buy and see how much will fit physically [if you're going to downsize] or how they would look with existing painting, etc. and use it as a negotiating tool to have the seller change colors, etc. Or send the mashed up image to various remodellers and ask for bids and send back their proposals. As a customer, you can pick a specific designer or ask 2 or more designers to collaborate since you like parts of each designer with suggestions you make mashing up the proposals to your own tastes. [And rather than giving a blank check to the designer, you retain the power of picking and choosing what they do to your own liking, even before they start!]

Copyright 2006, DannyHSDad, All Rights Reserved.

Saturday, September 16, 2006

Free sketch to free coding

I found the 2D -> 3D drawing tool (Magical Sketch) [Dog demo: press Blue button to see the demo] very encouraging. [Slashdot crowd, as usual, tears it apart.]

What I see in the demo is that it empowers the users to draw in their natural way and then make something much more complex (i.e., 3D image). I'd like to think something similar is possible with programming, be it games or something else. Much like the way BASIC was: I typed in PRINT to get a specific string on the screen.

The dream I have is a tool for my wife to use to create her dance choreography for 5 or 12 dancers using simple sketch layout [be it story boarding the way movies are made or laying out one dancer at a time] and have it synchronized with the music. She should be able to edit individual dancer's movement or whole group [like the outside 4 dancers] in synch. She would "program" her dancers to move in certain patterns (high level programming) and then she would visually edit her performers (low level programming). With multiple dancers, she would want to use computer science ideas like: class inheritance (simple dance has subclass of more complex dance movements), class library (sets of standard dance patterns), polymorphism (two dancers rotating, one to the left, the other to the right). And she should do it all (design, write, simulate, edit (including "configuration management") and then "publish" the result on DVD to handout to her dancers) without realizing she's being a software engineer....

An added bonus would be able to take a digital picture of each dancer and then replace each of the "robot" dancer with the specific dancer's image/avatar.

Another bonus would be to take blueprint of the theater/church stage and then refit the choreography to fit the specific layout.

Or better yet: take few pictures of the place and create 3D image of the location and then fit/resize the dance automagically, so that she can create a DVD which she can show to her dancers as well as to the music committee or board members to get dance's approval. If she can edit out any objectional part on the fly, that would be an icing on the cake...

Copyright 2006, DannyHSDad, All Rights Reserved.

Friday, September 15, 2006

Game Programming and BASIC

I found "Why Johnny can't code: BASIC used to be on every computer a child touched -- but today there's no easy way for kids to get hooked on programming" interesting.

My sons have gotten into programming via edutainment software [there was a game puzzle where you had to program a robot to go from point A to point B] and then I got them Stagecast Creator game tool software. They did OK enough at first, so I bought 2 licenses for them. Result: OK. My main grief is that you can make big game that's hard to debug and maintain. I've blogged about various ideas about better programming environment, before.

I've mentioned GameMaker's Apprentice before and I did buy it and my sons started the tutorial but never finished and haven't done anything with it since. We're still in the process of moving [mainly unpacking and getting settled with regular schedule], it may be a while before they get back into programming again....

Copyright 2006, DannyHSDad, All Rights Reserved.

Wednesday, September 13, 2006

Customize your own cellphone

Here's a rather affordable cellphone SDK put together by Trolltech:

Qtopia Greenphone SDK

It's like PalmOS programming on Treo phones but with Greenphone, you can take over pretty much everything and redo them yourself. They only support GSM which is fine with me since I will only buy smart card based phones.**

It's one of those new things which sounds very exciting, a new dev platform. In the past, I've signed up for developing on: Macintosh, BeBox, SmalltalkAgents, PalmOS, and even Nintendo GameBoy Advanced [Linux hack kit to write games for GBA, not the official Nintendo dev kit] and haven't gotten anywhere with any of them. I've bought my current TabletPC notebook hoping to do some development, too. There are few others I've passed on like: NextStep, Lisp machine, GP2X, to name few. So I'll sleep on it and find something new to work on tomorrow.... (grin)

Copyright 2006, DannyHSDad, All Rights Reserved.
--

** I'm really hoping that wireless companies will introduce 3G phones with USIM (or UIM) so that all phones will have smart cards. Today, the retail clerk at Circuit City representing Verizon Wireless was funny: she hadn't heard of 3G phones and when I asked about smart cards she made it seem like it was non-digital while Verizon was "all digital." Sigh.

Apple knocking on TiVo

"New UI Showdown: Apple vs. TiVo" gets it right: Apple via ipod and itunes have beaten all the upstarts with mp3 game. Video is next and TiVo is on the radar: if you can greate movies [imovies] and download and watch movies [itv], recording and navigating TV shows are next logical steps for Apple. TiVo may have slick interface today [I have yet to own a TiVo box: I've used Microsoft MCE and BeyondTV and Dishnetwork's PVR] but Apple has longer experience doing GUI than TiVo. So, if anything, TiVo would be a good stock to short now: they have lost money for years and they got a boost announcing their new, series 3 HDTV recorder.

Copyright 2006, DannyHSDad, All Rights Reserved.

Sunday, September 03, 2006

undoDB: back in time debugger

"Bi-directional Linux debugger" allows the programmer to go back in execution time for C/C++ programs [apparently it's been around for Java for sometime already].

It is a non-trivial feat since read/write data have to be undone, especially for global variables. And if you have more than one program/thread running, for get about it since global states [esp if they use resources outside of the program like hardware register or flash memory or a file on HDD].

Copyright 2006, DannyHSDad, All Right Reserved.