Thursday, January 29, 2009

Teaching life skills at Uni ? - VS Uni of Life 101

PS: dear Dr CM

a brief Postscript re the PhD grad survey which I just completed.

there was in the survey an unspoken assumption that a PHD should include training in social skills, leadership, and even more general life skills.

It may be useful to include a question of
a) whether such skills SHOULD be included, or can be expected to be included in a PhD programme (or any University programme for that matter)
b) what if anything should be included.

Everyone on the planet is enrolled in the University of Life, 101, or 201, etc...
some skills that are packaged and thrust upon educational institutions to teach rightly belong PRIMARILY with Life101.
Sure Universities can foster those skills, and support them, but the key responsibility still rests with the individual.

Personally I didn't expect my PhD to teach me leadership, - I could as part of being in life per se, have used my PhD to teach me those leadership skills, but I chose not to, I had other priorities and I focused on those.
Most importantly however I did NOT EXPECT this from a Phd. I simply expected good supervision, guidance and support to carry out my research - this I certainly obtained and have no complaints.
"Any hand's a winner and any hand's a loser, ...." there is an onus on each individual to make the best of things and assume their individual responsibility.

Having said this: the old saying that "it takes a village to raise a child" applies in my own experience to PG study just as much: I was fortunate to do my study in a research environment surrounded by more than 100 PG students, many of whom were like myself keeping odd hours and interacting socially and informally in ONE physical location. This kind of milleu is excellent and develops its own momentum in an organic natural way.

In contrast I teach and supervise in a primarily teaching University, where PG students are physically strewn all over the place, supervisors are torn between mountains of admin and teaching work. There is no critical mass amongst the PG students even though the actual numbers are quite high (approx 100 for a school of 800 UG students).

Come to think of it: I did go on a 'leadership course' in my PG days. It felt 'tacked on' - a kind of holiday camp for geeks.
I far preferred the jungle principle approach to PG study: provide good soil, a variety of plants and let it all grow.
I was fortunate to complete my PhD in a rich academic setting, where good supervision, solid research and was coupled with a hands off approach.
After all the curriculum in the University of life never stops, and organizing my time, coping with life's ups and downs, seizing opportunities in any situation are MY responsibility.

that's my two bob's worth.

- picture totally unrelated to anything :-) other than it was handy from a recent trip to Egypt

Friday, January 9, 2009

doing a PhD and getting paid for it - How to find a good supervisor

"Hyco how do I find a scholarship to do a PhD ?"  
How do I Find a good supervisor ? "Where do I start ?"

1) Understand how a supervisor thinks, what does a supervisor look for in a research student ?
2)Read this article.
3)Know yourself: do you have what it takes? Do you have the interest, tenacity and ability to keep going with something that might bore you to tears for some of the time and thrill you for the other time ?
I you are doing a technical/Engineering PhD Read this article and see if this is really what you want to do.  

If you are doing an Arts PhD similar stuff applies, the only difference is the nature of the thesis. 

You see: no one really cares what the TOPIC of your PHD is, they just care that you DO it properly. To do it for 3.5 years and to be a master at anything you have to 'really be into it'
Doing a PhD is one of those times when you can choose whatever your heart desires, let yourself loose, go for your dream. 

This guy says it pretty well here and here

So, iff you are sure (ok 80% sure, pretty sure...)  that research is for YOU, and you want to go ahead, then:

Ok here is the low down: My personal experiences, recommendations and ideas from having done a PhD and supervised PhD students.

Research students doing Masters or PhD's by research are the workhorses of academia.
What do the students get out of it ?

  • time to research, usually paid,
  • supervision and guidance
  • training in how to research, how to write, how to think scholarly,
  • life training in how to "stick it out" (and everyone feels like just throwing it all out the window at some time)
  • publications and the start of an academic career if you want that, or the start for a wider careers in the big wide world out there...
  • time on their hands to deal with life issues: relationships, personal stuff, family etc... (for some reason these things happen a lot to research students)
  • prestige
What does the supervisor get out of it ?
- work is done on her research area. Her research is advanced.
- publications (conference, journal papers)
- prestige: graduating a PhD student gives great benefits for the supervisor and government income for the University.

How to find a potential supervisor
- internet, Google, (the hardest way, but the only way for many)
- ask friends, use your social network of connections, be daring.
- read articles in the topic you are interested in, look up the references, follow them up. SHOW the academics you talk to that you have some idea of the area you want to do research in. 

I'm not going to go into much more detail than this.

Doing a PhD requires independence, self discipline and get up and go. Contacting potential supervisors is the first step on that path, and the first filter :-P
Good luck.

Luxor 2008 Egypt

How do you impress an academic so they will want want you as their student (and hopefully find you a scholar$hip, or use their grant money to pay you to study) ???
assuming you HAVE made contacts with some potential supervisors, how do you impress them ?
By impress I mean: convince them you CAN do a good job of your PhD.

Try to enter into the mind of a supervisor: what motivates a supervisor and how does he gets his 'brownie points' from his superiors ?

Remember at the basic level a supervisor is looking for certain benefits from a PhD student (his "workhorse")i.e. he wants to see a thesis, journal papers, solid research.
Any supervisor wants to minimize the risks of the student not completing.

Below is a list of things that are likely to impress potential supervisors:
- papers, conferences ? If you have already written papers or presented your work at a conference, that's a bonus point.
One of the questions that any supervisor asks of a potential student is "Can she do the work ? Can she write ?" Providing evidence of having done something that is similar to a PhD will help convince the supervisor.  This is really the BEST way to impress a supervisor: it proves you can write. Make sure YOU wrote the material, or else your time will be short lived. (I've seen that too.)

- If a potential supervisor asks you to do some writing work to show him what you can do, - do it! - on time - if you are serious.

- a well written proposal. This means you have done some real research on your topic YOURSELF ! Nothing impresses me more than a student who comes to me and says: "Sir, I'm interested in the effects of frequencies on the human body and I've looked at these 5 key papers and I've read these 7 articles and it seems to me the most of them say that frequency is the key. But I would like to pursue this other angle..." 
A student like that has done some real work ! Wow !

- read the supervisor's profile: i.e. his research interests, show that you have understood the topic and taken the time to look at the profile.


A good way NOT get a good response: 

"Dear Sir,
I would like study in your esteemed University, do you have scholarships ? I'll do anything you want me to, just give me a scholarship."

This type of email will not get you far.

The last paragraph in this article "Tips for supervisors in choosing a PhD student:" offers some more clues.

Looking for a good supervisor: Tips for students:

Let's assume you have a couple of suitable supervisors in mind. A good supervisor is one who:
- is careful about who she takes on as a student. A lot of time and energy goes into good supervision, as well as that money stuff.
- has already graduated a few students ON TIME.
- gets good informal reports: talk to current & past students of that supervisor and ask about the real background story. Be realistic.

- Given that PhD students make a significant contribution to the research reputation of a University and its academics, scholarships are offered to good students.

Scholarships come from the following sources:

- competitive scholarships: a pot of money is given out the to the best students. Universities and Faculties are given a certain quota of scholarships. For Example: The Engineering School of University HeikoRudolph might receive 10 scholarships to give out to its top 10 applicants.
How this pot of money is divided and how fairly can vary. Having a well published and well known supervisor on side and barracking for you, is generally a good thing. 

- grant money scholarships: this is a scholarship paid for by grant money of a particular supervisor. Supervisor Heiko might have a $300K grant to do research work, with half the money allocated for PhD scholarships. Being from a grant, the topic area is usually fairly well defined. Equipment and materials should be well funded. 
An important thing about grant money: Often the supervisor will chose people he wants directly. He will choose people who have some connection to him already and where he is confident the student will be able to do the work. In others words: grant money scholarships are not as competitive. The selection and the competition happens earlier on, by proving to the supervisor that you are good, can do the work, have written some publications etc....

Note: some scholarships only pay for tuition costs, and the student needs to find money for her cost of living in some other way. Sometimes casual tutoring work is offered to such students.
My personal advice is: avoid such scholarships. Tuition and casual work tends to take over and crowd any PhD studies into a minor role. Students often they spent most of their time working for money and their studies suffer.

The scholarships that are really worth pursuing cover the cost of tuition and pay a stipend for the cost of living. In Australia in 2009 this about $25K per annum tax free.

If you are interested in a particular supervisor:
Find out how long it took his students to finish ? If all his students took 10 years... keep looking. If most of his students finished in 3-4 years then fine ! :-)

Does the supervisor have money, grant money ?
---- you might need equipment, travel costs for research or conferences.

The 'clout' factor: Does he have a senior position ?
--- Can be useful if you need access to equipment, if you need world wide contacts, need to get stuff done and approved.

Does a junior academic do all the real supervision work or does he do it himself ?
--- ask around how well this works, if its a working and good arrangement, then fine.

Can you get along ?
--- you don't have to be best of buddies, but can you work together in a professional working relationship - 99% chance you can.

Talk to a few (not just ONE) of his past or current students.

Tips on choosing a thesis topic:
- Face it: Once you are finished with your PhD, hardly anyone is going to be interested in your thesis topic. All people care about is that you did it, that you survived and did something hard, rigorous and disciplined for 2-4 years. Sorry but that's the reality.
BUT there is good news in this: Since no one really cares too much WHAT you study, you are FREE to indulge yourself, to research whatever it is that takes your fancy.
Do the patterns of butterfly wings in the Amazon basin hold the mysteries of life for you ? Great, study that.
Do the marriage customs of Pygmies intrigue you ? Go for it.
Does the atmosphere on Pluto fascinate you ? or a do you want to save the world with an antigravity widget using inverting Laplace step functions capacitors ? this is the time to do it.

Not that often in life do you get full support and prestige and help to do what you want.
Choosing a PhD topic is one of those times.
Use it.

Ok there is always a price: No matter what it is you choose, you need to do it in a scholarly rigorous, logical and methodical way. The WHAT you study is up to you (largely), the HOW you do it is NOT up to you.
Doing a PhD is a course in learning to become fluent in the scholarly tradition. Whatever you do must be done in the scholarly way: logic, clear thinking, step by step progression, referencing your sources, exposing your ideas to scrutiny etc... these are the HOW of doing a PhD.
That's the deal.

An excercise: ask someone with a PhD about their actual PhD thesis. You'll either get shocked surprise, an evasive answer, or a looooooooooooooong lecture. If you are very lucky you'll get a brief comprehensible summary in everyday language.

- could you make your thesis into a book that sells ? Are there people who would love to learn from the marriage customs of Pygmies ? Can you choose your topic in such a way that you can turn your thesis into something people would want to read ? depends on your topic, on your area, etc... - but worth considering for Life AFTER the PhD (there is life after a PhD I'm told)

- do you like to travel ? choose your thesis topic in such a way you get to indulge your interests and hobbies. If you like to meet people, then a thesis in abstract physics theory is not likely to get you out there meeting people.

Tips on being a PhD student (might sometimes feel like being in an underground cave)
- treat it as a job - and have fun !
- get a life outside research (this is really the same idea as the line above).

- work hard & play hard.
- don't do it part time - unless NO other choice (usually can't get scholarships for part time study either) .

- do fun things: look at spending 3 - 6 months in another University while you do your PhD. Most Universities have an exchange program, there is usually not extra charge to pay. This idea comes from the old European idea of the 'wandering scholar'. A scholar was not considered fully 'baked' until he had wandered from University to University and studied, worked, done post-doc work under a number of other Professors (if you like, research the historical idea behind the German concept of "Wanderschaft" ).

Note: in order to find a good University to do the exchange in, spend time in your first year finding out who the top 5 heavy weights in your field are. Contact them, read their papers. Perhaps only 2 of the 5 will want to talk to you. Fine. Talk to them.
By year 2 or 3 you might be over there spending time in their lab or doing some kind of work with them.

- read this: REALLY read this link:

Using Computers:
- The 3 golden rules of Information Technology when you type your thesis or do your research on a computer:
1) back up, 2) back up, 3) back up. ---That's all there is to it.

Tips on actually writing your thesis:
- keep it simple and clear.
- keep sentences short and clear.
- don't don't don't try to sound 'academic', sophisticated, convoluted and hard to understand (Unless you have no f***ing idea of what you are talking about or you are trying to hide that fact, or you are really into obfuscation of the obvious).
More on 'academic mental masturbation' in a separate blog

From day ONE, start making a reference library. Every paper, every article your read, record the full citation reference details PLUS the abstract and perhaps even the intro and conclusion. Trust me: it's really worth doing this.

I personally really need to use this programme:
it kicks me off regularly and stops me from overusing my hands and prevents RSI.

- you WILL feel like it's all a HUGE WASTE of TIME and effort.
- you will at some point want to throw it all down the .....@&#(
- you probably will overwork and
- you probably will underwork.

You WILL get over all these and finish !
Staying the course, and finishing is part of the real test. It is part of the deal, part of the achievement.

Likely only 1 or 2 people in the world out there really care about your thesis topic (there are exceptions). What people value is that you did it even though it was hard, boring, tough, felt like giving birth to an elephant.

Celebrate, every step of the PhD, give yourself a reward, a trip away or whatever you value.

Tips for supervisors in choosing a PhD student:
Rule #1: test them before accepting them as your student: "try before you buy" - ask them to write something for you by a certain date. The work they show you might be by someone else. Ask them to do some simple research, fully referenced on an area you specify. Set a clear deadline. If they can't do it, forget them. You are making a big time and money investment which only worth it for a student who can do and DOES do the work.

Rule #2: test them: see rule #1.

Rule #3: offer only small steps: successful completing of basis Masters degree before allowing progress to PhD.
Yearly review of progress, and scholarship only continues if progress satisfactory.

Rule #4: review after 6 months and 12 months and be TOUGH!!!
The longer a student is in a PhD program the harder it is to remove them, to discontinue them. After 2 or 3 years too much time and energy has been invested by yourself and the student. A student who stops after 2.5 years and has nothing to show for her time is not a good thing. Does not make the student or you feel good.

If after 12 months it is best that the student stop, then it is best if the student agrees, and comes to understand and sees that it is in her best interest to stop. A student can always come back. A student can always take leave of absence.

Meet your student regularly, weekly or every two weeks. Students can drift, stuff happens, they loose focus, things go off the rails etc...

Note to students who have read this section: This section was really aimed at you and beginning supervisors to show you what an experienced supervisor will do and looks for.
Any good, experienced supervisor won't have to read this, they got to their current position by doing all these things.

Finished your PhD ? Congratulations, you can be proud of yourself ! Reward yourself.

Let me know how useful this has been, any feedback welcome.
Questions, just email me (tell me what you've done, tried, and where you are aiming to go)

**************************** UPDATE *****************
March 2016 email to an anonymous inquirer:

Hi D

1) read the papers that interest you and get a very good understanding of your area. 
- do some more research, 
- look at the research in the last 3 years. 
- what are the key new things ? 

2) Write a summary of the current state of research, what is being done, 
- what the current issues and challenges are. 
- reference them properly. 

3) Think about what you would like to research and HOW. 

4) read  the links below

5) contact the academics who are doing the work you want to do, area you want ot work in 

good luck 



Thursday, January 8, 2009

Fast way to improve your English - the Black spot programme - hints for international students learning English

Another way to improve your English FAST is the black spot program:
It's simple:

Pick the 3 most common mistakes you make, and FIX them.

pick the 3 most common mistakes you make, and FIX them.

pick the 3 most common mistakes you make, and FIX them.
he he he :-)

For starters:
Get (ask nicely) someone to fix your English and CAREFULLY find out what mistake you make often. Then fix it !

By that I mean: work out what it should be, and why.
Then practice it, make sure it does NOT happen again.

Many times I fix student's English and the next time they give me some work to look at: SAME D**** mistakes... same problem with definite indefinite articles (e.g. 'a' VS 'the')
Example: from your own email below:
you write "...but there may be slightly different."
mistake: plural VS singular, the sentence should be (CAPS show changes):
"...but THEY may be slightly different."
"...but there may be slight--- differENCES."

Pick any of the essays that someone corrected and proof read for you, where 'Track Changes' has been used. Pretty quickly you will that one kind of mistake happens a LOT. Fix it, focus on it. Learn it.
If you don't understand the reasons, for the correct way, just memorize it till it becomes second nature and sooner or later the sense and feeling of the 'correct' language structure comes to you.

Dr Hyko,

here is a question about academic writing:

(1) as you said, you have to FEEL the language , as you studied a foreign language.

But when I am summarizing the academic articles, a foreigner liek me always have a question:

For the English words of similar meanings in Chinese, how to identify their differences?

As a Chinese, the meanings of "rubbish" , "trash" and "garbage" are the same, but there may be slightly different.

So are there any specific dictionaries explaining this kinds of words ?

Also, are there any good books teaching academic language fore foreigners ?

According to your part instruction to some Chinese engineering students.


Dear Mistress G,
Here are some suggestions:
Read LOTS, of books in English which INTEREST you...
That expands your vocabulary.
If not sure, about distinctions of rubbish, "rubbish" , "trash" and "garbbage",
pick a native speaker, ask them to explain, - this way you:
- get to meet more people
- experience more real life opinions.
- get an answer to your question that is up to date and real.
Books and dictionaries, are last on my list of useful tools :-P


Wednesday, January 7, 2009

Things you won't believe until you find out for yourself. - Heiko's guide to programming.

Just how hard can it be to write a program that plays a nice sounding chord every few minutes ?
Answer: no worries mate, do it in a day!!!

Real Answer: Well, not that easy. At least not as simple as I first thought. I wanted to make a program that would play the sound of a set of chimes every 15 minutes, like an old Grandfather clock, the program would be called: the TimeChime program.

When I started I expected it would be so simple I could finish the program in a day. That was mid 2007. Many interruptions later, it was finished in March 2008. In my own defence I should say that I don't program for a living, I teach it instead.

I found out that contrary to my optimistic and naïve assumptions you can’t just call a sound file and hope it will run and exit nicely. No no no !!! I needed to figure out how to call another program from my TimeChime program and make it do what I wanted it to. That took a lot of time and didn’t always work, the whole show would often just ‘hang’.

That’s when I found out that ‘pipes’ were a lot better than ‘system calls’ and that running the whole process in a second thread gave me a really neat way to kill any processes that didn’t toe the line (“There iz only ONE Way, and zat is my vay”).

Using the good old ‘try – catch’ pair helped a LOT as well. All of those fairly advanced techniques were required just to make a program that played a couple of sound files every 15 minutes. I had no idea it was that complicated when I started.
In the process I learnt a lot, or rather I remembered a lot from my programming days which I had forgotten. I learnt all the old lessons again.

Lesson 1: NO Theory please we've got to get some real work done ! I realized (again) that when you write software for a living you don't read theory, at least I don't. I don't go to lectures run by people like myself teaching about programming.
I don't read manuals and I certainly can't even begin to make sense of those Microsoft data pages on what or how to use a function or API.
Instead what I do first is search for anything and everything that is in any way similar to what I want to do.
Then I copy their code. Yes, I copy ! Now don't get me wrong, its not copying large chunks of code and passing them off as my own, - large chunks of code are called 'libraries' and everyone uses them all the time.

All I need to see is an EXAMPLE - copy it and run it ! Give me a small demo program that uses the functionality I'm looking for and which works, and the rest is history, I'm off and running.
In the TimeChime program all I needed was a small 5 line program that showed me how to create and use a thread, - spare me the theory, just show me. I'll figure out the theory much easier once I SEE the example.
Then I needed a way to call an external file and get the operating system to run it. I didn't have a clue where to look. So the first thing was finding the technical jargon words, then finding examples at actually worked. Voila, done ! Sounds easy but took days and quite a bit of asking around.

And that takes me to the other often neglected key about programming. Programming is a SOCIAL ACTIVITY ! Yes we all know about the image of programmers as antisocial and awkward and all that. Apart from the fact that the image is wrong, programmers are actually a very gregarious bunch.
That's because programming is simply not possible to do in isolation.
How will you get your hands on all those examples ? Unless you are one of the rare geniuses, who CAN actually make sense of data sheets and Microsoft function descriptions, you will have ask other people for help. It's great if you have other programmers who are present in the flesh, that can be a real bonus. For most of us it's a matter of becoming part of those online forums. While I remember, there is an etiquette about using those forums, please remind me to rave about that another time.

Lesson 2: Pessimism can be useful: Of course I should have mentioned earlier on that the very first step in any programming task I do is, to look for what scares the living daylights out of me. I look for the things that really I have no clue about and that make or break the project.
When I wrote the windows AutoTester I knew I had to find a way to call the operating system from my program, make it run another, second program, get the output of that second program and bring it back to MY program. In other words I wanted my program to behave like a computer user who clicks on a program or a file and runs it, gets the output and then takes some actions depending on the output. That's all. Is that asking too much ?

Sure, for the AutoTester there is also a whole lot of database management stuff, and admin work which the program has to do, but that is all just sheer hack work. If can't solve the core issue of running another second program from MY program and reading the output, I might as well not bother starting. No point taking off in a plane if you don't have enough fuel to get to the next landing strip.
So that's why I focus on the really scary bits. After they are taken care of the rest is "carry water and chop wood" as they say. Not to be underestimated, but its the second thing, the first thing is the core task, get that done and then the rest is a matter of hard work only.

How do I find the scary bits ? I go through the steps, break it down until I'm confident I can handle all the parts.
Do I ever miss anything ? Yes, but not too often. There is always an expected problem ready to pounce, after all remember Murphy's laws ! :-) But this method has stood me in good stead.
In June 1997 I was on my way to Tokyo. I knew they wanted me to write a windows GUI program. I had no idea how to do that. Borland Builder 1.0 for drag and drop GUI design had just come out, and I bought a copy at Panthip Plaza in Bangkok on the way. That saved me.

Lesson 3: Debugging - how to make it less painful: I have been through the laborious and frustrating -want-to-throw-computer-through-window phase too many times. So I like to make life simpler for myself. I set up a simple way to turn debugging on and off by using

#define DEBUG 1

By range checking everything and I mean every argument passed to a function both BEFORE its passed to the function and once its IN the function itself.

Any errors are immediately flagged, and printed with filename and line number using
___FILE___ and __LINE___

I even go to the trouble of creating special error logging and display functions that are called the instant anything goes the tiniest bit off the track I want it to follow.
Why ?
Because I'm a control freak ?
No, because I want an easier life.

If I find out the second a parameter goes out of range it's much easier to pin down where it went wrong and why. What usually happens is that something goes wrong, which is not picked up, but affects something else, that is not picked up. By the time the chain of bugs grows and is noticed it's a long way from the place where the trouble started. You don't really want to have IO problems and messy databases before you realize something is wrong.

This is the way to have such an easier life as a programmer.
How much of my code is error checking code ? definitely more than 50%, probably 60 to 75%.

I didn't start like this. I had not read anything about debugging and error logging. These things came out of the school of hard knocks, great frustration and painful silly errors.

Lesson 4: The slow way is faster –o- Less is more - and other clever Zen Koans.
The principle is simple:
Compile and run EVERY time you change anything ! that means anything, even stuff you are SURE won't make any difference. Trust me everything makes a difference. (Everything is part of the whole and even one grain of sand changes the mountain forever - Thank you Grasshopper... for more of that Zen stuff... )

This brings me to the three golden rules of programming:
1) compile and run and test EVERY STEP
2) compile and run and test EVERY STEP
3) compile and run and test EVERY STEP
Yes, you can be lucky and write 10 lines of code and they work ! Just as you can be lucky and win the lottery.
More often than not when I write 10 lines of code I spend an hour or more debugging it. If I had written and compiled it after every line I would have easily picked up the error in line 3 and be done in 20 minutes.

Lesson 5: Ignore all advice and find out for yourself. Whenever I came across articles of advice like this one, I used to ignore them. These things were almost as bad as reading instructions manuals. Everyone knows that reading a manual is like cheating in way and lets face it: we’re all clever and smart enough to write code and figure out things for ourselves.

So yes, ignore all the above, find out for yourself. If you do happen to read up to this point, some of it might have sunk in and made the learning a bit faster. I hope so.

And one last thing: Why did I choose to write the TimeChime program ? Because I really like those Grandfather clocks that chime every quarter hour. I saw a Yahoo widget that did just that but I didn't want to run the Widget engine, and wanted to play different sounds and when they played them.

----------- DOWNLOADS -----------

TimeChime program
A simple program that plays a chord of chimes every few minutes.
Developed: Melbourne 2007, 2008 - using DevC++ and nothing else.
Full version: Download exe here
Full version: Download eee here
Source code included.

Other software milestones/pebbles:
(- note: this is now old software and will look old and dated, but was once state of the art. )

AMI program - Measures the transient conductivity of acupuncture points in the tips of the fingers. From this it makes an inference about the health of the meridian and the organ to which those points belong. -
Developed: Tokyo 1997 at the Tamamitsu Shrine Inokashiara Koen, Tokyo - using Borland C++ Builder and graphics libraries.
Demo version only: download exe here
Demo version only: download eee here

Adaptive Patient Controlled Analgesia Program.
Imagine the worst pain possible, then imagine the most powerful pain killer. Patient Controlled With Analgesia (PCA) patients press a button and an infusion pump injects pain killer directly into their bloodstream. The principle is demonstrated in this demo version.

Developed: Version1: Melbourne 1991 - 1995 in C++, University of Melbourne and The Royal Melbourne Hospital. Not for public release.
Version2: Melbourne 1998 - 1999 Borland C++ Builder and graphics libraries. Mondo Medical PTY, (venture capital company).
Demo version only: download exe here
Demo version only: download eee here
Adaptive PCA was Heiko's PhD research project: For thesis click here.

What’s an ‘eee’ file ?
The download files are givens as zip packaged containing .exe files or .eee files.
At the "paranoid" setting some security software prevents the download of .exe files. If this is a problem simply download the zip package with the file that has the .eee extension, save it to disk, and manually change the extension to .exe then run it in the usual way by double clicking on it. Example : download the Zip package containing Ami.eee then rename it to Ami.exe and run it like a normal .exe file.

Any DLL or other files should be kept in the same folder as the .exe files for the programs to run properly.

Disclaimer: All software was clean, secure and working when created, i.e. no spyware or malware has been intentionally introduced. However in these days of dearth of commonsense and complicated crazy legal scare mongering, no warranties of any kind are given or implied. Use as is, at your own risk.

And spelling out some more commonsense: All software is for demonstration of my programming skills only and is not intended to give any kind of medical advice or recommendations - again one would hope that this should be commonsense for the average man-in-the-street.

© 2003-2005,2006 heiko rudolph

Sometimes the threads on the loom suggest the picture to come. Then we know that our children-to-be Hope for us in the bardo. For them we weave until out arms grow tired.

from: The years of Rice and Salt - by Kim Stanley Robinson

How to ask ‘intelligent’ questions in forums and discussion boards. ... & get the information you want..

  • People don’t like being take advantage of.
  • People like helping.
  • You get back what you give out.

Those three lines sum up all I will talk about here.

Whenever a student asks me a question a little filter system runs in my mind: It goes something like this:
‘Have they put in a fair effort ?’
Are they just using me to because they are too lazy to lift the spoon to their mouth ?’
If I get the feeling that some effort at finding an answer and some thought has gone into the problem, I will answer it.

If I get the feeling that the question has been dashed off in a great hurry without much thought or effort I’ll simply ignore it, or I might write an article like this instead.

If you are ASKING a question:

You are asking for a favour, the forum does not HAVE to give an answer, they don’t OWE you anything.

The people who answer do so out of goodwill, from the goodness of their hearts.

They are not stupid and they don’t like being taken advantage of.


Make it easy for them to answer you.

Thank them.

If you are ANSWERING a question:

Reward genuine effort, ignore everything else.

Remember the questions you once asked.

If you want tell someone where to go: don’t !

A famous hacker guide on how to ask questions

On a discussion forum:

When posting a question:

Use a descriptive subject line for your posts :-)

Don’t do this:

Q: “help, my code won’t run”

A: do you want me to play twenty questions and tease out the problem for you ? If you can’t be bothered thinking about the key issue you want help with I can’t be bothered reading past your subject line.

The twenty questions game:

“What is wrong with your code dear ?”

“Every time I run my code I get an exception and the system crashes”.

“What did you do just before the problem happened?”

“I don’t remember”.

“Can you go back to a previous version?”

“I don’t remember what my previous version is”

“How about chopping out the most recent code and seeing if the problem still continues?”

Etc… Unless the person answering is being paid a huge rate by the minute the conversation will probably never get this far in real life.

Most self-respecting programmers won’t bother to extract the key question from you, you have to give them the core problem in a clear and precise a way as you can. Convince them that you are worthy of an answer. It’s not really that hard.

Do this:

Q: “ modulus operation for hexadecimal base conversion gives random results ”

A: this shows some thought, and tells me what we are dealing with. An experienced programmer immediately clicks through her list of common mistakes using modulus. It only takes a quick read to identify the issue and voilá the problem is solved !

Q: “After encapsulating the complex number addition in a function the program crashes every time a negative real number is passed. I’ve tried XYZ”

A: This question shows some thought, effort and is clearly expressed. It sounds like someone I want to help.

Posting questions summary:

tell us what you have done so far, what you tried, and what you really need help with.

- what errors did you get ? what was the error message ?

- what exactly did you enter ?

- supply relevant information - your code, just the RELEVANT bits... . if you don’t want to wade through pages of someone else’s code don’t send them pages of your code.

Golden rule before you post a question:

Put yourself in the shoes of the person reading your question.

Read your post and imagine how you would feel if someone asked you that question.

BLANK general questions that sound like the questioner wants others to do the work

for him and that does not get much response.

SOME kind of attempt at an answer is a good idea and means that others are much more likely to want to help you.

How to get useful help:

Read this:

Really I mean it, read this, not just for this course, but it is a wonderful hint sheet on how to get what you want in life GENERALLY, not just on a discussion forum !

Do the following:

- say what you tried.

- what did you get ? what is the EXACT error message ?

- give code, but ONLY relevant code, give enough to give me an idea, but do NOT dump the whole file into an email and hope I will have time and inclination to sort it out for you. I won’t. I’ll help if I get the feeling you have made an effort to present your problem clearly and you have tried the logical next steps.

Most people are happy to help if they see that the person is genuine and has tried the help himself.

A humourous look at how to ask good questions here:

Favourite programming cartoons

What not to do:

A real example:

Q: " i get error "invalid variable " and don't know what it means ? how do I compile to get it working ?can u help? "

Well yes, I "can" help.

Next question?

The kindest answer would be simply to send them a link to this page.

If you get a link like that, then please read and take notice J .

For some reason bad spelling, sloppy grammar often go together with lack of effort and careless thinking. Whenever I see bad spelling, sloppy formatting and fuzzy grammar I lower the effort I put into my answer by 70%+. It may not be fair and it may not be a logical response, but it is how much of the world reacts too.

Another real example: (names changed)

On Wednesday, 12 October 2008 at 04:01 pm, "Mr Speedie" wrote:

hii, i'm having some problem on lab 4.

First, for the decoded part, are we just separate into three in a group from the begin even the strlen of parameter is not multiple of 3?

Second, how can we separate the parameter into 3 in one group?

Hi Mr Speedie,

- ask at the discussion board,

- have you asked a tutor in your labs ? What did they say ?

- come to Wed 12;30 help session.

- talk with friends...

- when you ask questions like this: it would be good to show some effort: what have you tried yourself ? your question is TOO general.

Even for discussion board: show what you have tried, show what you think, then ask for confirmation.

It sounds like you are asking people to do the work FOR you. That never gets much of a response....

- when you have tried the above and have some code of your own to show, let me know :-)

good luck

Mr Grumpy.

How much time would you spend answering a question that looks like it was dashed off between a browser refresh cycle ?

The same principles that apply to getting help with programming and coding apply to the rest of life:

Example email from a student to a lecturer. report mark is too low could you please reconsider ?


J. Student

This is what the lecturer would have to do to answer such an email:

1) Lecturer has to forward email to tutors and ask who the tutor was: “is this student in your lab class ?”

The student simply did not put herself into the shoes of the person who was receiving this email) -> result: student collects 3 virtual negative grumpyness points

2) the lecturer usually has many different courses, it would save time and effort to clearly say what course the student is in. Having to hunt around for student numbers and searching spreadsheets means the student collects another 3 virtual negative grumpyness points

3) no history of what the problem is: it would be nice to know if there was anything unusual about this request, (there often is and it takes a lot of emailing back and forth to dig it out)

“Why do you think you deserve more marks ?” etc…etc… etc.. 3 more emails.

-> result: student gets anther 3 virtual negative grumpyness points (in the mental counting system)

4) Tell the lecturer if you have dropped a copy in the digital drop box, perhaps attach a copy to make it easier to see. Each time a person has to hunt around a database or a Hard Drive the chances of you getting what you want drop.

Ok you get the idea by now, I'm sure.

The basic principle is: if you want something from someone and you rely on their good will then make it AS EASY AS POSSIBLE for the person to give it to you.

How ?

Show that you value the person's time by

+ Supplying all relevant information: student number, course, tutor name, exact clear description of problem

Don’t make them play detective.... they may not bother to answer you.

+ Show respect, it won’t hurt and might even help J

+ Put yourself into the receiver's shoes and imagine what they might want to know, do your really think they will increase your mark just because you ask ? OR do you think they might like to have a GOOD reasons ??? ........... )

These are basic simple tricks and tips you can use in any situation in life where you deal with a bureaucratic rule based systems (University, Government, Companies... cubicle life a la Dilbert ).

Surprise surprise: Lecturers actually DO want to be fair to you, and do the best for you.

From now on, if someone emails me with some cryptic kind of message I'll reply with a link to this page and let you figure out what might be missing :-)



© 2003-2009 heiko rudolph

Sometimes the threads on the loom suggest the picture to come. Then we know that our children-to-be Hope for us in the bardo. For them we weave until out arms grow tired.

from: The years of Rice and Salt - by Kim Stanley Robinson

Does Groupwork destroy Individual skills ?

- does working in groups degrade individual skills ?

You all know the familiar scenario: Many groups of approximately 5 students each. In each group two or three students drive the project, do the bulk of the work (80%) and the others are effectively passengers and take care of the remaining 20% of the work.

As teamwork and group building goes this works fine, it teaches skills that are required in all walks of life and it can be argued that this is actually what tends to happen in the workplace anyway.

The only casualties are the skills of the ‘passengers’.

This has been one of the main arguments against group work assessment in the past.

The other approach has been to eliminate groupwork (usually because of the ‘passenger phenomenon’) and to assess students only on their individual skills. This ensures that the each student actually DOES acquire a certain level of skills.

The casualty in this approach are teamwork skills. Teamwork skills are an essential component in any job and should be part of a University education. Most work is done in teams because they are more productive. Software programming and most professional engineering jobs benefit from a team approach. It is comparatively rare for professional individuals to work alone.

Open Combining the benefits of groupwork and individual work:

There is a way of combining groupwork and still ensuring students acquire individual skills in what are called ‘public assignments’.

A public assignment is an assignment which is well known before the test and allows students to work out solutions in teams, with friends.

Assessment is at an individual level, where each student is tested and must be able to complete the assignment tasks on her own.

Here are some practical steps for this approach to work best:

Ø The public assignment problem must not be so small it can be easily memorized with little understanding, nor should it be too difficult for a one or two hour test.

Ø Testing should be carried out in standard examination conditions i.e. students should not be able to copy others work nor bring outside work to the test.

Ø Skills assessment is carried out outside laboratory classes in a clearly defined way. The assessment criteria should be publicly known and students are advised to prepare for it.

Ø Assessment is best carried out by one person or in a standard way. This may be through an automated marking process, or by the lecturer or tutor.

In using the public assignments approach there have been some unexpected benefits –

Ø Non-performing students are identified early in the semester and can be contacted and requested to come in for extra help.

Ø Students see little advantage in attempting to get a delay in marking through simulated ‘illness’. In actual practice the incidence of medical certificates for illness at test times dropped dramatically when compared to the standard secret test questions approach.

Ø Students with medical certificates and absent due to illness do not require a new assignment.

Ø In most laboratories tutors spend most of their time marking and so have little or no time to tutor and help students. In our labs the tutors were totally relieved of any marking during laboratory times and so were able to help students for the entire time.

Ø We have found that many tutors find it difficult to move between the roles of tutor and assessor. Most tutors in our experience give a pass for little or minimal work thus masking student incompetence to both staff and the student.

Ø Marking carried out outside the laboratory along clearly defined guidelines has little such bias and competency issues are discovered early in the semester when there is still the possibility of intervention and recovery.

Ø Students often reported problems with different tutors marking to different standards, some were easy markers, others were disproportionately severe. Public assignments are marked to a consistent standard. To achieve this, marking best carried out by one person, or one method outside the laboratory times, and along well defined paths.

Ø It is easy to give students a second or third chance at the problem, with either a marks discount or some variation of the original problem.

Ø We have tested this approach with engineering problems and found that students not only had to focus on programming but also needed to carefully read the specifications of the public assignment. This was exactly the educational outcome we desired and matched what employers tell us they value in graduates.

Groupwork has always been a reality of study at any University, whether students worked in ad hoc friendship groups and then underwent individual assessment of or whether they worked in formal groups. It could even be said that a good support network of friends is a key ingredient of success at University.

By using public assignments, students are encouraged to work in teams and yet each student is assessed on their individual skill level. Passengers are eliminated and the best of groupwork and individual work is obtained.

This approach is clearly communicated to the students. Students are encouraged to work in small teams to share, help each other and learn in groups.

© 2003-2009 heiko rudolph