Over the last few years we (Swinburne, and more specifically the Gang of Geeks) have been working on developing a new software development focused degree, the Bachelor of Science(Professional Software Development) or PSD for short. The first group of PSD students have now completed their first year of the degree. There have been some issues but the course has been moving along well and the students have been great.
To encourage these students to extend themselves we created the first PSD Summer Scholarship. This program has now started and the students are making progress on several game related projects. They will be maintaining a Pict Blog (picture blog) to document their progress. Feel free to check out their work and leave some comments...
Wednesday, November 29, 2006
PSD Summer Scholarship 2006 Pict Blog
Posted by Andrew Cain at 10:57 am 7 comments
Monday, November 20, 2006
I am still alive
Well it has been a while since my last post...
Exams have finished and the semester is now over, so what did I learn this year? Well basically things went to plan and I have been happy with the results this semester, where as semester 1 was a bit of a mixed bag. Semester 1 I was teaching the new Algorithmic Problem Solving and the old Enterprise .NET, while I took the new Object Oriented Programming and the old Advanced .NET in semester 2.
Algorithmic Problem Solving was really great, I used approaches from the Beyond Bullet Points to plan the subject and to develop the lectures. I feel that this helped manage the amount of material covered in each presentation. The results for APS were really good, not just from a numeric point of view but also from the learning outcomes. Enterprise .NET on the other hand was a bit of a mess, and as a result will not run next year as I develop new material for it.
Object Oriented programming took off where APS finished. This was also a great success, but probably not as much as APS. With some more planning and re-work the results should be better still next year. Advanced .NET was really great to deliver, but still needs some rework for next year. The focus on concurrency is really now starting to concentrate on the unique issues in .NET, which is much better now.
The new approaches to assessment also went well though I think I may have over done it a little. I like the idea of pass, distinction, and high distinction assessment items, though I would like to know what the students thought of it...
Since the end of exams I have been creating the new Database Programming material. So far the development is going slowly, but I have been distracted by so many things. I hope to really get into it soon.
Coming up for me is the PSD Summer Scholarship, I will be supervising six students who will work on developing some software and tutorial like material or four weeks. The guys start next week so I better get something organised for them :)
Posted by Andrew Cain at 4:26 pm 10 comments
Friday, October 06, 2006
What do we learn from
I was having an interesting discussion with a colleague about our role as educators, and what was expected of that role. Basically the discussion focused on the importance of material. Is it that material that makes a good subject, or the way it is presented? This lead to two versions of an educators' role.
1: The text selector: The educators' role is to choose an appropriate textbook. To determine what will be covered from the text, and outline this to the students.
2: Guide or mentor: The educators' role is to provide a learning environment in which the students are able to learn the required material.
From a university perspective they would prefer that teaching staff fit in category 1. A text selector is easy to replace, and move. A great educator would then be able to quickly and easily select texts, moving them from subject to subject would result very quickly an improvement across the board.
I prefer to think of my role as more than just selecting a text, or even developing material. I hope that I bring more than some slides and books to the subjects that I deliver. I see my role as the development of a environment in which capable and willing students can learn. I aim to inspire students to learn, and then to be there to support their efforts. Lecture provide a means to inspire and inform (support). Laboratories give you the ability to directly assist them practice the material.
Raj has a great quote for this from his agile material:
"Software is built by people (not processes)
Good people are needed to build good software
Poor quality resources WILL build poor quality software
A process does not build software
A good process will aim to reduce variability (in other words will increase consistency)
Simply put: “A bad team with a great process will consistently
generate garbage”
If you are in the software game, focus on people"
I think this also applies to education.
So what is the role of the material that we develop? Contact time for a subject is very small, not enough to actually learn much at all. I see the material (otherwise know as content) as playing a supporting role. With the lectures providing a few key "take home points", additional material is needed to provide the missing details. Without the material students will be on their own... Providing them with access to good material is still important, and can come from links to sites, textbooks, or custom material.
So basically both are important, but I feel that presence and delivery are more important. Good delivery of the material will help students with the central points of the material, and give them the enthusiasm to put in the extra work that is needed to succeed.
My 2c. Comments welcome. Have you done a subject were you feel you learnt more than others? What do you feel contributed to this?
Posted by Andrew Cain at 2:43 pm 7 comments
Friday, September 29, 2006
Beware the concurrency monster
Just when you think you know it, you relax a little and the concurrency monster is back with a vengeance! This is a true story...
Once upon a time there lived a lecturer who taught concurrent programming. After years of training and practice he wandered the concurrent landscape with pride and confidence. His offerings to the programming gods had granted him safe travel, and he ventured forth with his new batch of students aiming to get further into the landscape than ever before.
The adventure was going well and one night the lecturer started examining the progress of his young apprentices. While many were doing well they needed a small challenge, something to test the tools they had created. Their latches, semaphores, barriers and exchangers all looked promising, but had remained untested.
"The end of the trek is near, so the challenge must be quickly created." the lecturer thought to himself as he studied their tools. Consulting the dark concurrency forces, he searched for a suitable challenge. Using a cauldron of dread he combined Wing of Interrupt, with Heart of Thread, and a touch of Join dust. In his rush he failed to see the beast that was being created... All day and all night the potion brewed, and on the following day he offered it to his students.
Each student took the potion without question, after all he was the lecturer. The potion was slow, allowing the lecturer to depart before it stirred. Initially the tools held the beast at bay, the Latch stood strong, the Semaphore withheld... then the Barrier was broken, the Exchanger collapsed, and the tools began to fall one after the other. Valiantly the students poured over their code, inspecting it line by line, trying to find the cause of this beast. Their efforts were misguided, none could withstand the beast for it came from the potion, not their code. The concurrency monster leapt from the lecturer's code and roared into existence.
The howling of the beast woke the lecturer with a jolt. Rushing to his students side the lecturer began looking for the cause of this mighty beast. Confident in his code he re-examined the students' code, but one after the other the code was safe. It handled the interrupts, and the many threads, but failed to meet at the join. There could only be one source for this beast... HIS code!
Stepping up to the code, the lecturer went one on one with the beast he had created. The beast was strong, and would not go down without a fight. Code was flying here and there as the beast and lecturer did battle. Minutes later the lecturer rose, covered in code, but triumphant. Returning the tamed test to the students, he stayed around to see if the beast woke again.
His caution was warranted as the second round of tests woke the very same beast. His battle had been in vain. Mustering the last of his strength the lecturer began to mind meld with the beast. Inspecting its structure and form. Searching for its weakness. Then it sprang to him. The timed methods, that can bring these tools back to life. With this new knowledge he reentered the fray and after a few hours had the beast cornered. A quick TryAcquire followed by TryExchange, and the beast went down begging for mercy. Then the final death blow, TryArrive.
With the beast gone (for now) the students returned to testing their utilities. The latches held, the semaphores counted, the barriers stayed strong, and the exchangers once again began to exchange. A cautious peace returned to the world of concurrency. The lecturer once again went back to roaming the concurrency landscape. But the scars from the battle causing him to limp slightly...
So when you next venture into the world of concurrency and pray to the Programming Gods, remember to make an offering to the concurrency monster... just in case.
Posted by Andrew Cain at 4:56 pm 5 comments
Wednesday, September 20, 2006
Pollution Death
I have now read the Inconvenient Truth and seen the Movie. I have also read a number of other books on this issue, and feel a little informed. If you want to hear about what James Locklock thinks about this you really need to hear this program from Radio National Science Show. This is a good program, in a really bad way.
Why pollution Death? Read Seth's blog, basically "Global Warming" is too fuzzy and friendly...
I am not quite at despair yet... I believe in putting my money where my mouth is, my actions so far include:
1: Green energy
2: Carbon credits to offset gas usage
3: Energy efficient appliances and light bulbs
4: Fuel efficient car
5: I walk to the train to go to work, unless I really need to drive (currently 1 day a week when I have late classes)
6: I vote and there is nothing more important than this issue
7: Letting others know (22 of us went to the Inconvenient Truth)
8: Turn off appliances I am not using (at the wall, no standby)
Future plans:
1: Buy carbon credits for car and motorbike
2: Buy carbon credits for purchases
Posted by Andrew Cain at 12:21 pm 2 comments
Friday, September 08, 2006
Migrating to Mac: Part 5: Mac Apps
Well I have now been using the Mac for a while, and the great thing is that I keep learning new things and finding new and interesting apps. Today I was looking at how to stop Expose trapping the F8 - F12 keys in Parallels, and I came across this blog on Mac apps for people switching from Windows. Its a really good read and I have installed many of the apps that are mentioned. I have also found the following apps quite useful when switching to the Mac.
(Clinton provided the answer for solving my Expose problem... hold down the Apple key when pressing the F key.)
Firefox
While Safari is nice, I just cant get by without my Firefox plugins. Firefox runs well unders MacOS... so there are no problems here.Muvo Helper
The MuVo Helper is a small utility that performs background tasks for Creative MP3 Players like my Zen Neeon. While not essential, it is a nice addon. Basically it sits in the background removing the extra files that MacOs copies onto the device as you add music to it.Menu Meters
Clinton brought this one to my attention. This little app installs menu bar icons to show computer activity such as disk, cpu, memory, and network usage. A real must have for anyone wanting to know what is currently happening in their Mac.xCHM
Another gem from Clinton's blog. This utility allows you to read the Microsoft help files on the Mac. Great for when you are writing code in Parallels. The code is shown on one screen in Parallels, and the documentation can be open on the Mac on another screen.Aquamacs
Aquamacs is emacs for the Mac. It includes both emacs shortcuts as well as standard MacOs shortcuts. This works well for me...Booxter
This is a funky little library application, allowing you to keep track of your personal library. It has features to track who has borrowed your books, and can import details from various web sites such as Amazon. The ability to scan books using the Mac's built in camera is also neat... though I have found it doesn't pick up the details that easily.Poseidon for UML
I needed a tool for drawing UML diagrams, and this did the trick. It is a little clunky to use, though I haven't spent much time with it at the moment. This is a full UML tools keeping track of the model, so with some reverse engineering support it should be good. There is a free community edition.iTerm
An alternative terminal program that allows terminals in tabs... Quite a nice alternative to the standard terminal.Posted by Andrew Cain at 10:40 am 0 comments
Monday, September 04, 2006
Documenting C# Projects
Playing around with .NET 2.0 and Visual Studio .NET 2005 has left me asking what do I need to communicate with my designs. The class diagrams in Visual Studio are very elegant, and remove my desire for creating UML class diagrams once I start playing around with a solution. UML class diagrams are great for modelling problem space, and thinking pre-solution, but one I start thinking solution I am now heading to VS for my diagrams.
There are a few things missing from the VS diagram that do cause me some headaches.
1: Dependency. It would be great to be able to show dependency type relations in the diagram.
2: Lack of diagrams to represent object dynamics.
I have voted on the first item on the MS feedback regarding VS.
On the second point I am still using UML diagrams to describe these. Visio has been my UML tool in the past, though it is challenging to use. Today I started playing around with Poseidon for UML. Looks like it has potential, but it does not support reading in class details from C# code... Examining the list of features it does support shows XMI, so I started looking for a tool to convert my C# code into XMI, and I found the following freeware. The DotNet Assembly to XMI Creator 2.1 tool is able to convert .NET assemblies into XMI according to its documentation. Unfortunatly the product does not support .NET 2 assemblies... nice try :(
An open solution to this would be nice... I have created a quick open source library to do this called xmi4dotnet. I have hosted it on google to allow access to the source. I will also setup a game for it at sometime on SwinBrain. This tool allows you to export xmi code from .NET assemblies. It uses the Reflector tool to examine the model and loads into this tool as an addin. It exports all the different .NET types as well as fields, properties, etc. I have tested the export and the xmi can be loaded into Poseidon. Try it out and let me know any changes you want made (use the bug tracker on the google code hosting page).
Posted by Andrew Cain at 4:45 pm 0 comments
Microsoft Recruiting in AU
Microsoft is recruiting developers in Australia again. If you are finishing your degree this year, or have already finished, you may want to apply...
Posted by Andrew Cain at 9:30 am 2 comments
Monday, August 28, 2006
Open Day Fun
Yesterday was Swinburne's open day, and once again this ment a day of answering questions about our new B.Sc. (Professional Software Development) degree. I dont know how many people I talked to, but I didn't stop all day. The two presentations I gave were great fun, and I hope people were informed as well as inspired by them. We had several give aways, including atomic magazine, and fun stuff like pens and flashing badges. For me open day was a great success. Lets hope the prospective students did as well... I look forward to seeing you guys next year if you did :)
Posted by Andrew Cain at 8:33 am 4 comments
Wednesday, July 19, 2006
Migrating to Mac: Part 4: Parallels
I have now been using the Mac for a number of weeks, and have been enjoying the experience. So far I haven't had any real issues that I haven't been able to get around. Setting up the printer was the hardest task...
I am using parallels desktop for Mac to allow me to run Windows while working on the Mac. Initially I also installed Boot Camp but I found that I just didn't use it... So after a few week I reclaimed the space from Boot Camp and now run purely with parallels.
There are a few things that really help make the Parallels experience even better. These are the things that I have done so far, and I am open to new suggestions.
1: Install unsanity's Application Enhancer and then get the PD Tweaker. This "tweaks" Paralells Desktop and I have found helps smooth the experience of using it and other applications at the same time. If you are interested you can read about this at MacOS X Hints
2: Initially I was using the bridged network adapter that comes with Paralells. This has the unfortunate (and fully intentional) problem that it exposes the virtual machine to the network. This causes me some problems as the network admins here tend to block access to "strange" machines that appear on the network. Also, I wanted to be able to access the host machine from the Windows machines. As I move between networks the real IP address of my machine changes, as will the bridged interface. To avoid this I switched to host only access, and then routed connections using the Mac's internet sharing.
Getting internet sharing working takes a little work if you also want to firewall your machine. If you follow the Mac's advice it will have you installing the Personal Web Service, and openning ports to the world... You can get around this by configuring the firewall yourself. A script on MacWorld shows how to configure the firewall using ipfw. With some modification you should be able to change this script to provide Parallels access to the network.
4: Setting up a source repository was next on the list. With the host now being accessible at 192.168.2.1 I have a fixed point to access... Step 1 is to get the sshd running to allow remote login to my Mac. This turns out to be as simple as clicking a button. In System Preferences goto the Sharing section and in Services turn on Remote Login... and your done.
Now you will be able to access your machine both from inside Parallels, but also from the outside world. To turn this off edit your Firewall script and alter the rule that allows any access to destination ports ssh, http, and https. Change the any to $inrange1 and your done. Re-run the Firewall script and check access from Parallels and from an external machine. With ssh access the next step is to setup cvs.
Setup the cvs repository on the Mac and imported a test module. Now to access it from the PC. WinCVS was already installed as was Putty and PLink, so I created a new key file and set it up to allow login using Pageant. Connecting to cvs on the mac was then as easy as entering the new cvs root and checking out the test module. I also have Tortoise installed, but cant get it to connect using the ext protocol anymore...
Posted by Andrew Cain at 1:34 pm 3 comments
Friday, June 16, 2006
Migrating to Mac: Part 3: Tale of the two Syncs...
One of the things that I knew would be an issue with my new Mac was syncing me PDA. I have an old O2 XDA II Pocket PC (Phone Edition). Anyone who has used a PocketPC Phone knows that the only way to use it is with a PC. Keeping your contacts and appointments synchronised across the devices is important. Getting something to sync the Mac with the PDA was critical.
I decided to setup a sync program as one of my first tasks. So after installing Office 2004 and copying my e-mail across I started searching for a solution. I found that there are two main solutions PocketMac and The Missing Sync. From my initial reading PocketMac appeared to have been around longer and had a few extra features. So I paid, downloaded and installed PocketMac.
PocketMac was a little tricky to get working correctly and does not work with USB on the new Intel Macs. Their web site indicates that it is a Mac problem that they have to work around, I should have realised something was wrong when I read this... Anyway, I eventually got it working with Bluetooth. It worked ok for one day, and then... it stopped working. I'm not exactly sure what went wrong. I was in the process of installing a variety of other programs so what was conflicting with what was not something that I could work out. I followed PocketMac's troubleshooting advice and eventually, after about 5 hours of reading logs and experimenting, I eventually gave up and posted a support request. I posted their trace report, and made sure that I outlined most of what I had tried. After a day I got back a post of their "Dont use USB, use Bluetooth". So they didn't even read any of my help request. I replied, and after another day they esclated it to their next support level. I waited, and waited, and well nothing. After a week and a half I gave up on them and asked for a refund. Looking back, their product was not really well polished, and their web site is not very professional.
So yesterday I purchased The Missing Sync for Windows Mobile. After such a bad experience with PocketMac I prepared for the worst. Their web site has a section on migrating from PocketMac, which I thought was interesting. I followed their instructions and rid my Mac and PocketPC of their software. With this done I set about installing The Missing Sync. The install went smoothly. I plugged in my PocketPC and started the Sync. A connecting overlay appeared on screen and the PocketPC tried to connect to the Mac. This was a nice addition, the status shows which state the connection is in something that wasn't provided by PocketMac. Anyway the bad news at this point was that it failed to connect... I was not overly concerned as in the attempt to connect with PocketMac I had played with many settings on the PocketPC. I renamed the PocketPC for sync purposes then tried connecting again. This time everything worked. I setup the partnership which overrode the PocketMac partnership on the device. The sync was a little slower than with PocketMac. However, it works and provides feedback on where it is up to which is always good to see. The Missing Sync program is far more polished, as is their web site. I cannot comment on their support as I haven't needed it. The Missing Sync also connects via USB and Bluetooth, both of which are working fine for me.
Both PocketMac and Missing Sync are able to sync contacts with Entourage, or the Mac Address Book, and appointments with Entourage or iCal. So you dont need Entourage to make use of these.
Note: I didn't try renaming my PocketPC with PocketMac. This may have corrected the issue I was having. However, I dont know and I'm not going to reinstall it to try.
Posted by Andrew Cain at 8:56 am 2 comments
Wednesday, June 14, 2006
Migrating to Mac: Part 2
Having received my Mac the first task I had was to migrate my e-mail, contacts, and appointments. On my notebook I have been using Outlook 2003, so the plan was to switch to Microsoft's equivalent program on the Mac. The first issue was finding what that product was called. I had incorrectly thought that it would still be called Outlook... With some googling I became familiar with the Entourage product, the mail/contacts/appointments program in Office 2004 for Mac.
As we have licenses for Office for Mac I installed the suite which was a very pleasant process compared to the same process on a PC. Insert the CD start the installer and the hard work is all done. Before I could get up the installer was finished. Having used a PC for so long I am used to the hours of waiting while office installs and registers everything...
With Entourage installed the next step was to migrate my data from Outlook 2003. Cant be that difficult I thought to myself, after all it is Microsoft -> Microsoft. Open Entourage, which looks great its not just a simple port of Outlook, and then start looking for import. Entourage can import mail from csv files, mbox, earlier versions of office for Mac, but not any of the Outlook for Windows products. Ok... Goggle time.
There are several ways of performing this migration.
- MacUser has a very convincing article noting that Microsoft has released a converter. When you get to the Microsoft site you find that it can only import from previous Mac versions.
- mvp.org has a page that lists a few options including using an IMAP or Exchange server neither of which I had access to. They also offer links to some scripts to do this. These seem overly complex for the task in my opinion.
- There is a product called O2M. For $10 this is a good option. It can transport mail, contacts, appointments, etc. from Outlook to mbox, iCal, etc formats that you can then import on the Mac. I used the trial version but was too cheap to purchase it for the one off transfer of data.
The approach that I used is explained by Dave Riches and also on the O'Reilly Network. This process involves converting the e-mail in your Outlook PST file into individual mbox files that can then be imported into Entourage.
The process that I followed best matches Dave's process.
- Install Thunderbird, which has the ability to import PST files and internally it stores its mail as mbox files.
- Copy files to Mac
- Drag mbox files into Entourage
The process is simple enough except that I arrange my mail into a hierarchy of folders. When you import your mail into Thunderbird it will create a folder for each mail folder in Outlook. Each of these folders then contains its subfolders and a mbox file with the mail from that folder. There was no way that I was going to drag all of these individual files into Entourage. However, the files are now just simple text files and can therefore be altered via the command line.
The first thing that I decided to do was to compact some of my folder hierarchies. I did this at a Command Prompt on my Windows machine. The command to do this is:
(for /F "delims=" %i IN ('dir /s /b *.') DO @type "%i") > NewMailFile.mbox
Execute this command in the folder that you want to compress the mbox files into. In my case I kept a folder with all of my internet site subscription e-mails (like blogger, feedburner, bloglines, etc). I have subscribed to many sites! I executed this command in the folder containing my "Internet Sites" mailbox, compressing these into a single mbox file.
At this point I copied all of the mbox files to my Mac. Thunderbird does not add an mbox extension to its files and unfortunately Entourage will only import them if they have the mbox extension. The following command run at the Mac Terminal, in the directory where you copied your mail files and folders.
find . -type f -print -exec mv "{}" "{}.mbox" \;
With this done you can now drag each of the mbox files into Entourage. The import is complete.
With my mail in Entourage I then proceeded to transfer my contacts and appointments. As I use a PDA I did this by syncing Outlook with my PDA and then syncing the PDA with Entourage. In order to do this I purchases PocketMac Pro. Once I got it installed and followed the instructions it synced all of my contacts and appointments. PocketMac itself worked for a couple of days but lately it has stopped working. I'm not sure what else I have installed that could cause this problem and the PocketMac support is very slow. If this is not resolved soon I am going to try The Missing Sync for Windows Mobile, v2.0, unfortunately they don't have a trial version otherwise I would have switched sooner. (If anyone has any advice on this let me know...)
Posted by Andrew Cain at 9:06 am 4 comments
Tuesday, June 06, 2006
Migrating to Mac: Part 1
Recently I decided to get a new notebook. My current notebook is a Toshiba S1 with 1GB RAM and a ATI Mobile 9000 card. I needed to upgrade for several reasons. Firstly I need more RAM. I do distributed .NET development and presentations on the notebook and I want to run multiple Virtual PCs at once. One running a web server, another for the app server and one for the database server. With 1GB of RAM I can run one virtual machine but the others are really pushing it. Secondly I want to play around with Vista, I need a DirectX 9.0 graphics card. With this in mind I started looking for a notebook to meet my needs.
Needs:
- Presentations and office document creation (PowerPoint, Word, Excel)
- .NET development (3-Tier demonstrations... with 3 tiers)
- DirectX 9 capable (for Vista)
I have been reading about Apple's MacBook Pro and this started to look like a viable alternative. Apple offers a nice package, well thought out design, good hardware spec, with the capability of running both MacOS and Windows. Other notebooks offer similar features, but not the entire package.
I spent some time finding out the capabilities of the MacBook in relation to my requirements. A quick watch of the Fast OS Switching and related videos appear to demonstrate the ability for the MacBook to meet my most important requirement, multiple virtual machines. The main issue with these videos is that they are usually running only a web browser in each virtual machine. I need to do more. Based on the machine spec I believe that it will be capable of meeting my requirements.
So the Plan became:
* Get a MacBook Pro 2.16GHz with 2GB RAM (and faster disk).
* Get Office 2004
* Migrate Outlook to Entourage (Office 2004's equivalent to outlook)
* Install Parallels
* - Setup multiple virtual machines to enable distributed .NET development
* Install Boot Camp
* Install Vista in VM Ware within XP
This plan has recently been put into action. I have now received my MacBook Pro and have started the migration process. A few issues have arisen since I received the notebook. I need the following:
1: a keyboard that supports both Mac and Windows.
2: to be able to sync my PocketPC with Entourage
3: to be able to sync music with my Zen Neeon
The keyboard issue was one that I had not thought of before. At home I used a Logitech Cordless MX Duo that has drivers for both Mac and Windows, so problem solved. I will cover the other details as I go.
In the next part I will look at migrating my contacts and mail from Outlook to Entourage.
Posted by Andrew Cain at 7:26 pm 3 comments
Tuesday, May 30, 2006
Thinking in Objects
Finally got around to starting the new Object Oriented Programming subject today. I have now selected a text that I hope will work out well. The Object Oriented Programming subject is going to use C# as the implementation language, though it will focus on Object Oriented Programming and design rather than on the language and related libraries...
The book I am going with (and yes it is too late to change now) is "Object Design: Roles, Responsibilities, and Collaborations". I have skimmed over most of it and now read chapter one in detail. It looks really good. The initial focus is on understanding design concepts. I think this is a good start. For the first lecture I have created a "Everything C#" followed by "Building programs with objects" presentations. The first is a bit shock and awe, covering most of the C# syntax, but that needs to be done somewhere and I want to get it out of the way so we can start on the real material. The second presentation looks at what objects are and how we build programs using them. I am happy with how it has turned out so far. Another Beyond Bullet Points success, I hope.
Week one is mostly out of the way. I have found an online tutorial for learning C# so that will be the lab work. The structure for the presentations is out of the way, and I have the text to fill in the design gaps that I am leaving. Its great being able to focus purely on objects knowing that these guys will have some idea about what programs are and their internal workings.
More to come as this unrolls...
Posted by Andrew Cain at 5:35 pm 3 comments
Tuesday, May 23, 2006
MacSaber
The real reason for me getting a MacBook is now out!.
Posted by Andrew Cain at 9:23 am 3 comments
Blogging as a PSD
So you are a uni student now. Why should you blog? Blogging is a great way of letting others know about the cool and interesting stuff that you are doing. Found a cool web site, got some new hardware, done a great assignment, played with some new tech, want to comment on your lectures... All of these are great blog topics.
Keep your blog reasonably professional and it can become part of your online profile that you can use in your resume. Shows employers that you are interested in IT. When you review something new upload a review to your blog and it will also show that you are capable.
Get a blog now, and let others (me included) know about it. I'm ready to subscribe...
Posted by Andrew Cain at 8:07 am 3 comments
Thursday, May 18, 2006
The Security Guy
I have attended a number of presentations over the last week, and one has really stuck with me... Unfortunately not because of how good it was. The presentation was about the current state of internet security. The person was really passionate about identity theft, but was way over the top with his message. The result was that anything of value was lost...
My recall of the presentation goes as follows:
You use fly buys - wow... Don't use fly buys
You use internet banking - wow... Don't use internet banking
You don't encrypt your hard drive - wow...
don't leave your computer on...
don't access the internet
You use internet explorer - wow... Don't use IE
You use office - wow don't use office
(now let me go a little further...)
don't use a computer
don't cross the road
don't drive a car
don't carry cash
don't deal with banks
don't deal with people
Become a hermit and remove yourself from society
That is the logical extension of the presentation...
Now unfortunately there was no real advice. There was nothing of value that you could take away from the presentation. In a work environment many people use Office, they are going to need to. Saying don't use office is not going to help. Saying, office has a large number of issues, these are the main ones, this is what you can do to avoid many issues, these are the risks that you cant avoid, etc. That would be useful, you can take something away from the presentation. Just saying 'don't use it' is really a waste of time. I use it every day and I'm still here...
If you give a presentation think about what your audience is taking away. If there is nothing for them they will not be satisfied.
Posted by Andrew Cain at 12:17 pm 5 comments
Tuesday, May 16, 2006
Media Center
I can now say that Media Center has been a real success. Last week Alison said that we should get "something" so that we could connect the TV in the bedroom to the Media Center. Life with standard TV is no longer acceptable. The next part of the conversation went "We should get another 360 for the bedroom", "Yes ... something like that". This comment has been strongly denied :)
I will look into the cost of getting another Media Center extender, but if the cost of getting a 360 drops then that will be the desired device.
Big ticks for media center.
Posted by Andrew Cain at 5:21 pm 0 comments
Friday, May 12, 2006
XBox = Sport
Microsoft and NewsCorp are banding together to create a professional gaming league...
"News Corp will aim the big guns of DirecTV, IGN Entertainment and Fox Interactive Media at the project, which is likely to glorify Microsoft Xbox games"
Posted by Andrew Cain at 8:27 am 2 comments
Tuesday, May 09, 2006
My first step toward becoming a pod person
Well I have asked for a MacBook Pro and even before I get it I'm thinking how I can use Mas OS X rather than windows for a number of things... Get Office for Mac, Free Pascal works, get the mono c# compiler. hmmm so what will I use windows for?
Well I still love Visual Studio. So Parallels can host a virtual PC for me with Windows and I'll run Visual Studio in that as I need to. Thats what I do at the moment on my PC anyway (except with Virtual PC rather than parrellels).
With some luck I'll get approval and start looking at dual booting with Vista soon!
Posted by Andrew Cain at 4:54 pm 6 comments
Talents
I have been thinking about people's talents and their study choices.
If you are talented in some area, and you enjoy it, should you seek to advance this or study other areas which are more "in favor" with industry at the time?
As a faculty of ICT we have been blessed with many students lately. Most of these had little talent or interest in ICT. (I'm sure that they all have talents, just not in ICT) These students obviously thought that it was better to study something that is in favor than to study what they are good at and interest in...
In my opinion I would always choose to build upon my talents than to go with current trends.
Having said this, I haven't always done this. I studied a Business/IT degree even though my real talents and interest lay in software development. At the time I didn't realise what I was doing. The degree that I studied came with a scholarship and the money helped make a real difference. I also didn't realise what I was missing. No one ever bothered to say "Hey your good at this. Did you know that there is all this other stuff that you may also be interested in..." I ended up doing well in my degree and getting a job that I hated. Being a proactive person within 6 (painful) months I got myself another scholarship and went back to uni to learn as much of "the other stuff" as I could. The only problem was that I was now doing it on my own. If I had my time again I would choose to do a technical IT degree, and do IBL to get some extra $.
Anyway the question remains, should you follow your interests (and talents), or study areas which have job shortages and hope to build interest and talent? What are your thoughts on this?
Posted by Andrew Cain at 11:59 am 8 comments
Monday, May 01, 2006
Late Weekend
Wow, am I tired. This weekend was a struggle. Its good to be back at work.
Friday night I decided to extend the WinGraph Pascal unit to include the ability to load and draw images on the screen. Finding the code to load bitmaps in the Win32 API is much more difficult than from the .NET RTL. Once I found the code getting it to work didn't take long, though I did make a few really simple mistakes (like passing b then a to a procedure rather than a then b) that took a while to find. Once I got the code basically working I modified the MazeGame and made a little graphical version. Sleep - 1
On Saturday we decided to buy a new TV Tuner and HDD from the Media Center PC. I remember reading somewhere that Media Center can support upto 3 TV tuners, so we planned to get the Fusion Dual tuner and a 300GB HDD. The purchase went ok, and we spent the next part of the day shopping for my brothers birthday present. Got home around 4ish and thought that I would install the HDD and TV Tuner quickly... Big mistake. Basically installed the TV Tuner, and HDD (at the some time) and booting windows failed. My first thoughts were, "damn TV tuner card". Removed the card and tried again. Same problems, wouldn't even post this time. Something did not like the new HDD. Removed the other tuner card, and the wireless network card. Basically the same problem. Got a little further then the machine froze. Change cables, change SATA ports, repeat, repeat, repeat... Anyway, at 6 we went to my brothers party which was great fun. Didn't even think about the PC for a few hours. Got home about midnight and started it again. Thought I had it working, formatted disk (almost 1hr). Then post failed again... Crap. Finally gave up on HDD.
Next trick was to install the tuner. Which turned out to be easy. Plug in, follow instructions. All working in about 1/2 an hour. Go into Media Center, turn them on and get the error "Select one or two tuners only". ARGH... Upto 3 turns out to mean "2" outside US, or "3" (1 digital, 2 analog) in US. Bummer. I could have saved some $$$ and just got another the same as the one I had. So at 3:30 I head off to bed.
Sunday I went to take back the HDD. The guys I got it from check it and it worked ok in their machine. Not much good to me, but they suggested a bios update. So back home update bios. Same problem. Install original drivers, same problem. Install latest drivers, same problem. Back to shop with PC. The technician had told me "Bring it in and I'll have a quick look at it.". When I took it back he wanted $35 to have a quick look at it... Stuff that. There is nothing left for him to change. The customer service rep and technician were quite rude, and unhelpful. I now know why you should use MSY, everyone I know who has had a problem with their equipment has been well treated. Anyway after a little arguing I got them to exchange it for another brand of disk. "There is a 10% repacking fee", fantastic, the customer service here just gets better and better. So I ended up with a 250Gb HDD and a little change + some happy memories. I had always wondered why the shop had so many "Email complaints to ..." signs around the store. Now I know.
Spend the remainder of the day driving around shopping for other things. Finally got home about 6:30pm and installed HDD. Amazing (sarcastic), it worked. First time, no problem. I had some drivers issues with the Tuner card, which I reinstalled. So everything is working well now.
Last thoughts, don't shop anywhere that has a prominent "complaints" signs. You may have to queue for a while, but MSY is worth the wait.
Posted by Andrew Cain at 12:56 pm 2 comments
Tuesday, April 25, 2006
XBox 360 + Media Center
Wow am I loving my 360 and Media Center PC. This year for my 30th birthday I got an XBox 360, my birthday is in February and this meant a long wait for the actual machine. During this wait I did some research on what you can do with the 360 and I discovered Media Center. Basically this setup allows me to store my media on the PC and stream it to the 360 for output.
So how has it been? Well having had the 360 for a month now I can safely say its been as good as I had hoped. Most of my music is now recorded in MP3s on the PC, allowing it to be shared between Media Center, Media Player and iTunes. The music plays perfectly on the PC and 360, as well as on my Zen and Alison's iPod. TV watching has also changed. I now try and pre-record everything that I want to watch. The TV guide (once setup) allows Media Center to automatically record all of the shows that I watch. I also have the digital photos on the Media Center PC, and am currently playing with setting up albums, and seeing if I can add audio (you can play these together manually, I want to see if there is an option for creating and saving this)
Games for the 360 have also been great. I got the VIP pack with Perfect Dark Zero, but I haven't played it much, the other games I got are far too addictive. Oblivion is my number one game at the moment, and I have clocked over 30hours game play already (on one set of batteries for the controller as well, you can buy a lot of batteries for the price of the recharger kit...). I still feel that I am only just getting started with this game. Every time I play it feels like such a huge world, great game.
The other game I'm playing is Need for Speed Most Wanted. After hitting 30hours on Oblivion I thought that I should play this a little, and have been hooked on it since. Love the graphics and game action. Basically it was a toss up between NFS and PGR, and I chose NFS mainly due to price. It was more expensive and there was an "all games $75" sale, so I saved more by getting it. Why not both? I'm an academic, so $ are not in great supply :(. Main problem with my choice is that all the others I know get PGR and not NFS... No big deal, I am loving the game. Just hit #9 on the BlackList and the races are starting to get really challenging. Should be good.
Problems? Well I have had some. The 360 has crashed on me a couple of times in Oblivion with disk read errors, and also in NFS. This hasn't happened so often that I feel the need to take it back, but if it happens more I will be. Other than that everything has been great.
So what's next? Well I need more disk space on the PC for all the media I have. I also want to get some extra tuner cards so that I can record and watch more than one channel at once. Then there is a steering wheel for the 360, and more racing/adventure games. For the moment I need to save some $... but that's nothing new :)
For anyone on XBox Live my gamertag is "The MS Guy"... See you online.
Posted by Andrew Cain at 9:07 pm 0 comments
Monday, April 24, 2006
LA Times runs a feature Beyond Bullets
This LA Times article examines the Beyond Bullet Point approach. Front page of the business section. Very impressive.
Posted by Andrew Cain at 4:37 pm 0 comments
Thursday, April 06, 2006
Making progress
A small group of students stayed back with me after the lab last night. It was really great fun! We extended the maze game to include the monsters and then went further to improve the monsters movement, and this morning one student talked to me about adding multiple monsters. This is a very funky little program now. I have added a screen shot below. Basically the player can move the "person" around in the maze while the monsters will move themselves. The code for this is available from the above links, there is a maze txt file at the end of the first iteration. The Pascal compiler is free and open source.
Posted by Andrew Cain at 1:15 pm 3 comments
Tuesday, April 04, 2006
Students and Learning
One of my favorite (modified) sayings is:
"You can lead a student to material but you cant make them study"
This is the joy that I am having at the moment. Motivating first years to actually study is a lot harder than I thought. Today I looked at how many people are actually looking at the Discussion Board. This is used for all important messages to students (such as when assignments are released, general feedback, guidance, suggestions, etc). Most of these messages are not communicated in any other way.
The following image shows the number of accesses to the Discussion Board by student. There are about 80 students of which 45 have never accessed a single discussion board posting.
Evil plan 1: Make sure that I release much more help via the discussion board... :)
Evil plan 1 is going into action today when I am releasing the assignment... I told them it would be available this week and that I would announce it on the discussion board. Lets see how many actually paid attention in class... My bet is about 35 :)
Posted by Andrew Cain at 3:20 pm 8 comments
Thursday, March 30, 2006
Blog Moved
Today I got thinking about where to host my blog again. This time I decided to actually do something about it. I am going with blogspot. Fortunately I used a feedburner feed which I have now redirected. Anyway its good to finally have a place where this can live without worrying about if it is going to be around next week...
Posted by Andrew Cain at 12:22 pm 0 comments
Using Full Text Searching with SQL Server
The MurrayBookshop allows users to search for books using SQL Servers Full Text Searching. This works resonably well but could be better.
Currently we use a constructed SQL string that is run via sp_executesql. This is required as we perform paging using SELECT TOP x, where x is a variable based upon the page selected, and the number of records per page. With SQL Server 2005 the SELECT TOP command now allows a variable number of records to be selected so this can then be re-designed to be much simpler.
The other problem is that uses may type anything into the search box. Unfortunatly the full text search does not allow any text to be used to perform the select. To overcome this you need to watch for two errors when using Fill from a SqlAdapter. (base.FillDataSet uses a SqlDataAdapter with the passed in command).
try
{
base.FillDataSet(newData, _BrowseCommand);
return new ProductBrowseResponse(request, newData, (int)_BrowseCommand.Parameters["@TotalPages"].Value, (int)_BrowseCommand.Parameters["@TotalProducts"].Value, ok);
}
catch(SqlException e)
{
if(e.Number == 7619 || e.Number == 7603)
{
return BrowseProductsWithoutSearch(request);
}
else
{
throw new DatabaseTechnicalException("Error browsing for products", Connection.ConnectionString, e);
}
}
A cutdown version of the select command is shown below. This selects the second page of 10 records that match the text in @SearchStringSQL.
SELECT Product.[ProductCode], Product.[ProductTitle], [Rank]
FROM [Product]
INNER JOIN
( SELECT ProductCode, ProductTitle, Rank
FROM
( SELECT TOP 10 ProductCode, ProductTitle, Rank
FROM
( SELECT TOP 20 [Key] As ProductCode, ProductTitle, Rank
FROM FREETEXTTABLE(Product, ProductTitle, @SearchStringSQL) AS KEY_TBL
INNER JOIN Product ON KEY_TBL.[Key] = Product.ProductCode
ORDER BY Rank DESC, ProductTitle ASC
) AS Table1
ORDER BY Rank ASC, ProductTitle DESC
) AS Table2
) AS TABLE3 ON Table3.ProductCode = Product.ProductCode
ORDER BY Rank DESC, Product.ProductTitle ASC;
The BrowseProductsWithoutSearch performs the same query without the full text search.
Posted by Andrew Cain at 12:19 pm 0 comments
Password Strength Indicator
(Apologies for the format of this post)
(Feel free to use this, but if you do please let me know)
The other day I registered a friend with MSN Messenger and was impressed by their password strength indicator. Today I decided to implement my own. The results are below.
Basically I use a regular expression to evaluate the strength of the password. Weak = 6 characters at least, Medium = a combination of characters, and numbers, Strong = combination of characters, numbers, and special characters.
The JavaScript is:
<script language="javascript">
var ieDOM = false, nsDOM = false;
var stdDOM = document.getElementById; function initMethod()
{
//Determine the browser support for the DOM
if( !stdDOM )
{
ieDOM = document.all;
{
nsDOM = ((navigator.appName.indexOf('Netscape') != -1) && (parseInt(navigator.appVersion) ==4));
}
}
passwordChanged();
}
{
if (stdDOM) return document.getElementById(objectId);
if (ieDOM) return document.all[objectId];
if (nsDOM) return document.layers[objectId];
}
{
if (nsDOM) return getObject(objectId);
return obj.style;
}
{
showCell(objectId, "#E2E2E2", "#E2E2E2");
}
{
getObjectStyle(objectId).color = foreColor;
getObjectStyle(objectId).backgroundColor = backColor;
}
{
showCell("pwWeak", "Black", "#FF6666");
showDefault("pwStrong");
}
{
showCell("pwWeak", "#FFCC66", "#FFCC66");
showCell("pwMedium", "Black", "#FFCC66");
showDefault("pwStrong");
}
{
showCell("pwWeak", "#80FF80", "#80FF80");
showCell("pwMedium", "#80FF80", "#80FF80");
showCell("pwStrong", "Black", "#80FF80");
}
{
showDefault("pwWeak");
showDefault("pwMedium");
showDefault("pwStrong");
}
function passwordChanged()
{
var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{6,}).*", "g");
var pwd = getObject("txtPassword").value;
if( false == enoughRegex.test(pwd) )
{
showUndetermined();
}
else if( strongRegex.test(pwd) )
{
showStrong();
}
else if( mediumRegex.test( pwd ) )
{
showMedium();
}
else
{
showWeak();
}
}
</script>
The password strength indicator table is:
<TABLE style="BORDER-RIGHT: black thin solid; BORDER-TOP: black thin solid; FONT-SIZE: 75%; BORDER-LEFT: black thin solid; BORDER-BOTTOM: black thin solid"
cellSpacing="0" cellPadding="0" width="100%">
<TR>
<TD id="pwWeak" style="BORDER-RIGHT: black thin solid" align="center" width="34%" title="Has at least six characters">Weak</TD>
<TD id="pwMedium" style="BORDER-RIGHT: black thin solid" align="center" width="33%" title="Has a mix of numbers, lower & upper case characters.">Medium</TD>
<TD id="pwStrong" align="center" width="33%" title="Has numbers, special characters, lower & upper case characters.">Strong</TD>
</TR>
</TABLE>
And this required an action to be added to the txtPassword. As this is ASP.NET we use the following in the page load event for the class:
txtPassword.Attributes.Add("onKeyUp", "passwordChanged()");
Posted by Andrew Cain at 12:18 pm 2 comments
Hiding controls in ASP.NET
If you use control.visible = false for controls in your web application these will not be rendered to the resulting HTML. If you want to interact with the control via Javascript there are going to be problems...
Fortunatly one of my Enterprise .NET students found a potential solution. Try the following in your web applications:
control.Style.Add("display","block"); // makes visible
control.Style.Add("display","none"); // makes invisible
Thanks for finding this solution.
The following script can be used to show and hide controls based on the state of a checkbox.
<script language="javascript">
var ieDOM = false, nsDOM = false;
var stdDOM = document.getElementById;
function initMethod()
{
//Determine the browser support for the DOM
if( !stdDOM )
{
ieDOM = document.all;
if( !ieDOM )
{
nsDOM = ((navigator.appName.indexOf('Netscape') != -1) && (parseInt(navigator.appVersion) ==4));
}
}
checkedChanged();
}
function getObject(objectId)
{
if (stdDOM) return document.getElementById(objectId);
if (ieDOM) return document.all[objectId];
if (nsDOM) return document.layers[objectId];
}
function getObjectStyle(objectId)
{
if (nsDOM) return getObject(objectId);
var obj = getObject(objectId);
return obj.style;
}
function show(objectId)
{
var objs = getObjectStyle(objectId);
objs.visibility = 'visible';
}
function hide(objectId)
{
var objs = getObjectStyle(objectId);
objs.visibility = 'hidden';
}
function checkedChanged()
{
var chkBox = getObject('chkBox');
chkBox.checked ? show('txtCreditLimit') : hide('txtCreditLimit');
}
</script>
initMethod() must be called when the page loads: <body onload="initMethod();">
You also need to add some code to the page load to register the checkChanged with the click event on the checkbox. chkBox.Attributes.Add("onclick", "checkedChanged();");
This then allows the control to be shown and hidden using client side Java script.
Posted by Andrew Cain at 12:12 pm 0 comments
Monday, March 20, 2006
.NET Job
Another past student contacted me looking for a .NET developer. Here is what they asked me to post:
Full time positions are available at InsuranceLine for a .NET developer with the following requirements.
The ideal candidate would have experience working on a distributed application in .NET, with the following skills summarized below.
1. Excellent command over the VB.net language.
2. Implementation knowledge and exposure to Microsoft multi-layer/tier application architecture model for distributed .net Apps.
3. Experience and excellent command over SqlServer 2000 client tools and TSQL.
4. Expereince with writing unit tests in nUnit.
5. Experience of debugging, testing and writing serviced components in COM+.
Also desirable skills include
1. Exposure to VS 2005.
2. Microsoft Application blocks for .NET (UIPAB in particular)
3. Experience in various common patterns of Enterprise Architecture.
4. Managing Security, roles, and permissions in a distributed application in COM+.
Resumes + Cover letters can be forwarded at afif.mohammed@mel.insuranceline.com.au
Posted by Andrew Cain at 4:22 pm 0 comments
Monday, March 13, 2006
XBox 360
Am I hanging out for this or what... I have the premier pack and this weekend I cracked. I opened all of the packaging and drooled over the bits. The controller is much lighter than I thought it would be, but unfortunately pointing it at my tv and pushing the buttons did nothing :). Anyway only a few days to go now... Much keep repeating that to get myself...
The game looks good and the manual is interesting... well thats all I can do with it at the moment.
Cant wait!
Posted by Andrew Cain at 8:13 pm 1 comments
Thursday, March 09, 2006
Week 2 well under way
I am almost ready for HIT1301 now :) and its only half way through week 2. I have finally finished the labs, and got the basic outline for the material on SwinBrain. Now its time to see how this is going to go...
I have finished all of my HIT1301 (Algorithmic Problem Solving) tutorials for this week and for the most part they were quite good. This week we looked at reading and understand source code (with a little bit of coding for fun). Most of the students are prepared to give it a go, and I hope they had some fun with the exercises. My favorite exercise from this week was the program to make the screen flash red, green, then blue. It only takes a few lines of code, but this is much more interesting than just printing text to the screen. I must say that everything is much easier and more interesting when you dont have to deal with objects and the like.
Next week there is a quiz, so I'll have a bit better idea how people are going after that.
Posted by Andrew Cain at 4:29 pm 0 comments
Monday, March 06, 2006
Teaching again
The "teaching period" (aka semester) started last week and labs have started this week. Both of my subjects have started well. I am teaching Algorithmic Problem Solving and Enterprise .NET. The two ends of the programming spectrum at Swinburne. Algorithmic Problem Solving (APS) is an introductory subject where students are learning to read and understand code at the moment, and will soon move to writing code and solving problems. Enterprise .NET is Enterprise .NET :) we will start looking at developing multi-layered software, and database programs this week.
APS is a totally new subject, and it is always interesting to see how the new material works out. It appears to be going well so far, though I'm sure its either to fast or to slow. Student who have programmed before will find the start a little slow, while for the new programmers we are covering a lot of new material in a short time.
Today I had my first APS labs. The lectures are always hard to judge, but the labs really give you a feel for how everyone is progressing. So far most students are going well. I have had a few new programmers "get it" for a number of new concepts.
As far as challenge goes, we are already looking at procedures and functions in code, as well as working with the different control flow statements. These concepts are core and once covered we can start writing more interesting code. Having said that most other introductory programming subjects would not have covered so much by week 2... Lets hope it all goes well... If you are doing this subject and feel "up to date" you are doing really well. If not keep reading and ask questions.
Posted by Andrew Cain at 2:48 pm 1 comments
Wednesday, February 22, 2006
Hoards of Darkness
Microsoft is doing their second round of interviews in AU at the moment. Recently I have been contacted by two of my HIT8099/HIT8197 students from last semester and they both have 2nd round interviews in Sydney next week! Fantastic news. I hope they you guys go well.
Anyone else picked up an interesting .NET job after doing HIT8099 or HIT8197? Let me know what you are up to.
Posted by Andrew Cain at 9:52 pm 0 comments
Friday, February 17, 2006
Another Job
One of my past student recently contacted me looking for some .NET graduates. His company is expanding, and looking to take on some more .NET people. Unfortunately this isn't the best time for me as semester is about to start, but if your are looking for a job with .NET have a look at http://www.roadhouse.com.au/Content.aspx?topicID=235. I know for a fact that some very talented people work there...
Posted by Andrew Cain at 1:42 pm 0 comments
Thursday, February 09, 2006
Definition of the week
Yesterday I read a very interesting statement:
"A class is a pointer to an object"
I think this definition really describes the relationship between classes and objects quite well for some languages. The language in question was Delphi. In Delphi, just like Java, C# and Visual Basic .NET, a class type would be referred to as a reference type. What does this mean? A variable of this type is a reference to an object, not the object itself. Or in other words, a class is a pointer to an object. If we could define an object, a class would just be a pointer to that type i.e.
PersonObj = object
...
end;
Person = ^object;
Posted by Andrew Cain at 1:25 pm 1 comments
Wednesday, February 08, 2006
Another Job
BOSS Software International is advertising two new junior developer positions. You can get the details from the link above.
Posted by Andrew Cain at 2:59 pm 0 comments
Friday, February 03, 2006
The problem with ...
The problem with languages like Java and C# is that you need to understand many things in order to create any kind of solution. Using these languages implies an object oriented solution, which in turn implies an understanding of objects. Objects are created by combining data and functionality, so objects implies an understanding of these concepts. Dont get me wrong I use these languages, and I am quite capable of creating elegant oo solutions. I just think that before you start using objects it would be good to have a strong understanding of data and functionality (i.e. sequence, selection, repetition, and functions and procedures). This is way Algorithmic Problem Solving, a new subject I am working on, will be focusing on these concepts and not introducing objects until near the very end.
Objects are important. Objects are good. But there is no need for objects first.
Posted by Andrew Cain at 12:06 pm 2 comments
Monday, January 16, 2006
A question of Language
Last year a group of us at Swinburne proposed a new IT degree aimed at producing software developers. At the heart of this degree was a new programming stream aimed at teaching students the fundamentals of programming starting with procedural programming then moving to object oriented programming, but also including introductions to functional and stack based programming. We are now in the process of developing these subjects and are pondering (again) the choice of language and approach.
What are the choices? Well at the moment the real choices are between C and Delphi. We have decided to avoid Java, C#, or Visual Basic .NET as these languages provide a higher level of abstraction that will be better understood after having learnt procedural programming.
At the moment my preference is to go with Delphi. The language is far more readable than C, providing an environment that is a little further removed from low level concepts. If we go with Delphi the approach we will take is to introduce program comprehension first then move to basic development, data structures and memory management, and finally recursion and backtracking. Using Delphi we can still use call by reference (pass by reference) and call by value (pass by value), we have pointers, function pointers, and easy to use strings.
On the other hand C is the cheaper option. By using C we can eliminate one subject as this will be taught to the engineers as well. I believe that the approach to programming with C would need to be different to the above approach. The language is not as readable, and requires a better understanding of hardware and memory. Having said this the subject would be mostly taught to engineers who should be interested in this lower level of abstraction. I think therefore that the C approach could take a far more low level approach. You would probably start with a little hardware introduction followed by basic instructions and then move onto memory management. You could then go on to look at controlling hardware devices in C, possibly also looking at assembler. Basically keep the subject more on a hardware control level where C will work well.
I haven't had long to think on the C approach, so I'm not really sure about it still... Any comments will be appreciated.
Posted by Andrew Cain at 1:44 pm 0 comments
Friday, January 13, 2006
Where to blog?
With the tragic loss of my last blog, and a number of friends moving to new blog sites, I am starting to think about where I should blog...
What do I want?
1: Backups... I dont want to lose it all again!
2: Time... It would be good to know that I dont have to move again.
3: Price... I'm cheap :)
Are there any problems with this location? Well not really except for points 2 and 3. This site is run by Raj who is paying to have this hosted. Will it stay around? It will as long as we keep paying. So with this in mind I am asking you where do you blog? What is it like? Most importantly where should I blog?
Anyone?
Posted by Andrew Cain at 6:30 pm 1 comments
Wednesday, January 04, 2006
Java Schools
An interesting read on Joel's view of Java based schools.
Posted by Andrew Cain at 10:21 am 1 comments
Brains
I read an interesting article on Conference Presentations and our Brains... There was some interesting points that seem to fit well with the overall approach that I have been working with lately. The article was titled "Conference Presentation Mind Control" by Paul Fenwick and was presented at the OSDC in December (Melbourne).
One of the most interesting quotes from the presentation relates to people having trouble paying attention in technically interesting presentations - "Half our brain is bored, and suppressing it is hard work. Similar reasoning can be used to explain why many technical professionals are more effective if they listen to music while they work". Something that I immediately relate to.
Posted by Andrew Cain at 9:21 am 0 comments
Tuesday, January 03, 2006
SwinBrain
I have been working for a while on a new project called "SwinBrain". This is a wiki designed to provide subject content material for Swinburne student (well some of them anyway). The idea of the wiki is to allow Swinburne subjects to share knowledge, something that I have found frustrating in the past. In this way when you need to provide background material for students who may not have done something (like Database for example), you can reference to the appropriate section on the wiki. I hope that this will enhance the consistence of the message that we deliver.
The site is very much limited at the moment as there are only a few of us working on this. If you have any suggestions for material, or any comments on the idea let me know...
Posted by Andrew Cain at 4:11 pm 0 comments
New Year
Well the new year is upon us, and I am now back at work! This new year should see several new challenges as we start to introduce the new PSD degree at Swinburne.
The most tragic thing to happen to me last year was the loss of the blogs from Tyler, the byteclub server. My byteclub blog was my main blog for a long time and to lose this content really hurts! What also hurts is the loss of the other byte club blog that I have been actively reading. I will have to see what can be done to get something back up and running for the ByteClub, but I think I will keep this blog as my main blog for the moment anyway.
To anyone from ByteClub who lost their blog please post a comment and let me know where your new blog is if you have created one.
Posted by Andrew Cain at 9:36 am 0 comments