I've been so busy since I got back from leave that I haven't had ten minutes to put any of my thoughts down in writing. Today I've finally got some time to spare so I thought I would write a quick blog entry.
Over the last two years we have been planning, developing, and delivering the new Bachelor of Science (Professional Software Development) or PSD for short. This is a new degree program aimed at teaching students about modern software development, agile processes, etc. This semester I have been teaching the new Database Programming subject, the last of their programming subjects, and so I've been looking back to see how the program has turned out.
I think in general that the new degree has been quite a bit of an improvement over previous degrees, in that very few of the students "hate" programming. However I think we can improve further in some areas. The one the has surprised me the most is how fixed in their ways some of the students are. Anything that offers a slight challenge is a major obstacle, and the tool is always seems to be to blame. Its not that they are not capable of using the tools, its their attitude that I am finding intriguing. The old saying "A poor worker blames his tools" keeps popping into my mind... Having said all of this, there are also students who are doing well, and are handling the challenges in an admirable fashion. I just want to improve the odds...
I think its really important to be open to new ideas, and to be prepared to spend time to understand how a tool works. As software developers these students are going to be constantly faced with configuration/installation/integration types of problems. They will need to be able to work out how other software works in order to be able to work effectively with it.
Anyone have any ideas for how we can encourage these students to be more open in their thinking?
I want them to be inquisitive about technology, prepared to explore the potential of various solutions.
I think what shocked me most (and got me wanting to write this) was one conversation I overheard... it went something like this:
"My notebook is running too slow. I think I will install Linux and Beryl like X did."
"Really! You dont want to do that. He will have spent ages tweaking it... do you really want to do that... etc. etc."
"Yeah your right, installing Linux is too difficult... etc. etc."
This really isn't what you want to hear. Playing around with another OS is a really good learning experience, and a good working knowledge of Linux is a real advantage. Not installing it because you may have to learn how to configure it is a really lame excuse. My suggestion, install Linux. Play with Beryl. What have you lost if you end up going back to Windows? Setup a dual boot, then you can play with Windows and Linux. Learning should be fun.
Monday, September 10, 2007
How important is being open?
Posted by
Andrew Cain
at
4:44 pm
3
comments
Labels: teaching
Wednesday, July 25, 2007
Back to work
The holiday had to end at some stage... I'm back at work now, and not much has changed. Currently getting ready for the semester which starts in a few weeks.
My main problem at the moment is finding tutors for a new subject on Database Programming. If you know anyone good who is interested in teaching, and knows Java + C# (or one and happy to learn the other) please let me know. We currently have 6 hours of laboratories that need a tutor. Any ideas?
Posted by
Andrew Cain
at
5:52 pm
0
comments
Labels: subjects
Thursday, May 10, 2007
To Thread or Not To Thread
Today I have been asked a few threading questions from students studying at Swinburne. Usually these were about the "How to" do something with threads, when I think the real question was should threads be used at all?
From what I know these students are developing a torrent like application and network protocol. The issue is that they need to accept data from a number of peers at the same time. Initially this appears to suggest the need for threads... but are they really needed?
In this case I think not. The project indicate potentially thousands of peers... a threaded client with one thread per client will kill the machine with context switches before any real work can be done. So what is the answer? Non-Blocking IO.
With Non-Blocking IO you dont need to block, waiting for data to arrive from a peer. Rather you keep a list of connected peers and then loop through those that have data currently available. This can all be performed on a single thread, giving good performance and throughput.
Java offers a number a library of non-blocking IO utilities. Have a look at the NBTimeServer.java example. This shows a time server that accepts connections using non-blocking IO. A quick look through the Java API and you will find the SelectableChannel and the SelectionKey class. Using the register methods, and the various SelectionKey options you can loop through only those connections that actually have data waiting to be processed.
There is a good article, with a good source code example at http://tim.owlmountain.com/tutorials/NonBlockingIo.htm though there is an interesting note at the start.
As suggested in the article, you could also look at MINA the Multipurpose Infrastructure for Network Applications. If you use MINA just stick with the basic "getting started" code and build on top of that. There is no real need to worry about fiddling with the thread model. But... check with the subject convener first...
Posted by
Andrew Cain
at
5:31 pm
6
comments
Labels: concurrency, programming, subjects
Tuesday, May 08, 2007
Programming 2D Games
Are you interested in programming 2d games? Got a PC, Mac, or linux box? That all you need with the new SwinGame API.
The SwinGame API was developed initially by Daniel Chambers as a Windows API for developing small games. Over the last few weeks I have been modifying the code to extend its features, and to make it cross platform. The latest version is still in testing, but is worth looking at if you are interested in creating a 2D game.
SwinGame features:
- Window drawing is double buffered
- Create a Window of any size
- Load and display images of various formats including bmp, png, and jpg
- Works with 32 bit images, including alpha blending
- Load true type fonts
- Read and write text
- Draw lines, and shapes
- Sprite management routines
- Load and play sounds in various formats including wav, ogg, and mp3
- Detect collisions between sprites, bitmaps, and areas of the screen
- Perform pixel level collision detection
- Vector manipulation routines
- Use matrices to manipulate game vectors
Posted by
Andrew Cain
at
2:46 pm
2
comments
Labels: programming, subjects
Tuesday, March 27, 2007
Empty your Mind
Today one of the PSD students showed me what he had started for the game he was developing for Algorithmic Problem Solving. He had started on the game yesterday, and it already looks quite impressive. Basically this is going to be a scrolling space arcade game. So far he has the weapon firing in a number of shot combinations. The screenshot below shows the largest fire pattern.
Looks like some of the students are having fun with this assignment. The SwinGameAPI is a real hit, making this possible without having to worry about many complexities.
Keep the games coming...
Posted by
Andrew Cain
at
4:34 pm
4
comments
Labels: programming, teaching
Wednesday, February 14, 2007
Another Web Development Position
I have another request for anyone interested in some web development work. Please get in touch with me if you are interested. Details follow...
I'm currently looking for a student (2nd year or higher) to take on some web
development work for us here in Corporate Marketing - 1 to 2 days a week
fitting in with their study schedule.
Here's a brief outline:
Essential skills
- HTML, CSS, graphics and JavaScript
Other desirable skills
- PHP, SQL/Databasing, Flash, design, audio and video
Software
- Dreamweaver, Fireworks, Flash
Posted by
Andrew Cain
at
4:50 pm
0
comments
Thursday, February 08, 2007
Postscript Automator Actions
Having played with Automator some yesterday I thought it would be interesting to create an Automator action to perform the Postscript manipulation. This would mean that I could package the scripts together in a workflow to make producing the PDFs for my subjects even easier...
Creating an Automator action is actually quite easy. It basically uses an architecture inspired by Unix pipes. You can pass output from one action to the input of the next. I decided to create script actions as I already had the bash script all worked out. With this script the input is passed via the standard input. Automator also allows you to provide arguments via a simple user interface. These arguments are then passed in as environment variables. The following script illustrates the Postscript to PDF Automator action...
#!/usr/bin/env sh
if [ -e "$PS2PDFBIN" ]; then
while read line; do
if [ -e "$line" ]; then
FILETYPE=`/usr/bin/file -b -i "$line"`
if [ "$FILETYPE" = "application/postscript" ]; then
OUTDIR=`/usr/bin/dirname "$line"`
FBASE=`/usr/bin/basename "$line" .ps`
OUTNAME="${OUTDIR}/${FBASE}.pdf"
typeset -i I=1
while [ -e $OUTNAME ]
do
OUTNAME="${OUTDIR}/${FBASE}.$I.pdf"
I=$I+1
done
PATH=$PATH:`/usr/bin/dirname "$PS2PDFBIN"`
$PS2PDFBIN -q -sPAPERSIZE="$PAPER" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "$line" "$OUTNAME"
/bin/echo "$OUTNAME"
else
/bin/echo $line
fi
else
/bin/echo $line
fi
done
else
echo "Cannot locate executable: '$PS2PDFBIN'" 1>&2
exit 1
fi
I will upload the action bundles soon if anyone is interested...
Posted by
Andrew Cain
at
8:22 pm
8
comments
Wednesday, February 07, 2007
Presentation to PDF
Today I have spent a significant time preparing my lecture notes for my subjects. The subject that I am preparing has a large number of PowerPoint files that need to be printed as PDF. I wanted to print all of the PowerPoint files to double sided PDFs. Rather than doing this manually I wanted to create a script to automate the process.
Opening the Files: the first part of my process involved creating a script to automate the process of opening the PDF files. I organise my documents in folders, so all of the documents that I wanted to print are located in a tree under a single directory.
The Automator workflow to open the PowerPoint files is actually very simple (shown here). I attached three finder actions. The first is the Get Folder Contents action. This action is used to process all of the items within the selected folder. Select the Repeat for each subfolder found, so that all of the subfolders are processed.
Following this action is the Filter Finder Items action. I use this action to filter the items to those that end with "Handout.ppt" as this is the ending to all of the presentations that I want to open. The last action in the workflow is the Open Finder items action. This action will open all of the items that are passed to it from the previous actions.
Printing the Presentations: The next step should have been simple... but it isn't. I started approaching this by creating a Applescript that printed via PDF. Getting the Print dialog to appear was simple, and examples all over the web illustrate how to click that PDF button, but none of them worked for me. I ended up using the UI element explorer and finding that the path to this menu is not easily achieved. In fact the explorer had issues highlighting it... If anyone knows how to get this working please let me know.
My next approach was to find a PDF printer... yes I know you can save as a PDF, but not with a script as far as I can tell. This was actually much easier than I first thought. Following the discussion on this forum. The best description is on the second page. Using this and some simple VBA script (basically for each presentation, print out the presentation) I can now print all of the open presnetations using the selected printer. Using the new PDF printer allows me to print these to PDF.
Next I wanted to have the PDFs printed two per page. Adjusting the print settings and printing via the script did not work. I started looking around and found some useful postscript editing utilities... So I had gone to all that effort to get the PDF printer and what I really wanted was a postscript printer. I created a modified version of the PDF script that copied the passed in postscript to a file, allowing me to use the existing scripts. Using this I was able to create postscript files of the notes for all of the presentation.Scripting PS manipulation: To get the postscript modifying programs download Fink. This installer allows you to download common Unix utilities compiled to run on Mac OS X. Install the ghostscript, gv, and psutils-a4 package (for the A4 version). From the command line run the following instructions...
find . -type f -path "*.ps" -exec psnup -b0 -m0 -l -pa4 -2 {} "{}.ps"
find . -type f -path "*.ps.ps" -exec ps2pdfwr -sPAPERSIZE=a4 {}
This will create some strangely named file (a.ps becomes a.ps.ps and then a.ps.pdf), however the script will create the files as two per page PDF. The script also allows you to quickly process large numbers of presentations at once. With a little more work I am sure that I can create a better script, but this one has worked fine for the moment.
Posted by
Andrew Cain
at
7:51 pm
2
comments
Monday, February 05, 2007
Interested in some part time PHP
With Uni about to go back, I have been asked if I know anyone who would be interested in a part time Job at Swinburne working on their web content using PHP... Are you interested?
Who are they looking for? A Swinburne student who is interested in programming, and in learning PHP and working with MySQL.
Do you need to already know PHP? No... as long as you are a capable programmer that should be fine.
How about MySQL? You need to know SQL...
How much time/money? One or two days a week in 2007 at $21 an hour
Who do I contact? Please contact me initially. I can then put you in touch with the person in question. You will need to have an interview...
When? You need to get in contact with me ASAP... before the start of semester 1.
Let me know if you are interested.
Posted by
Andrew Cain
at
4:57 pm
0
comments
Labels: jobs
Thursday, February 01, 2007
More Mac Tools
After having watched a vast number of MacBreak issues over the last week I have started to play around with a number of new applications. I thought that I would share these with you...The first piece of software that I have played with is Growl, a notification tool for the Mac. This allows me to display notification of various events, such as network address changes, track changes in iTunes, email, Adium etc. Growl also provides a nice network feature that allows me to get notifications from my notebook on my desktop. This allows me to work without having to look at the notebook screen for "interesting" events.
I have really enjoyed the Distracted Mac and related episodes with Merlin Mann and as a result have started playing around with the tools that he mentions in the episode. The first productivity enhancing change I have made is to clean up my desktop...
To really clean this I have been playing with Path Finder and its ability to hide the desktop icons. In addition to hiding the desktop icons this program provides a replacement for Finder. I am still using the trial and I am not sure that its worth the $, so I have been looking for alternatives. Path Finder is quite nice, but the interface is a little too busy. I'm not sure but I will think about it when my trial hsa run out. Rather than switch to Path Finder on both my Macbook and my desktop I decided to look for another alternative. What I found was Desktop Sweeper, which is a Application Enhancer plug-in that hides desktop icons. This has worked really well, and I absolutely love the icon :)
The next tool is Menu Shades. This program provides the ability to hide the menu bar, removing another source of distraction. It is quite a nice program, but the problem is that it takes up space in the Dock. It would be much better is this had a menu bar icon... So I started looking for a way to remove the icon from the dock...
Having a look around I found the Dockless program. This provides an easy way to indicate to programs that you don't want them to load in the Dock. The program is a little "interesting" but it does work. The quit and relaunch buttons are used to quit or relaunch the selected applications... Anyway it all worked fine once I understood how it worked. Don't relaunch the Menu Shades program from this as it then fails to load it preferences. I got Dockless to remove it from the Dock and then manually restarted and it worked fine. Menu is shaded, and it is not in the Dock.
I have been playing around with some other applications, but more on those at another time. If you have some other interesting Mac applications let me know.
Posted by
Andrew Cain
at
3:22 pm
0
comments
Labels: applications, mac
Wednesday, November 29, 2006
PSD Summer Scholarship 2006 Pict Blog
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...
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
Muvo Helper
Menu Meters
xCHM
Aquamacs
Booxter
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
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
