Sunday, March 8, 2015
How Atlassian integrated with Google Apps Part 2
Part 2: Three hurdles to integrating Google Talk with JIRA Studio
In a previous post, I described how we came up with the idea for the JIRA Studio Activity Bar as part of our Google Apps Marketplace and JIRA Studio integration. Things were going pretty well. We were able to get data from Google Apps using the Google Apps data APIs using OAuth for authorization. We were able to connect to the Google Talk servers and retrieve a users buddy list and get buddy updates. We could send and receive messages to buddies. More importantly, we were able to do it in a scalable way using Comet techniques, such as long-polling.You didn’t think it was going to be that easy, did you?
Things were going well. Which is to say, the ground hadnt yet fallen out from under us. That is, until someone on the JIRA Studio team realized that even though we were deploying to Tomcat 6 and using Atmosphere to take advantage of asynchronous IO, we werent really going to be saving that many resources. He explained that the standard Studio setup is to run all our application servers behind Apache. Ok, thats typical enough. Whats the big deal? Well, apparently Apache can be a bit of a resource hog.Your asynchronous IO is nice and all, but…
The Studio Apache configuration uses prefork mode. Each of those Apache processes takes up about 20MB. And since Apache uses blocking IO, all the effort to scale on the application server side might be for nothing if we tied up a bunch of Apache processes that would eat up the limited amounts of memory available. We discussed switching to using a worker threads configuration, but decided it didnt really buy us that much in savings. We suggested deploying all the applications behind a web server implemented using asynchronous IO, like Nginx, but that would have been too big a configuration change to make without adequate time to test.Finally, we hit upon a solution. We can just have browsers connect directly to the application server that the ActivityBar webapp was running on! All the regular Studio apps could continue running at
http://yourcompany.jira.com/
and the ActivityBar webapp would run at http://yourcompany.jira.com:8000/
or something similar. Users wouldnt care because the ActivityBar webapp is only ever accessed in the background. Ok, we can put that issue to bed.You cant do that!
Wait, whats that, you say? Oh no, youre right! Now were violating the same origin policy that we had been able to avoid before! Hold on a second, though. If my memory serves me correctly, I remember seeing a solution to this very problem when we were working on the new OpenSocial-based dashboard system in JIRA 4. There is an RPC system that allows the gadget - an iframe which in some circumstances is loaded from a different origin than the container - to send messages to the container. It has about 5 different implementations for all the different variations of browsers that are out there - it useswindow.postMessage
on all the latest browsers that support it, some funky VBScript for IE 6 & 7, a few other techniques for older Gecko and Webkit, and the fallback method using nested iframes. Could we use that? Its been developed and battle-tested by Google developers, and it would fit our needs perfectly. But how easy would it be to just drop it in?
As luck would have it, the Shindig RPC JavaScript code can be pretty easily adapted to run outside Shindig. All we needed to do was create an iframe that is loaded from the ActivityBar webapp, use that to do all of our Ajax requests and long polling with the ActivityBar server, and use the adapted Shindig RPC system to send messages between the application page and the iframe. Phew, disaster averted.
But wait, what about…
The HTTP spec, section 8.1.4 specifies that a "single-user client SHOULD NOT maintain more than 2 connections with any server or proxy." Most browsers these days tend to stretch that number to a maximum of 8 connections. IE6 and IE7 still respect that 13 year old suggestion, so if a user opens more than two windows or tabs to their instance of Studio, each with the ActivityBar running, in IE6 and IE7 that will eat up all their connections and additional windows or tabs will appear to hang while they wait for a connection to be available. But wait, it gets better! If your Studio usage habits are anything like mine then you typically have 6-10 tabs open with issues, issue searches, reviews, wiki pages, etc. So even on browsers where that limit is stretched, youre likely to run into the same problem.A bit of research turned up a number of workarounds, but the one we chose was to use multiple subdomains. Since we had already done the work to solve the same origin policy we didnt need to worry about that, it would "just work". The big question to answer was whether or not wed be able to make this change in our deployment environment on such short notice. The guys over at Contegix came through for us on this one and got the deployment environment for JIRA Studio modified to setup the DNS aliasing that we needed. Now, if you look in Firebug or other web browser debugging tools, youll see connections being made to
http://chat1234.yourcompany.jira.com
in one tab and http://chat4321.yourcompany.jira.com
in another.Now that that is over…
Phew! We can finally step back and enjoy the fruits of our labor! Those were some major technical hurdles that we had to learn about and overcome in a short amount of time. Its hard to believe all that took place in the short span of a few months. Everyone at Atlassian and Contegix really pulled together nicely to make it all happen. And, again, special thanks to Jean-Francois from the Atmosphere project for rapidly fixing bugs that I reported!But like most projects, just went you’re ready to step back and enjoy what you’ve built, you’re off to the races on future iterations. We installed this on our Studio instance so we could dogfood it and already have plenty of ideas for improvements, including:
- More quick add links: weve got a quick link so you can insert, into your chat, a link to the current page youre on with a single click. On the "Upcoming Events" Google Calendar tab there is a "Quick add" button. But we can also add ‘quick add” links for issues, wiki pages, and other convenience functions.
- Auto IM Translation: a nifty feature Google makes available to us, and we’re excited about putting it into action.
- Streaming application updates: right now the application feeds are fetched from the browser when they are needed and they are only fetched once to avoid sending 7-8 spurious HTTP requests. It would be much cooler if the ActivityBar webapp made these requests on behalf of the browser and, using the communications link already established, sent updates as they were found. Then you could sit on your JIRA dashboard and have continuous feedback on everything going on in your project.
- Installable on your own servers!: one goal in all of our integration work with Studio is to make it possible for behind-the-firewall customers to take advantage of some of these features. There is a little bit of work in the ActivityBar webapp itself that still needs to be done to make this possible - were currently hard-wired to connect to the Google Talk servers, for instance. Most of the effort to make this work in behind the firewall settings will need to be done in the apps themselves. We had to customize each application to get the ActivityBar to show up on every single page across every single app, something that isnt possible with the current plugin system in our applications. Something that comes close is Web Resource Contexts in Confluence, but there are a few additional bits of information that are required that cant be provided purely as web-resources. But stay tuned, because if we do that it will most likely be pluggable - like all Atlassians other apps - and youll be able to add your own application tabs!
We’re pretty excited about what we’ve built, and even more excited for developers and software development teams inside companies using Google Apps to give JIRA Studio a try. We think you’ll enjoy the work we’ve done. Check it out at http://www.atlassian.com/google.
By Richard Wallace, Atlassian
Wednesday, March 4, 2015
PassPack Online Password Manager!
- assPack
- Reference - PassPack (Jane Knight)
WHAT?
PassPack is an online password manager for people who travel or change computers often. Unlike other password managers, PassPack is available 24/7 via internet, nothing to download or install. You can save up to 100 entries for free!
On the sad note, paid upgrades will be available in the future. Hopefully, this will never happen! I suppose there is nothing wrong with charging for special support services to corporate clients and special people, but please continue to enable the free version to enjoy the juicy features that people like me signed up for in the first place.
Anyway, this is certainly a high demand area that most of us are crying for, so there will probably be plenty of free tools available in the near future for those that are not willing to pay for such services. If you know of any other excellent password management tools available now, could you please share it with us. Thanks!
FEATURES?
Here are some of the useful features that you can enjoy (and minimize memory and login headaches) with this tool:
Anti-Phishing Welcome Message - Customized, IP filtered, Welcome Message.
- 1 Click Auto-login - Click to login as you browse. No plugin needed.
- Rapid Sign In with "remember me" - Enter just one key to access them all.
- Import, Export, Backup and Restore - Move your data wherever youd like.
- Optional Offline Version - No internet connection? Access your stuff anyway.
- Easy Entry Window - Just one click and fill out the form.
- Password Generator - Quickly generate a unique password.
- Scrambled Password Field - Safely hide passwords from prying eyes.
- Password Quality Tester - Know how strong your passwords are.
We all seem to have so many different places to login to these days, and an online/offline password manager might just be the right direction for us to access all these places without needing to enter our user IDs and passwords, which we often forget.
I was thrilled to learn about this tool, but after playing around with it, I didnt actually find it that user-friendly. Although, this tool might be useful for dumping our user IDs and passwords for all our social and educational sites (and so on), I would not risk using it for online banking services (More worried about my sloppy actions and not following appropriate guidelines, than the tools security features!).
Overall, it is a useful tool, but I would also like to see such features actually embedded directly in our University systems (e.g. LMS, Learning Portal). For example, it would be nice if I could add my user IDs and passwords (ideally in automated form) to my Facebook, Second Life, Ning, etc. using a simple entry form (add as many sites/tools as I like!). By doing so, when I login to my University system I am automatically logged in to all my other favorite learning/socializing sites. You kind of create your own single sign-on with whatever relevant tools you use for learning and interacting. I suppose some University systems already have this!
Not only do I want auto-login, but I want RSS feeds from each learning space, so I dont even need to enter my different learning sites/spaces unless necessary. Finally, I would like to have my own dashboard with auto-login links to my tools, and updates from all of them through textual and visual displays of relevant information, customized and designed through a cool selection of flexible templates and features.
I suppose we could call it my Mobile Personal Learning Dashboard. I suppose Yahoo, Google and Microsoft already provide something like this, but in the world of widgets we expect more! I suppose my mobile personal learning dashboard will work offline and online, but will also be easy to teleport with the help of my thumb drive, too. Plug it in, and I am ready to take off (Dont need to wait for the passengers, crew, or loading!)! Actually, all this stuff already exists, so why am I talking about it. Any showcase samples to share? :)
What Did They Say! Wednesday! A Linky Party!

<div align="center"><a href="http://aturntolearn.blogspot.com/" title="What Did They Say!?"><img src="http://4.bp.blogspot.com/-OIhmtxluCS0/ULwEfazkl1I/AAAAAAAADpM/MMMzxm23B0Y/s320/What+Did+They+Say+Wednesday.png" alt="What Did They Say!?" style="border:none;" /></a></div>
This is a story that goes to show how confused students can be about money!
One of my girls was talking about her dads new phone. She said "I want to download Temple Run on it but I cant because its 99 dollars!"
I tried to explain to her that it was 99 cents, but she insisted that since it had the dollar symbol ($0.99) not the cents symbol that it must be dollars!
I dont even know how to begin to explain that concept of decimals and parts of a dollar to my class! She was so adamant that it was 99 dollars I couldnt think of any way to convince her otherwise!
Now... its time to share your cute kids story from this week!
Rules for the Linky Party:
- Share a story that one of your kids said on your blog! If you dont have a blog, leave a comment with your story!
- Use the HTML code at the top of this post to link back to the post!
- Comment on the two blog posts before yours!
);
Directory of 1700 Learning Tools Jane Knight
- Link to Learning Tools Directory
- Janes E-Learning Pick of the Day
- Top 100 Tools For Learning

- PRODUCER TOOLS for developers and deliverers of workplace learning, performance improvement solutions or post-16 education (e.g. Blogging tools, Content Management tools, Course Authoring tools, Course & Learning Management tools, Learning Games tools, Podcasting tools and Wiki tools).
- PERSONAL TOOLS for students, employees, lifelong learners, etc for personal or group learning purposes (e.g. Personal Productivity tools, (Re)search tools, Social Bookmarking tools and Browsers & Extensions).
Some tools are available in both free and commercial versions, and appear in a number of categories.
Have fun exploring and discovering new useful learning tools :)
The the Map of Creativity Flash version
Link to the Map of Creativity
"The Map of Creativity is a user-friendly, interactive database of innovative educational projects throughout the world.
The Next Generation Foundation (NGF) exists to promote a culture of creativity by providing exceptional educators working in marginalised communities with opportunities to learn new skills, by supporting exemplary projects around the world, and by providing a platform for dialogue, debate and exchange of ideas. Ultimately, the success of the Next Generation Foundation project, rests on the involvement of as many of the partners in childrens lives as possible."