This comes from Brian Fitzpatrick and Ben Collins-Sussman
Every open source project runs into people who are selfish, uncooperative, and disrespectful. These people can silently poison the atmosphere of a happy developer community. Come learn how to identify these people and peacefully de-fuse them before they derail your project. Told through a series of (often amusing) real-life anecdotes and experiences.
http://www.red-bean.com/fitz/presentations/2007-07-26-OSCON-poisonous-people.pdf
http://video.google.com/videoplay?docid=-4216011961522818645
I thought it was pretty cool.
The deadline for student applications for Google Summer of code is Monday March 31, 2007 at 5PM Pacific time (USA)
I have been corresponding with about 15 students over the past week helping them clarify their proposals. We have 4 filed proposals so far and several are pretty solid. I am sure at the deadline we will have at least 10 more.
If you have interested students that you want to apply for the program - make sure they put in at least a basic application before the deadline so we can talk to them.
Since time is short - if students want help from me - have them send me a 2-3 paragraph proposal as best they can write it and I will send it back with comments to help add some detail.
If you have any questions send me a note.
/Chuck
Here is the student application page:
http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants
Here is a description of the Sakai entry in SOC:
http://code.google.com/soc/2008/sakai/about.html
Here is the project ideas (just a starting point) page:
http://www.sakaiproject.org/soc2008/
I just found out that Ann Arbor has an excellent Karaoke Box / Karaoke Room called Blue Karaoke:
http://www.bluekaraoke.com/Main.aspx
Damn!
They don't serve beer - but you can bring your own.
There is also a small box karaoke just south of West Hall On East University - 1/2 block north of Red Hot Lovers on the east side of the street on the second floor of a house - I have never been there -but I just want to remember it.
Also this:
Friends Karaoke
621 Church St
Ann Arbor, MI 48104
(734) 994-7979
I also have not experienced this one either. Just notes for the future.
Of course we have the Sakai Authoring Workshop with Jim and the IMS Quarterly meeting in June - so I am getting prepared for a good time in the evenings - we start at the Ann Arbor Brewing Company and then move to Karaoke - like sweet.
Over the weekend my brother-in-law Ted came up for Easter. He wanted to catch up on a few Jericho episodes he had missed this month because he lives in the country and I have Comcast HD On Demand which replays Jericho (sweet). Ted is the guy who put in my wood floor - he stars in the my hardwood floor video.
So I watched five straight episodes with him - and now I am hooked. Tonight is the finale - which I will miss because I am teaching - Drat!
The plot is really cool. It is a post-apocalyptic USA where things got lawless for a while and then a series of new governments tries to take over and restore order.
It is so cool - there is a kind of bumbling new government/army which is secretly under the control of a company and the army is always running around trying to fix things but never really gaining control. Then company that controls the government is called Jennings and Rall (J and R) Because J & R controlls the government, they are always above the law and doing bad things all the time. The civilians are just mostly confused - they dislike J & R all the time - the army/government claims to be on the side of the people and only interested in order - but the government always lets J & R do whatever they want with no consequences.
So the people go between almost revolting, hiding, and timidly working with the government and J&R. All of the characters from all the groups are always conflicted - they do the right thing some times and the wrong thing at other times - even some J & R employees seem nice and do the right thing at times - but J & R seems evil most of the time.
Lots of cool symbolism around current events. Plenty of action - a neat ensemble cast - and a large enough cast that lots of drama happens - like folks getting killed etc etc.
It all comes to a head tonight in the finale. So don't tell me how it turns out. And now that I like the show - of course it is cancelled - drat.
And the funny thing is that I think that one of the characters (Major Beck) looks a lot like Michael Korcuska in a flak jacket.
These are just notes so far
What is the Problem and how to use Log and Transfer:
http://www.macworld.com/article/131409/2008/01/finalcutexpress4.html?t=103
Pulls in MTS files in AVCHD - has a demo mode:
http://shedworx.com/?q=volmac-home
Thanks to some timely prompts from Jason Shao and Jon Gorrono on the dev list and some quick action from Michael Korkuska, Rob Able (IMS), and Lisa Mattson (IMS), we were able to submit an application to Google Summer of Code.
We were selected by Google as a mentoring organization! Which now means we need to met and recruit some students for the program - yayay!
I will be the main mentor - if others are willing to help - that is great - take a look at the ideas page and see if anything interests you and if you are willing to help. The effort is not just Sakai - it is about interoperability across learning management systems in general. We can use help with Java, PHP, and Ruby.
SInce this is our first year - we will probably be allocated a few students. Google SOC likes to see how well you do in your first year. Success this year leads to greatly increased likelihood of selection and greater numbers of students in following years. So I will work hard to make this a success for the students and for Sakai. Conveniently I am done with my teaching responsibilities just as the program starts in April so I should have plenty of time over the summer.
I will keep the community apprised as the student selection process progresses. If you have particular students that you think would be a good fit encourage them to apply.
Here are some URLs:
Google's Sakai Announcement
http://code.google.com/soc/2008/sakai/about.html
Google SOC Page:
http://code.google.com/soc/2008/
Sakai Ideas Page:
http://www.sakaiproject.org/soc2008/
I ended up with some time on Saturday night after the Pycon 2008 conference so I went to a movie. I figured I would go to a movie that only I would like - something intellectual and arty. So I went to "No Country for Old Men" as the time was right and I had no idea what it was about.
First the good news
The acting was excellent - there were many richly developed characters and there was plenty of on-screen time for the characters to develop. The filmography was superb - it transported you to wherever they wanted you to be - the feeling of Texas - the vastness - the solitude. The feeling of isolation when you are running away - the lighting to enhance the scene - all superb. The editing was excellent - they moved from scene to scene nicely - not so quick as to get you all excited - but at the same time not obsessing on any one moment - just enough for you to fully comprehend and reflect - and then on to the next scene.
Now the bad news
The plot left me a little wanting. Usually when you get to know a bunch of characters very deeply - you want the characters to interact. This pretty much was one of those buddy/travel films - kind of like "Planes, Trains, and Automobiles" but with a lot of shooting. But the violence was filmed very effectively - again taking you to the place where the film maker wanted you to go.
Overall
I am glad I went to this move and paid a bunch of money at the theater to see it. I am also glad that no one came with me to see the film. Under my geek/Star Wars fan exterior - I very much appreciate the film as art form. My first class in college was a literature and film class (ENG347) which explored a bunch of black and white films by Francois Truffaut. This film reminded me of film as art.
Reference: http://en.wikipedia.org/wiki/François_Truffaut
The cynic in me wants to assume that this was done primarily for the Academy Awards - almost like some comedies are a series of sketches - this almost felt like a series of really good acting/film class final projects submitted to the academy on a single reel. But it cleaned up at the Academy Awards - it is hard to argue with success.
But I do not want to end on a negative tone - this film was art and well acted - and I was happy to pay my $10 ticket and $10 popcorn to see it but I won't buy the DVD and suggest that you only go to see it if you appreciate the art form - and yes it is plenty violent.
Sometimes when you unplug a headset from the iPhone it gets lost and confused and you can neither hear nor talk using the internal speaker or microphone. Interestingly - it works as a speakerphone but not as a regular phone.
Quick tip: If you answer a call and put it to your ear and cannot hear - don't panic - switch to speakerphone this will work.
Solving the problem: Solving the problem is simple - just insert and remove your headphones three times and voila - it works!
References:
http://discussions.apple.com/thread.jspa?messageID=6830349
This is my abstract for my JA-Sig talk
The current crop of Learning Management Systems are focused very much on meeting the needs of the institution in providing a basic, uniform technology platform for teaching and learning. However, faculty and students are often familiar with setting up accounts, joining various types of sites and adding themselves and friends to those sites, and figuring out new systems by trial and error. The next generation of Virtual Learning Environments needs to allow this type of organic "mash-up" and make it simple enough to place in the hands of the end users of these systems. In a sense Virtual Learning Environments need to adopt approaches like Facebook, iGoogle and YouTube for learning application integration. IMS Learning Tools Interoperability 2.0 is a standard under development which addresses this functionality mash-up use case. This presentation will talk about issues and approaches for building the next generation of Virtual Learning Environments.
Long Version as Originally submitted ------
The current crop of Virtual Learning Environments (VLEs) is focused very much on meeting the needs of the institution in providing a basic, common technology platform for teaching and learning. While the creators of VLEs (indeed including Sakai) are interested in bringing the best possible technology to bear on teaching and learning, generally their first priority is to meet the needs of the enterprise in terms of identity integration, auto-population of courses, ease of institutional technology support, automatic grade processing, and similar issues that impact the enterprise’s abilities to provide a consistent and reliable system. This consistency of experience and ease of support is often reinforced, for example, when an institution is trying to convince recalcitrant faculty to use technology in teaching, and the faculty demands that the VLE system be very simple and that they are given training on precisely how to use the system. Here, the value of single sign-ons for users, auto-creation of class sites, and auto-population of class participants, simplicity and consistency across the institution in training needs, and automation of basic processes are very apparent.
However, faculty and students who are familiar with the Internet and Web find this homogeneity very limiting. They are often familiar with setting up accounts, joining various types of sites and adding themselves and friends to those sites, and figuring out new systems by trial and error. These users are more interested in support for their need to experiment with new ideas in their teaching and learning environments and then evolve/improve those ideas as they go along, often switching directions quickly and coming up with completely new approaches in the process. The monolithic VLE system is too hard to customize at the individual user level, and evolves far too slowly to meet the teaching and learning needs of those who actually want to use the Internet and Web creatively in their teaching and learning. These users ultimately want their teaching and learning environments to be under their personal control - just like the rest of the web.
Aloha,
I'm a new developer writing a new tool, this tool will be usable only by Teachers and Administrators, not visible by students at all.
Do I use the SecurityService for this?
Thanks. Juan.
---- My Response Below ---
Juan,
This is pretty easy. Take a look at this document:
https://source.sakaiproject.org/svn/reference/trunk/docs/architecture/sakai_workgroup_portal.doc
Here is an excerpt from that document.
<registration> <tool id="sakai.rutgers.linktool" title="Link Tool" description="A tool to link to external applications."> <category name="course" /> <category name="project" /> <!-- Allow this to be set --> <configuration name="functions.require" /> </tool> </registration>
As we explore the use of these features, remember that the key value of functions.require is to make tools disappear when a user is missing a permission. So this allows a site to have many tools that are all there when people are logged in and then have those buttons disappear for anonymous users or for users with or without a particular role.
In Sakai 2.3 there were very few tools that made use of this capability - for the Rutgers link tool the key was to allow a tool (and its page) to be suppressed for students if it was a link to a campus-wide grading system. In this example the tool registration does not specify which function was required to include the tool in the buttons on the left hand side of the Sakai display. For the link tool, often a function like site.upd was used as an indicator of highly powered users - any function will do - it does not have to be a function for the tool itself. Another possible function might be content.new if this function were only given to instructor or maintain roles.
Here is an example of the use of this in the resources tool registration:
<registration> <tool id="sakai.resources" title="Resources" description="For posting documents, URLs to other websites, etc."> <configuration name="home" value="" /> <configuration name="optional_properties" value="true" /> <configuration name="user_sees_all_their_sites" value="true" /> <configuration name="collections_per_page" value="50" /> <configuration name="resources_mode" value="resources" type="final" /> <category name="course" /> <category name="project" /> <category name="portfolio" /> <category name="myworkspace" /> <configuration name="functions.require" value="content.read" /> </tool> </registration>
The full file is here:
https://source.sakaiproject.org/svn/content/trunk/content-tool/tool/src/webapp/tools/sakai.resources.xml
So after all that - the quick summary is that if you want to hide a tool except for Site Owners, add a line like
<configuration name="functions.require" value="site.upd" />
To your tool registration.
A nice thing is that all this functions.require sets is the default value - it can be overridden by tech support on a a case by case basis once the tool is placed in a site. I think that the Page Order tool also changes this property on a tool placement as well - so if you enable page order, I think that even the instructor can fiddle with this setting on a case by case basis.
/Chuck
The application for the Google Summer of code has been submitted.
http://www.sakaiproject.org/soc2008/
Some Basic Ideas for Projects
The basic ideas focus on building simple but fully functional IMS LTI Consumer applications in a wide variety of environments as well as developing simple reference implementation(s) of the IMS LTI Producer. Depending on the skills and number of the selected students we may actually do quite a number of these projects.
Many of these tasks consist of downloading the software, learning the pattern for developing an extension for the program and then producing an LTI extension compatible with the Learning Management System.
Build an IMS LTI Consumer for Moodle
Moodle is a very popular open source Learning Management System written in PHP. Moodle is widely used in K12 and higher education. We would hope to produce a contributed tool which implements LTI Consumer for the Moodle community. Language: PHP
http://www.moodle.org (Ohloh)
Build an IMS LTI Consumer for ATutor
ATutor is an open source Learning Management System developed by the University of Toronto. ATutor pays particular attention to learners with different capabilities and is designed with accessibility and adaptability in mind. Language: PHP
http://www.atutor.ca/ (Ohloh)
Build an IMS LTI Consumer for Elgg
Elgg is a flexible social networking system which provides organizations with their own locally controlled instance of many common web tools such as WIki, Blogs, social networks etc. Language: PHP
http://elgg.org/ (Ohloh)
Build an IMS LTI Consumer for the Chisimba Framework
Chisimba is a web 2. 0 application environment particularly focused on functionality mash-up. Chisimba is developed at the University of the Western Cape in South Africa and is a follow on to the KEWL Learning Management System. Language: PHP
http://avoir.uwc.ac.za/ (Ohloh)
Build an IMS LTI Consumer for Drupal
Drupal is a content management system that has support for social networking. Drupal is used in many situations where an organization wants a portal with social networking capabilities.
http://drupal.org/ (Ohloh)
Build a Ruby Reference Implementation of LTI Consumer
This will truly be simply a reference implementation of the LTI software. This is some very initial work with an intent to build simple reference implementations for all IMS Specifications. Ruby Toozday is not intended as production-ready software - it is only a technology demonstrator. Language: Ruby
http://www.rubytoozday.org/ (Ohloh)
Build a Ruby Reference Implementation of LTI Producer
One of the advantages of being only a demonstrator is that it is much easier to modify and experiment. Ruby Toozday already has simple support for IMS TI Producer but this needs to be improved. We can use this effort to experiment with adding and using some run-time capabilities to IMS LTI. Another key focus of this effort is to understand and document the unique architectural, performance, and data modeling aspects of building an application to be mashed up using IMS LTI. Language: Ruby
http://www.rubytoozday.org/ (Ohloh)
Build an IMS LTI Consumer for Google Android
Dr. Chuck taught a Java class in Fall 2007 which experimented with building simple Google Android applications (www.si543.com) - we could expand the sample applications produced by this course to be a simple IMS LTI Consumer. Language: Java
Ideas: Advanced
Build IMS LTI Producer for Sakai
This effort will add the necessary capabilities for Sakai to export individual Sakai tools and sites as IMS LTI Producer endpoints. This will be significant work because of the changes to internal Sakai structures to support the new course provisioning demands which Sakai must handle to support LTI producer. Language: Java
Build IMS LTI Producer for Moodle
This effort will add the necessary capabilities for Moodle to export individual Moodle tools and sites as IMS LTI Producer endpoints. This will be significant work because of the the new course provisioning demands which must be handled to support LTI producer. Language: PHP
Explore Proxied Access for IMS LTI
Currently the IMS LTI standard describes provisions for iframe, popup and proxied access to LTI tools. However there is no specifications far for *how* the proxy version of tools would be accomplished. This work would start with a survey of the variaous proxy approaches such as ad hoc HTML proxying, Web Services for Remote Portlets (WSRP), Facebook Markup Language, Google Widgets, and other approaches. Based on this survey we would build simple proof of concept code demonstrating feasibility of the selected approach(es). Language: Various
If you are an avid Dr. Chuck Blog reader - you recall on November 9, 2007 when I upgraded to Leopard for the second time and lost my modification dates on my files. I was too lazy to re-do the upgrade so I was left with a bunch of files with November 9, 2007 modification dates making ls -l look yucky.
http://www.dr-chuck.com/csev-blog/000139.html
I made a mistake of not reading my own earlier blog entry telling me how to properly backup and restore my home directory over a Mac OS upgrade.
http://www.dr-chuck.com/csev-blog/000381.html
Apparently I am not such an avid reader of the Dr. Chuck Blog.
Well today I rectified the situation and have my files dating back to 2004 and earlier - I don't have a bunch of files tantalizingly telling me "November 9, 2007" - teasing me and telling me that the actual date was much earlier. I also figured I should do some Python coding this week to get up on my game as I go to Pycon 08 in Chicago next week - and hang out with none other than Steven Githens- the official badge maker of Pycon 2008!
I had saved that backup from November 2007 and vowed to write some code that would scan my current home directory and look for files with suspect modification dates (right around November 9, 2007) and grab the modification dates form the backup and patch my current home directory.
Then and only then would I be willing to "let that backup file go". It was keeping me from reformatting a nice 320GB USB drive that I had orther uses for...
So I wrote some Python - below that uses the nice Python os.walk() capability along with the os.stat() capability, and os.utime() capability.
It turned out to be surprisingly elegant and simple in Python.
It ran pretty quickly in about 5 minutes (even reading off USB) and ended up patching about 110,000 files with the right modification date in my laptop home directory. I had a couple copies of my home directory (Mac Air, Mac Pro, and my 320GB extended home directory on USB drive) - and I patched them all.
I include the code below - with the utime() call commented out - so it does a dry run until you are happy with the results and then uncomment the utime(). It nicely can be run over and over - it only patches files in the suspect date range - once the files are moved to their proper earlier time, they are no longer candidates for patching. You can even run it live decide to freak out - press CTRL-C and start over - it will silently glide right past the already patched files.
import os
import string
import datetime
# Our bad restore happened on
# Fri Nov 9 16:14:36 2007
baddate = 1194642876L
# So we suspect things two days before and after
badbeg = baddate - (2 * 24 * 60 * 60)
badend = baddate + (2 * 24 * 60 * 60)
dbeg = datetime.datetime.fromtimestamp(badbeg).ctime()
dend = datetime.datetime.fromtimestamp(badend).ctime()
print 'Fixing any file with modification between',dbeg,'and',dend
# currpath - the directory which needs fixing
# backup - the directory with the backup
currpath = '/Users/csev'
backup = '/Volumes/UserHome/Users/csev'
iter = os.walk(currpath)
count = 0
nextprint = 0
while True:
entry = iter.next()
pwd = entry[0]
# print entry
if pwd.find('/.') > 0 :
continue
for dir in entry[1] + entry[2]:
# print dir
if dir[0] == '.' :
continue
cname = os.path.join(pwd,dir)
try:
sv = os.stat(cname)
except:
print "Could not stat",cname
continue
ca = sv[7]
cm = sv[8]
# print cname,ca,cm
if cm < badbeg or cm > badend :
continue
bname = backup + cname[len(currpath):]
try:
bv = os.stat(bname)
except:
print 'No Backup', bname
continue
# Now we have a backup file - get the times
ba = bv[7]
bm = bv[8]
# print ' ',bname,ba,bm
# no need to change the times if the backup
# is not older than current
if bm > cm:
print 'Backup not older than current ',bname
continue
# We already know we want the backup's mod time
gm = bm
# If the current access time is in the bad range
# we take the one from the backup
ga = ca
if ca >= badbeg and ca <= badend:
ga = ba
newmt = datetime.datetime.fromtimestamp(gm).ctime()
# Go ahead and set the modification and access time
times = (ga, gm)
# print times
try:
# os.utime(cname,times)
print 'Fixed',cname,times,newmt
except:
print 'Unable to Fix',cname,times,newmt
# Here is how we get the value for baddate
# import os
# oname = raw_input('Enter a file:')
# sv = os.stat(oname)
# oa = sv[7]
# om = sv[8]
# print ' ',oname,oa,om
I was reading the uPortal lists and Cris Holdorph of Unicon made the following post:
The google portlet code is here:
http://code.google.com/p/googleportlet/
I will answer questions about the code here, but a more appropriate place would probably be: portlet-user@lists.ja-sig.org which I am also subscribed to.
All of that being said, the googleportlet does not do any web proxying at all. I think the code is interesting, in it's simplicity, but it is not a general purpose solution to the problem of proxying.
You can also check out all of the articles and blog posts on www.unicon.net. I have several other portlet examples there.
---- Cris J H
So I went to his code site and downloaded the war file. I dropped the war file into a Sakai I had - initially it did not come up because of an empty web.xml. So I put in a stock Pluto 1.1 style web.xml (below) into the file and restarted.
Up it came and worked flawlessly - and of course with no frames.
Screen Shot of Cris Holdorph's Google Portlet in Sakai
Another nice quick test of Sakai's JSR-168 support.
<display-name>Google Portlet</display-name>
<servlet>
<servlet-name>GooglePortlet</servlet-name>
<servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>GooglePortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>GooglePortlet</servlet-name>
<url-pattern>/PlutoInvoker/GooglePortlet</url-pattern>
</servlet-mapping>