Springtime, Symantec, and Alcatraz

For the last 8 months, I've been working with the group at Symantec Health. This is a new initiative within the company whose aim is to target the technology needs in the healthcare space. See http://symantechealth.verite.com. In that 8 months, we've gone from prototype to full GA of our two solutions, Health Safe and Health Share.

The broad goal of these products is to ease the burden of IT on hospitals with respect to image archiving and sharing. For those who follow technology trends, healthcare can be surprisingly behind the times. I think this group is on track to place Symantec as a trusted name within healthcare IT, and I'm proud to be part of it.

On a more personal level, my wife, Kelly, has been hard in training for the upcoming Escape From Alcatraz triathlon. The course winds through downtown San Francisco, which we have been able to enjoy during our weekend training. I say "our" training since inevitable I'm along for the ride. The race is this coming Sunday and I'm sure she's in a great shape for it. Go Kelly!

Hello, California!

As of mid-September, I've started on a new project 3000 miles away from New York! I found a great team within Symantec , mostly with backgrounds in web and other tech startups, who are working in health care services. You can have a listen to Gary Sevounts talk about the solution here. I'm really happy to have found these guys; I have a lot I can learn from them.
As far as West Coast vs. East... California is nice. It's like being on vacation, with the weather nice all the time. My wife and I still talk about how we miss New York, though. Right now we could be ice skating at Wollman Rink, or seeing the fall color at a cabin up in the Catskills. Perhaps again some time in the future, but for now I'm gonna soak up the sun and enjoy CA!

Android TTS capabilities update

As it turns out, the state of TTS on Android has tended to what I proposed in an earlier post. With limited resources on handheld devices, TTS libraries had to resort to solutions other than a straight port of existing Java TTS libraries. The eyes-free project resorts to some offloading to a web server, while a more official solution comes from SVOX. See the announcement here. The SVOX solution is what Android really needs to make TTS a reality. The product is embedded and has been proven in other limited resource environments such as automobiles.

MarketFactory

For those who don't know me personally, I have spent the last 2 years working with a great team at MarketFactory. I was fortunate enough to meet the 3 founders via an online ad in summer 2007. It was a great opportunity to work with the founders establishing the core technology. It's really quite an experience to start at nothing and see a product ship.

When we started MarketFactory, we had no office, no infrastructure, no code, and only a vision of how we could make the world better. Though the CTO had the final say, I was given freedom to choose most of the development solutions: languages, libraries, development and support tools. Usually when someone in my position is faced with these choices, it's best to pull from what you know, because it's what works. I was also fortunate that I was trusted enough to be allowed to research new unproven technologies as well. Open source is still a relatively new philosophy for the financial world though there is much out there that can be leveraged.

I've worked at a few startups before, but this is the one I put the most of myself into. It's also the one I'm most proud of out of all my past experience.

Text2Speech now hosted at Google Code

I've decided to open source the Text2Speech project for Android. The code can be found at http://code.google.com/p/android-text2speech/.

Text2Speech status 6/9/2008

The Text2Speech project has run into some obstacles. The amount of data required for voices combined with the limited processing power of the devices at which Android is targeted makes for some pretty tough hurdles.

Application developers are faced with a few options regarding speech. The first is pre-recorded audio, which is a piece of cake for most applications and a no-brainer. Why burden the device when you only have a small number of repeated phrases?

The second choice is Text2Speech. This is necessary for applications such as screen readers, navigation systems which speak names of streets. This is also where we run into limitations. An amount of optimization can be done at this stage. Also, mobile devices are always increasing in power and storage. So there is some hope yet and the Text2Speech project will continue. It will remain closed source for the immediate future.

Keltris 1.1!

New release of Keltris has the following updates:

  • New artwork!
  • High score retained between plays
  • Left/Right block sliding was too quick in higher levels, toned it down a bit
  • Bonus points for multiple lines cleared with one block
  • Better keyboard controls. Now you can use the arrow keys the same as ASDW. Left/Right/Down for movement and Up for block rotation.


Download: Keltris_1_1.zip

Keltris 1.0!

Yesterday I was thinking about how I could salvage the game code I had from the last project and turn it into something useful. Then it struck me that my girlfriend had been asking for a copy of Tetris ever since we purchased a Nintendo Wii. Unfortunately, there isn't a version of Tetris on the Wii. So within 24 hours or so, I worked hard to create Keltris! This was mostly for fun, and to win points with my girlfriend, but also as an exercise in rapid game development as well as a good test of the code I had around.

I have a simple design document which I'd love to share in order to show the creative process from beginning to end, but I used MS Office OneNote to create it and it's not so easy to get it into a nice HTML format. I'll save that for a later time. For now, here are a few screenshots and the game to download.


Download: Keltris_1_0.zip

Text2Speech for Android!

It's been about a month since I first started this project. I wanted to get familiar with Google Android by taking some existing Java code and porting it to the Android platform. I was also hoping to provide something actually useful in the Android environment. Hopefully this Text2Speech service is. It is entirely derived from FreeTTS.

Here I provide the code in hopes that some screen apps can make use of this service on the device. Examples could be an alarm which reads time, weather, and RSS feeds. Or an email reader.

I worked hard getting it to compile but ran into a bug in the Android SDK InputStream implementation. That's where it currently stands. If I have the time I will try to provide updates for it.

EDIT: Based on a lot of feedback from folks working on Android Developer Challenge submissions, I've decided to keep the source closed until the end of the challenge. If you would like to make use of the Text2Speech service within your application, please send me an email and let's work together.

Game pre-mortem

Not quite a dead project yet, but my game development efforts have been shelved indefinitely. The short version is that my job is currently taking up most of my development efforts. Rather than let this project fade into the background, I decided to do an analysis of the project for my own benefit going forward. What went right, what went wrong, and how I can getter approach a project like this in the future.

There is a lot of useful code, which I don't plan to dispose of. I figure the best way to be sure the project survives is to share the code here. It needs some polishing and packaging, but I hope to share all of what I have, which includes a simple 2D game engine based on DirectX, plus a simple game based on that engine.

Genotype project failed: Why?

 


- Lack of time dedication


Unfortunate, but justified due to cost-of-living expenses here in NYC
forcing developers to get 'real' jobs


- No money incoming at early stages


Could have gotten some funding, but would have been difficult for a
pet project from two guys without prior published games. Self funding was
really the only way.


- Development took too long


- Used own code when open source code would have worked

- No real schedule

- Wrote a lot more code than was expected from the start. I could
possibly have written more code than was necessary to get the thing running.

- I took an engine-oriented approach, intending to reuse it for other
games or sell it on its own. In retrospect, a lot of the framework was
tested and good code, but game logic code also needs attention. And is a
HUGE part of the project.

- Lack of game dev project completion from me. I haven't taken a
game to completion, so I tend to find solace in repeating things I've done
before, but polishing them up. There was a lot of code for game logic,
menus, enemies, etc., which I ignored because it felt like a big task. One
which I was unfamiliar with.

- Played with bulletML for a too long? Was it too early to worry
about this? BulletML was complicated and I could have used simple bullet
code first, and then expanded the bullet arrays later on. Plus, BulletML was
poorly documented and didn't gain us much. There were existing bullet
patters, but would we have used them? The ML was too complex for us to learn
and try to create ourselves.

- Took too long to recover context to make code progress after
spending week(s) away from the code.

- Too much refactoring. Refactoring is good, but there's time to do
it after delivery of completed application. There was no good reason for me
to go back and polish the engine before game completion. I need to work on
'black-boxing' the code and forgetting about underlying framework classes
when writing game logic code.

- Too feature-ful code in the framework. Changing resolutions on the
fly is good, but who gives a shit? XBLA probably has only one resolution.


- Lack of artwork expertise


- 3rd person on the project could have helped

- Artwork didn't need to be optimized from the start. Could have
been individual files of whatever size which the engine was capable of
handling

- Too much focus on tweaking one or two images to get the right look
of game art. Transparency and such could have come later on.

- Should have worked on getting the artwork workflow for the artist
down so art can easily come out as usable in the game. We decided on TGA
which gave us freedom for transparency, but it was difficult to export to.
We could have used BMP with color keys from the start (I even coded this!)
and cleaned things up later.


- Poor communication of game design


- Documentation needed to be much better. About half-way through I
started to use word docs to roughly decide tasks needing completion. Some
sketches and mockups existed, but a true requirements document spelling out
all necessary details was needed. Maybe.

- Other projects manage to wing it and get a completed game out.
This may be a problem with my technology-oriented focus. I have a hard time
visualizing the end goal and seeing past the code.

- Some milestones with expected feature completion would have been
useful. I had a rough milestone document, but it had CODE completion. There
were many required bits of code which I didn't anticipate from the start,
making it seem like later milestones were far out of reach. I should have
had end user features listed in the milestones, functionality.


- Lost interest (~9 months from meetup to project abandonment)


- Project lifetime of 3-6 months is more realistic for a small game
like this.

- Better requirements and milestone documents (see above comments)
would have helped to visualize the completion of the project, rather than
just feeling like there was always tons of work left to do.


I'm not a gamer!


I code games because I enjoy the challenge, not because I am an avid
game player. I need to pick an application I care about, not code I care
about. Good code can be written in any context.

 

 

What went RIGHT?

 


Unit tests


Doing unit tests on the framework classes helped to be certain that
things were working as intended. Even when refactoring later in the project
I found some bugs in code which had long since been left alone.

 

That's it?

 

What can be gained/salvaged?


Engine code


 

 

 

Syndicate content