tag:blogger.com,1999:blog-343415512024-02-21T04:45:57.372-05:00Aaron Zeckoski Technology LeadershipAaron Zeckoski is a technology leader recognized for his expertise in educational technologies and learning systems. He has been an open source architect working on learning systems projects like <a href="http://sakaiproject.org/">Sakai</a>. This is a technical blog about software engineering, servant leadership, and whatever else.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.comBlogger64125tag:blogger.com,1999:blog-34341551.post-41397442287634475942018-04-01T13:27:00.004-04:002018-04-01T13:27:54.550-04:00Posting on MediumI'm posting my new articles over on <a href="https://medium.com/@azeckoski">Medium</a>. Please <a href="https://medium.com/@azeckoski">check them out over there</a>.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.comtag:blogger.com,1999:blog-34341551.post-16457883047153739852018-03-25T19:43:00.004-04:002018-03-25T19:47:02.381-04:00Leading Softly<blockquote class="tr_bq">
<span style="color: purple; font-size: x-small;">I'm coming back to blogging after a few years buried under project work, and I want to explore some lessons learned as a technology leader managing a department growing rapidly and going through significant changes. My department builds educational software products and has grown from a couple employees and a dozen consultants to over 70 employees and 100 contractors/consultants over 3 years.</span></blockquote>
The saying goes, "What got you here, won't get you there". This is especially true for leaders in technical fields like software engineering. It means you probably have the <a href="https://www.thebalance.com/hard-skills-vs-soft-skills-2063780" rel="nofollow" target="_blank">hard skills</a> (coding, automation, design, coordination, etc.) and logical problem solving that helped you be successful as an individual contributor. Now you are in leadership and probably finding those skills are not helping you solve the same problems. Here are a few lessons I learned last week of the softer skilled sort.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqann7uHfeAqV7hodxctufObLlgTSxdAdpmbtGqi8AzAwnA70EWnICazhIqhixuJE0CVLOBLkL2AyPuuHpBiyNOYso3qfO6KQfKLZgauaq2MwZe50buS3sCTYafFc1n-N1rI4V/s1600/art-of-comms.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="249" data-original-width="609" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqann7uHfeAqV7hodxctufObLlgTSxdAdpmbtGqi8AzAwnA70EWnICazhIqhixuJE0CVLOBLkL2AyPuuHpBiyNOYso3qfO6KQfKLZgauaq2MwZe50buS3sCTYafFc1n-N1rI4V/s400/art-of-comms.jpg" width="400" /></a></div>
<br />
<b>1) Unmet expectations are the root cause of upset people</b><br />
If you are dealing with friction with someone at work (or helping 2 people in your team deal with their friction) then your best option is to <a href="https://tinybuddha.com/quotes/tiny-wisdom-what-unmet-expectations-mean/" rel="nofollow" target="_blank">look for the unmet expectation</a>. Maybe they expected to be treated with more respect, or that you would be on time for the meeting, or that something would be done more quickly. Try to determine what the unmet expectation was and help address it and you will remove the source of the problem. This alone won't solve everything but it will help resolve the issue.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqmiwcKtHL4jVsht_UtEA1TSuHAqZ9ZpxbfcnuEd4ka_1XQLwhORyI8dRp1wjLmNHcXQ1MQUh-7W4Eq8MB_gmtwRVIubykoSNl8vYJap0tg2eG3fLN9rJOdZo2xqH9tgPh9Ba9/s1600/comm_problem_gbs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1200" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqmiwcKtHL4jVsht_UtEA1TSuHAqZ9ZpxbfcnuEd4ka_1XQLwhORyI8dRp1wjLmNHcXQ1MQUh-7W4Eq8MB_gmtwRVIubykoSNl8vYJap0tg2eG3fLN9rJOdZo2xqH9tgPh9Ba9/s400/comm_problem_gbs.jpg" width="400" /></a></div>
<br />
<b>2) If you impact someone else, then at least inform them, and ideally engage them</b><br />
This is easiest to think about using some examples. Are you waiting on something from another person in order to get your job done and it is late but you haven't heard anything? Do you depend on a process controlled by someone else to get your job done? Have you been pulled into a meeting beyond your control without knowing why? Do you get assigned to projects without having a say? All of these are examples of being impacted by the decisions of someone else. This is pretty common and probably pretty annoying for you (or whomever is on the receiving end). If you are the one causing the impact to someone else, try to always keep them informed. If there is flexibility, then engage them in the decision making about it (even if you only ask for their feedback). You would want this if you were in their place so treat others like you want to be treated.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvmlr9uk9axxB7Lv8Ub1cyFnM-lY9k7hAGVjyS-W5P6STqct1nBdtDnE0hzh4s9pc61lT0isXfuO9ii5d4qKK6kYJZg9OFcdwGnT8og20CJup5DqYa6P04Z6Ib44Slt1GZtJ_p/s1600/biggest-communication-problem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="365" data-original-width="494" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvmlr9uk9axxB7Lv8Ub1cyFnM-lY9k7hAGVjyS-W5P6STqct1nBdtDnE0hzh4s9pc61lT0isXfuO9ii5d4qKK6kYJZg9OFcdwGnT8og20CJup5DqYa6P04Z6Ib44Slt1GZtJ_p/s400/biggest-communication-problem.png" width="400" /></a></div>
<br />
<b>3) Good communication is the key to everything</b><br />
I've come to realize that most relationship and work challenges are caused by poor communication. Did servers go down during a recent release because the database configuration was mismatched between prod and dev? Bad communication. Did a recent feature get built differently than customers wanted? Bad communication. Are users angry because a bug was released that the testers knew about? Bad communication. Was someone surprised by bad news that they should have been aware of? I think you get it... The simplest step to improving communication is to simply take the extra time to do it. It's not a magic bullet, but most poor communication happens because we didn't bother taking the extra time to communicate for understanding. Try asking people to echo things back when you talk to them this week and do them the favor of doing the same. You won't regret spending some extra time on communication but you will regret not doing it when things go wrong.<br />
<br />
<i>Also find this on <a href="https://medium.com/@azeckoski/leading-softly-ef26b5ebc7d9" target="_blank">Medium</a> and <a href="https://www.linkedin.com/in/azeckoski/" target="_blank">LinkedIn</a></i>AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0Charlotte, NC, USA35.2270869 -80.84312669999997134.8118989 -81.488573699999975 35.642274900000004 -80.197679699999966tag:blogger.com,1999:blog-34341551.post-83751497685159602612018-03-18T15:10:00.000-04:002018-03-18T20:55:42.668-04:00Management is a support role<blockquote class="tr_bq">
<span style="color: purple; font-size: x-small;">I'm coming back to blogging after a few years buried under project work, and I want to explore some lessons learned as a technology leader managing a department growing rapidly and going through significant changes. My department builds educational software products and has grown from a couple employees and a dozen consultants to over 70 employees and 100 contractors/consultants over 3 years.</span></blockquote>
What is the role of a manager? What makes one "good"? Statistically speaking, <a href="https://www.linkedin.com/pulse/20140923002312-64275548-the-top-10-reasons-employees-hate-their-boss/" target="_blank">most of us aren't too happy with our managers</a>. If you are a manager, you probably think you are the exception (the 20-25% that are "good"). I think part of the issue is the common misunderstanding about what makes a good manager. A popular perception is that managers make the tough calls (and decisions), set strategic goals, and tell people what to do (while of course allowing them to decide how...).<br />
<br />
Whether you are newer to management or have decades of experience, at some point before becoming a manager, you previously were amazingly successful as an individual contributor or small team leader. You always delivered on time and your work quality was amazing. As a result, you were recognized and given more responsibility. You might have even received advice about how you need a team in order to accomplish your newer and broader responsibilities. Now you have more to do and more people to help you do it. No problem because the role of your team is to help you get the job done... right?<br />
<br />
If this is resonating with you, then you are trapped in a traditional management style. You are seeing the role of your team(s) as support for you. You are still operating like an individual contributor who happens to have lots of assistance. You are the brains and they are the brawn.<br />
<br />
The trap here is that this actually works for some kinds of less creative and more repetitive jobs and therefore one can find lots of advice out there about how to run a team or organization of this type. For those of us in engineering or other creative fields though, this is a fallacy. The people in a creative organization will not respond well to this traditional style of management and you will not be successful in accomplishing your goals.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfRBYfYrPp1jnZUD4nKCSArAGdUPdrSYhO_fVG8T0Z8OLMdxbc1-Q2_4xh3ll9hxa6zs8gOBUu5kJ38jRagwJcnoynH9lmmjEVD3yY_cFpSNaPJb8xG3sdzc2CIxaHt6atoIl2/s1600/Mgmt_support.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="445" data-original-width="1195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfRBYfYrPp1jnZUD4nKCSArAGdUPdrSYhO_fVG8T0Z8OLMdxbc1-Q2_4xh3ll9hxa6zs8gOBUu5kJ38jRagwJcnoynH9lmmjEVD3yY_cFpSNaPJb8xG3sdzc2CIxaHt6atoIl2/s1600/Mgmt_support.png" width="550px" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both;">
There is a better way. Invert the pyramid and see that management is a support role. Your team are the brains AND the brawn. You are the coach, mentor, and a supplier. You provide guidance, advice, and resources (money, time, etc.) to help them accomplish their goals. Yes, you heard that right. The goals don't come from you (at least, not entirely... but that's a nuance for a future post).</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Think about it purely logically, who knows the customers and products best? Is it the CEO? Obviously that's impractical in all but the smallest organizations. How about the senior management team? The same logic continues to apply until you reach the team who is directly responsible for interfacing with the customer and creating the product. The entire organization (including you as a manager) is there to support those teams.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Here are some practical steps you can take this week to begin to manage in a more supportive and modern way:</div>
<div class="separator" style="clear: both;">
</div>
<ol>
<li><b>Ask your team how you can help them this week.</b><br />
If you haven't been doing this then you will probably get blank stares and confusion. Just hold your tongue and count to 10 slowly in your head. If no one has spoken up yet, then repeat the question and this time count to 20. Give people a chance to think and get comfortable with the reality that it will take time for your team to get used to seeing you as a supportive manager.</li>
<li><b>Explain your supporting role to your team.</b><br />
You might have even done this in the past incorrectly. Don't worry about that. The key here is to explain that you are here to empower them and enable them to accomplish goals as individuals and as a team. Use an analogy like coaching a sports team. Coaches can't tell the players what to do every minute of the game but they can provide training outside of game time and guidance during the breaks in play. In combination with #1, you will begin to see your team culture shift to one of <a href="http://www.agile-process.org/team.html" target="_blank">empowerment</a> and <a href="https://www.officevibe.com/blog/secret-employee-motivation-infographic" target="_blank">intrinsic (vs extrinsic) motivation</a>.</li>
<li><b>Ask your teams what the next (or current) goal should be.</b><br />
If you and your team are used to traditional management then they probably have become dependent on you. Instead of empowering independence you have probably enabled dependence. Don't be an enabler anymore. Give decision making to your teams and embrace your supporting role. They may just echo your current plans to start. This is an opportunity to challenge your own thinking and ask people to suggest why the current plans are wrong. Find the problems in your own plan and ask your team for better options. Suggest that the current plan is likely to fail and you need their help to come up with one that will succeed. Take the role of facilitator and yield the floor at every opportunity. Your aim here is to get them to own the goals because their objectives are probably more effective than yours.</li>
</ol>
<div>
Welcome to your modern role in supportive management.</div>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0Charlotte, NC, USA35.2270869 -80.84312669999997134.8118989 -81.488573699999975 35.642274900000004 -80.197679699999966tag:blogger.com,1999:blog-34341551.post-59101623071867070492018-03-11T11:26:00.000-04:002018-03-18T15:10:31.046-04:00Leading with Radical Candor<blockquote class="tr_bq">
<span style="color: purple; font-size: x-small;">I'm coming back to blogging after a few years buried under project work, and I want to explore some lessons learned as a technology leader managing a department growing rapidly and going through significant changes. My department builds educational software products and has grown from a couple employees and a dozen consultants to over 70 employees and 100 contractors/consultants over 3 years.</span></blockquote>
One of the hardest things to do as a leader (or person) is confronting someone who is struggling that you are responsible for supporting (i.e. someone in the team/organization who "reports to you"). I discovered the <a href="https://www.radicalcandor.com/about-radical-candor/" target="_blank">radical candor framework</a> a couple years ago when one of my team leaders brought it back from a conference. As a concept, it is fairly simple. In a nutshell, you should care about the individual person enough that you are willing to directly and frankly challenge them for their benefit.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiZV2T0_DWGsihOp7wQvn69qNZvWxGXKJ_DZs-hnJS5CF6zyqOC6sp0LXENJRWfsK8x5StRGs0K2n9r5MmApct-GWhW1q5uHJ5baBcBtF98epzunCzzPMfMuxPBlQ1y0RVk1r4/s1600/radical_candor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="424" data-original-width="423" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiZV2T0_DWGsihOp7wQvn69qNZvWxGXKJ_DZs-hnJS5CF6zyqOC6sp0LXENJRWfsK8x5StRGs0K2n9r5MmApct-GWhW1q5uHJ5baBcBtF98epzunCzzPMfMuxPBlQ1y0RVk1r4/s320/radical_candor.jpg" width="319" /></a></div>
This is much easier said than done. Human tendency is to avoid friction by saying what others want to hear (this is on the opposite spectrum from challenging directly - <i>the left side of the diagram above</i>). Some people may even prefer to treat everyone the same way which probably means treating them as resources instead of people (<i>the bottom of the diagram</i>). To be a truly impactful leader who people want to work with, you need to care personally and challenge directly (<i>the upper right in the diagram</i>).<br />
<br />
So practically, how do we do this? Here are a few things I try to do every week to better support my teams as a <a href="https://en.wikipedia.org/wiki/Servant_leadership" target="_blank">servant leader</a>.<br />
<br />
<ol>
<li><b>Tell them what your goals are with them and for them. </b><br />For example, tell them you want to have a good relationship and you want them to be successful. Tell them you care about them and care what they think. That you want them to be better at things than you are. It's important that you actually do want these things for them. If you don't then you probably need to reconsider if leadership is for you.</li>
<li><b>Be candid and specific with your expectations.</b><br />Do you have a bunch of mind readers working for/with you? If so, then they already know what you expect of them. If not, you need to be really clear repeatedly about what you expect from them in whatever role they are in. (<a href="http://blog.kevineikenberry.com/leadership-supervisory-skills/seven-steps-to-setting-clear-expectations/" target="_blank">Setting expectations</a> is a bit of an art and probably deserves an entire training series...) Did their last release go badly? Talk to them about it and explain what you think should have gone better. Were they late with a recent delivery or was it poor quality? Don't act like that was good enough, tell them how it should have been better and why that matters. Failing to set expectations high enough and make them clear to people will leave them stagnating and set them up for failure.</li>
<li><b>Ask how you can support them better.</b><br />Are you proud of yourself and all your accomplishments as a leader? That's human and pretty normal but you have to be careful to not let your ego take over and become the primary in your relationship with the people you are responsible for supporting (the ones who "report to you"). Are you afraid they will tell you that you are not supporting them? Are you afraid that asking how you can support them means that you will lose power over them? If so, it is even more important for you to admit you cannot get your job done without them. Swallow your pride and talk to your team like they are more important than you... because they are.</li>
</ol>
<div>
Welcome to caring personally and challenging directly!</div>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-54718602092793837682018-03-11T10:24:00.001-04:002018-03-11T10:24:32.978-04:00AZ Projects before 2015This is a historical list of projects I worked on professionally (or just for fun) before 2015. This is mostly interesting to me. Major public projects that I worked on since 2015 are captured in LinkedIn: <a href="https://www.linkedin.com/in/azeckoski/">https://www.linkedin.com/in/azeckoski/</a><br />
<br />
<div class="textBlock show-wrap" style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 0.9em; height: 4431px; overflow: hidden; padding: 0px 0.3em; position: relative; text-size-adjust: auto;">
<div style="box-sizing: border-box;">
<span style="box-sizing: border-box; font-weight: 700;">Projects before 2015 (most recent at top):</span><br />
<ul style="box-sizing: border-box; margin: 0px; padding-left: 1.5em;">
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/display/LAI/Apereo+Learning+Analytics+Processor" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Apereo Learning Analytics Processor</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Open source learning analytics processor framework (initially for student risk early alert prediction)</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Hibernate/REST/Kettle/Weka Development, Performance, Integration, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://github.com/azeckoski/lti_starter" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Java LTI starter app</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Open source IMS LTI 1 and 2 based starter (sample) application written using Java and Spring Boot<span class="Apple-converted-space"> </span></em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Boot/Security/JPA/LTI Development, Integration, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/display/LAI/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Apereo Learning Analytics Initiative</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Community initiative to build an open source learning analytics stack</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Founding member, Leadership, Architecture, Community management, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://learningateway.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">LearninGateway</a><span class="Apple-converted-space"> </span>learning system (<em style="box-sizing: border-box;">SaaS social learning platform designed to integrate with institutional LMS and cloud services</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Angular/PHP/Slim/REST Development, Performance, Integration</em></li>
<li style="box-sizing: border-box;"><a href="http://www.unicon.net/support" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Unicon Sakai Open Source Support and Sustaining engineering</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Open Source community development and support subscription program for clients</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Area lead, Java/Spring/Hibernate/JSF/JSP/Javascript/Sakai Development, Client relations, Summits, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/display/PMC/Members" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Project Management Committee (PMC)</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Technical leadership for Sakai Open Source Learning System - since 2011</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Product direction & planning, Leadership, Governance, Community management, Sakai development, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.sakaiproject.org/sakai-cle-maintenance-team" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Core Team</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Core committer and maintainer for Sakai Open Source Learning System - since 2008</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Architecture, Java/Spring/Hibernate/JSF/JSP/Javascript/Sakai Development, JIRA management, Core review, Code quality, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/NoD3" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Kernel</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Core Sakai Services Framework</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Architecture, Java/Spring/Hibernate Development, Code review, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://confluence.sakaiproject.org/display/BOOT" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Programmers's Cafe</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Training and Docs for Sakai developers - since 2006</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Training workshops, Wiki/Docs, Java/RSF/JSF/JSP/Spring/Hibernate/Sakai Development, Demo/Sample code, Presentations, Open Source</em></li>
</ul>
</div>
<div style="box-sizing: border-box;">
<ul style="box-sizing: border-box; margin: 0px; padding-left: 1.5em;">
<li style="box-sizing: border-box;"><a href="http://www.apus.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">APUS</a><span class="Apple-converted-space"> </span>Sakai Scaling (<em style="box-sizing: border-box;">Sakai horizontal scaling, cluster caching, and session fail-over</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Hibernate/REST/Terracotta/Sakai Development, Performance, Debugging, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.cambridgelms.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Cambridge University Press LMS</a><span class="Apple-converted-space"> </span>Analysis (<em style="box-sizing: border-box;">CLMS performance and architectural analysis and recommendations</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Architecture, Java/PHP/MySQL/Moodle/Sakai/Drupal/AWS Development, Performance, Debugging, Docs, Support</em></li>
<li style="box-sizing: border-box;"><a href="http://corp.kaltura.com/Products/Video-Applications/Sakai-Video-Tool" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai/Kaltura Video Tool</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Integrates Sakai with the<span class="Apple-converted-space"> </span><a href="http://corp.kaltura.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kaltura video platform</a>, 3rd version offers new features and deeper data integration</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/JSP/Javascript/Spring/Hibernate/REST/Sakai Development, Performance, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://conf2013.apereo.org/schedule" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">2014 Apereo Program Committee</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Conference program planning</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Technical Track Lead, Proposal Review, Session Scheduling</em></li>
<li style="box-sizing: border-box;"><a href="http://www.macmillanhighered.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Macmillan HigherEd Learning Systems Integration</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Course and results integrations between Macmillan learning systems and Institutional client learning systems</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Architecture, PHP/Slim/REST/SOAP/LTI/SSO Development, Angel/Brainhoney/Blackboard/Desire2Learn/PearsonLearningStudio/Sakai/Moodle/Canvas Integrations, Docs, Performance, Support, Debugging, Deploy, Administration</em></li>
<li style="box-sizing: border-box;"><a href="http://glasslabgames.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Glasslab</a><span class="Apple-converted-space"> </span><a href="http://www.glgames.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Games (2013 Release)</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Game-based SaaS learning system designed to integrate with institutional LMS</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Groovy/Grails/Javascript/Angular/MySQL/Mongo/AWS/S3/LTI Development, Performance, Tuning, Support, Docs, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://code.google.com/p/iclicker-moodle-integrate/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">i>clicker Moodle Integrate</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Moodle CMS block to integrate with the i>clicker classroom response system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, PHP/REST/SOAP/Javascript/Moodlerooms/Moodle Development, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://www.ohloh.net/p/iclicker-sakai-integrate" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">i>clicker Sakai Integrate</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Sakai tool to integrate with the i>clicker classroom response system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Hibernate/REST/SOAP/Javascript/Sakai Development, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://english360.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">English360 Language Learning System</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">SaaS Learning System for ESL with pre-built content from multiple publishers</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, PHP/Cake/Javascript/REST/Apache/AWS/S3/CF Development, Performance, Client relations, Docs, Deploy, Administration</em></li>
<li style="box-sizing: border-box;"><a href="https://testdrivesakai.com/portal" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Unicon Sakai Test Drive</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Unicon Sakai Demo system for client adoption</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/PHP/REST/Sakai Development, Customization, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/E4D3" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Entity Broker</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Flexible entity system for Sakai with RESTful data interactions</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/REST/API/Kernel/Sakai Development, Docs, Open Source</em></li>
</ul>
</div>
<div style="box-sizing: border-box;">
<ul style="box-sizing: border-box; margin: 0px; padding-left: 1.5em;">
<li style="box-sizing: border-box;"><a href="http://glasslabgames.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Glasslab</a><span class="Apple-converted-space"> </span><a href="http://www.glgames.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Games (Alpha)</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Game-based SaaS learning system - initial pilot version</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Javascript/Node/EJS/Express/Mongo/AWS/S3/LTI Development, Docs, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://www.usuhs.mil/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">USU</a><span class="Apple-converted-space"> </span>Sakai Tools enhancements (<em style="box-sizing: border-box;">Sakai<span class="Apple-converted-space"> </span><a href="https://source.sakaiproject.org/contrib/gradebook2/tags/1.8.0/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">gradebook 2</a>/<a href="https://source.sakaiproject.org/contrib/unicon/assignment2/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">assignments 2</a><span class="Apple-converted-space"> </span>features and fixes for USU</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/GWT/RSF/Javascript/Spring/Hibernate/Sakai Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://brainhoney.agilix.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Brainhoney LMS</a><span class="Apple-converted-space"> </span>Architecture Analysis (<em style="box-sizing: border-box;">Brainhoney LMS standards compliance and architecture analysis</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, LMS/SCORM/IMS/LTI/CC/CP/QTI Analysis, Code review, Docs</em></li>
<li style="box-sizing: border-box;"><a href="http://www.docuseek2.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Docuseek 2 Architecture Advising</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Advice on integrating Docuseek 2 with Media and Learning Systems</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, SSO/OAuth/LTI/REST Development, Security</em></li>
<li style="box-sizing: border-box;"><a href="http://www.apus.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">APUS</a><span class="Apple-converted-space"> </span>Sakai Support (<em style="box-sizing: border-box;">Sakai developer/admin training and 2.9 upgrade support</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/Spring/REST/Sakai Development, Code review, Docs, Support, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://jira.sakaiproject.org/browse/SKE" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai/Kaltura Media Gallery 2</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Sakai tool to integrate with<span class="Apple-converted-space"> </span><a href="http://corp.kaltura.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kaltura video platform</a>, 2nd version adds features and improves performance</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/JSP/Javascript/Spring/Hibernate/REST/Sakai Development, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.unicon.net/opensource/sakai" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Unicon Sakai Cooperative Support/Development</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Community source development and support subscription program for clients - until 2013</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Tech lead, Java/Spring/Hibernate/JSF/JSP/Javascript/Sakai Development, Client relations, Summits, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://conf2013.apereo.org/schedule" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">2013 Apereo Program Committee</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Conference program planning</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Technical Track Lead, Proposal Review, Session Scheduling</em></li>
<li style="box-sizing: border-box;"><a href="https://www.kryteriononline.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kryterion Blackboard/Moodle proctoring integration</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Integrations between Kryterion proctoring system and Blackboard LMS/Moodle CMS</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, PHP/Java/JSP/Moodle/Blackboard Development, Code review, Docs</em></li>
<li style="box-sizing: border-box;"><a href="https://www.kuali.org/ole" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kuali OLE Architecture Analysis</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Architectural and tech stack review, recommendations, and fixes</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/JSP/SOLR/JCR/Spring Development, Performance, Code review, Code analysis, Advice</em></li>
<li style="box-sizing: border-box;"><a href="http://www.amplify.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Amplify Learning System</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Custom Learning and Scheduling System for Mobile/Tablet</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Grails/Spring Development, Advice</em></li>
<li style="box-sizing: border-box;"><a href="http://www.nucleusacademic.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Nucleus Academic Sakai</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Customized Sakai with Scormcloud integration</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Spring/SCORM/Sakai Development, Advice</em></li>
<li style="box-sizing: border-box;"><a href="http://sakai.kaltura.com:8080/portal" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kaltura Sakai Demo server</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Customized Sakai server with Kaltura integration for client Demos</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, UI, Javascript/Shell/Sakai Development, Docs, Admin, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://www.usuhs.mil/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">USU</a><span class="Apple-converted-space"> </span><a href="https://source.sakaiproject.org/svn/sam/branches/SAM-1139" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Samigo Calculated Question</a><span class="Apple-converted-space"> </span>feature (<em style="box-sizing: border-box;">Added Calculated question type to the Sakai Samigo Assessment Tool</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/JSF/JSP/Javascript/Spring/Hibernate/QTI/XML/Sakai Development, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.usuhs.mil/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">USU</a><span class="Apple-converted-space"> </span><a href="https://source.sakaiproject.org/svn/sam/branches/SAM-1430" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Samigo Extended Matching</a><span class="Apple-converted-space"> </span>feature (<em style="box-sizing: border-box;">Extended matching question type in Sakai Samigo Assessment Tool to allow one-to-many and distractors</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/JSF/JSP/Javascript/Spring/Hibernate/QTI/XML/Sakai Development, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://source.sakaiproject.org/contrib/evaluation/branches/unicon-ucb/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">UC Berkeley Evaluation System</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Sakai Evaluation Tool features and community fixes for UC Berkeley</em>)<br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/Spring/Hibernate/RSF/Javascript/Sakai Development, Docs, Support, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://source.sakaiproject.org/svn/msub/duke.edu/gradebook/branches/sakai-2.7.x/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Duke Gradebook SIS link</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Sakai Gradebook customizations to send grades to Duke SIS</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/Spring/JSF/REST/XML/Javascript/Sakai Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.wfu.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Wake Forest</a><span class="Apple-converted-space"> </span>Sakai Upgrade (<em style="box-sizing: border-box;">Sakai 2.8 upgrade and customizations - TurnItIn, AS2, GB2, etc.</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Spring/Maven/SVN/Sakai Debugging, Support, Docs, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://www.uarts.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">University of the Arts</a><span class="Apple-converted-space"> </span>Sakai SIS integration (<em style="box-sizing: border-box;">Custom Sakai UARTS Colleague SIS course enrollments data loader</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Hibernate/JSF/JSP/Javascript/Sakai Development, Debugging, Docs, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://www.uarts.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">University of the Arts</a><span class="Apple-converted-space"> </span>Sakai Upgrade (<em style="box-sizing: border-box;">Sakai 2.7 upgrade and custom tool installs</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/Spring/Maven/SVN/Sakai Debugging, Support, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://www.cambridgelms.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Cambridge University Press LMS</a><span class="Apple-converted-space"> </span>Debugging (<em style="box-sizing: border-box;">Sakai/Moodle hybrid system debugging and analysis</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/PHP/Apache/Moodle/Sakai Debugging, Analysis, Support</em></li>
<li style="box-sizing: border-box;"><a href="http://www.pratt.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Pratt Institute</a><span class="Apple-converted-space"> </span>Moodle Tuning (<em style="box-sizing: border-box;">Moodle CMS and server performance tuning</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, PHP/Apache/Moodle Tuning, Performance, Support</em></li>
<li style="box-sizing: border-box;"><a href="http://www.conncoll.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Connecticut College</a><span class="Apple-converted-space"> </span>Moodle Tuning (<em style="box-sizing: border-box;">Moodle CMS Performance and Server Tuning</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, PHP/Apache/Moodle Tuning, Performance, Support</em></li>
<li style="box-sizing: border-box;"><a href="http://www.pearson.com/about-us/education/international/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Pearson International</a><span class="Apple-converted-space"> </span>MyLab (<em style="box-sizing: border-box;">Sakai Learning System customized for Language Teaching</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Architecture, Java/Spring/Hibernate/JSP/Javascript/Sakai Development, Requirements, Support</em></li>
<li style="box-sizing: border-box;"><a href="http://www.ellisdon.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Ellisdon</a><span class="Apple-converted-space"> </span>Liferay (<em style="box-sizing: border-box;">Liferay installation and customization for Ellisdon</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Portlet/Liferay Development, Support, Config, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://unc.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">UNC</a><span class="Apple-converted-space"> </span>Sakai DB migration (<em style="box-sizing: border-box;">Sakai database migration from MySQL to Oracle</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Sakai/MySQL/Oracle Development, DBA, Support, Performance, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="http://www.wiley.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Wiley</a><span class="Apple-converted-space"> </span>Sakai server performance tuning (<em style="box-sizing: border-box;">Sakai server cluster debugging, performance analysis, and improvements</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Debugging, Java/Sakai Development, Support, Performance, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="https://source.sakaiproject.org/svn/msub/duke.edu/ereserves/trunk/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Duke Sakai E-reserves</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Sakai Tool to provide access to Duke Library E-reserves</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/JSP/Javascript/Sakai Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://source.sakaiproject.org/svn/msub/duke.edu/distros/sakai-2.7.x/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Duke Sakai 2.7 adoption</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Customizations and setup of Sakai 2.7 for Duke University</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/Spring/Hibernate/JSP/Javascript/Sakai Development, Deploy, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/D4AWAg" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Evaluation System</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Tool for program and course assessment and evaluations for Sakai</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/AspectJ/Hibernate/RSF/HTML/Javascript Development, Performance, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://www.ohloh.net/p/kaltura_sakai" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai/Kaltura Media Gallery</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Integration between<span class="Apple-converted-space"> </span><a href="http://corp.kaltura.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kaltura video platform</a><span class="Apple-converted-space"> </span>and Sakai to allow embedded hosted media in the LMS</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/JSP/Javascript/Spring/Hibernate/REST/Sakai Development, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://github.com/Unicon/Kaltura-OAE" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">OAE Kaltura Integration</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Integrates OAE with the<span class="Apple-converted-space"> </span><a href="http://corp.kaltura.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Kaltura video platform</a><span class="Apple-converted-space"> </span>to allow embedded media</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/OSGi/REST/OAE Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://opencast.org/matterhorn/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Opencast Matterhorn</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Scheduling, capture, encoding, and delivery of educational media</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Architecture, Java/OSGi/REST/JAXRS/JAXWS Development, Code quality, Docs, Maven Nexus, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.steeple.org.uk/wiki/Steeple_Portal" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Steeple Media Portal</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Media portal for universities, JISC funded project</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Grails/Groovy/Spring/JPA/SOLR Development, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://source.sakaiproject.org/contrib/unicon/itunesu/branches/sakai_2-6-x/itunesu-tool" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Unicon iTunesU Sakai integration for NYU</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Integration between Sakai CLE and<span class="Apple-converted-space"> </span><a href="http://www.apple.com/education/itunes-u/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">iTunesU podcasting service</a><span class="Apple-converted-space"> </span></em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Spring/Hibernate/JSF/JSP/Javascript/Sakai Development, iTunesU XML APIs, Docs, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://wiki.dspace.org/index.php/DSpace_2.0" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">DSpace 2.0</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Refactoring of the DSpace repository system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Guice/JCR/DSpace Development, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://moodle.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Moodle</a><span class="Apple-converted-space"> </span>Data Extract for McGraw-Hill (<em style="box-sizing: border-box;">Moodle CMS Block which provides REST APIs to extract data about student learning activities<span class="Apple-converted-space"> </span></em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, PHP/REST/Moodle Development, Docs, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/whAAB" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Maintenance Team</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Elected lead for technical team from Q1-Q2 2010, charged with maintaining Sakai open source project</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/Spring/Hibernate/JSF/JSP/Javascript/Sakai Development, JIRA management, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://reflectutils.googlecode.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Reflection Utilities Package</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Reflection utilities for Java 1.5+</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Library Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://wiki.duraspace.org/display/GSOC/Google+Summer+of+Code+2009+DSpace+REST+Webapp" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Google Summer of Code Mentor - DSpace REST</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">REST API and IMPL for the DSpace repository system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Mentor, Architecture, Java/REST/DSpace Development, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://www.darwinproject.ac.uk/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Darwin Correspondence Project</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Charles Darwin's correspondence online and searchable</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">PHP/Perl/Shell Development, Code quality, Docs, Deploy</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/NoD3" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Nakamura (later OAE) Kernel</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Core Sakai OAE Services Framework</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/OSGi/JCR/JAXRS/Sling/Javascript/Script Development, Code review, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://camtools.cam.ac.uk/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">CamTools</a><span class="Apple-converted-space"> </span>- Sakai @ Cambridge (<em style="box-sizing: border-box;">Integration and extensive customization of open source Sakai learning system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Sakai/Spring/RSF/JSF/JSP Development, Customization, Providers, Cambridge specific tools, Deploy, Code quality, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/ggAR" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;" title="Sakai UX Improvement (Official Home Page)">Sakai UX Project</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Improving the Sakai 2 User Experience with a new frontend</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Spring/REST Development, REST Data feeds for Sakai 2 via EB, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/e4CrAg" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;" title="Sakai App Builder">Sakai AppBuilder Plugin</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Eclipse plugin for Sakai Rapid Application Development</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Eclipse/OSGi Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://rsf.fluidproject.org/wiki/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">RSF (Reasonable Server Faces)</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Java Web Framework</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Spring Development, Code quality, Distributions/Maven, Training, Community management, Wiki/Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="http://genericdao.googlecode.com/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Generic Dao Package</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Package for developers to work with persistent objects without writing DAOs</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Hibernate/Library Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/tID3" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;" title="Hierarchy Service">Hierarchy Service</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Hierarchy entity structures for Sakai</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, Java/Spring/Hibernate Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/EQCNAg" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;" title="JCR Integration">Sakai JCR Integration</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">JCR load testing and integration for Sakai</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/JCR/Jackrabbit/Sakai Development, Performance, Code quality, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/B4CcAg" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Conference Scheduler</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Online conference scheduling for Sakai, supports Adobe Breeze</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/JSP Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/AYDZAg" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Recent Activity App</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">What's New (activity feed) in a Sakai course/site</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/JSF Development, Docs, Open Source</em></li>
<li style="box-sizing: border-box;">Sakai Foundation Site tools (<em style="box-sizing: border-box;">Web tools for conferences, etc. related to the Sakai Foundation</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, PHP/Javascript Development, Docs</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/IIc0AQ" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai Migration</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Migration and Archiving in Sakai</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java Development, Docs</em></li>
<li style="box-sizing: border-box;"><a href="https://confluence.sakaiproject.org/x/C4BwAg" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Conference Committee and Program Committee</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Planning for the Sakai Atlanta conference 2006</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Technical Track Lead, Proposal Review, Scheduling</em></li>
<li style="box-sizing: border-box;">Virginia Tech Online Course Support Helpdesk (now<span class="Apple-converted-space"> </span><a href="http://www.olcs.lt.vt.edu/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">OLCS</a>) (<em style="box-sizing: border-box;">Web based support and ticket tracking system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, UI, Architecture, PHP/XSLT/XML/Javascript Development, Docs, Support, Deploy</em></li>
<li style="box-sizing: border-box;">Sakai Skinning Contest (<em style="box-sizing: border-box;">Contest and working group to make a new skin for Sakai 2.2</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, PHP/Javascript Development, Organizing and Scheduling, Community relations, Open Source</em></li>
<li style="box-sizing: border-box;">Sakai Requirements (<em style="box-sizing: border-box;">Requirements tracking and polling web app</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, PHP/Javascript Development, Requirements gathering, Community relations</em></li>
<li style="box-sizing: border-box;"><a href="http://confluence.sakaiproject.org/display/Conf2006Vancouver" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Vancouver Conference Committee and Program Committee</a><span class="Apple-converted-space"> </span>(<em style="box-sizing: border-box;">Planning for the Sakai Vancouver conference and community source week 2006</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Technical Track Lead, Approval and Scheduling, Member</em></li>
<li style="box-sizing: border-box;"><a href="https://scholar.vt.edu/portal" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Scholar</a><span class="Apple-converted-space"> </span>(<a href="http://sakaiproject.org/" rel="nofollow" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Sakai</a><span class="Apple-converted-space"> </span>@ Virginia Tech) (<em style="box-sizing: border-box;">Integration, extension, and customization of Sakai Open Source Learning System</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/Spring/JSP/JSF/Velocity/Javascript Development, Customization, Administration, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;">Virginia Tech Evaluation System (<em style="box-sizing: border-box;">VT Tool for department, instructor, and course evaluations</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, Java/Coldfusion/Javascript Development, Administration, Deploy</em></li>
<li style="box-sizing: border-box;">Virginia Tech Blackboard Building Blocks (<em style="box-sizing: border-box;">Blackboard learning system custom Building Blocks for Gradebook upload, SIS grades posting, and campus integrations</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, UI, Java/JSP/Javascript/BuildingBlock/Blackboard Development, Administration, Docs, Deploy</em></li>
<li style="box-sizing: border-box;">Faculty Development Institute Tracking System (<em style="box-sizing: border-box;">VT Tool for faculty training courses and equipment management</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Architecture, UI, PHP/XSLT/XML/Javascript Development, Administration, Deploy</em></li>
<li style="box-sizing: border-box;">ePortfolio (Open Source Portfolio @ Virginia Tech) (<em style="box-sizing: border-box;">Integration and customization of open source student portfolio web app</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Java/Javascript/API Development, Customization, Administration, Deploy, Open Source</em></li>
<li style="box-sizing: border-box;">Software Skills Gateway (<em style="box-sizing: border-box;">VT Auth integration and tracking with commercial gateway</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/JSF Development, Architecture, Docs</em></li>
<li style="box-sizing: border-box;">Atlassian Confluence/JIRA @ Virginia Tech (<em style="box-sizing: border-box;">Management and administration of Atlassian suite</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Administration, Deploy</em></li>
<li style="box-sizing: border-box;">Blackboard Learn @ Virginia Tech (<em style="box-sizing: border-box;">Administration, integration, and configuration of CourseInfo / Blackboard learning system</em>)<span class="Apple-converted-space"> </span><br style="box-sizing: border-box;" />-<span class="Apple-converted-space"> </span><em class="tech" style="box-sizing: border-box;">Lead, Java/JSP/Perl/BuildingBlock/CourseInfo/Snapshot/Blackboard Development, Administration, Deploy</em></li>
</ul>
</div>
</div>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.comtag:blogger.com,1999:blog-34341551.post-46786374030859271782018-03-11T10:18:00.002-04:002018-03-11T10:18:54.371-04:00AZ Presentations Delivered before 2015This is just a list of Presentations Delivered before 2015. Probably only interesting to me. More recent presentations of note are tracked in: <a href="https://www.linkedin.com/in/azeckoski/">https://www.linkedin.com/in/azeckoski/</a><br />
<br />
<ul>
<li>Elsevier Education Town Hall (St Louis, Dec 2014)</li>
<li>Elsevier Adaptive Learning Brown Bag (Amsterdam, Dec 2014)</li>
<li>Elsevier Architecture Summit - Education (Philadelphia, Oct 2014)</li>
<li>Learning Analytics Initiative (LAI) showcase corner (Open Apereo 2014, June 2014)</li>
<li>Learning Analytics Technologies (Open Apereo 2014, June 2014)</li>
<li>What's new for Kaltura Media and Sakai (Open Apereo 2014, June 2014)</li>
<li>Sakai Core Team Update (Open Apereo 2014, June 2014)</li>
<li>Lightning Talks: Developers (Organizer/MC) (Open Apereo 2014, June 2014)</li>
<li>Learning Analytics Initiative Discussion (BOF) (Open Apereo 2014, June 2014)</li>
<li>Updates from the Apereo Learning Analytics (LAI) Community (Open Apereo 2014, June 2014)</li>
<li>Sakai scaling and failover via cluster caching (Open Apereo 2014, June 2014)</li>
<li>Sakai Bootcamp - Half Day (Developer training and exercises) (Open Apereo 2014, June 2014)</li>
<li>Sakai 10 scaling (session failover, distributed caching) (Apereo Camp 2014, Jan 2014)</li>
<li>Unicon Dev Forum - All Things Open summary (Online, Nov 2013)</li>
<li>Lightning Presentations: Developing Day 2 (Moderator) (Open Apereo, June 2013)</li>
<li>Sakai CLE Team Update (Open Apereo, June 2013)</li>
<li>What's New in Kaltura CLE (Open Apereo, June 2013)</li>
<li>Upgrading Sakai CLE from 2.6 to 2.9 without going insane (Open Apereo, June 2013)</li>
<li>Lightning Presentations: Developing Day 1 (Moderator) (Open Apereo, June 2013)</li>
<li>Third Party Integration Best Practices for Sakai CLE (Open Apereo, June 2013)</li>
<li>Let the student activity streams flow. Sakai CLE and Tincan API (Open Apereo, June 2013)</li>
<li>title (Open Apereo, June 2013)</li>
<li>title (Open Apereo, June 2013)</li>
<li>Sakai Implementation Bootcamp - Half Day (Developer training and exercises) (Apereo Conference, June 2013)</li>
<li>Sakai CLE Release Status and Process (Sakai Mexico, April 2013)</li>
<li>Sakai Tech Stack (Jasig Unconference, Jan 2013)</li>
<li>Sakai and XML Security (Jasig Unconference, Jan 2013)</li>
<li>UVA.nl Sakai Workshop for Students - 2 days (Amsterdam, NL, Jan 2013)</li>
<li>Sakai CLE Technical Coordination Community update (as TCC chair) (Jasig Sakai Conference, June 2012)</li>
<li>Kaltura Video in Sakai CLE/OAE (Jasig Sakai Conference, June 2012)</li>
<li>Online Evaluations at UC Berkeley (Jasig Sakai Conference, June 2012)</li>
<li>Lightning Session: Sakai Learning System (Jasig Sakai Conference, June 2012)</li>
<li>Sakai CLE Team Status Update (Jasig Sakai Conference, June 2012)</li>
<li>Sakai Workshop - Full Day (Developer training and exercises) (Jasig Sakai Conference, June 2012)</li>
<li>Unicon Dev Forum - Maven Tricks (Online, Jan 2012)</li>
<li>Sakai QA Intro (EuroSakai Amsterdam conference, Sept 2011)</li>
<li>Community Participation Presentation (EuroSakai Amsterdam conference, Sept 2011)</li>
<li>Kaltura OAE Integration (EuroSakai Amsterdam conference, Sept 2011)</li>
<li>TCC meeting (EuroSakai Amsterdam conference, Sept 2011)</li>
<li>Kaltura Sakai Media Gallery Demo (LA Sakai Conference, June 2011)</li>
<li>Kernel, Maint, Release Management, and Security Teams update (LA Sakai Conference, June 2011)</li>
<li>Kaltura Sakai Media Gallery Presentation (LA Sakai Conference, June 2011)</li>
<li>Meet the Sakai CLE Technical Coordination Committee (LA Sakai Conference, June 2011)</li>
<li>External integrations with Sakai CLE (REST) (LA Sakai Conference, June 2011)</li>
<li>Sakai Workshop - Full Day (Developer training and exercises) (Sakai LA Conference, June 2011)</li>
<li>Technical Coordination Committee Formation (Sakai Denver Conference, June 2010)</li>
<li>Sakai Kaltura Integration Tech Demo (Sakai Denver Conference, June 2010)</li>
<li>Sakai Kaltura Integration Presentation (Sakai Denver Conference, June 2010)</li>
<li>Sakai Maintenance Team Update (Sakai Denver Conference, June 2010)</li>
<li>Sakai Workshop - Full Day (Developer training and exercises) (Sakai Denver Conference, June 2010)</li>
<li>Enhancing Your LMS & EDU Programs with Online Video (Webinar, May 2010)</li>
<li>What is Sakai QA (Valencia EuroSakai Conference, Mar 2010)</li>
<li>10 ways to make a good Sakai release (Valencia EuroSakai Conference, Mar 2010)</li>
<li>Sakai Best practices (Valencia EuroSakai Conference, Mar 2010)</li>
<li>Programmers Cafe Developer workshop (1-day) (Valencia EuroSakai Conference, Mar 2010)</li>
<li>Unicon REST/Sling developer presentation (Unicon Headquarters, AZ, US, June 2009)</li>
<li>DSpace 2 Service Manager Framework (Open Respositories Conference, May 2009)</li>
<li>OSGi lightning talk (Open Respositories Conference, May 2009)</li>
<li>Programmers Cafe Developer workshop (1-day) (Stockholm EuroSakai Conference, May 2009)</li>
<li>Sakai Developer Training (2-days) (UvA, Amsterdam, April 2009)</li>
<li>You got your Java in my Python! (Intro to Jython) (JISC dev8d London, Feb 2009)</li>
<li>Sakai REST APIs (JISC dev8d London, Feb 2009)</li>
<li>Service Management with Spring and Guice (towards DSpace 2) (JISC dev8d London, Feb 2009)</li>
<li>Programmers Cafe Developer workshop (1-day) (Sakai Paris Conference, June 2008)</li>
<li>Sakai Marist Developer Training workshop (1-week) (Marist College, NY, US, June 2008)</li>
<li>Intro to RSF (Intro to RSF framework) (The Spring Experience 2007, Dec 13)</li>
<li>Sakai JCR integration and load testing results (Sakai Newport Beach, Dec 6)</li>
<li>Writing high quality code for Sakai (Sakai Newport Beach, Dec 5)</li>
<li>Introduction to the Sakai EntityBroker system (Sakai Newport Beach, Dec 5)</li>
<li>Sakai Developer workshop and Ucamp (Developer training and exercises) (Sakai Newport Beach, Dec 3)</li>
<li>Sakai training for Tata IS (Full week training in Sakai development) (TIS, Mumbai, India, August, 2007)</li>
<li>Intro to RSF (JASIG, Denver, June 26)</li>
<li>Programmers Cafe half-day Training (JASIG, Denver, June 24)</li>
<li>Building Rich but Accessible Sakai Tools (Sakai Amsterdam Conference, June 14)</li>
<li>Intro to Evaluation System (Sakai Amsterdam Conference, June 13)</li>
<li>Intro to Confluence and JIRA (Sakai Amsterdam, June 13)</li>
<li>Cafe/U-Camp Combined Session (Sakai Amsterdam, June 11)</li>
<li>Programmers Cafe Training (Sakai Amsterdam, June 11)</li>
<li>Programmers Cafe Training (South Africa, April 2007)</li>
<li>Programmers Cafe Bootcamp (Sakai Atlanta, Dec 2006)</li>
<li>Sakai CRIM Cafe Workshop in Montreal, Canada (4-day) (Sakai Cafe, Dec 2006)</li>
<li>Formative and Summative Online Evaluations (2-part/4-hour workshop) (VT FDI, November 2006)</li>
<li>Java Persistence and Hibernate (Virginia Tech Java Users Group, October 2006)</li>
<li>Sakai Tetra ELF Cafe Workshop in Oxford, England (3-day) (Sakai Tetra Cafe, Sept 2006)</li>
<li>JVM tuning (Virginia Tech Java Users Group, July 2006)</li>
<li>Security and Auth/Auth in PHP (Virginia Tech Faculty Development Initiative (VT FDI), July 2006)</li>
<li>User Interface Panel (Sakai Vancouver, June 2006)</li>
<li>Sakai Providers BOF (Sakai Vancouver, June 2006)</li>
<li>Sakai Requirements (Sakai Vancouver, June 2006)</li>
<li>Programmers Cafe Bootcamp: Data persistence using Hibernate (Sakai Vancouver, May 2006)</li>
<li>DCSS evaluation presentation (VT DCSS, April 2006)</li>
<li>Intro to VT Evaluation (Virginia Tech Faculty Development Initiative (VT FDI), multiple 2006)</li>
<li>Sakai Foundation Requirements Process (Sakai Austin, Dec 2005)</li>
<li>Taking the Sakai Style Guide to the next level (Sakai Austin, Dec 2005)</li>
<li>We all don't have to agree - Flexible UI design (Sakai Austin, Dec 2005)</li>
</ul>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.comtag:blogger.com,1999:blog-34341551.post-25404618990321116762018-03-11T10:15:00.001-04:002018-03-11T10:30:48.603-04:00AZ Training & Conferences before 2015This is just a list of Training & Conferences I have Attended before 2015. Nothing particularly interesting for other people but it is interesting to me. More recent stuff is in linkedin: <a href="https://www.linkedin.com/in/azeckoski/">https://www.linkedin.com/in/azeckoski/</a><br />
<br />
<ul>
<li>IMS Quarterly Meeting & Summit (Orlando, FL, US, Nov 2014)</li>
<li>Educause Annual Conference (Orlando, FL, US, Oct 2014)</li>
<li>Open Apereo Conference (Miami, FL, US, June 2014)</li>
<li>IMS Learning Impact Leadership Institute (New Orleans, LA, US, May 2014)</li>
<li>Apereo Camp 2014 (Phoenix, AZ, US, Jan 2014)</li>
<li>Unicon Bi-Weekly Developer Forums (Online, 14 sessions, Jan-Dec 2013)</li>
<li>All Things Open conference (Raleigh, NC, US, Oct 2013)</li>
<li>Open Apereo Conference (San Diego, CA, US, June 2013)</li>
<li>Sakai Mexico 2013 conference (Puebla, MX, Apr 2013)</li>
<li>Jasig Unconference (Phoenix, AZ, US, Jan 2013)</li>
<li>UVA.nl Sakai Workshop for Students (Amsterdam, NL, Jan 2013)</li>
<li>Unicon Monthly Java Developer Forums (Online, 10 sessions, Jan-Dec 2012)</li>
<li>Jasig Sakai Conference (Atlanta, GA, US, June 2012)</li>
<li>Kaltura Technical Training - 3 days (Online/New York, NY, Feb 2012)</li>
<li>Unicon Monthly Java Developer Forums (Online, 11 sessions, Jan-Dec 2011)</li>
<li>EuroSakai Conference (Amsterdam, NL, Sept 2011)</li>
<li>LA Sakai Conference (Los Angeles, CA, US, June 2011)</li>
<li>Unicon Java Developer Forums (Online, 9 sessions, Mar-Dec 2010)</li>
<li>Liferay Training - Introductory (Online, Nov 2010)</li>
<li>CAS Training course (Phoenix, AZ, US, Oct 2010)</li>
<li>English360 Developer Summit - 4 days (Austin, TX, US, Sept 2010)</li>
<li>Shibboleth Training (Online, Aug 2010)</li>
<li>Denver Sakai Conference (Denver, CO, US, June 2010)</li>
<li>ThoughtWorks and Amazon Web Services Training course (London, UK, Mar 2010)</li>
<li>Valencia EuroSakai Conference (Valencia, Spain, Mar 2010)</li>
<li>Stack Overflow DevDays 2009 (Cambridge, UK, Oct 2009)</li>
<li>Opencast All Hands Meeting 2009 (Zurich, Switzerland, Sept 2009)</li>
<li>Open Repositories 2009 (Atlanta, GA, US, May 2009)</li>
<li>Stockholm EuroSakai Conference (Stockholm, Sweden, May 2009)</li>
<li>JISC Developer Happiness Days (dev8d) London (London, UK, Feb 2009)</li>
<li>DSpace 2 developers meeting (Boston, MA, US, Oct 2008)</li>
<li>Google Developer Day 2008 (London, UK, Sept 2008)</li>
<li>Sakai Authoring Conference (Dearborn, MI, US, Sept 2008)</li>
<li>Sakai Paris Conference (Paris, FR, July 2008)</li>
<li>DSpace User Group and Committers meeting (HP Labs, Bristol, UK, June 2008)</li>
<li>Open Repositories 2008 (Southampton, UK, April 2008)</li>
<li>Spring Experience 2007 (Hollywood, FL, US, Dec 2007)</li>
<li>Sakai Newport Beach Conference (Newport Beach, CA, US, Dec 2007)</li>
<li>Sakai Amsterdam Conference (Amsterdam, NL, June 2007)</li>
<li>Sakai Atlanta Conference (Atlanta, GA, Dec 2006)</li>
<li>CS 5614 Database Management Systems Course (Virginia Tech, US, Fall 2006 Term, Grade: A)</li>
<li>Javascript Techniques (Virginia Tech, VA, US, November 2006)</li>
<li>Administering Apache Tomcat (Virginia Tech, VA, US, June 2006)</li>
<li>Microsoft Developer Security Workshop (Virginia Tech, VA, US, May 2006)</li>
<li>Sakai Vancouver Conference, (Vancouver, CA, May 2006)</li>
<li>Sakai Developer Training (Boston, MA, US, April 2006)</li>
<li>Sakai Austin Conference (Austin, TX, US, Dec 2005)</li>
<li>SANS (Virginia Tech, VA, US, May 2005)</li>
<li>Sakai Baltimore Conference (Baltimore, MD, US, June 2005)</li>
<li>Sakai New Orleans Conference (New Orleans, LA, US, Dec 2004)</li>
<li>Sakai Denver Conference (Denver, CO, US, June 2004)</li>
</ul>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.comtag:blogger.com,1999:blog-34341551.post-27068820054397742172018-03-11T10:08:00.000-04:002018-03-11T10:32:33.778-04:00A brief history of (my recent) time<div style="box-sizing: border-box; padding: 0px; text-indent: 1.5em;">
<div style="text-indent: 0px;">
<span style="font-size: 12.6px; text-indent: 1.5em;"><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;">Aaron Zeckoski is a technology leader recognized for his expertise in educational technologies and learning systems. He is an accomplished change agent, specializing in organizational transformation and team building. His experience includes leading distributed teams (US and international) and working in matrix and community organizations. In his time as a systems architect and engineer he demonstrated expertise in all aspects of web-based product and platform development. </span></span><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 12.6px;">He is an open source advocate, a member of open source developer communities, and a major contributor to open source projects such as Sakai LMS, DSpace repository, Opencast Matterhorn, and Apereo Learning Analytics Initiative (LAI).</span></div>
<div style="text-indent: 0px;">
<br /></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;">Aaron is currently </span></span><span style="font-size: 12.6px; text-indent: 1.5em;"><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;">Elsevier Nursing & Healthcare Education’s Head of Technology and VP, Software Engineering (since early 2015). He was previously </span></span><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 12.6px;">the Lead Architect for </span><a href="https://www.linkedin.com/showcase/elsevier-education/" style="font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 12.6px;">Education at Elsevier</a><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 12.6px;"> (since late 2014). He</span><span style="font-size: 12.6px; text-indent: 1.5em;"><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"> built the education technology department from the ground up; recruiting over 60 technologists in two years. The department specializes in rapid discovery, collaborative innovation, and world-class design. Our delivery highlights include a next generation education platform, NHE’s first machine learning and big data framework, and Sherpath (personalized healthcare learning product).</span></span></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;"><br /></span></span>
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;">Before 2015, Aaron mostly worked in higher education technology consulting and innovation (list of <a href="https://azeckoski.blogspot.com/2018/03/az-projects-before-2015.html">projects</a>, <a href="https://azeckoski.blogspot.com/2018/03/az-presentations-delivered-before-2015.html">presentations</a>, <a href="https://azeckoski.blogspot.com/2018/03/az-conferences-trainings-before-2015.html">conferences, and training</a> for those curious).</span></span><br />
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;">He was most recently a Software Architect and Sales Engineer at <a href="http://www.unicon.net/">Unicon</a>. </span></span><span style="font-size: 12.6px; text-indent: 1.5em;"><span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;">He also worked as an independent engineering and training consultant and spent time working with and as part of education technology startups.</span></span></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 12.6px;">He was previously a Senior Research Engineer in <a href="http://www.caret.cam.ac.uk/">CARET (Centre for Applied Research in Educational Technologies)</a> at <a href="http://www.cam.ac.uk/">Cambridge University</a> for over three years.</span></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;">Before that he was the Manager of Application Development and Lead Developer in the Learning Technologies unit at <a href="https://vt.edu/">Virginia Tech</a> for five years.</span></span></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;">Beginning in 1993, he spent a handful (or so) years at various IT and software engineering related jobs (mostly in the defense industry) including a short tour as an Oracle DBA and a couple years as a network engineer.</span></span></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;"><br /></span></span></div>
<div style="text-indent: 0px;">
<span style="color: #333333; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 12.6px;">More details in linkedin: <a href="https://www.linkedin.com/in/azeckoski/">https://www.linkedin.com/in/azeckoski/</a></span></span></div>
</div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12.6px; padding: 0px; text-indent: 1.5em; text-size-adjust: auto;">
<br /></div>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.comtag:blogger.com,1999:blog-34341551.post-64477258439974141772014-06-19T15:18:00.000-04:002014-12-21T07:08:03.201-05:00Apereo Learning Analytics Processor begins<span style="font-family: Trebuchet MS, sans-serif;">The <a href="http://www.apereo.org/">Apereo</a> <a href="https://confluence.sakaiproject.org/display/LAI/">Learning Analytics Initiative</a> is beginning work on our first open source analytics pipeline processor this week. Learn more about <a href="https://confluence.sakaiproject.org/display/LAI/Apereo+Learning+Analytics+Processor">Learning Analytics Processor</a> project on our <a href="https://confluence.sakaiproject.org/display/LAI/">wiki</a>.</span><br />
<div style="background-color: white; color: #333333; font-size: 14px; line-height: 20px; margin-top: 10px; padding: 0px;">
<span style="font-family: Trebuchet MS, sans-serif;">Our goal is to build an Open source Java based Learning Analytics Processor (LAP) which initially automates the <a href="https://confluence.sakaiproject.org/pages/viewpage.action?pageId=75671025" style="color: #3b73af; text-decoration: none;">Marist OAAI Student Early Alerts and Risk Assessment</a> model. We also hope to e</span><span style="font-family: 'Trebuchet MS', sans-serif;">stablish a framework for automation and execution of learning analytics models (which is possible for others to extend with additional model pipelines). Finally we plan to </span><span style="font-family: 'Trebuchet MS', sans-serif;">establish input and output specifications for data used for learning analytics model processing.</span></div>
<div style="background-color: white; color: #333333; font-size: 14px; line-height: 20px; margin-top: 10px; padding: 0px;">
<span style="font-family: 'Trebuchet MS', sans-serif;">The Learning Analytics Processor (LAP) is meant to flexible enough to be extended to support many possible models and pipelines for analytics processing. The first one will be Early Alert but we want to support future additions and even multiple versions of the Early Alert model.</span></div>
<div style="background-color: white; color: #333333; font-size: 14px; line-height: 20px; margin-top: 10px; padding: 0px;">
<span style="background-color: transparent; font-family: 'Trebuchet MS', sans-serif;">We are developing in GitHub: </span><a class="external-link" href="https://github.com/Apereo-Learning-Analytics-Initiative/LearningAnalyticsProcessor" rel="nofollow" style="background-color: transparent; color: #3b73af; font-family: 'Trebuchet MS', sans-serif; text-decoration: none;">https://github.com/Apereo-Learning-Analytics-Initiative/LearningAnalyticsProcess</a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9boC4GlB-vpGJqyfWPELuT6p8Zn1FKVVBrOrk1rrHn9cvMEMxULa-3uXx3KRt4HBnMhy3etg_gCloiTJR4Tw-7jXPyGiVkDl8ea9ihAQu-PAGLIZNv3kKhXM5TFchxXoJzUbw/s1600/learning_analytics_diamond.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9boC4GlB-vpGJqyfWPELuT6p8Zn1FKVVBrOrk1rrHn9cvMEMxULa-3uXx3KRt4HBnMhy3etg_gCloiTJR4Tw-7jXPyGiVkDl8ea9ihAQu-PAGLIZNv3kKhXM5TFchxXoJzUbw/s1600/learning_analytics_diamond.png" height="296" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="background-color: white; color: #333333; font-size: 14px; line-height: 20px; margin-top: 10px; padding: 0px;">
<br /></div>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-12233141931359459812014-05-29T11:24:00.001-04:002014-12-21T07:08:58.678-05:00Apereo Learning Analytics @ Open Apereo 2014<span style="font-family: Georgia, Times New Roman, serif;">I and other members of the <a href="https://confluence.sakaiproject.org/display/LAI/Learning+Analytics+Initiative">Apereo Learning Analytics Initiative</a> (LAI) will be presenting at the <a href="http://conf2014.apereo.org/">Open Apereo 2014 conference</a> in Miami the first week of June.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF2P_PIrwhpyQRSn0w8j1QmFz4Egujhws9yN8dMzqAUC7BAiXmi_Db_mIwc4VhMZ3Ja4VIw6xQfQ8lYkjhRD8aSVgGD8d7B0UhwjGjUcWD5ftzzgujbrxjbkJ_UOnfj-8buzOi/s1600/LAI_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF2P_PIrwhpyQRSn0w8j1QmFz4Egujhws9yN8dMzqAUC7BAiXmi_Db_mIwc4VhMZ3Ja4VIw6xQfQ8lYkjhRD8aSVgGD8d7B0UhwjGjUcWD5ftzzgujbrxjbkJ_UOnfj-8buzOi/s1600/LAI_logo.png" height="142" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-OIka2vqZz1o/U4dPkesCRbI/AAAAAAAAGCI/AVW96koPbRg/s1600/apereo2014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Georgia, Times New Roman, serif;"><br /></span></a></div>
<a name='more'></a><br />
<span style="font-family: Georgia, Times New Roman, serif;">You can see the schedule of <a href="https://confluence.sakaiproject.org/x/6oB_BQ">Learning Analytics</a> presentations on our <a href="https://confluence.sakaiproject.org/x/3YB_BQ">Open Apereo 2014 conference Learning Analytics sessions wiki page</a>. If you are not sure what Learning Analytics is, we have some information for you <a href="https://confluence.sakaiproject.org/x/6oB_BQ">here</a> (and a nifty diagram to help it make sense).</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9boC4GlB-vpGJqyfWPELuT6p8Zn1FKVVBrOrk1rrHn9cvMEMxULa-3uXx3KRt4HBnMhy3etg_gCloiTJR4Tw-7jXPyGiVkDl8ea9ihAQu-PAGLIZNv3kKhXM5TFchxXoJzUbw/s1600/learning_analytics_diamond.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9boC4GlB-vpGJqyfWPELuT6p8Zn1FKVVBrOrk1rrHn9cvMEMxULa-3uXx3KRt4HBnMhy3etg_gCloiTJR4Tw-7jXPyGiVkDl8ea9ihAQu-PAGLIZNv3kKhXM5TFchxXoJzUbw/s1600/learning_analytics_diamond.png" height="296" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif;"><span style="background-color: white; line-height: 20px;">If you are interested in working towards a community sourced <a href="https://confluence.sakaiproject.org/x/6oB_BQ">learning analytics</a> infrastructure, incubating software, sharing requirements, cross validating analytics pilots, while working in a wider community of interest then please contact the Apereo LAI coordinator </span><a class="external-link" href="mailto:analytics-coordinator@apereo.org" rel="nofollow" style="background-color: white; color: #3b73af; line-height: 20px; text-decoration: none;"><span style="color: blue; text-decoration: underline;">analytics-coordinator@apereo.org</span><span style="color: black;"> or join the mailing list </span></a><span style="background-color: white; color: #1155cc; line-height: 20px; text-decoration: underline;"><a class="external-link" href="mailto:analytics@apereo.org" rel="nofollow" style="color: #3b73af; text-decoration: none;">analytics@apereo.org</a></span></span><br />
<div style="text-align: center;">
<span style="font-family: Georgia, Times New Roman, serif;">We hope to see you in Miami at <a href="http://conf2014.apereo.org/">Open Apereo 2014</a>!</span></div>
AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0Charlotte, NC, USA35.2270869 -80.84312669999997134.8118989 -81.488573699999975 35.642274900000004 -80.197679699999966tag:blogger.com,1999:blog-34341551.post-91093004033773313682010-09-15T10:32:00.000-04:002010-09-15T10:32:20.159-04:00Sending text like a proThese are great tools for sending chunks of text around to others. If you are a developer and used to using IM then tools like these are invaluable since they make your content readable or protect it from prying eyes.<div><ol><li>Pastebin (<a href="http://pastebin.com/">http://pastebin.com/</a>)<br />
Full featured, well supported, and fast. Pastebin has been around for awhile and has some very nifty options like automatic support for subdomains (e.g. <a href="http://azeckoski.pastebin.com/">http://azeckoski.pastebin.com/</a>), format highlight support, expiration, and even limited privacy settings.</li>
<li>Privnote (<a href="https://privnote.com/">https://privnote.com/</a>)<br />
This is great for sending someone a password, id number, or anything that you do not want to send over the open wire or via email. Once the user clicks the link and views the content it is deleted.<br />
The formatting of the text is lost here though so it is not good for sending formatted text.</li>
<li>Private Paste (<a href="https://privatepaste.com/">https://privatepaste.com/</a>)<br />
An excellent tool for sending along large blocks of formatted text that you do not want others to see. This supports expiration, format highlights and line numbering, and security key auth.</li>
</ol><div><br />
</div></div>AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com3tag:blogger.com,1999:blog-34341551.post-34513719737644662012010-03-03T06:01:00.004-05:002010-03-03T06:45:06.551-05:00EuroSakai: Sakai QA and How to get InvolvedAlan Berg, Anthony Whyte, Jean-François Lévêque, and I finished our final two presentations at the <a href="http://sakaiproject.org/sakai-european-regional-conference-2010">EuroSakai Valencia 2010</a> conference today. The overall theme of these presentations was "Get Involved". The presentations are <a href="http://confluence.sakaiproject.org/display/CNF/What+is+Sakai+QA">What is Sakai QA</a> and <a href="http://confluence.sakaiproject.org/display/CNF/10+ways+to+make+a+good+Sakai+release">10 ways to make a good Sakai release</a> (my apologies to the attendees but 8:30am is just too early for a session). I hope that our main point got across and I hope we provided helpful information for those brave enough to attend.<br />A few highlights for those who could not make it:<br /><ul><li>Alan did another Mexican wave</li><li>I (and others) was still half asleep during the morning session</li><li>Jean-François made a lot of food related jokes<br /></li><li><a href="http://icanhascheezburger.com/">lolcatz</a> were involved<br /></li></ul>Our major theme was "Blood and Treasure" (stolen from Anthony Whyte). If you have assets (people) then you have blood to contribute. If you are looking for ways to get involved please consider these opportunities. If you answer yes to any of these questions, or even if you don't, you may want to sign up to participate in one of these teams.<br /><ul><li><a href="http://confluence.sakaiproject.org/display/MNT">Sakai Maintenance Team</a> - are you a java developer? an SVN wizard? want to learn more about Sakai codebase? do you love issue management and/or JIRA? do you like to write unit tests?<br /></li><li><a href="http://confluence.sakaiproject.org/display/REL">Release Management</a> - are you a master of subversion? do you have a passion for merging code? are you running a 2.*.x branch in production?<br /></li><li><a href="http://confluence.sakaiproject.org/display/REL">Quality Assurance</a> - can you use a web browser? do you like trying every little thing in software? are you tired of hearing complaints from users after you upgrade?<br /></li></ul>The other primary and very critical way to get involved is with treasure. If you have some money you can spend on open source and/or Sakai then you have treasure. Consider putting this money into foundation dues or buying into commercial support. Check out the end of the <a href="http://confluence.sakaiproject.org/display/CNF/What+is+Sakai+QA">What is Sakai QA</a> presentation for a few options to get involved when you have money but no people (or if you have money AND people).<br />One final point from our talk. If you are involved, thank you. If you see others who are involved, please thank them.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com1tag:blogger.com,1999:blog-34341551.post-65862569838009427212010-03-02T11:37:00.003-05:002010-03-02T13:26:21.156-05:00EuroSakai Bootcamp<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gYJbpIL6GOI/S41YJI9P2rI/AAAAAAAAACs/pbBsMmD2W0A/s1600-h/bootcamp-logo.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 296px; height: 68px;" src="http://3.bp.blogspot.com/_gYJbpIL6GOI/S41YJI9P2rI/AAAAAAAAACs/pbBsMmD2W0A/s320/bootcamp-logo.png" alt="" id="BLOGGER_PHOTO_ID_5444104438607239858" border="0" /></a><br />Anthony Whyte and I presented the <a href="http://confluence.sakaiproject.org/display/BOOT/Bootcamp+Topics+%28Valencia+2010%29">programmers cafe bootcamp</a> at <a href="http://sakaiproject.org/sakai-european-regional-conference-2010">EuroSakai Valencia 2010</a> on Monday March 1st. This also coincided with my first official act as a Uniconer (short for <a href="http://www.unicon.net/">Unicon</a> employee) and my first presentation as the <a href="http://confluence.sakaiproject.org/display/MNT/Home">Sakai Maintenance Team</a> lead.<br />We had around 30 people in attendance with the majority from Spain. I felt like it went as well as these 1 day technical introductions to Sakai can reasonably go (i.e. a major overload for the participants) and I hope that the attendees had a good experience and learned something valuable. Anyone who wants to let us know what they thought of it can <a href="http://www.surveymonkey.com/s/LX9SPNK">fill out our survey</a>.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com1tag:blogger.com,1999:blog-34341551.post-62090626271306672292010-03-02T11:14:00.005-05:002010-03-02T13:28:32.400-05:00EuroSakai presentation - Sakai Best Practices<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gYJbpIL6GOI/S40-iQqcQ5I/AAAAAAAAACk/2cFK_Dxh8oY/s1600-h/Screen+shot+2010-03-02+at+17.13.23.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://1.bp.blogspot.com/_gYJbpIL6GOI/S40-iQqcQ5I/AAAAAAAAACk/2cFK_Dxh8oY/s320/Screen+shot+2010-03-02+at+17.13.23.png" alt="" id="BLOGGER_PHOTO_ID_5444076282870252434" border="0" /></a><br /><br />Alan Berg and I just finished our <a href="http://confluence.sakaiproject.org/display/CNF/Sakai+Best+practices">presentation on Sakai Best Practices</a> at <a href="http://sakaiproject.org/sakai-european-regional-conference-2010">EuroSakai Valencia 2010</a>. It started with a mexican wave (all Alan's fantastic idea) and included tips for creating JIRA tickets, an overview of best ways to take advantage of foundation resources, and some development best practices.<br />One key point we made during the presentation bears repeating. In many ways the <a href="http://sakaiproject.org/">Sakai</a> community is a <a href="http://www.communitywiki.org/en/DoOcracy">do-ocracy</a>.<br /><blockquote>A <strong>do-ocracy</strong> is an organizational structure in which individuals choose roles and tasks for themselves and execute them. Responsibilities attach to people who <strong>do</strong> the work, rather than elected or selected officials.<br /></blockquote>I have also heard people refer to Sakai as a meritocracy and perhaps in some ways it is. But much more than that I think it is driven forward by those willing to act. I hope that we are encouraging people to get involved and act because that is the lifeblood of community source.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com1tag:blogger.com,1999:blog-34341551.post-62236765645223646582009-08-28T09:09:00.005-04:002009-08-28T09:43:06.389-04:00Helpful online toolsThese are a bunch of online tools which I find indispensable when I need to do some quick validation, encoding, or formatting/indenting.<br /><ol><li>XML escaping - <a href="http://escapehtmlforxml.com/">http://escapehtmlforxml.com/</a><br /></li><li>XML indenting (critical when trying to read ugly XML) - <a href="http://xmlindent.com/">http://xmlindent.com/</a></li><li>JSlint (javascript code checker) - <a href="http://www.jslint.com/">http://www.jslint.com/</a></li><li>JSONlint (JSON validator and formatter) - <a href="http://www.jsonlint.com/">http://www.jsonlint.com/</a></li><li>W3C HTML validator - <a href="http://validator.w3.org/">http://validator.w3.org/</a></li><li>W3C CSS validator - <a href="http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a></li><li>WDG tools (web validators) - <a href="http://htmlhelp.com/tools/">http://htmlhelp.com/tools/</a></li><li>XHTML/CSS page validator - <a href="http://xhtml-css.com/">http://xhtml-css.com/</a></li><li>shell tools (xml, base64, md5/sha1, and more) - <a href="http://www.shell-tools.net/">http://www.shell-tools.net/</a></li></ol>Hope this list of tools is helpful!AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com2tag:blogger.com,1999:blog-34341551.post-84397353540161136472009-08-08T09:47:00.008-04:002009-08-08T10:24:09.257-04:00Easy license headers with mavenIf you are like me you probably hate trying to maintain <a href="http://www.apache.org/legal/src-headers.html">license headers</a> on your source code files. It has to be done for pretty much all of my projects (since I deal in <a href="http://en.wikipedia.org/wiki/Open_source">open source</a> 99% of the time) but it is pure <a href="http://www.thefreedictionary.com/drudgery">drudgery</a>. I found a great <a href="http://maven.apache.org/plugins/">plugin for maven 2</a> which makes this a piece of cake (very easy). The <a href="http://code.google.com/p/maven-license-plugin">maven-license-plugin</a> can (optionally) check your source files for headers (you control which ones or just use the defaults) and add in or replace the headers for you. Forget about doing this manually anymore; those days are over. You just specify a license header template like this (i.e. create a file, I use LICENSE_HEADER):<blockquote><pre><br />Copyright (C) ${year} ${holder} <${contact}><br /><br />This file is part of ${name}.<br /><br />Licensed under the Apache License, Version 2.0 (the "License");<br />you may not use this file except in compliance with the License.<br />You may obtain a copy of the License at<br /><br /> http://www.apache.org/licenses/LICENSE-2.0<br /><br />Unless required by applicable law or agreed to in writing, software<br />distributed under the License is distributed on an "AS IS" BASIS,<br />WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br />See the License for the specific language governing permissions and<br />limitations under the License.<br /></pre></blockquote><br />Then add something like this to your project pom.xml (in the <span style="font-weight: bold;">build</span> section under <span style="font-weight: bold;">plugins</span>):<pre class="brush:xml"><br /><plugin><br /><groupId>com.google.code.maven-license-plugin</groupId><br /><artifactId>maven-license-plugin</artifactId><br /><configuration><br /> <header>${basedir}/LICENSE_HEADER</header><br /> <excludes><br /> <exclude>target/**</exclude><br /> <exclude>m2-target/**</exclude><br /> <exclude>**/*.properties</exclude><br /> </excludes><br /> <properties><br /> <name>${project.name}</name><br /> <year>${project.inceptionYear}</year><br /> <holder>Aaron Zeckoski</holder><br /> <contact>azeckoski@gmail.com</contact><br /> </properties><br /> <encoding>UTF-8</encoding><br /></configuration><br /><executions><br /> <execution><br /> <goals><br /> <goal>check</goal><br /> </goals><br /> </execution><br /></executions><br /></plugin><br /></pre><br />You need to add in the plugin repo in the <span style="font-weight: bold;">pluginRepositories</span> section:<pre class="brush:xml"><br /><pluginRepository><br /><id>mc-release</id><br /><url>http://mc-repo.googlecode.com/svn/maven2/releases</url><br /></pluginRepository><br /></pre><br />That config will cause the check to run on every build (ignoring properties files is a good idea since the plugin has trouble with them). Files with a missing license header will cause the build to fail ensuring you remember to run the command to format them. The properties you set there will fill in the <span style="font-style: italic;">${field}</span> vars in the license header template.<br /><br />Now run the maven command to check for license headers:<br /><blockquote style="font-family: courier new;">mvn license:check</blockquote>or simply do a build (which will also run the check):<br /><blockquote style="font-family: courier new;">mvn clean install</blockquote>You should get a report about the files missing license headers.<br />Run this command and all the license headers will be added or updated to match your template:<br /><blockquote><span style="font-family:courier new;">mvn license:format</span><br /></blockquote>One final note, you can remove all the license headers using "<span style="font-family:courier new;">mvn license:remove</span>". Very cool.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-57449202515759528432009-07-27T06:27:00.008-04:002009-07-27T14:30:31.209-04:00Keys to High Performance Web ApplicationsI know <a href="http://en.wikipedia.org/wiki/Web_application">web application</a> <a href="http://en.wikipedia.org/wiki/Computer_performance">performance</a> has been <a href="http://www.eggheadcafe.com/articles/20010314.asp">discussed</a> <a href="http://dotnetslackers.com/articles/aspnet/ImproveWebApplicationPerformance.aspx">about</a> <a href="http://www.oreillynet.com/pub/a/javascript/2002/06/27/web_tuning.html">100</a> <a href="http://www.javaperformancetuning.com/tips/appservers.shtml">times</a> <a href="http://www.devx.com/webdev/Article/42277">before</a>, but it bears repeating (if only briefly and mostly with links) since it is such an important topic.<br /><br />If you have never tried to ensure your web application will run well then my rule #1 is to not change your application architecture. Program performance is a <a href="http://stevesouders.com/hpws/index.php">separate issue</a> that rarely is a problem compared to <a href="http://en.wikipedia.org/wiki/Latency_%28engineering%29#Packet-switched_networks">network latency</a> and <a href="http://www.die.net/musings/page_load_time/">server request overhead</a>. I am not saying it is never a problem but you should try things that are much easier first before diving into a restructuring or a rewrite of your app (<a href="http://www.codinghorror.com/blog/archives/001198.html">in most cases buying more hardware is cheaper</a> and safer). As <a href="http://en.wikiquote.org/wiki/Donald_Knuth">Donald Knuth</a> says, "<span style="font-style: italic;">Premature optimization is the root of all evil (or at least most of it) in programming</span>"<br /><br />Now that you have done nothing to start (so far so good right?) it is time to do something. Get the <a href="http://developer.yahoo.com/yslow/">YSlow analyzer</a> for <a href="http://getfirebug.com/">Firebug</a> and run it against your web application. It will provide you with a report which you can use to identify possible performance issue. The <a href="http://getfirebug.com/net.html">Firebug network monitor</a> and to a lesser extent the <a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/UsingtheWebInspector/UsingtheWebInspector.html">Safari Web Inspector</a> are also good tools for profiling the requests on a page.<br />Here is a list of a few more performance apps from the <a href="http://www.razorspeed.com/blog/2009/07/02/build-high-performance-web-apps.html">RazorSpeed</a> blog and around the web:<br /><ul><li><a href="http://www.httpwatch.com/">HttpWatch</a> - browser plugin for IE and Firfox for profiling page loads<br /></li><li><a href="http://code.google.com/speed/page-speed/">PageSpeed</a> - browser plugin for Firefox for profiling page loads</li><li><a href="http://stevesouders.com/hammerhead/">Hammerhead</a> - an addon for Firebug for profiling page loads</li><li><a href="http://rockstarapps.com/joomla-1.5.8/products/jslex-web-optimizer/css-a-javascript-optimization.html">RockStar Optimizer</a> - an eclipse plugin (<a href="http://www.rockstarapps.com/update-beta">update site</a>) for optimizing HTML/CSS/JS/IMG</li><li><a href="http://rockstarapps.com/joomla-1.5.8/products/razor-web-profiler/overview.html">Rockstar Profiler</a> - a robust profiler application which uses proxies</li></ul>No discussion of web app performance would be complete without including a link to <a href="http://stevesouders.com/">Steve Souders' blog</a>. While you are there check out <a href="http://stevesouders.com/compare.php">compare</a>. Some of the results are surprising and others not so much.<br /><br />Many tuning option are in the hands of your <a href="http://en.wikipedia.org/wiki/System_administrator">system administrator</a> so if that is not you then you can relax a little bit. However, as a web application developer (<a href="http://en.wikipedia.org/wiki/Web_developer">frontend/web developer</a> or backend engineer), you should at least know where the common problems lie and this is where the <a href="http://developer.yahoo.com/performance/rules.html">bible of web application performance (Yahoo performance rules)</a> comes in. It is a list of <a href="http://en.wikipedia.org/wiki/Best_practice">best practices </a>which can be roughly summarized as reduce requests, spread the load, utilize caching and compression, and structure pages for efficiency. If you want the shorter list then check out <a href="http://stevesouders.com/hpws/rules.php">14 Rules for Faster-Loading Web Sites</a> (it is just a list of rules taken from the bible with samples). If you prefer an alternative list then try the <a href="http://code.google.com/speed/page-speed/docs/rules_intro.html">PageSpeed rules</a>.<br /><br />If you are lucky you are using an environment that has performance tuning built in (like the <a href="http://www.grails.org/plugin/ui-performance">grails ui performance plugin</a> or the <a href="http://www.rockstarapps.com/update-beta/">RockStarApps eclipse/aptana plugin</a>) which will do most of what the performance rules suggest automatically (what can be done in the app anyway). Most web servers provide <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html">support for compression</a> so that usually is best handled at that layer anyway. For the rest of the best practices, you will just have to learn and apply the <a href="http://developer.yahoo.com/performance/rules.html">performance rules best practices</a>. In most cases it will be well worth your time.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-32641997230588265822009-07-20T11:00:00.005-04:002009-07-20T11:11:05.912-04:00JavaForge requires authn to access SVNI went to setup an account on <a href="http://javaforge.com/">JavaForge</a> for <a href="http://www.steeple.org.uk/">Steeple</a> today. Everything went pretty smoothly with the initial setup. It was easy to create an account and setup a new project. The site allows for fine-grained permissions which are easy to configure and has a very nice wiki. It also included code analysis and build tools (which are why I decided to try it out in the first place).<br /><br />I hit the first bump after creating the <a href="http://en.wikipedia.org/wiki/Subversion_%28software%29">SVN repository</a>. I could not find the URL to the respository anywhere. After searching around for ahile I figured out that the URL was:<br /><a href="http://svn.javaforge.com/svn/steeple">http://svn.javaforge.com/svn/steeple</a><br /><br />The next issue, which ended up being insurmountable, was related to access to the SVN respository. Try as I might there was no way to allow public access to it. Anyone trying to access the public URL will receive a <a href="http://en.wikipedia.org/wiki/Basic_access_authentication">basicauth</a> challenge. Just to view the respository a user has to enter in the username of "anonymous" with a password of "anon". As a result I had to drop javaforge and go with my backup of <a href="http://code.google.com/">google code</a> for now.<br /><br />I did post a <a href="http://javaforge.com/proj/forum/viewMessage.do?thread_id=49988&msg_id=49988&thread_members=true">question on the javaforge forums</a> about this but from reading the other forum messages I think it is just not possible.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-90441420839648768422009-07-16T07:30:00.009-04:002009-07-16T09:42:56.104-04:00My first week with Groovy and GrailsI spent time over the last week learning about <a href="http://groovy.codehaus.org/">Groovy</a> (a dynamic language for the JVM) and <a href="http://www.grails.org/">Grails</a> (a code by convention web application framework built on Groovy) so I thought I would write up my impressions and some of the fun things I learned.<br />So you have a sense of where I am coming from, I am a long time Web applications and Java/PHP/Javascript/Perl developer. I am somewhat newer to Python and Ruby but I prefer Python. I am a <a href="http://en.wikipedia.org/wiki/REST">REST</a> and <a href="http://en.wikipedia.org/wiki/Open_source">Open Source</a> advocate when I am in the right mood.<br /><br />If you are totally unfamiliar with Groovy then I recommend you take a look at this post as it lays out the reasons why you might want to learn more about it:<br /><a href="http://codetojoy.blogspot.com/2009/06/case-for-groovy.html">http://codetojoy.blogspot.com/2009/06/case-for-groovy.html</a><br /><br />If you know you are going to be writing web-apps then just skip Groovy and go straight for Grails. If you are looking to do some <a href="https://scripting.dev.java.net/">JSR-223 (Java Scripting)</a> stuff (<a href="http://groovy.codehaus.org/JSR+223+Scripting+with+Groovy">with Groovy</a>) then Groovy is the place to focus on. Either way, you will need to get familiar with the basics of Groovy so look at these:<br /><a href="http://groovy.codehaus.org/Quick+Start">http://groovy.codehaus.org/Quick+Start</a><br /><a href="http://groovy.codehaus.org/Collections">http://groovy.codehaus.org/Collections</a><br />Feel free to checkout some <a href="http://azsandbox.googlecode.com/svn/trunk/groovy-experimenting/src/main/groovy/">sample Groovy scripts</a> I made which illustrate many of the key concepts.<br /><br />The <a href="http://groovy.codehaus.org/Getting+Started+Guide">Getting Started Guide</a> for Groovy is huge and not really a very good place to try to get started unfortunately. That said, the <a href="http://groovy.codehaus.org/Beginners+Tutorial">Beginners Tutorial</a> is pretty good, especially the <a href="http://groovy.codehaus.org/Tutorial+2+-+Code+as+data%2C+or+closures">section on closures</a>.<br /><br />If you want to get going with Grails then it is a little bit easier since it mostly builds on Groovy. Grails borrows heavily from <a href="http://rubyonrails.org/">Ruby on Rails</a> so if you are familiar with it then things will come to you quickly. This is the best place to start (not surprisingly):<br /><a href="http://www.grails.org/Quick+Start">http://www.grails.org/Quick+Start<br /></a>I really liked the <a href="http://www.grails.org/screencasts">screencasts</a> (which are oddly <a href="http://www.grails.org/Grails+Screencasts">located here</a> also). They provided a nice introduction to Grails without much effort. When you are ready for a little more the <a href="http://www.grails.org/Tutorials">tutorials</a> are a good next step.<br /><br />Things I learned in no particular order:<br /><ul><li><span style="font-weight: bold;">Maven and Grails do not get along</span> - There is some really <a href="http://www.grails.org/Maven+Integration">weak maven integration</a> available but it does not work very well. The structure of grails (e.g. src/groovy) does not match the maven standard structure (e.g. src/main/groovy). Mostly maven just allows you to run the grails build commands which is easier to do with grails itself. I struggled with this for awhile before just giving up on using maven. The Grails team recommends using <a href="http://grails.org/Ivy+Integration">Ivy</a> if you want to add dependency management (or Grails plugins which are preferred if they are available).<br />The grails and groovy artifacts are available in maven repositories which is nice.<br /></li><li><span style="font-weight: bold;">Grails and Eclipse don't easily integrate</span> - The <a href="http://groovy.codehaus.org/Eclipse+Plugin">Groovy plugin</a> is pretty good (not great) but the build integration is pretty poor and requires you to jump through hoops. It seems like the integration with <a href="http://www.jetbrains.com/idea/">IDEA</a> is a lot better and <a href="http://www.grails.org/IDE+Integration">recommended by the Grails team</a>.</li><li><span style="font-weight: bold;">Groovy supports closures</span> - The <a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29">closure</a> <a href="http://groovy.codehaus.org/Closures">support in groovy</a> is great and very easy to use. I found myself writing closures like crazy (even more than in <a href="http://www.javascriptkit.com/javatutors/closures.shtml">Javascript</a>) and it made the code very clean.<br /><span style="font-style: italic; font-weight: bold;">NOTE:</span> I ran across one weird bug where passing in a String[] to a closure causes it to be misinterpreted as a collection of separate arguments for each array entry. There are hacks to get around this but be aware that it may bite you.</li><li><span style="font-weight: bold;">Grails has a great plugin system</span> - <a href="http://www.grails.org/Plugins">Grails has a pretty powerful plugin system</a> which allows easy extension of a grails app. The plugins seems to be <a href="http://www.grails.org/doc/1.0.x/ref/Command%20Line/install-plugin.html">very easy to install</a> and <a href="http://www.grails.org/Creating+Plugins">fairly easy to write</a>. There is <a href="http://www.grails.org/The+Plug-in+Developers+Guide">a complete guide</a> if you are interested in developing your own plugins.<br /></li><li><span style="font-weight: bold;">Grails app creation puts in too much stuff</span> - The structure generated by grails create-app has a lot of stuff in it which you will probably want to cleanup (like the hibernate plugin by default for example). There is no uninstall for plugins so just remove the dir of the plugin to get rid of it. Be careful to not leave in a lot of things you are not going to use and clean out the sample stuff under web-app as well.<br /></li><li><span style="font-weight: bold;">Grails convention is not very flexible</span> - Grails prides itself on "<span style="font-style: italic;">code by convention</span>" and "<span style="font-style: italic;">convention over configuration</span>" and it does a good job of establishing a lot of conventions. It takes a little while to get used to them but if you follow them then things are pretty easy. Unfortunately, this implies that it is possible to override the convention using configuration if needed and in many cases it is not. I have been bitten a few times already when I tried to do things that are not "on the rail".<br /></li><li><span style="font-weight: bold;">Grails uses prototype.js by default</span> - The built in javascript engine in Grails is the portal/multi-framework unfriendly prototype.js. I can't use it so I am playing around with using <a href="http://jquery.com/">jQuery</a> instead (so far this is proving to be manageable). There is a <a href="http://www.grails.org/jQuery+Plugin">jQuery plugin</a> which helps make this easier.<br /></li></ul>I am still getitng used to things but I am not sure what Groovy/Grails gains me over using Jython/<some>. It seems like <a href="http://www.jython.org/">Jython</a> does everything Groovy does plus it has the massive <a href="http://www.python.org/">Python</a> <a href="http://www.python.org/community/">community</a> for support.<br />As far as <a href="http://en.wikipedia.org/wiki/Scripting_language">scripting languages</a> go I think I prefer <a href="http://en.wikipedia.org/wiki/PHP">PHP</a>, <a href="http://en.wikipedia.org/wiki/Javascript">Javascript</a>, <a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29">Python</a>, and <a href="http://en.wikipedia.org/wiki/Perl">Perl</a> (in that order) over Groovy but this may just due to a lack of familiarity on my part.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com2tag:blogger.com,1999:blog-34341551.post-25572517060003374652009-07-03T20:01:00.004-04:002009-07-07T09:24:04.443-04:00Sakai AppBuilder Plugin updated to 0.8.7The <a href="http://confluence.sakaiproject.org/display/BOOT/Sakai+App+Builder">Sakai AppBuilder Eclipse Plugin</a> is updated to a new version (0.8.8<del>0.8.7</del>) which includes updates for <a href="http://confluence.sakaiproject.org/display/REL/Kernel+1+%28K1%29">Sakai K1</a> and support for <a href="http://wicket.apache.org/">Wicket</a>. Many thanks to <a href="http://confluence.sakaiproject.org/display/%7Esteve.swinsburg/Home">Steve Swinsburg</a> who did all the heavy lifting on this update. You can install the plugin using <a href="http://confluence.sakaiproject.org/display/BOOT/Sakai+App+Builder">instructions here</a> or update it to the new version from within eclipse if you have installed it before.<br /><blockquote>The Sakai AppBuilder is a RAD tool that allows you to quickly create <a href="http://sakaiproject.org/" rel="nofollow">Sakai</a> webapp projects in <a href="http://confluence.sakaiproject.org/display/BOOT/Eclipse+Tips" title="Eclipse Tips">Eclipse</a> that will work in the <a href="http://confluence.sakaiproject.org/display/BOOT/Developing+with+the+Sakai+Framework" title="Developing with the Sakai Framework">Sakai Framework</a>. Use these as a basis for the projects that you want to make without all the busy work of creating the structures and adding in all the dependencies. You can choose various UI layer options and implementation types to get you started quickly.<br /></blockquote><span style="font-weight: bold;">NOTE:</span> Updated for the 0.8.8 release (minor fix from 0.8.7)AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-78750790124492139722009-07-01T10:22:00.004-04:002009-07-01T10:54:38.348-04:00Aptana Studio 1.2 crash and upgrading to 1.3I recently upgraded <a href="http://java.sun.com/javase/6/">Java to version 1.6</a> (build 1.6.0_13-b03-211) on my macbook pro running <a href="http://www.apple.com/macosx/">OSX</a> 10.5.7 (leopard). It was a bit of a chore but it mostly sped things up and allowed me to run some of the newer apps that require Java 6.<br /><br />I had a major casualty though when <a href="http://www.aptana.com/studio">Aptana Studio</a> stopped working. It would simply crash without even giving a decent error message and the logs were not helpful.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gYJbpIL6GOI/Skt4as5KAkI/AAAAAAAAACU/H8B1XQrES50/s1600-h/Aptana-1.2.7-error.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 114px;" src="http://2.bp.blogspot.com/_gYJbpIL6GOI/Skt4as5KAkI/AAAAAAAAACU/H8B1XQrES50/s320/Aptana-1.2.7-error.png" alt="" id="BLOGGER_PHOTO_ID_5353504982182789698" border="0" /></a>I normally run the <a href="http://www.aptana.com/studio/download">standalone version of Aptana Studio</a> (1.2.7) which is built on <a href="http://www.eclipse.org/">eclipse</a> 3.2. This seems to no longer run on OSX and Java 6 so I went in search of a fix. After lots of <a href="http://forums.aptana.com/">forum browsing</a>, tweaking configurations, and reinstalling I ended up retiring version 1.2 and trying out version 1.3 (still in beta). It was hard to find the <a href="http://www.aptana.com/blog/jlam/aptana_studio_andretti_alpha">1.3 downloads page so here is a link</a>.<br /><br />It installs quite easily and ran which was a major improvement. However, when I tried to install the features (plugins) I am used to, they all indicated that they were incompatible and would not install. This seemingly hopeless situation was actually easily fixed by updating Aptana Studio (<span style="font-style: italic;">Help -> Software Updates</span>). Once that was done (definitely restart here) I installed the features (<span style="font-style: italic;" class="blsp-spelling-error" id="SPELLING_ERROR_0">php</span><span style="font-style: italic;">, </span><span style="font-style: italic;" class="blsp-spelling-error" id="SPELLING_ERROR_1">pydev</span><span style="font-style: italic;">, git</span>) and <span class="blsp-spelling-error" id="SPELLING_ERROR_2">plugins</span> (<span style="font-style: italic;">epic</span>) that I like and everything seems to work fine again.<br /><br />Hopefully this will save someone a little pain.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-20044888906190583482009-06-17T12:52:00.010-04:002009-06-17T14:07:56.748-04:00PHP dash in class and method namesI ran into what seems like a common issue when working with <a href="http://php.net/">PHP</a> and <a href="http://php.net/manual/en/ref.simplexml.php">SimpleXML</a> today. Parsing XML is normally pretty easy:<pre class="brush: php"><?php<br />header('Content-type: text/plain');<br /><br />$xmlData = <<<XML<br /><?xml version='1.0'?><br /><trees><br /> <fruit><br /> <apple name='apple' type='Deciduous' has-fruit='Y' /><br /> <pear name='pear' type='Deciduous' has-fruit='Y' /><br /> </fruit><br /> <pine><br /> <white name='whitepine' type='Coniferous' has-fruit='N' /><br /> </pine><br /></trees><br />XML;<br /><br />$xml = simplexml_load_string($xmlData);<br /><br />echo "Testing SimpleXml";<br />echo "\n".$xmlData;<br />echo "\nName:".$xml->fruit->apple->getName();<br />echo " Type:".$xml->fruit->apple->attributes()->type;<br />?><br /></pre>Output:<br />Name:apple Type:Deciduous<br /><br />However, if you decide to include a hyphen or a dash in the name of your attribute things get a bit more interesting. The code has to be adjusted since the name of a class method cannot contain "-". To make it work, the attribute name has to include braces and single quotes (e.g. "{'name'}").<br /><pre class="brush: php">echo "\n".$xmlData;<br />echo "\nName:".$xml->fruit->apple->getName();<br />echo " Type:".$xml->fruit->apple->attributes()->type;<br />echo "\nFruit?:".$xml->fruit->apple->attributes()->{'has-fruit'};<br /></pre>Output:<br />Name:apple Type:Deciduous<br />Fruit?:YAZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com2tag:blogger.com,1999:blog-34341551.post-9649472102954824092009-06-12T09:19:00.008-04:002009-06-12T10:14:49.323-04:00Tricky SOLR schema issue with StrFieldI have been setting up <a href="http://lucene.apache.org/solr">SOLR</a> (version 1.3) as a search index for the <a href="http://www.darwinproject.ac.uk/">Darwin Correspondence project</a>. While making a few changes I ran into a really annoying issue today related to the way the schema configuration works. The <a href="http://wiki.apache.org/solr/SchemaXml">SOLR schema</a> (schema.xml) allows you to setup <a href="http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters">Analyzers and Filters</a> which allow control of how terms are indexed and searches are executed.<br /><br />I needed to make it so we could match names when the case is not exact and when the chars are special (i.e. "u" needs to match a name with "ü"). The field started out like this:<br /><pre class="brush: xml"><fieldType name="name" class="solr.StrField" sortMissingLast="true" omitNorms="true" compressed="false" indexed="true" stored="true"><br /></pre>For my first attempt I added an analyzer to the field like so:<br /><pre class="brush: xml"><fieldType name="name" class="solr.StrField" sortMissingLast="true" omitNorms="true" compressed="false" indexed="true" stored="true"><br /><analyzer type="index"><br /> <tokenizer class="solr.HTMLStripStandardTokenizerFactory"/><br /> <filter class="solr.StandardFilterFactory"/><br /> <filter class="solr.ISOLatin1AccentFilterFactory"/><br /> <filter class="solr.LowerCaseFilterFactory"/><br /> <filter class="solr.TrimFilterFactory" /><br /></analyzer><br /><analyzer type="query"><br /> <tokenizer class="solr.StandardTokenizerFactory"/><br /> <filter class="solr.LowerCaseFilterFactory"/><br /> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/><br /></analyzer><br /></fieldType><br /></pre>I loaded data into SOLR and tried out some searches and go no results. I was getting exact matches only (as if I had no analyzers). When I checked the solr admin analysis page it indicated that the filters were working and the tests there even seemed to show that things were ok. Unfortuantely, I found out that SOLR does not actually execute the analyzers if the field class is set to <span style="font-weight: bold;">solr.StrField</span>. It doesn't fail or indicate errors in the logs but your searches will not work the way you expect them to. Changing the field over to class <span style="font-weight: bold;">solr.TextField</span> fixed the problem.<br />The correct configuration for the field is this:<br /><pre class="brush: xml"><fieldType name="name" class="solr.TextField" sortMissingLast="true" omitNorms="true" compressed="false" indexed="true" stored="true"><br /><analyzer type="index"><br /> <tokenizer class="solr.HTMLStripStandardTokenizerFactory"/><br /> <filter class="solr.StandardFilterFactory"/><br /> <filter class="solr.ISOLatin1AccentFilterFactory"/><br /> <filter class="solr.LowerCaseFilterFactory"/><br /> <filter class="solr.TrimFilterFactory" /><br /></analyzer><br /><analyzer type="query"><br /> <tokenizer class="solr.StandardTokenizerFactory"/><br /> <filter class="solr.LowerCaseFilterFactory"/><br /> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/><br /></analyzer><br /></fieldType><br /></pre><br />I spent a few hours figuring this out so I hope that this saves someone a little time.AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com3tag:blogger.com,1999:blog-34341551.post-31157860057107081692009-05-25T05:08:00.009-04:002009-05-25T10:25:51.751-04:00PHP CodeSniffer tipsI really love tools which help my code be more correct and more readable. I have referred to tools like <a href="http://www.jslint.com/">JSLint</a> (JS) and <a href="http://findbugs.sourceforge.net/">FindBugs</a> (Java) in previous posts and now I am going to write some tips about using <a href="http://pear.php.net/package/PHP_CodeSniffer">PHP CodeSniffer</a> (PHP) (a.k.a. phpcs). It is probably the most aggressive of the three and can be especially tricky on the requirements it puts on your file headers.<br /><br />Here is a sample file header:<pre class="brush: php"><br /><?php<br />/**<br />* Presto - a lightweight REST framework for PHP<br />*<br />* Presto is a simple to use and very lightweight REST framework for PHP,<br />* it will help you to handle rest routing and input/output of data without<br />* getting in your way<br />*<br />* PHP Version 5<br />*<br />* LICENSE:<br />* Licensed under the Apache License, Version 2.0 (the "License");<br />* you may not use this file except in compliance with the License.<br />* You may obtain a copy of the License at<br />* http://www.apache.org/licenses/LICENSE-2.0<br />* Unless required by applicable law or agreed to in writing, software<br />* distributed under the License is distributed on an "AS IS" BASIS,<br />* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br />* See the License for the specific language governing permissions and<br />* limitations under the License.<br />*<br />* @category File<br />* @package Presto<br />* @author Aaron Zeckoski <azeckoski@vt.edu><br />* @copyright 2009 Aaron Zeckoski<br />* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0<br />* @version SVN: $Id:$<br />* @link https://link/to/your/project/site<br />* @since inception<br />*/<br /></pre><br />A few comments about the header:<br /><ul><li>The copyright cannot have a comma after the year but the year can be a range. "2002-2009 AZ" is ok, "2009, AZ" is not</li><li>The license should appear inside the header like shown, not above it (this would cause an ERROR in phpcs)</li><li>The alignment of the data after the tags (e.g. @license, @version) is not optional, misaligned data causes an ERROR</li></ul>Sample class:<pre class="brush: php"><br />/**<br />* My class which does some stuff<br />*<br />* @category Class<br />* @package Presto<br />* @author Aaron Zeckoski <azeckoski@vt.edu><br />* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0<br />* @link https://link/to/the/project/again<br />*/<br />class RestController<br />{<br /> const DEFAULT_RESOURCES_DIR = 'resources';<br /><br /> /**<br /> * This is a method in my class<br /> *<br /> * @param object $_resourcesPath [optional] the resource path<br /> *<br /> * @return void<br /> */<br /> protected function loadResources($_resourcesPath = self::DEFAULT_RESOURCES_DIR)<br /> {<br /></pre><br />There are also a few of the rules about classes that caught me out as well:<br /><ul><li>Class methods must use camelCase. myMethodName is good, my_method_name is not</li><li>Classes MUST have a comment on them and it has to include a lot of the fields from the header. The ones I list in the sample above are the minimum (seriously).</li><li>The space between @params and @return is not optional<br /></li><li>Just a note on constants in PHP, you use <span style="font-weight: bold;">const</span> inside classes and <span style="font-style: italic;">define</span> outside</li></ul>Take a look at the sample file and class headers here for more details: <a href="http://pear.php.net/manual/en/standards.sample.php">http://pear.php.net/manual/en/standards.sample.php</a>AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0tag:blogger.com,1999:blog-34341551.post-21150929170826734842009-05-23T19:57:00.002-04:002009-05-23T20:29:49.313-04:00Open Repositories 09 developer viewI just got back from the <a href="https://or09.library.gatech.edu/">Open Repositories 2009</a> conference in Atlanta, GA, US and wanted to highlight a few things which were interesting to me (from a developer's perspective).<br /><ol><li>Pluggable (extendable) repository systems<br /><a href="http://wiki.dspace.org/index.php/DSpace_2.0">DSpace 2</a> was initially designed to support plugins and there were some suggestions which will improve it further. The <a href="http://www.eprints.org/">Eprints</a> team showed off a really cool proof of concept of a plugins store which allows browsing, downloading, and installing from within eprints. The <a href="http://www.fedora-commons.org/">Fedora Commons</a> team indicated interest in using <a href="http://www.osgi.org/Main/HomePage">OSGi</a> to manage their services and enable plugin points.</li><li><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">ReST</a> interfaces<br />All the major systems have some <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">ReST</a> in place now and are working on having fully <a href="http://microformats.org/wiki/rest/urls">restful</a> access available in the fairly near future. I think (and hope) this will lead to more mashup style integrations and easier access to repository data which can only be a good thing.<br /></li><li><a href="http://duraspace.org/">DuraSpace</a><br />The merging of the <a href="http://www.dspace.org/">DSpace</a> and Fedora Commons communities into <a href="http://duraspace.org/">DuraSpace</a> is cool because it means 2 teams of great developers will now be one. They also showed off the DuraCloud distributed storage service which is interesting from a scaling and backup perspective.</li><li><a href="http://dev8d.jiscinvolve.org/2009/05/20/repochallenge-winners/">Developer Repo Challenge</a><br />There were some really cool projects and ideas demonstrated for the repo challenge. My personal favorite was the EprintsAppStore. I also really liked the FedoraFS entry from a technical coolness perspective and MentionIt (the winner) for its simplicity.<br /></li></ol>AZhttp://www.blogger.com/profile/08720686868620505220noreply@blogger.com0