Saturday, December 09, 2006

A Digression into AI

I was thinking the other day about the advent to true AI - an artificial mind, and that fraternal twin of a concept, uploading a human mind into a digital device.

When we have these, what are the criteria that determine if one copy of a digital mind is an individual? Making a new flesh person is a long process, and once made, their mind is their own thing. But a digital mind can be copied exactly to another unit (physical memory or whatever). Suppose digital minds are granted voting rights - what if they decide to replicate and register to vote? How could flesh minds ever win a democratic vote? Or should identical copies be considered just one mind, and any number of them count as just one "person"? But after a period of time, those copies would have different experiences and be different "people", would they not?

Just something to consider....


Technorati Tags --
, , ,
HTTP

Tuesday, December 05, 2006

Look at what you have

Today I found myself somewhat nonplussed by the behavior of 2 cow-orkers who are not dumb, but did not appear to see the forest for the trees.

They were working on an attempt to get a 3rd party to provide a data set to us, for internal use, and were writing impassioned emails to said 3rd party to justify our asking for this data. When this was explained in my presence, I suggested that since a 2nd party was providing us with data that might reasonably include that info, we just get said 2nd party to give us the detailed format of their files (which we might already have), and we extract the desired info from those files.

They seemed rather stunned at this suggestion.

So the Ninja Developer learns from this: if you need some data, look at the data you already have, and see if what you want is what you already have.



Technorati Tags --
, , ,
HTTP

Friday, December 01, 2006

Too Much Reality Lately

Alas, Dear Reader (I suspect that there is indeed only one person ever reading this...), the vicissitudes of wage slavery have kept me from posting...

[perhaps a confessional tone "Forgive me, Blogger, for I have sinned..."]

Nearly 6 months since the last post. I have been busily diving into new sections of the product, ostensibly to "broaden" my experience.

The Ninja aspect of this has been the lack of input from me on the schedules - dates were set by management without my being asked how long it would take to develop the code. Most deadlines were on the 8-week plan, with the notable exception of the first, which was 10 weeks, 6 of which were consumed by the requirements team pissing away on the requirements document, and the most recent, which went 7 weeks late, and one week pulled in by the VP.

So what is a Ninja to do? Major changes to the product and not enough time to develop it properly? I punted - I developed the new server in Python, driven by text configuration files, and wrote 2 small C++ interface utilities to reach into the product where Python could not. I avoided working significant overtime, and came in almost on schedule - and I plead my case there on the many meetings that wasted my time. ["We will hold daily 2-hour meetings to determine why productivity has plummeted. All the VPs will be there to hear explanations"]. And the decision not to work excess hours lent a Zen-like calm that helped. I did not panic over delays or setbacks.

The lesson to be learned here is that you sometimes need to work outside the system - use a different language, ignore the micro-management, and solve the problems without worrying about how to fit them into the existing framework. I got the chance to use Python in a production project, and I didn't kill myself.

As an aside, I really have to compliment the Python developers - the suite of modules available in the standard package is outstanding - FTP library, tools for handling gzipped tarballs, easy access to the command line, all in the "stock" package. Kudos, folks!



Technorati Tags --
, , ,
HTTP

Thursday, June 29, 2006

Reminders of reality

My job brought me a dose of reality this week.

No matter how much Management claims to want to produce good software, they don't want to give up the idea that they know better about how to produce it.

Specifications that are never frozen - schedules that do not include the time for documents required by company process, etc.

The Ninja Solution(tm)?
You need to understand your software well enought to have the basics of a feature hashed out in a hallway conversation with the other developers. If you have clean interfaces, and well-factored classes, you can have the design in mind before they ever finish the spec, which will change anyway.



Technorati Tags --
, , ,
HTTP

Sunday, April 23, 2006

The First Rule about Optimization Club....

...Is you don't talk about Optimization.....

[yeah, cheesy, but this is the web.]

I ran across this, an article about code optimization, and I gotta say, it's dead on. I've been burned by bad guesses as to where a program was inefficient, and using a profiler to start with is vital.

I do think that the final steps of optimization need to be weighed against the maintainence load of tighter code, and only done if the program needs the speed.



Technorati Tags --
, , ,
HTTP

The First Rule about Optimization Club....

...Is you don't talk about Optimization.....

[yeah, cheesy, but this is the web.]

I ran across this, an article about code optimization, and I gotta say, it's dead on. I've been burned by bad guesses as to where a program was inefficient, and using a profiler to start with is vital.

I do think that the final steps of optimization need to be weighed against the maintainence load of tighter code, and only done if the program needs the speed.



Technorati Tags --
, , ,
HTTP

Wednesday, April 19, 2006

When Managers Attack, Pt 1

Schedules are such fun.

So we have a tentative schedule for the next product release, and so we set a date for code complete. After a few managerial meetings, the Powers-That-Be decide to add a couple of new features. Fortunately, they also added 2 weeks to the schedule. So my boss publicizes that to the group, and we're happy.

So early this week, the Higher-Powers-That-Be decide that we need to pull the schedule in. A quick analysis determines that the new features are not actually affecting the code in my system, so we can safely cut the additional 2 weeks off again.

And now, they realize that they had not specified a feature, and so they add it into the schedule, but DO NOT extend the deadline. No idea about impact, no idea as to effort. So I do what every good Ninja Developer does - consult the experts and determine that there is a clever, clean design change that will be easy to do.



Technorati Tags --
, , ,
HTTP