Scott Miller

Appsguild - Software craftsmanship using C#.Net, Oracle, lean and agile software development techniques

  Home  |   Contact  |   Syndication    |   Login
  137 Posts | 3 Stories | 168 Comments | 72 Trackbacks

News



Article Categories

Archives

Image Galleries

Best Blogs

Podcasts

Scott's links

Monday, June 23, 2008 #

In my previous post, I was focused on making One Game per Month. Well, that only works if you continue to work on it. I, on the other hand, got distracted on doing something else. Which is a problem, because when it stops being fun and I'm in the bowels of coding and debugging, it seems more like work.

This brought to my mind the nature of epiphany. We all want to get that lightning bolt from the sky that gives us the great idea. In fact, epiphany used to mean that you got the idea from God.

I am reading The Myths of Innovation, by Scott Berkun. In the book, he covers the myth of epiphany, that great ideas seldom come as epiphanies, unlike the story of an apple dropping on Newton's head yielding insight into gravity, which is likely a myth of story anyway (the apple, not gravity...).

Instead, ideas come *surprise* through hard work, practice, and failure. Often what is attributed as a true epiphany is really the ability to put two disparate thoughts together, noticing the possible connection. Discovering penicillin through mold could be an example.

I have a book on song writing and lyric writing that basically says that you only get better through practice and working at it. Getting that flash of a great song idea doesn't happen very often, which is also why most of the songs on the radio sound the same, because it is easier, and yea even advisable, to follow a formula.

Berkun's book on Innovation also has a funny story of a group of business people touring Google, and marveling at the amount of toys, games, bean bag chairs, etc. And they wondered how anyone can get that next great idea if the staff is sitting around in bean bag chairs playing games and talking to each other. :)


Monday, June 09, 2008 #

I read an interesting article on MSN about indie game-makers challenging themselves by creating one game a week/month for an entire year. Some are gems and some are crap.

One of the games was the super popular Tower of Goo.

They also have an article on Gamasutra about How to Prototype a Game in 7 Days. Their article is interesting and basically challenges the game designer to do the equivalent of random word association - develop a theme in a short period of time, and do small mini-game that may experiment with one idea, like a certain type of physics, or using the microphone as a controller. Interesting stuff.

So I am trying something similar, although I may not limit myself to one week or month. Now that I have a basic game framework to duplicate my XNA efforts (I call it my Bloink game engine), I am ready to begin.

My game is called MOO. It consists of a mini-game with a cow or multiple cows. (I know, the cow head looks like a deer). A farmer has to milk the cow and walk over to the vat and dump the milk, racing the clock and the ever increasing udders of the cow, which may explode. The cow has sprites of the ever-increasing udders and gradually larger eyes. The graphics are rudimentary, similar to George Clingerman's tutorials.

Here is the cow:


Sunday, June 01, 2008 #

For the last six weeks I have been working on a Master of Orion clone called Sovereign - all in XNA.

Main screen

Intro screen

Menu screen

Planet info screen

All of these graphics were created with Paint.Net. All graphics, such as the logo, menu screen background, and planets, were created from tutorials on the Paint.Net forums.

 

 

    Current Features:
  • Intro screen has a gear animation that moves across the screen, cracks like an egg, and an Appsguild logo flies out, complete with Fade.
  • Menu screen has a menu manager
  • Main screen has planets that are dynamically loaded from an XML file.
  • When right clicking on planets, a planet info screen appears with an enlarged graphic and planet info numbers

Download my current code from: sov06012008.zip

Still alot of work to go. I used example code for Fade and Screen Manager from George Clingerman's XNA Development, and some Screen Manager ideas from Domination for Xbox 360 by Focused Games.


Saturday, April 12, 2008 #

I continue to mess around with XNA 2.0. I have been using George Clingerman's tutorial on selecting a sprite with a selection box. The tutorial is also on his XNADevelopment.com site here.

Basically, there are two sprites that you can select by left clicking on them:

or you can drag a selection box around them to select them:

You can then select one sprite in this manner and right click somewhere on the screen to move it, similar to a RTS game. Very handy. But I want something more.

I want to click on a sprite and have a selection cursor appear around the sprite.

And when I click somwhere else, I want the selection cursor to go to that sprite, or not appear at all if I don't click on a sprite.

And I want to be able to reference the sprite that I clicked on.

So this is how I did it:
I created a sprite manager class with a collection to store all of my sprites. It has lookup code so that I can drill down to the sprite that was clicked on. <

Here is the source code (spriteselection.zip).

And here are some of the planet sprites (planetsprites.zip).

These planet sprites were created with Paint.Net.

How to make planets with Paint.Net

How to make starscapes and nebulae with Paint.Net

 


Tuesday, April 08, 2008 #

In my previous post I talked about making my first RPG tutorial in XNA 2.0. One of the challenges was finding a sprite with all the animation movements in different directions.

I came across Charas RPG Maker site. Once you register, you can create sprites in all their cheesy, 8-bit glory. The sprite options are very comprehensive, and include hundreds of options for body, face, hair, dress.

 

Each animation cell is 72 x 97. To get the background to be blank in dotnet, I changed the background to magenta (R: 255, G: 0, B: 255).

Here are some of my samples:
Knight:

Wizard:

Zombie:

Medusa:

Greedo:

Wolverine:


After long last, I have started to mess around with XNA 2.0.

I really like George Clingerman's tutorials here on GWB, as well as George's XNADevelopment.com site.

If I make a game, what kind of game would I like to make? As I have said before, I spend more time playing old Nintendo games downloaded on the Virtual Console on my Wii - old Zelda and Metroid. So I think I will try to make an RPG.

I have messed around with RPG's before, using Microsoft's Crusader RPG starter kit, on the Coding4Fun part of the site, from the time before XNA. An RPG with ugly graphics.

Although the graphics are ugly, the game code does have a good tutorial and code on creating tile maps loaded from files (in this case they are csv and text files).

So I am on my way. Using George's sprite code from his tutorials, I want to create an animated sprite of a typical walking RPG avatar. I used Charas RPG Maker site to create my animated sprites (more on this site in my next post).

The resulting sprite has three frames of animation walking in all directions.

I quickly figured out that it is difficult to animate a walking sprite. If you have one frame per touch of the arrow key it is not too bad, but otherwise he flails wildly. I tried to use code from Crusader to add walking frame rates but Crusader treats each tile as an individual "hex", something that I was not doing. I finally found some sample code - Animating Sprite Sheets and Sprite Movement, which adds in a variable framerate that keeps the walking smooth, slow, and non-jerky. I put this code together with George's stuff and came up with this:

In the above frame, I have an animated, walking avatar knight (which responds to arrow keys) and an animated zombie that walks in place.

Here is the source code: rpgTutorial1.zip.

Also in my travels, I came across an excellent set of RPG tutorials by Nick on nick.gravelyn.com that include tile engines, sprites, NPC dialog windows, etc.


Monday, March 10, 2008 #

In today's news:
Wal-Mart stops selling Linux PC's in their stores. They sold the PC's for $199. Wal-Mart will still sell them through their website.

Not sure if this is because of Linux or the quality or marketing of the $199 PC. But overall not surprising. I'm not sure that the average customer would be geek enough to run Linux, or if Linux is mainstream enough for the general population. If I was going to run Linux (which I tried and disliked) I would download it or buy the CD and install it myself.


Monday, February 18, 2008 #

Working in corporate America, in a company that does not solely do software development as a product or service, has its challenges. As an example, hardware and software are always "good enough". I have seen Vista but have never used it. Every company I have worked for wipes the new PC's of Vista and installs XP.

And processes will inevitably gravitate to BDUF (big design up front). One of the comments was that we did not have enough documentation and project artifacts.

As my previous posts have said, we have been using lean/agile software development practices for some time. But recently the word came down from corp HQ To use a company-wide process, based on the PMI. So back to PMI we go!


Sunday, November 11, 2007 #

I rented Idiocracy this weekend. What a great, yet disturbing, movie. Disturbing because it is so close to the truth.

While it is supposed to be 500 years in the future it instead seems like 15 or 20 years in the future. Much like the family tree scene in the beginning of the movie, today the "smart", educated people have fewer kids and the stupid hillbillies are having alot of kids.

People who speak and write intelligently are laughed at.

In addition, our public schools are already dumbed down and our colleges are being dumbed down because HS graduates can't read or write at a college level.

At a "good" suburban high school an English teacher lamented to me that she ultimately has to show a video for the reading assignments that she has given because the students either cannot read at the level necessary or simply will not do the work.

Also, the reality TV segments of Idiocracy are also very close to what we have today. Next we'll have real-time reality TV where the populous votes on who lives and dies, as well as votes on our politicians and each policy, much like the Doctor Who episode Vengeance on Varos, (which wouldn't be such a bad thing, at least in regards to politicians).


Friday, October 26, 2007 #

This isn't tech-worthy, but maybe you can get some benefit out of my experience.

November is benefits enrollment time again at most corporate jobs. This is when you choose which health plan you want for the next year, and they let you know how much the premiums went up this year. :)

Most companies are now offering Health Reimbursement Accounts (HRA's) or Health Savings Accounts (HSA's). I have had HRA's in the past, so this is my experience.

An HRA is a "consumer driven" health care plan, which is supposed to involve you in your healthcare spending. An HRA has three components -

  • Your company pays a yearly amount, which can be like $500-1000. All of your medical bills are usually paid 90-100% out of this amount. If you don't use it, it rolls over to the next year.
  • A high deductible catastrophic insurance plan that kicks in at anywhere between $1000 for a single person or $4000 for a family, depending on the plan. This is like an out-of-pocket maximum. After this the insurance usually pays 100%.
  • The third component is the bridge amount between the amount your company pays and the amount where the catastrophic insurance kicks in. This is what you pay completely 100% out of your pocket.

Now this isn't too bad if you are young and you never go to the doctor. Many single coworkers in their 20's that I know never reach the company paid amount and they roll over every year.

So what's the big draw? HRA's have premiums that are much less than the PPO and HMO plans that most companies offer employees. And HRA's keep costs down because people use less healthcare when they reach their limit and have to pay the bridge amount 100% out of pocket. Also the logic is that if you involve the employee/patient as a consumer and they see how much is actually being spent on services, then there is the logic that the employee/patient will make better choices or leverage their doctors for better services or care.

So does it work? HRA's have been shown to keep costs down.

What is my personal experience? At a previous employer I had Definity HRA. I had a family plan. The base $1600 was paid by my employer. The catastrophic limit was $4000. I had to pay the bridge of $2400. Now you would think that it would be difficult to reach the $1600. Not so. The dirty little secret of HRA's is that you are on your own price-wise with doctors. They charge you full price for everything. You finally see how much BC/BS and those PPO's bargain for price controls and write-offs on your bills! Apparently the HRA's don't do the same thing. Prescriptions count toward the $1600. And prescriptions were two or three times what they were on the PPO or HMO for the base price (not the co-pay, the price that is listed on your statement). That $1600 was eaten up fast and the $2400 bridge was alot of money to come up with in big chunks every time we went to the doctor or pharmacy. This can be offset somewhat with a Flex account, but then you are paying alot up front.

Now I wouldn't have a problem with HRA's if the prices were fair, but its obvious that doctors offices, hospitals, and pharmacies are hitting the HRA consumers with the money that they are losing on people with no insurance, Medicare patients, and those with aggressive PPO's that limit the amount that they will pay for services.

So why go into this topic? Because many companies are offering HRA's/HSA's and then jacking up the PPO premiums to force you to go on the HRA plans. And Bush talked about moving more to HRA's/HSA's in the last two State of the Union addresses. I envision 20 years from now that we will "own" and fund our health care benefits much like we now "own" our 401K plans.


Friday, September 28, 2007 #

Last posting I told the story of the scope actually decreasing because of user feedback. The users decided that they could live with Iteration/Release 1 (of working software) and essentially canceled Iteration/Release 2 so that we could work on some other projects that they considered a higher priority than the added functionality of what we would deliver in Iteration/Release 2. This was considered a huge evolutionary step forward in the software development process, because usually a software team would get requirements and disappear for six months, delivering the total package at the end of that time.

Score one for the team...

As the Agile Manifesto says:
Business people and developers must work together daily throughout the project. Hmmm...ok...

So what is the best way to include users? Here are some possibilities:

We could use the XP example of making a business customer/user/rep/whatever move in with the team. In my experience, requiring this person to move in with you usually results in a business customer/user/rep/whatever being assigned or chosen based on his/her uselessness to his/her own department (Dilbert Principle in reverse). The department will not commit a critical person who delivers daily value to the department to the project full time! A person will be chosen who is a (useless and expendable) manager/newbie/lazy non-worker. In other words, someone who is not a very good customer or user representative anyway.

Now, I have only seen this work on one project, a very high profile project, where the department had a life-or-death vested interest in the project. I was given a real super user. Unfortunately, at the end of the project the person couldn't go back to his team. He was used to working in collaboration. He was marked as "part of IT now", and eventually he left the organization.

You could move into the business unit. I have actually done this in the past. IT was seen as the "ivory tower" where edicts came down from on high. No one worked with IT. It is impressive when you (or the team) move into the business unit. But this presents several problems, including just the opposite of above - it is difficult to go back, and IT will begin to treat you like part of the business (somehow you "defected"). That is why some business units that can't get IT to respond to their requests add IT people and end up co-opting IT.

In my experience, the far better use is to include users, but let them continue to do their jobs. They will stay pertinent to their business unit, but still help you. And you will most likely get a higher quality of user. Include them in the stand-up meetings. You can get two or three days a week of user interaction. Is this strictly adhering to the agile manifesto? No, but in most organizations it is such a paradigm shift that users are included at all that you will get much more "bang for the buck" that it more than makes up for it.


Tuesday, September 25, 2007 #

I am reading Agile Estimating and Planning, by Mike Cohn.

I really like this book and it has helped me on the several things, from user story points to burndown charts. My favorite topic in the book is using user story points in estimating.

Most people on projects (especially developers) have difficulty estimating the amount of work that needs to go into developing and delivering functionality for user stories. Developers usually estimate development work only (no testing or cross-functional tasks), and are either really high or really low. Mike Cohn recommends using user story points, where a relative point grade from 1 to 10 is made on each user story (divided as much as possible, but without getting into discrete tasks). The relative point system can be used to compare the expected work of user stories when making estimates, and will encourage discussion between the cross-functional teams. Then after one or two small iterations it is clear the "velocity" that the team is working at (user points completed/burned per iteration). This can be used to more accurately schedule future iterations, schedules, and releases.

I highly recommend this book.


Agile methodologies are all about including your users and user groups as stakeholders who are active throughout the development cycle of the project. Remember the Agile Manifesto:
Business people and developers must work together daily throughout the project.

But are you really prepared for the results if you empower your users?

Case in point: A project that I was on was divided into two releases. One release had iterations totaling about 7 weeks.

Toward the end of week 1, we had two mockups of the user interface, done in Visio, that we presented to the user group. This elicited a lot of conversation about the features in each release, and the definition of project success. In the end, the user group stated that they preferred that a key feature be moved to the second release, that they could live with the minimum functionality of the first release, and that they probably would not authorize continuing with the second release because they had other initiatives that they would rather have IT tackle and spend "their" money on - things that would more effectively impact their department's bottom line. So this is essentially scope contraction.

None of these concerns specifically came out in the earlier project charter or requirements sessions, although they were considered risks when analyzing the definitions of success for the project.

The question is: could your agile team "handle" this outcome, suck it up, and honor the user group's request? Or would you as a developer be too "invested" in the design and project at this point and be defending the original design?


Monday, September 17, 2007 #

A supposedly list of true Google interview questions. Jeez, they make my head hurt.

My favorite:
9. Every man in a village of 100 married couples has cheated on his wife. Every wife in the village instantly knows when a man other than her husband has cheated, but does not know when her own husband has. The village has a law that does not allow for adultery. Any wife who can prove that her husband is unfaithful must kill him that very day. The women of the village would never disobey this law. One day, the queen of the village visits and announces that at least one husband has been unfaithful. What happens?


Friday, September 14, 2007 #

What is it with people? I don't dispute global warming, but, as I blogged on before, can we have an intelligent conversation about it without people going nutso to the extreme, or making us all feel ashamed of flipping on a light switch?

Good example: Climbing Magazine (rock climbing mag), August 2007 issue had a commentary on page one by the editor who lamented about the carbon footprint he was using by driving his mini-SUV 300 miles to the crag. Then he wailed about how much carbon was created by the companies that manufactured his expensive Pantagonia climbing clothes, his rope and gear, and even his iPod. Then the next few pages have ads for just such things and half the stories in the mag were on going on "epic" climbs to far-off places like Vietnam, Scotland, etc. This is the kind of talk that is self-loathing, insincere, and that no one can really take seriously.

Two interesting articles yesterday. First, a story about how lawmakers favor carbon caps on businesses, while economists favor a tax. A carbon cap is a carbon credit allocation that each company gets for emissions. The company can't go over the carbon cap without extreme penalties. "Greener" companies can trade their excess carbon credits to relative "carbon hogs". A whole trade of carbon credits is envisioned within just a few years.

Companies will, of course, pass any overhead to us as higher prices. They will not likely be scared or penalized into developing new technologies.

I personally believe that green will only "take" when companies are urged to innovate and create green products for the marketplace. Example: hybrid cars. Some of those things are premium products, but there is an ever-increasing market for green products. I also think that companies that have carbon caps will not be able to compete against China and India that do not have carbon caps. Do we want even more migration of businesses?

Or we can, as some economists see it, tax individuals. The tax burden on driving your car will supposedly eventually choke you into cutting back.

Companies can also offset their carbon usage, like you and I can, by paying someone to plant a tree. So they can buy indulgences for their sins. Al Gore says he lives a "carbon neutral" lifestyle, although he flies everywhere, rides in a limo, and has a huge mansion. He's not reducing anything, he's just buying indulgences in wind farms and tree farms to offset his sins.

Carbon offsets and carbon caps are already in place in some companies in Europe and some multinationals are already trading credits or planning to do so. The figuring for how much carbon a company or individual is actually using will likely be ridiculous, if we use many of the recent news stories as a litmus test:

Slash Meat Consumption to Tackle Climate Change and Cool the Earth by Eating Less Meat. Just two of the stories that were all over the news yesterday. Cow manure creates methane which is said to accelerate global warming. Fertilizer is said to increase it as well. PETA jumped on that bandwagon. Okay, so fertilizing the ground to grow enough veggies for the world wouldn't have the same effect? Of course, there is always Soylent Green.

"Soylent Green is People!!"

Come on. Most of us eat meat and like meat (I do!). The (meat=global warming) argument is an example of the extreme, off-topic, tangential thinking that belabors the climate debate and just gives more ammo for the talk radio types. Plus it makes it harder for the average person to take any of this seriously and maybe focus on solutions that don't hurt them or throw the country into a recession. Let's work on something easier to tackle: Burning coal is a major contributor of greenhouse gases. Although there are cleaner methods to burn coal, and different grades of coal that have less sulfur by-products, coal plants burn the dirtiest coal because it is highly available and it is the cheapest (economics and supply and demand always win out). To add to the situation, China is ramping up coal burning exponentially. And China and India are not included in any carbon emission controls.

I have two words for the situation:

Nuclear Power!

or, as GW would call it, Nukular Power.

Nuclear power is vastly more "green" and efficient. Many countries in Europe get the bulk of their power from nuclear power. Yet the environmentalists and greens have kept nuclear power off the table.

Or maybe I need to figure out how to get into the carbon offset credit business. "Sure, we can plant a tree for you for $$$. This will offset your carbon usage on that vacation today and make your conscience a little less burdened!"