Planet Linux Australia
Late last month, I was fortunate to be invited to Microsoft for the Exchange RPC Plugfest as part of the OpenChange team.
I decided to arrive into Redmond a few days early to get over the worst of the jetlag, and to spend some pre-plugfest hacking time with Julien Kerihuel and Jelmer Vernooij. That produced some excellent planning work, and a bit of new code. I also caught up with Tom Devey (a Microsoft consultant, who is basically the customer representative for Exchange RPC protocols) and enjoyed a nice wood-fired pizza lunch, and some night skiing at Stevens Pass. My skiing was never really good, and lack of practice and some pretty unusual conditions didn't help. It was still a lot of fun though.
The Exchange RPC plugfest kicked off on Monday (24 January 2011), with breakfast and getting oriented in the lab environment. The labs we used were in the "Platform Adoption Center" (Building 20 on the Microsoft campus at Redmond), which is a nice facility for this kind of thing. Monday afternoon had presentations from Simon Xiao and Xianming Xu, who were part of the team from Microsoft (well, a contract / outsource organisation paid by Microsoft) on the test suite we'd be using to test OpenChange with for the rest of the week. In this context, the testing is aimed at protocol specification compliance. Microsoft has similar tests for some of the windows protocols, but the suite we used was specific to the Exchange RPC ("MAPI") wire-protocol.
Over the course of the week, the test suites showed us quite a number of issues (from minor non-compliances through to crashing the server, and occasionally causing problems with the test suite). We fixed some of it during the plugfest, and we also did some refactoring of the backend store that will allow us to address other issues and build a more stable and reliable server.
We typically ran tests from 0830 through to about 1900 (sometimes a bit earlier / later) on Tuesday, Wednesday and Thursday. Microsoft had also arranged Exchange developers (Darrell Brunsch, Joe Warren and Juan Pablo Muraira) to give presentations, which helped enormously with understanding the protocol. Although it took time away from the testing, it was still well worth while to both attend the talks and to discuss things before and after the talks.
There we also "shared" talks with the Active Directory plugfest that was going on at the same time, and presentations by Nick Meier (one of only a few Linux guys inside Microsoft) and Paul Long (on Netmon) amongst other talks helped a lot. Seeing the inside of the "Enterprise Engineering Center" was also illuminating - thanks to Darryl Welch for organising the tour and the EEC team for hosting us.
It was a real shame to miss LCA 2011 (since I'd already committed to the Plugfest when the LCA dates changed), but given what we learned about the OpenChange server, then I'd make the same decision again.
Thanks everyone who attended and contributed, but particularly to Virginia Bing and Tom Devey for all the organisational work and putting on the event.
I've been doing some work on OpenChange, including parsing RFC2822 format messages into Exchange RPC properties. One of the test tools I have can parse up some kinds of RFC2822 / MIME messages (plain text, HTML, some mime/alternative and text/calendar) and upload the results to a Microsoft Exchange server as a particular user.
With a little bit of unix-style tool combination, you can plug this into something like Postfix. So if you're in a situation where you want to integrate a tool that wants to send mail via SMTP, but your network is pretty much "Exchange." (and you can't send SMTP directly), then this might be useful.
When using Postfix, you'd add a transport entry, either a wildcard:* oc:localhost
or a restricted list if you like.
Enable the transport mapping in main.cf:transport_maps = hash:/etc/postfix/transport
Then add an entry to master.cf to match the required transport:oc unix - n n - 1 pipe flags= user=bradh argv=/path/to/script.sh
where the script receives the mail, and invokes the oxcmail_test application:#!/bin/sh SCRIPT_TMP_DIR=/var/spool/myscript OC_SEND="/home/bradh/openchange/branches/oxcmail/liboxcmail/test/oxcmail_test --dump-data -d9 --database=/home/bradh/.openchange/profiles.ldb" # you could also choose to remove $SCRIPT_TMP_DIR/oc_send.$$.log if you don't need the records trap "rm -f $SCRIPT_TMP_DIR/$$.msg" 0 1 2 3 15 cat > $SCRIPT_TMP_DIR/$$.msg $OC_SEND $SCRIPT_TMP_DIR/$$.msg > $SCRIPT_TMP_DIR/oc_send.$$.log exit $?
I would caution that the code is pretty experimental - its still in a branch for a reason! However I would appreciate some external testers if you're feeling particularly brave, and have the right kind of environment for testing this. You can pick up the code from svn (http://svnmirror.openchange.org/openchange/branches/oxcmail) and build it using the instructions on the OpenChange wiki. In addition, note that you can't usually set the From address, so you'll probably be restricted to sending from one pre-configured user (or perhaps a small set of users)
If you have any questions, try to catch me on IRC (#openchange on freenode), leave blog comments or use the devel mailing list.
Future plans involve a sendmail-like application for those applications that want to sendmail instead of SMTP. Hopefully that will allow me to send from KMail without needing to go via the SMTP path.
Julien and I met up in Redmond last week, just before the Exchange Open Specifications event at Microsoft. It was a productive time, where we did some serious planning and a little coding, and learned quite a lot more about the protocols from some of the main developers of Exchange and Outlook. Thanks to Microsoft for hosting it.
I also wanted to highlight some impressive work from the people at Inverse (in particular, Wolfgang Sourdeau) in building a backend for the SoGo groupware suite that uses OpenChange to provide native Outlook connectivity (using Exchange RPC) to the SoGo server. There is a screencast video that shows access to the SoGo server via Outlook and Firefox (web UI). The video goes by quite quickly, but you can see new folder creation, messages moved between folders and creation of a new contact.
There is still a way to go, but this is a very promising start. It also gives us confidence in the OpenChange server architecture, and shows where we need to focus our attention.
The OpenChange team had a short online (IRC) meeting on Friday. The meeting record is at http://tracker.openchange.org/projects/openchange/wiki/Meeting_of_2010-07-30
We're considering holding an "open session" meeting (again on IRC), possibly in a couple of weeks. If you'd be interested in attending, please leave a comment on the best days and times (relative to UTC) so we can accommodate as many people as possible.
OpenChange is an important project, but it does require quite a lot of work to get it all to build. We're working on the process, but in the mean time, we've (ok, Julien Kerihuel with nothing from me except encouragement) has built a Virtual Box image that provides OpenChange all built, configured, set up and ready to try.
See http://tracker.openchange.org/projects/openchange/wiki/OpenChange_Appliance for the download (ftp or rsync) location and setup procedures.
Have fun, and let us know how it goes!
I haven't been doing a lot of KDE stuff recently (happy user, although I'd be happier if I could find some extra time for development...). Instead, I've been doing some "real" work, and also going some OpenChange work. [For those that tuned in late, OpenChange is an implementation of the Exchange RPC protocols on both the client (i.e. "Outlook") and server (i.e. "Microsoft Exchange") sides of the network protocol]
Some recent changes:
- we've arranged some new infrastructure servers, with the help of the Free Software Conservancy and FSF France (especially thanks to Loic Dachary for his work on this)
- we've migrated from Trac to Redmine, which is working out pretty well so far
- got the buildbot back up (on http://buildbot.openchange.org:8010 for those who'd like to check it out)
- significant progress on the server side (including getting outlook to show a message), although there is still a lot to do here
- better handling of some data types (especially unicode strings)
- a lot of little code cleanups
Thanks to the Novell (Evolution) team for their work in identifying issues and suggesting fixes, and to the Microsoft Open Specification team for following up on our obscure questions.
Future (near-term) plans mainly focus on server-side functionality, and fixing up some of the current bugs that are biting client users.
I recently realised that much of the code I find interesting is about interoperability. That is, I'm interested in making sure we can get at data in a range of formats. Work on libtiff, poppler, okular generators and openchange are all examples of that. I also like Qt as a very nice cross-platform API. The convergence of those interests is having Qt-style libraries and tools that can get access to data, especially data in widely used proprietary formats (e.g. those produced by Microsoft products).
I've set up a gitorious repository (http://gitorious.org/microsoft-qt-interop/microsoft-qt-interop) for some of that stuff.
At the moment, it mainly has a Compound File Binary Format (aka "OLE") parser, written from the MS-CFB specification.
I plan to add an EMF ("Enhanced Metafile") format parser / renderer (already written and currently used in KOffice) at some point too - just need to find some more time.
There are a lot more things that could go in there (e.g. converting the various things in MS-DTYP into Qt equivalents), but I've only implemented those things I actually need.
Contributions are welcome - I'm pretty flexible on format. If you have some suggestions, please add them to the project wiki on gitorious.
Looks like Microsoft has released the PST format specification.
I don't normally like to link to MSDN, but I'll do it this once:
As usual with these documents, I recommend reading the PDF version rather than the HTML. Also, Firefox seems to handle MSDN a bit better than my (KDE 4.3.5) Konqueror.
If you were a mad-keen PIM hacker, and looking for a GSoC project, might be worth a look.
[Thanks to Tom Devey for the heads-up on this]
I'm not at Camp KDE, but instead at LCA 2010 (in Wellington, NZ).
Andrew Tridgell, Andrew Bartlett, Jelmer Vernooij and I will be running "birds of a feather" (BoF) sessions during the last part of the conference (Friday 22 January 2010 starting at 1430 in the "Civic 3" room, which is over in the Town Hall building).
The first part of the BoF session will focus on Samba 4 and its ability to replace (or work with) Active Directory. I've been working on an installer GUI for Samba4 and OpenChange, and if you are a sysadmin who might be interested in installing this stuff yourself, then you can influence the design of the tool.
There will also be some demos.
If nothing else, you'll get to see Tridge hack, which is always fun.
So come along (remember 1430 to 1630 on Friday), hang out, observe, contribute and enjoy!
The Okular team has never been all that big. Recently we lost Pino as the maintainer. His reasons are his reasons, but I can't say I blame him. I can personally no longer tolerate the level of abuse that we're seeing on bug reports. The latest example is Wishlist item 157284
I'm unsubscribed from the okular-devel mailing list. I'm not going to be in #okular. I'll still look at XPS bugs if I notice them.
It is difficult to leave. I really do care about Okular - I gave quite a lot of my time to improve it. It is a really nice application. However every time I looked at some bug comment insisting on a change (in something like the GUI that is subjective in the absence of actual usability study), I get disheartened. Even when I'm supposed to be working on something else, it gets to me. I've got better things to work on, where I'm not seeing that level of criticism of volunteer efforts.
I'd like to thank everyone involved in Okular, especially Albert and Pino for their maintainership, Piotr for the initial work, and Tobias for some inspirational work on the generator side.
Best wishes to Okular and its happy users.
The jet lag is totally kicking my butt at the moment. I woke up at about 1:30am and stayed awake, no matter what I tried. Zoe woke up briefly not long after me, but went back to sleep in my bed and slept until nearly 8:30am when I woke her up. She's making this whole thing look easy.
So after a few coffees to kick start myself, we went out to do a spot of shopping. Turns out I forgot to pack my swim gear and shaving cream, so we went to Target to get that, and also my favourite breakfast cereal.
After that, I went to the T-Mobile store to sort out a pre-paid SIM for my phone. It's good to have a number and some mobile data now.
We had lunch at Chick-fil-A and the kids all had a bit of a play in the play area.
I crashed out for nap again after we got home. I'm slightly concerned I might be getting a sinus infection, but it's hard to tell if it's just the massive sleep deficit I'm running.
After everyone resurfaced from their various naps, (Zoe just had some quiet time playing on her tablet), we went to the pool again for a swim. Zoe got her confidence up and was swimming back to the side from where she dived in off the diving board, without requiring the use of a float.
The girls had a great hair washing line happening at bath time, which made that nice and easy.
I'm really hoping I can sleep better tonight.
Zoe woke up at about 2am, Atlanta time. That corresponded with about dinner time in Brisbane. I'd actually woken up slightly before she did. She'd crawled into bed with me not long after going to bed the night before.
I'm not sure what time she went back to sleep, but I think it was around 4am. She slept until 7:30am when I woke her up to have a video call with Sarah before she went to bed. Unfortunately I wasn't able to get back to sleep, so I felt like a bit of a zombie by morning. A couple of cups of coffee helped take the edge off it for a while.
Once we got going, we went to Fernbank Museum of Natural History. Zoe got along really well with Clara, 7 and Lucy, 4. The museum was pretty nice. it had a kid's area that kept everyone occupied for a quite a while.
We got back and had some lunch, and then I went and had a nap while James, 2, also had one. It took me about an hour to actually get up after I woke up from the nap. I'm glad I had it though, because I don't think I'd have made it through the day. Zoe apparently had a great time playing with Lucy while I napped.
After that, we went to the neighbourhood pool for a swim. The pool had a low diving board, and Zoe had lots of fun jumping in off it.
I managed to get Zoe to bed relatively on time, and she passed out straight away. Hopefully with a better dinner in her belly, she'll sleep better tonight. I'm hoping I do too.
"Yesterday" was a very long day. I'm sure I'm going to lose track of which day is what somewhere along the line...
I had one of the best night's sleep I've had the night before I know I need to get up early for travel. Usually I spend the whole night telling myself to hurry up and get to sleep because I have to get up early, and thus fail to do so and sleep terribly. I slept well, and was showered, dressed and breakfasted before Zoe woke up naturally herself.
We were all packed up and downstairs with our luggage before Sarah arrived to take us to the airport.
We had a comfortable amount of time at Brisbane airport waiting for our flight down to Sydney. I haven't flown Qantas for a while, and they now have iPads in all of the seat pockets as their in-flight entertainment. That kept Zoe nicely amused for that flight.
In Sydney, we transited over to the International terminal without incident. Zoe's a great size for her Trunki now, and dragging her along on that allowed for us to cover distance at pretty much my walking pace, which was perfect.
We got to the International terminal and cleared Customs with enough time grab some lunch before we boarded. They were boarding a flight to LAX and DFW at adjacent gates at roughly the same time, and in conjunction with the additional round of document checks that they like to do for flights to the US it was total bedlam. We got to the gate just as they were starting the pre-boarding for people with children, so that worked out well, and we got to jump the queue.
Zoe did absolutely fabulously for the flight from Sydney to Dallas. She watched some movies and then went to sleep only a little bit later than her normal bed time and pretty much slept all the way through until I had to wake her up for breakfast, which was at about 3:30am Brisbane time. She didn't sleep again until we got to Atlanta, but wasn't the worse for wear for it. My head cold also didn't give me much grief. I didn't need to resort to any drugs on the flight.
Our arrival into Dallas went pretty well. The only thing I could have done better was figure out where the car seat had been put a bit sooner (it wasn't put with where the signed oversize baggage was) so we burned a bit of time finding it. They have a new electronic self-service kiosk thing for their border control. It was pretty cool, but it still bounced us to a human for processing. I'm not sure if it was because I had declared food, or because I was traveling with a minor US citizen, or some combination of the above.
The US border control did a better job of handling the fact that I was traveling on my own with a child than the Australian passport control did on the way out. The Australian departure passport control didn't seem to care at all that I was traveling on my own with Zoe, but the US guy wanted to know where her mother was, and what my wife did. It wasn't until I said that she was almost my ex-wife that he wanted to know if she knew I was traveling with Zoe, and I produced the letter I had brought with me as a precaution. That was the extent of the questioning I received (aside from how I planned to support myself for my stay).
That said, even though I had planned for that level of questioning, the interaction still left me feeling a bit unsettled. I can expect at least that much scrutiny for any travel I do with Zoe from now on. I guess it's a good thing, but I don't like the default assumption that I'm possibly an international child abductor. It also left me wondering if the same level of scrutiny would occur if Zoe was traveling with her mother, or if it was just a gender stereotype.
We cleared immigration to then get stuck in a longish line for Quarantine, which went fine. I had hoped that we could recheck our luggage immediately on the other side, like I believe you can do in LAX, but that was not the case. We had to schlepp all our luggage over to the Delta terminal on one of the shuttles. We possibly missed a shuttle while I was figuring all this out.
By the time we got a shuttle and got to the right terminal, we'd just missed the bag check deadline for our flight, so we had to get bumped from the 3:45pm flight to the 5pm one. It wasn't a big deal, but it delayed our pick up in Atlanta, and made for a longer day of traveling. Delta was really nice and waived all the baggage fees though, since we were coming from an international flight. That was nice.
That said, it did give us a more leisurely time in the terminal in Dallas. I had time to call Chris and Briana and let them know of our delay, and get Zoe something to eat.
The flight from Dallas to Atlanta was uneventful. Zoe entertained herself with her tablet on the flight.
When we arrived in Atlanta, Zoe remembered the inter-terminal train from her last trip with Sarah. We collected our luggage and rendezvoused with Chris on the kerb.
We had a hasty dinner and Briana gave Zoe a bath for me, and I put her to bed, and went to bed not long after her. It ended up being a mammoth day, in the order of about 32 hours door to door. I was so incredibly impressed with how well Zoe handled it all. Not one single meltdown. The only time she was really sad was briefly when she managed to overbalance on the chairs in the Sydney International terminal just before we boarded our flight, and landed on her head, all while I was putting our passports away and not watching her.
- Use the WAN port on the spa3102, even if you're only plugging in one ethernet port.
- Get firmware from Cisco. You can upload this to the spa3102 by putting it on a web server and then hitting http://SPA3102_IP/admin/upgrade?http://yourwebserver/firmware.bin.
- Then follow the instructions here.
- When you have problems with the dial plan, realize that Chris Yeoh has already solved this and go here.
- Finally, fix hangup detection by stealing the config line from here.
- Job done.
Of course, there's no way to backup the config on one of these devices, so I am sure I will be back here again.
Tags for this post: voip ata spa3000 spa3102 cisco linksys sip
Related posts: Setting up Cisco 7961 IP phones with asterisk; Slides from the NSLU2 talk at LUV; Debian bootstrap complete; Configuring Asterisk
- A video of a cool 6 bit adder made from wood and marbles -- I think this will be really useful for explaining binary maths to my kids when they show an interest. (More detail).
- A wooden combination lock. There is also a page describing the build of the lock.
- A repeatable morticing jig for a table saw, with full build instructions. He also built a cool box joint jig with plans available.
- A pistol for playing jenga with an unfair advantage, that's my kind of cheating.
You'll notice all of these videos are from Matthias Wandel. He has a YouTube channel and seems like my sort of geek. I am sure there will be more links from him as I work through his 7 years (!) of videos.
Tags for this post: link wood gadget
Related posts: A couple of days of turning; More wood turning; Initial play with wood turning; Another bowl
I took this photo at DrupalCamp Sydney last weekend. Not only were these three men from very different parts of the world, but they also had different levels of expertise, and different interests. Sure, no women in this picture, but I was taking the photo ;-)June 29, 2014
Difference is a good thing. Erynn Petersen spoke at DrupalCon Austin about the real bottom line advantage diversity brings to teams. She also spoke about the importance of tolerating some level of conflict and dissent. It makes us stronger. Challenging and testing ideas usually makes those ideas better.
It's a balancing act.