What’s Jason Up to?

Posted February 25th, 2010 in ContextWeb, Personal, Work by jayshao

Some people have commented on updates to Facebook & Linked in, so thought I’d author a quick post detailing what I’m up to these days. For anyone who’s wondering, as of January of this year, I am no longer at CampusEAI – I’ve chosen to join ContextWeb, an advertising network/exchange vendor based in NYC, as a Sr. Java Developer. While I was very proud of some of the work that we were able to accomplish in the development group at CampusEAI, and will greatly miss both the team and many of the community members (and hope that we keep in touch), it was time for me to move on to doing something different (and possibly spending some time with my family, and especially my kids).

So far, ContextWeb is a pretty neat place – a strong technical team focused on Agile(Scrum) and trying to do the right thing. One of the interesting challenges is the company is currently in the process of moving much of the infrastructure from an ASP.Net/SQL Server backend to a cloud-friendly, Java, OpenSource, and Hadoop backed system. While the shift has been going on for a while, it’s accelerated recently due to a number of upcoming product offerings and business requirements (in fact, see previous posts, ContextWeb is hiring Java devs). So it’s exciting in a lot of ways, both being able to go back to doing real coding and hands on development (apparently I do mostly remember what all those buttons in Eclipse do…) as well as working with a pretty good group of guys (though, some of those C# conventions drive me batty).

If anyone noticed that I finally gave in and really added banner ads to my blog, well I do now work for an online advertising exchange… (It’s definitely not because this site is making me lots of money)

I will still definitely be following what happens with Jasig, Sakai, and Kuali, and am optimistic that it’s an exciting time for those projects and communities – and will eagerly read anything Google flags for me to look at.

Recommended Programmer Reading

Posted September 22nd, 2009 in Portals, Work by jayshao

I was recently asked via email what training or whatnot I would recommend to bring a programming team up to speed on Java.

A couple options come to mind – depending on the overall scope of your programming team and their past experience (if I can ask – what is your past experience?) but, I generally recommend the following progression of reading (note – this is probably about 6 mo of reading, if you like reading):

  1. Pragmatic Programmer (non-language specific, but the best beginner book I’ve found)
  2. Headfirst Java (for basic/core Java)
  3. Effective Java, by Josh Block (Josh was the Architect of the Java Collection Framework)
  4. Headfirst Design Patterns (I actually love this whole series)
  5. Spring in Action (I think the latest edition was updated for 2.5)
  6. Java Puzzlers (Josh Block, & I think Neil Gaffer)
  7. Domain Driven Design, by Eric Evans

In terms of classes/training – general Java classes can be useful, but I find they generally tend to focus at too low of a syntactic/language level (understanding core concepts is important) – effective Java will give you a good feel for some of the oddities – but that your best bit tends to be to get enough to bootstrap you and start coding/testing/working.

Of course, my employer (CampusEAI) does provide focused training on topics like Java Development or Portlets, which since I had a hand in designing the modules I think hit the mark fairly nicely…

BDD with easyb

Posted July 19th, 2009 in Commentary, Work by jayshao

Recently I’ve grown increasingly fond of the concepts embodied in the “Behavior Driven Development” (BDD) outgrowth of “Test Driven Development” (TDD) and “Domain Driven Design” (DDD) . BDD is a neat twist on TDD and DDD that strives to more closely tie automated tests with both the “ubiquitous language” terminology espoused in DDD, along with an Agile-style tight integration with business users in defining the TDD tests.

A great challenge with implementing TDD I think has been the difficulty in writing tests first — often driven by a difficulty in amassing sufficient detail in terms of requirements and acceptance tests to truly generate specifications for test-first development. Too often TDD ends up being a case of writing tests after-the fact to test code which we’ve written to incomplete conceptions of what the code needs to do.

A number of toolkits have emerged recently for BDD — and recent reading at http://www.agiledeveloper.com (which has some truly awesome content) led me to a PPT on BDD using easyb. Easyb provides some tools (built around Groovy) for restructuring your code to have unit/acceptance tests written in a smooth DSL — this especially appeals to me given it’s close congruence with the way my team at CampusEAI has moved to handling our requirements and user-stories.

Cutting to the chase, easyb lets you express acceptance tests in code that looks like:

1
2
3
4
5
6
7
8
9
10
11
narrative 'description', {
as_a 'account holder'
i_want 'depost money'
so_that 'whatever benefit...'
}

scenario 'deposit money', {
given 'account 12345'
when 'deposit 10000'
then 'balance of account 12345 goes up by $10000'
}

These scenarios can then be directly tied to acceptance tests in code, and there’s even nice support for putting them in without implmeentations to be marked as “pending”. The overall sytax looks inspired by RSpec, but tied into Java. There’s even some nice reporting builtin to handle producing reports — plaintext here:

9 behavior steps executed successfully
 Story: blackjack
  scenario tie game when cards are dealt but dealer gets higher card
    given a game a blackjack game and both players have a score of 10
    when the dealer gets an Ace and you get a 10
    then the dealer should win
  scenario tie game when cards are dealt but player gets higher card
    given a game a blackjack game and both players have a score of 10
    when the dealer gets a 10 and you get an Ace
    then the player should win

– looks like this would hook in well to Maven to incorporate into something like a Maven site/build process, with some tasks existing — dreaming about a report in Hudson to graph this….

Sakai Tools – Inside/Outside the Box

Posted April 4th, 2009 in Portals, Sakai, Work by jayshao

Some interesting sakai-ux discussion tied in with thoughts I’ve been having recently related to native vs. integrated services and content in portal-type environments… where do the lines get drawn, and how do you handle horizontal services?

From a functionality/architecture point of view, the idea of loosly coupled integrations with external services like wikis, or Google Apps, or other tools seems very attractive.

however

There are significant horizontal capability components that while not impossible to resolve may complicate that scenario. Initial thoughts:

  • TOS – ensuring users understand external, but integrated tools may have separate terms of service, SLAs, data ownership/retention policies, etc.
  • import/export I think the ability to “package” and port a course/site/project or archive it is something that lots of people want. Again possible (treat external resources as links? Embed their content? Cry?) but I think it has some strong implications in user experience and architecture
  • Search – this one might actually be a bit more straightforward

I will make the observation/parallel from the portal world – CampusEAI is currently heavily involved in building out a social portal, that combines the integration of enterprise services & applications with natively managed content like blogs, wikis, discussions, profile, etc. As we continue to get further down this road, some interesting intersections between user expectations and boundaries between external and internal content continue to present themselves up.

So far the balance we’ve come up with is largely – some stuff is in, some stuff is out, but there’s continual tension on the boarders of that distinction, and I’m not confident that that particular firewall will hold or be appropriate in the long run.

Not sure I have good answers for you :) Just a brain-dump of my internal thought processes these days.

Ruby, Builder, and CourseManagementXML Data

Posted September 15th, 2008 in Sakai by jayshao

We needed to populate some training course and class rosters into Sakai to let people play with site creation, roster attachment, and publishing tests to students. While we could have used webservices, we decided to leverage the built-in CmSyncJob and generate an XML file to dump out the data, and then sync it into the CMS (we wanted something easy to check into SVN for future usage).

The fun part was it let me use Ruby’s Builder (originally part of rails, but then extracted) to produce the XML, which was fun. Builder has a nice Ruby syntax that uses

1
method_missing

to allow a nice language to XML mapping:

  puts "* Writing Academic Sessions..."

xml.tag!("academic-sessions") {
  2008.upto(2012) { |i|
    xml.tag!("academic-session") {
      xml.eid(i)
      xml.title("#{i-1}-#{i} School Year")
      xml.description("#{i-1}-#{i} School Year")
      xml.tag!("start-date","6/1/#{i-1}")
      xml.tag!("end-date", "8/31/#{i}")</pre>

And just run though a bunch of loops, and pretty clean method calls to spit out XML.

Thanks to http://blog.katipo.co.nz/?p=29 for the tips on Builder, especially the bit about using

1
tag!

to put in names which would translate to Ruby keywords (e.g.

1
start-date

where the - makes it

1
start - date

otherwise)

Comments Off

Portlets2008 and CampusEAI Annual Conference Recap

Posted June 2nd, 2008 in Portals, Work by jayshao

ландшафт. the exhaustion that was the combined CampusEAI Portlets2008 and Annual conference is now behind us, and it seems like time for some reflections and observations. Hopefully some of these items will be items which I expand upon at a future date, but in no particular order, dumped straight from my brain:

  • JSR-168 is here! Everyone really wants to write good standards compliant portlets. Architecture and engineering is a harder sell (or at least the time/cost trade-off) but there’s wide consensus that standard portlets are the way forward — at least excepting a couple of us widget fans :)
  • SOA is something people are interested in, but that there’s been relatively little forward progress on. Some is governance. Some is tools (SOAP, WSDL, and what’s this REST thing?). Some is just that it’s big and strategic, and there’s many tactical must haves. I suspect some of it is also that much of our interesting data/services are locked in vendor platforms that have shown little interest in opening up. Though, a small trend does exist of creating SOA-style services to reach into vendor platforms and extract data from them
  • Mobile wasn’t as big as I thought it would be. Not sure why. Most people seem to be interested in the abstract, but with few concrete plans. Maybe my iPhone has clouded my vision, but I do wonder if we’re going to get blindsided come fall — our target demographic is basically 18-22 year olds, afterall…
  • AJAX in portlets is still hard. There are some tricks like wrapper divs, namespacing, and builtin support and integration patterns, but it’s still not a common practice.
  • Identity Management is big. Governance is a big thorny issue, though many IT departments are rolling out vendor products from big players (Oracle, Sun, a little IBM) in the interim, tho ugh the exact scope of those items is somewhat unclear.
  • Oracle is really putting portlets in lots of interesting places. Webcenter. Product mashups. Inside BI tools, and other GUI devices. I think they’ve probably embraced the architecture more than any other major vendor which is an interesting trend.
  • Lots of awareness, and wanting to look at uPortal 3. Ooohs and ahhs over both the AJAX D&D, and maybe more importantly the new content adding UI — good going Jen!
  • Really beautiful portals — some, though not all new portals really seem to be breaking out of the lots of boxes approach, or at least wrapping it in neat functionality like Boston College’s Agora design. Nifty trend. Sign of maturity?
  • Community Development is hard. Aligning roadmaps, agreeing on implementation strategies, and putting all the pieces together is challenging. Even more so, justifying “doing it right” (and fit to share) versus quick and dirty, or getting a student up and running was a big trend. Makes my inner-engineer quail, but my inner-economist says that throw-away code lowers the barrier for solving problems, which is a good thing. Evolution isn’t always pretty and all that.
  • Lots of desire for training, best practices, and advice on policy and governance. Real role for communities of practice, not just code and software.
  • Increasing interest in “Enterprise Learning Management”. Lots of worries about migration, but the beginning of seeds wondering whether our current platforms are sufficient for a foundation for the next 10-15 years, and University strategic goals. Of course, some of this is the “enterprise IT guys” getting pulled into the LMS discussion for perhaps the first time in many places.
  • Good beer is key to facilitating interesting non-session discussion. Content is king on the program, but largely only because it gets people in one place and produces interesting spontaneous interactions. Hands-on is something everyone wants, but it’s not clear a conference composed of many 1 hour sessions is the right format to deliver it.
  • University IT teams wear many, many hats.
  • British Universities seem to have a much richer and more abundent IT project management structure than (most) American schools. Really interesting thread about Imperial College in London blending ITIL and Agile methodologies.

Flying

Posted February 28th, 2008 in Personal, Work by jayshao

(Actually from last night during the flight, but then I got home…)

As part of my new position for CampusEAI I’ve had a fairly aggressive travel schedule over the past few weeks (the cost of not relocating). It has however forced me to become much more closely acquainted with the airlines (and Continental in particular) and prompted a few observations:

  1. Upgrades: Getting upgraded is nice. The biggest problem? Generally people who travel enough to get upgraded are flying on business — and — hence flying at the same time as others flying on business (who fly even more). It’s almost disheartening to watch half the people waiting for the flight standup when they’re boarding Elite Access. Still, it’s nice when it happens.

  2. Delays: So far out of 6 flight segments between Newark (EWR) and Cleveland (CLE) I’ve been delayed 3 times. It doesn’t seem possible to get delayed by less than about an hour either, though so far I’ve been fortunate enough with nothing longer than about 2 1/2. Still, a 50% hit rate is pretty… good? bad?

  3. Airline Clubs: Worth every penny. If you travel a lot. Normally I try to cut my arrival at the airport pretty tight with my flight departure, to grab more time at home with the kids, but during those aforementioned delays… There’s a big difference between an hour delay in the concourse fighting it out with other grumpy bench residents, and an hour delay while sitting in the lounge on the wifi, by the bar, munching on an apple.

  4. Security: Surprisingly I’ve actually gotten used to security — to the point where someone I was traveling with was like “wow — that’s crazy” and my instinctual response was “eh”. Of course, I no longer travel with belts, a watch, coins in my pocket…

  5. Pricing: This is kind of a crazy subject. Right now — a Sun-Wed roundtrip between EWR-CLE is ~ $260. A Sun-Tue roundtrip? ~ $850. Whaaaat!?!?! I’m not sure that there’s any way to explain that other than trying to segment the market into business travelers,since who else would stay less than 3 days? Though, if I book 2 weeks at a time, with 2 weeklong stays that just happen to overlap… hmmm…

In general, business travel (especially regular, sustained travel) has been something to endure. It feels good to vent though :)

Jason’s Employment 2.0

Posted February 17th, 2008 in Personal, Portals, Sakai, Work by jayshao

Well the questions are pouring in (mostly due to my tardiness in writing this kind of announcement) and so, without farther ado…

What Happened?

While it still feels a little strange to say it, as of 2 Fridays ago (2/8) I am no longer employed at Rutgers University. Over the last 9 years as first a student, then staff member, I’ve had the chance to: first study under, and then work with some incredible people. I’ve gotten to watch projects and services grow and evolve into solutions that are used every day by tens of thousands of students, faculty, and staff.

Before addressing my personal situation, I feel the need to speak a bit about the Rutgers Sakai deployment which up until now has occupied so much of my thoughts and energy. I was fortunate enough to see myRutgers grew into a service providing tools and services to every student at Rutgers. Sakai usage is currently somewhere on that curve, with usage growing by leaps and bounds. This Spring’s semester in many ways feels like a qualitative shift in the nature of the service — marked by a huge increase in the number of students asking “where’s my class’s Sakai site.” This semester these questions are particularly significant, as many of them are coming from students in classes where either:

  1. Class was not yet in session. This is a big change from the dynamic in previous semesters where students typically visited the first meeting of their class, and were then directed to visit the Sakai site. Now students are looking to visit the Sakai site to see the syllabus, readings, and get a leg up on going to that first class.
  2. Their instructor had not created a site. Sakai seems poised to make the jump into ubiquity, as in some students minds it’s already there.

Now to handle the really common question — if the Rutgers Sakai deployment is so clearly poised for greatness, where am I going and why? Well…

Starting this past monday (2/11) I have taken a position with the CampusEAI Consortium, where I will be serving as the Director of Open Source Solutions. Recent years have seen a huge upswing in the popularity, and visibility of open and community source solutions in Higher Education. Sakai, uPortal, CAS, Kuali, and othes have garnered attention, awards, and deployments. Due to significant interest expressed by member institutions, CampusEAI is looking to complement its existing strengths on the Oracle platform with broader offerings in the open-source space.

Answers to some personal-ish questions:

Are you moving to Cleveland?

No, I’m going to be based out of NJ, though Continental is certainly getting a good chunk of my time for the next few months as I schlep back and forth.

What does Lisa think?

She’s excited. Well, more excited when I’ve been gone < 2 days as opposed to > 3 days…

What do the kids think?

The kids are still getting used to not picking me up at Rutgers. They think it’s really funny that daddy works somewhere they can’t see. Sunday nights are hard. Phone calls are bittersweet. Coming back is good.

Aren’t you on the JA-SIG Board?

Yes. When my career change became definite I notified the board at the January video call. JA-SIG has always been a community of volunteers (stellar volunteers more often than not) and particular given my new employer’s willingness to continue backing my involvement in JA-SIG it was felt that there were no significant barriers to my continuing to serve in this capacity. As always, JA-SIG

So… is your Rutgers job open?

Yes. Though (see below) I’m hiring too…

What’ll I be doing?

So what does this mean in concrete terms? My personal definition is pretty simple. We’re looking to help members deploy solutions built on open source software. Given my background, Sakai, uPortal, CAS, and maybe even Kuali are obvious possibilities. I think however, that it’s a broader story than just support for deploying a few specific products. Many institutions have experienced challenges in building around open-source due to shortages in staffing or specific skill-sets. Others have successfully deployed open-source solutions, but been burned trying to deepen integration, or due to staff turnover (a problem which I should note also happens around commercial solutions). So the goal of this new unit is to make deploying solutions built on open-source:

  1. Easy
  2. Cost Effective
  3. Low Risk
  4. Sustainable
  5. Did I say easy?

Basically the goal is to allow schools to leverage the strengths inherent in the open-source development model:

  • Try before buy
  • Rational licensing and cost-containment (instead of getting wracked with heavy licensing burdens as you get “too successful”)
  • Open implementations, generally of open standards
  • Economy of scale versus custom developed institution-specific software
  • Freedom from vendor roadmaps and strategy shifts — even to go as far as obtain competitive bids from multiple vendors on the same solutions
  • Peer interaction with really bright people working hard to solve the same problems you see

So that’s the goal. Make open-source easier, removing barriers for schools large & small — the kind of topics that have continually been commented on lists, in journals, and at conferences. Reducing installation pain. Helping with patch management. Providing support and training. Taking the pain and risk out of going open-source, all while working to make strategic contributions to enable the production of more good software.

It should be exciting.

P.S. Did I mention we’re hiring? Drop an email talking about your love for open-source, and how you really want to join in making it easier: jason_shao@campuseai.org. Oh, and mention you saw the posting in my blog ;)

SakaiCon Recap

Posted December 8th, 2007 in Sakai, Work by jayshao

Sitting on a flight, returning from the Sakai conference — still trying to take everything in. There’ll probably be more musing on the significance of specific items coming up, but things that struck me enough to want to brain dump were:

  • There was wide consensus during the planning sessions that there’s a desire to focus on quality: reliability, testing, performance, and other traits, over new feature development.
  • The community is moving from a development -> production mindset. The transition of many of the core schools from pilots or development efforts into full-blown production instances has certainly changed priorities and outlooks.
  • Increased desire to pick up open-standards in preference to inventing our own. JSR-168 (Unicon demoed a cool Portlet-Tool for Elluminate integration), JSR-170 and the good work Ian is doing to integrate with repositories like Jackrabbit and Xythos, CAS Authentication (vis-a-vis Dan M.’s sweet CAS-embedding UserDirectoryProvider)
  • There’s a lot of commercial activity around Sakai. RSmart, Unicon, Oracle, IBM, bit players like Mark Norton & Zack Thomas. I sat in a presentation about the work I did with FIDM for CampusEAI. I even talked with another developer who has already resigned (as of Jan 1) from his university to join his part-time venture (with others) full-time. Certainly a large, vibrant marketplace.
  • Many sub-groups are organizing around Sakai. In addition to our very own NYC Regional group, there are groups in California, Australia, the Netherlands, and other places. They’re holding events, sponsoring training, and moving forward.
  • It’s not just regions — there are an increasing number of functionally aligned teams. Developers, Designers, and Managers are the best organized and served. I also saw a lot of User Support people or academic technologists as well. This is the group I suspect may be the next to organize — a CAFE track focused on bringing user support people up to speed or sharing experiences/resources would probably be really valuable.
  • Lots of parallel activities. Many examples of SIS integrations, library integrations, documentation & training, tool development. Unfortunately, communication barriers and other difficulties seem to be producing several duplicate/parallel efforts (e.g. Yale’s SignUp tool, EDIA’s signup tool, Stanford’s efforts around this space) though there is a desire to collaborate.
  • Some stuff is still too hard: authentication integration, CourseManagement integration, libraries work, documentation, training are all pain points, especially for smaller teams/schools.
  • Strong community. It’s easy to get lost in a group of smart, affable people moving towards a common purpose. Had an excellent time, and there’s a good sense of camaraderie weaving throughout the community. People are friendly and helpful.
  • Twitter – yeah, it’s kind of narcissistic, but at an event or convention it can certainly be a lot of fun. Both to do self-organizing (e.g. dinner?) and to pull in people who are in the circle, but not present.
Comments Off

Events

Posted October 18th, 2006 in Personal by jayshao

I’m interested in topics like Open Source Communities, Development Methodology, Enterprise Portals, User Experience/Interface Design, Instructional Technology, and Identity Management and try to make it to relevant conferences and meetings when possible.

Upcoming

Limited events coming, though I’ve become pretty involved in the local Meetup Community in NYC.

Past

Portlets 2009 @ Canada

EDUCAUSE 2009

Portlets 2009 & CampusEAI Annual Conference (Cleveland, OH)

Jasig 2009 (Dallas, TX 3/1-3/4) Attending the 2009 Jasig & Community Source conference. Will be presenting a bit on some of the work we’re doing in myCampus around extending CAS for SSO w/blackbox applications, as well as covering Eugene’s presentation on Cross-Platform portlet development.

EDUCAUSE 2008 (Orlando, FL)

Jasig Unconference (Madison, WI)

Portlets 2008 & CampusEAI Annual Conference (Cleveland, OH)

Gettysburg Portals 2008 (Gettysburg, PA)

Sakai Conference (Paris, France)

Sakai Conference (Newport Beach, CA 12/4-7) – Attending the Sakai winter conference in Newport Beach.

JA-SIG Unconference (New Brunswick, NJ 11/12-13) – Am very interested in exploring portal-LMS integration and the roadmap/direction for the new uPortal 3 effort.

NJEdge Conference (10/31-11/2) – Presented a talk on Virtualization in Development and Testing.

EDUCAUSE (10/24-26)uPortal Training Conference (U. of Dundee, Scotland 10/15-19)

NYC Sakai User Group Meetup (NYU 9/25)

JA-SIG Summer 2007 (Denver 6/24-27) – I was on the conference program committee for the summer JA-SIG conference, and delivered a pair of Sakai related presentations.

  • Integrating External Services With SakaiWednesday, June 27, 2007, 8:30AM-9:30AM
  • Tuning Sakai for ProductionMonday, June 25, 2007, 4:45PM-5:45PM

Sakai Conference (Amsterdam 6/11-13) – Attended the Sakai Conference, to get up to speed and meet some of the various members of the community.

Portlets 2007 (University of Montana, May 16-18) – CampusEAI and the University of Montana organized a workshop/conference focused on portlet development. I presented 2 sessions, as well as met and networked with a number of University portlet developers. The sessions were:

  • Portlet development using the Spring Framework. (slides)Thursday, May 17, 3:30PM – 4:20PM
  • Central Authentication Service – CAS (slides)Friday, May 18, 10:30AM – 12:00PM

Spring 2007 uPortal Developers Meeting (JHU April 23-24) – XHTML/CSS theme work and anything that I’ve been doing with Jen from Yale related to AJAX D&D customization. Only made it to one day of this and dinner, but got to talk to a lot of other uPortal developers, and also picked up some Sakai tips to boot :) Emerging Technologies for the Enterprise (Philadelphia March 28-29) – Chariot Solutions is sponsoring a conference to talk about Enterprise, lightweight Java, Web 2.0 etc. I’ll be presenting:

  • Leveraging RSS in Enterprise Integration (slides)Thursday, March 29, 1:00PM – 2:00PM

JA-SIG Winter 2006 (Atlanta 12/2-5) – I presented/facilitated a number of sessions.

  • Assessing Identity Management Maturity: A Rutgers Case StudyMonday, December 4, 2006, 3:30PM-4:30PM
  • Identity Management Best Practices DiscussionMonday, December 4, 2006, 4:45PM-5:45PM
  • uPortal User Experience DiscussionTuesday, December 5, 2006, 11:30AM-12:30PM
  • Providing Calendar Data within the PortalTuesday, December 5, 2006, 3:30PM-4:30PM

Fall 2006 uPortal Developers Meeting – Attended via video conference the uPortal developers meeting hosted at UW-Madison.Spring Forward 2006 – Attended this conference sponsored by Philly Spring JUG and Chariot Solutions. Was good, well focused, and seeded with implementors.Spring 2006 uPortal Developers Meeting – We hosted this one at Rutgers. JA-SIG Summer 2005 (Baltimore) – My first JA-SIG conference. I presented some of my experiences related to customizing the uPortal user interface.