December 30, 2007

Fun with the Frameset Portal - SAK-12402

I am about done with the code for the frameset portal (SAK-12402) - the progress went nicely - I am pretty pleased with the results. Thanks to some timey prodding from Nick, I expanded this from just JSR-168 tools to make it available to all Sakai tools by a simple tool configuration option that can either be set in a tool registration file or dynamically by the tool as the tool runs.

I invented a neat feature where the portal uses frameset navigation as much as possible (only turned on by a property) - it is nice because I could quickly test lots of navigation sequences and work through click streams so as to make the frameset portal work reasonably well - even when it is used heavily.

My feeling is that this will start out with a just a few tools like IMS Tool Interoperability and the iFrame (Web Content) tool. It will simply seem like the portal navigation "minimizes" from time to time.

Off to write some documentation and a test plan.

Posted by csev at 04:53 PM

December 27, 2007

Today I learned to make SVN branches

And it is a *LOT* of fun. Branches are a way to store code you are fiddling with on the server instead of scattered around your home directory. It is also a great way to version control your hacking. Up to now I kept making tar files each time something worked and I had made progress.

I made branches for all my outstanding fiddling

o Frameless portal - functional - 70% complete - needs cleanup

o iFrame Portlet - functional - 50% complete - needs careful moving of features from web content tool

o Mail archive tool performance improvement - 10% complete - I have refactored code to make paging calls. But it does not really do paging. The real work is to move paging from MailArchiveAction into the service and this will require SQL hacking.

Here is how you make an SVN branch:

svn copy https://source.sakaiproject.org/svn/mailarchive/trunk/ https://source.sakaiproject.org/svn/mailarchive/branches/SAK-11544/ -m "Branch for Mail Archive Performance Improvement"

svn copy https://source.sakaiproject.org/svn/web/trunk/ https://source.sakaiproject.org/svn/web/branches/SAK-12563/ -m "Create branch for iframe portlet"

svn copy https://source.sakaiproject.org/svn/portal/branches/SAK-12350/ https://source.sakaiproject.org/svn/portal/branches/SAK-12402/ -m "Create branch for frameset portal"

This is so easy and fun - I cannot believe I did not know how to do this until today. I learned from this web page:

http://svnbook.red-bean.com/en/1.1/ch04s02.html

I love coding over holiday break! Coffee, pajamas, and a cable modem!

Posted by csev at 10:27 AM

December 26, 2007

Programming the Frame Set Portal

I am working on what I call the frameset portal

http://bugs.sakaiproject.org/jira/browse/SAK-12402

This allows a JSR-168 portlet in Sakai to request to be shown with no left navigation. This has applications for externally hosted tools and content - like the iframe tool and the IMS Tool Interoperability tool.

The way most LMS's do this is by using a frame set. The LMS puts a little tiny nav bar in a frame at the top so the user can get back to the LMS and puts the content in a second frame that gets the rest of the screen. This uses a frameset instead of iFrames - so the usability is not too bad - of course the accessibility is not so good. But for content that lives in a URL - this is the only choice other than a popup. This is better then a popup in many people's opinion (and mine as well).

I think that this will allow publisher content to look really nice in Sakai.

I started working this morning at about 8 AM and have the first version working at 11PM. I really like working on holiday breaks.

I started with Ian's portal refactor branch(SAK-12350). to make things easier to join back up with Ian as he completes his work.

Screenshot

It is really cool - screenshots soon in the Jira Entry. Now I want to rest, eat, and watch some Rock Band - now that the whole neighborhood has had 12 hours of solid practice.

Tomorrow I have a few things to clean up. I probably need to make my own branch which is a branch of Ian's branch to check this stuff in so folks can look at it.

I also need to try to get a SiteMaker development environment up and running so I can work on adding IMS tool interop to site maker - which is another of my holiday tasks.

To do list:

- Decide if we really want to pre-buffer content - or should we make a property to control this - so we only pre-load content when we are dealing with one of these "maximize requesting" portlets.

- Tighten down when we will do this - must be one tool and a JSR168 tool on the page.

- Clean things up - remove prints and debugging.

- Talk to Ian to get his blessing on this :)

Posted by csev at 11:07 PM

Broken Trunk Over the Holidays

Here are the commands to unbreak the trunk if you are working over the holidays.

cd announcements
svn update -r39609

--- All better - no ned to backlevel Announcement

Broken build URL

http://grandcentral.cs.wisc.edu/pavlo/index.php?page=results%2Foverview&opt_user=csev

Posted by csev at 10:34 AM

December 24, 2007

Pedagogy / Tip: Using Google Calendar in Sakai

This shows how to use a Google Calendar in Sakai instead of the built-in calendar. The primary benefit is that you can get your course calendar on your PDA and desktop - and the students can subscribe to the calendar as well. Code is being worked on in Sakai to produce an ICS feed - but until your site has that Sakai code in production, this is a workaround.

If necessary make a Google account and make a calendar. You should keep course events on a separate calendar - I use a calendar for each course - it allows for easy cleanup when the course is completed.

Make a Google Calendar - set its access to public.

You do not need to make a new Google account SImply add a named calendar to your existing Google account. By "My Calendars" Click Add -> Create New Calendar. Make it public is the easiest way to go.

Then add the events to the new calendar - make sure to uncheck all but the new calendar under My Calendar so the new events go only on the new calendar.

Once you have added the events to the calendar go to the drop-down next to your calendar in My Calendars and select "Calendar Settings".

In Sakai add a resource for an HTML Page - I name mine Misc/google-calendar.htm - I used Add / Create HTML Page from Resources tool.

Put something like this in the page:

<p>
<iframe src="http://www.google.com/calendar/embed?
src=b2epe3eqtlftp0v3g1e18pqf34%40group.calendar.google.com
&ctz=America/New_York" style="border: 0" 
width="600" height="600" frameborder="0"
 scrolling="no"></iframe> 
</p>
<p>
If you want to subscribe to this calendar - here is the iCal link:
</p>
<p>
http://www.google.com/calendar/ical/
b2epe3eqtlftp0v3g1e18pqf34%40group.calendar.google.com/
public/basic.ics
</p>

Get the two strings from the "Embed this calendar" in Calendar Settings and the ICS URL from the "Calendar Address" section. I control click on the iCal link in Google and Copy URL. Save this file in Resources. After you press the Create button make sure to name the page something like "google-calendar.htm" rather than "New HMTL Page".

Once the resource is saved, click on it in Resources - this should pop up a new window - grab the URL of this resource. It should look like this:

https://ctools.umich.edu/access/content/group/0ae836b9-7fc9-4060-006f-27b2066ac545/Misc/google-calendar.htm

You should see the calendar and the text below the calendar.

Go into Sakai under Site Info -> Edit Tools and add a Web Content Tool. Set the Title to be Calendar and the URL to be the copied URL of the HTML page you created above. Press Continue and then Finish.

Then go to the new Calendar page and press "Options". Make the Tool title be "Google Calendar - Scroll Down for Subscription Options" - leave the Page title "Calendar" - this is the button text. Change the frame height to 750 pixels. Press "Update Options". Remember that students will not see the options button.

Viola! You are done

If you want to have more fun and have a Mac desktop and iPhone follow these additional steps.

In iCal, go to Calendar -> Subscribe - enter the ics URL in the subscription box. Before you save the calendar tell it to auto-refresh every hour (or whatever you like) - just don't leave it the default of never refresh. If all goes well you should see a new calendar in iCal with its own cute Apple color and a nice little check box to turn it off.

Connect your iPhone - start iTunes - Select the iPhone - go to the Info tab. Scroll down until you find "Sync iCal Calendars" - find the new calendar and tick the check box. Press "Apply" and the new calendar should be synced to your iPod.

Voila! - You have your course calendar in your pocket and so do the Students!

Posted by csev at 09:32 AM

December 22, 2007

SI539/SI543 Notes - Mostly Gibberish

Cleaning up my desktop in preparation for next semester.

September 5, 2007

Show Video YouTube #2 SQL, Java, PHP/MVC #3, PHP#2 = migrate, PHP4 = DB Portability
Take a photo of the class
History of Languages
Framework Versus Language
This time last week I was in the NL Sakai
Sakai is a framework for learning tools
Ruby is what Sakai wanted to be - at least in terms of ease of use
Course Rules - Eating Sleeping, Drinking, Late, Leave early - Go to bathroom - All OK
MVC several passses
Talk about www.rubylearn.com
Language Lifesycle - Ruby versus Java
Will make mistakes
SQLite3 Database Browser

October 10, 2007
Need to find a a better way to remove scaffolding - need to introduce iterative development.

October 22, 2007
The way to make it harder is to make more pieces and make the students assemble bits from several sources.

Each assignment needs a challenge at the end,

Thought: Podcasts align the "teachable" moment with the "learnable" moment and keep those moments connected as long as necessary.

Pod-casts allow me to be present at more "teachable moments".

** Allow questions during practical midterm

October 24, 2007

I am to the point where I lose 10% of the students - how can I lose 0% ????

Firebug.

December 6, 2006

Hand in the most easily graded evidence of completion - screenshots.

--- SI543 ----

September 4, 2007

About me
Class rules - late, eat, sleep - all OK - don't blame me if you skip and fail.

Don't take last year's course.
Book - dense - if it seems slow skip around - fill in the big picture.
Discuss CS1 - transferability - clear curriculum expectations
Poll: Mac/PC, experience, motivation

If in both classes - I will seem schizo - not many
Expect few hour turn around on mail from me

September 14

Do not introduce String in the first assignment - it was too much - the subtle difference between == and .equals is the wrong thing to have to talk about. Morelli is right when he sticks with integers in Chapter 2.

September 18

I should have done the tracing assignment earlier.

Chapter 3 is starting to feel better.

Watch incoming practical exams - monitor the room

Resubmit

Firebug

Posted by csev at 09:41 AM

December 12, 2007

Abstract: Teaching Experiences with Sakai and Other Technologies

This presentation will describe how Sakai has been used to teach two beginning programming courses at University of Michigan. This will describe the featuers of Sakai which were used and places where Sakai was not sufficient and other solutions were needed.

http://www-personal.umich.edu/~csev/talks/2007/2007_12_06_teaching.m4v

Posted by csev at 08:12 PM

Abstract: Sakai Overview

This presentation gives a brief overview of the Sakai project. The topics covered range from the history of the project all the way up to a simple overview of the Sakai architecture. The presentation describes Sakai's placement in the market, Sakai community governance, Sakai's commercial affiliates, Sakai adoption, and a number of other topics.

Posted by csev at 11:31 AM

iPhone cannot sync contacts

This is a great entry - made me very happy.

Does anyone know how to resolve this error? I keep getting an error message stating that iTunes could not sync contacts to the iPhone because an error occurred while pushing data from the phone.

Give this a try: Go to Applications>iSync>Preferences>Reset Sync History

http://discussions.apple.com/thread.jspa?messageID=6018864&tstart=0

Posted by csev at 11:12 AM

December 07, 2007

Mission: CHUM Open House Potluck

I am making two dishes for the potluck C.H.U.M. Open House tonight (www.chumtherapy.net). I am making my Aldi's glazed ham and my sweet potato casserole. I also made a video for the occasion. I call it the CHUM Christmas Album.

CHUM Building Grand Opening

It is a surprise and will be premiered at tonight's open house. After which DVD's will be sold to raise funds.

Aldi's Ham

Buy spiral sliced ham at Aldis for $14.00
Cook covered in 250 over for 1.5 hours
Pour off liquid
Mix glaze packet with water - make it consistency of Mud
  Add brown sugar if you put in too much water
  Throw glaze in microwave for 30-45 seconds
Spoon glaze on the ham spoon it around and hit it with a 
 propane torch to make it bubble and stick to the ham as it 
 dribbles down the side.
Throw chunks of pineapple in around the ham at the bottom of
  the pan - fresh if possible - canned is OK
Put back in the oven for an hour or so uncovered 250

To serve put in a Corning dish - cut into edible chunks 
remove bone - arrange chunks and pineapple in the Corning
dish and take to the potluck

Chuck's Sweet Potato Casserole 

Five sweet potatoes peeled and cubed into chunks about
  1.5 in x 1.0 in - more than a single bite
Boil potato chunks until just cooked in water on stovetop
Drain and spread out in 9x12 glass baking dish
 Cut up 1/4 pound butter into chunks and throw in
Mix 1/4 cup Orange Juice, 4 tablespoons of cornstarch, 
  4 tablespoons of brown sugar - make a kind of mud 
  pour into the pan - the potatoes will give off more liquid.
Put in oven at 250 for an hour.

Bring mini marchmellows to the venue - just prior to 
serving put the mini marshmellows on top of the 
potatoes and pop into the microwave for a short while.

This is still in progress - I may have to update if things need adjustment.

Posted by csev at 03:56 PM

December 06, 2007

Saying: I prefer to debate people who are smarter than me. It makes me feel better when I lose.

I just came up with this quip - so I figured I would write it down.

Posted by csev at 05:02 PM

December 01, 2007

SI543 - Beginning Java for Google Android

I have packaged up the lectures, podcasts, assignments, blog entries, etc about the emergent use of Google Android in SI543 at University of Michigan.

Go here for an intro to using Google Android www.si543.com/si543/ - soon this will just be www.si543.com.

Posted by csev at 02:45 PM

Important Google Android Skill - My Applications don't seem to get updated!

If you keep making modifications and they are *not* making it down to your Android device you can wipe out the versions of the app on our device as follows. For example - I simply added a Log.i method to the onCreate method and it *never* came out - I thought I was crazy. I figured I was doing something wrong.

I don't know why it does not just overwrite the files on my Emulator - but by blasting the files on the emulator life gets much better.

Start this process with Eclipse up and running and the emulator up and running - hey try to update your app.

$ cd /Users/csev/dev/android_sdk_darwin_m3-rc20a/tools
$ ./adb devices
List of devices attached 
1	emulator-tcp-5555	device	0
$ ./adb shell
# ls
drwxr-xr-x root     root              1969-12-31 19:00 var
drwxrwxrwt root     root              2007-12-01 08:06 tmp
drwxr-xr-x root     root              2007-11-11 15:59 system
drwxr-xr-x root     root              1969-12-31 19:00 sys
drwxr-xr-x root     root              1969-12-31 19:00 sbin
dr-xr-xr-x root     root              1969-12-31 19:00 proc
-rwxr-xr-x root     root        93824 1969-12-31 19:00 init
drwxr-xr-x root     root              1969-12-31 19:00 etc
drwxrwx--x system   system            2007-11-11 15:59 data
drwx------ root     root              1969-12-31 19:00 root
drwxr-xr-x root     root              2007-12-01 08:06 dev
# cd data	
# cd app
# ls
-rw-rw-rw- root     root       139313 2007-12-01 08:06 Lunar.apk
-rw-r--r-- system   system    1325833 2007-11-11 15:59 ApiDemos.apk
-rw-rw-rw- root     root       139233 2007-11-13 16:50 Toozday.apk
-rw-rw-rw- root     root        49781 2007-11-29 08:01 Twitter.apk
-rw-rw-rw- root     root        51506 2007-11-29 12:21 Hello.apk
-rw-rw-rw- root     root        11931 2007-11-29 12:32 H2.apk
-rw-rw-rw- root     root        54804 2007-11-29 18:48 SkeletonActivity.apk
-rw-rw-rw- root     root        11931 2007-11-29 19:49 H3.apk
-rw-rw-rw- root     root       139591 2007-11-30 20:07 LunarLander.apk
# rm Too*
# rm Hello*
# rm H2*
# rm H3*
# rm Ske*
# rm L*
# rm T*
# ls
-rw-r--r-- system   system    1325833 2007-11-11 15:59 ApiDemos.apk
#   (Exit with CTRL-D)

Then run the app again - Voila!

SO far once I have done this - I can re-download again the normal way - if I get stuck and downloads seem not to be overwriting the app on the emulator - blast away!

Posted by csev at 08:22 AM