Kinect-ing the Dots–Brisbane Games Technology Meetup

kinect-one

AionLarge Today we headed into QUT to show off the Kinect v2 Alpha device to the Brisbane Game Technology Meetup Group. It was great to show off the new device and compare to some of the features of the original Kinect.

Of interest to us was to see their thoughts on the device with things like Unity. We had some great discussion around use for motion capture and some very in-depth probing into the IR capabilities of the camera etc.

Tech Girls are SuperHeros Launch

AionCover

AionSmall Today is International Women’s Day and also the launch of the Tech Girls are Superheroes book featuring yours truly as Aion.

Jenine launched the Tech Girls Movement to promote positive role models to encourage and raise awareness of information technology careers for girls. You can find out more here.

The book is the first part of the plan, featuring a number of local and intenational women in IT as their alter ego super heros. The book is free to schoolgirls here: http://www.techgirlsmovement.org/order-your-book/ and is also available to buy as a hard copy or e-book. Funds from the purchased books goes towards postage etc. of the books for the schoolgirls.

13 Feb-Bicycle ride and Cooking Course

0

Got up reasonably early to head out on our countryside bicycle ride. When I signed up for this ride I couldn’t actually ride a bike so I’ve spent most weekends since Christmas on a fast learning track. I did come prepared and brought my cushy seat and my helmet with me.

1

The guys at Camouflage Adventure Cambodia were nice enough to put my seat on their bike for me. So off we set and the first thing we did was ride down the streets of Siem Reap full of bicycles, motorcycles, tuk tuks and buses. It’s a crazy driving environment and I am not at all confident at riding on roads at home, so this was a sink or swim moment. In fact, I felt much safer because of the seemingly crazy way they drive they they are comfortable moving around me unlike cars in Brisbane streets with a hate for cyclists.

2

We got off the streets and rode through the rice paddies. It was fairly tough going in the really loose sand.

3

So until now I hadn’t ridden a mountain bike. The bike we got for me has little skinny tyres so this was quite a different ride for me. I’m not used the kickstand and usually get on the right side of the bike so I was constantly running around to put the little bar up and down.

4

Every now and then we’d pull over for a drink, or to take a few pictures.

5

We were going along just fine when my back tyre blew out. The valve had actually torn from the tube and our guide had forgotten his pump. So he pushed my bike along while I attempted to ride his much smaller bike slowly as we looked for a house with a pump.

6

We eventually found a family with a pump and the whole family helped us change the tyre. The eldest son was very enthusiastic on the pump. Big thanks to them for helping us out.

7

We rode off to the bottom of this mountain and walked up a few flights of stairs to the top to check out the view. Then it was back down, around the mountain and back to the shop. The road was crazy bumpy and full of loose sand and it was really, really hot now. We’d only been riding in the cool till now so riding at 11am in full sun in a hot bike helmet was really taking it out of me. I’ve lost count how much I drank but boy did I got through some liquid.

Can definitely recommend these guys if you want to do something a bit different. They did pick a really good route on any roads we had to go on to ensure it was mainly right turns and not many intersection crossings.

Back to the hotel and a quick cold shower (who would have thought I would be glad our room doesn’t have hot water) and a quick bite to eat before our cooking class.

10

After picking our dishes a quick trip to the market to look at the ingredients we’ll be using.

11

Amazing how few ingredients go into these yummy dishes.

12

Then it was a big job of cutting everything up. As I was making an Amok and we were making the paste, the better the cutting the less bashing would be needed.

13

Our instructor showed us a few tricks with cooking he sticky rice.

14

Lots of coconut milk, condensed milk and palm sugar … mmm… no wonder our sweet toothes like this one.

15

It’s impressive how sticky the sticky rice actually is. Will have to work out where to buy it from at home.

16

Then everyone was busy doing the cooking part of their dishes.

17

And this is what we all made…not bad at all.

18

Some happy cooks ready to eat! So full now that we just rolled back to the hotel.

We fly out tomorrow so not sure whether we want to try and squeeze in an extra activity before our flight back to KL.

 

12 Feb-Temple Day

0

Today was our main temple day. We got up at 4:30am to get ready for the onslaught which is Angkor Wat sunrise. At 5 we set off to test my patience with people for the day.

1

We arrived in the pitch black at the left reflecting pond with 100’s of our closest friends so we opted for the quieter right side were we got a pretty good pole position. It was fairly peaceful there until the crowds overflowed from the left to our side. The sunrise itself was non-event really but a spectacle of people to watch. The guy next to me really tested my patience with his point and shoot that seemed to double as a donkey kong game noise machine in my ear for about 1/2 hour. It took every ounce of will power not to grab the camera and toss it into the reflecting pond. I ventured to the left side to watch the shoving, jostling and otherwise amusing show of people putting iphones in front of iphones to get what was a crummy sunrise photo.

2

As it approached 6:30 a few monks appeared along the main bridge.

3

As we headed back to find our driver the sun finally broke through the clouds, a very long way to the right of the temple. There was no way that was ever going to line up with the reflecting pond this time of year.

31

We moved onto Angkor Thom – Banyon first. This if full of massive faces lit up in the morning light.

32

It also has a bunch of intricate carvings.  We tried to stay one temple ahead of the main bus groups to keep it as quiet as possible.

4

We moved to Baphuon which was this massively tall temple that looked beautiful in the morning light.

5

It had a really long bridge of pillars. Unfortunately even though there looked like a way to get to the top it was closed.

6

As the next bus group arrived we moved up to the Terrace of Elephants and Terrace of the Leper King.

7

There were these lion looking guys standing guard.

8

And the elephant heads with long trunks.

9

The last little section with a walk through area was pretty cool with lots of carvings fairly well preserved in good detail.

10

Looks like there has been a bunch of restoration work here with a big wall built to support the outer stones.

11a

Next up was Ta Prohm – or as many people think of it as the  “Tomb Raider” temple.

11

This one was pretty awesome with the figs and other trees forcing their way through the stone work.

12

This time there was no avoiding the crowds and I really struggled to get pictures not covered in people. It was about this point we hit the “Tomb Raider” tree where I was patiently waiting to take a picture and some lady walked right in front of my camera facing me with her friend behind her and told me to get out of the way I almost lost it. I promptly ignored her and took a few snaps as I was clearly there first and then her friend tried to shove me out of the way. Lucky I had about 6 inches on them. Anyway….time to move on before I got in a fight.

13

After getting away from that crowd John picked up some random guy who “lives at the temples” and offered to show us some good picture spots. Firs up a nice corner picture of all the beehive spires.

14

A quiet corner of ruins.

14a

A quiet few side alleys of intricate carvings.

15

16

The famous face in the tree.

17

Tomb Raider tree take 2. I think the guy literally held people back while I got a photo with 0 people. Then we said goodbye to our makeshift guide and parted with quite a few $. In the end totally worth it Smile

18

The final tree shot before finding our driver.

So now it’s about 9:30am and we’re pretty much over temples and people but have the driver for the day. He suggests we go out to the floating village. I’d taken a quick glance at it and it hadn’t appealed to me when I was looking for things to do but he’d been pretty good at restaurants etc. so far so off we went. It was all kinds of bad – did not enjoy at all and let’s just leave it at that for now.

So back to get get some lunch and have a nanna nap before venturing “into town” to suss out where our bicycle tour and cooking class are for the next morning.

For what it’s worth my temple ranking would be:

1. Angkor Thom – big variety in types of carvings.

2. Ta Phrom – the tree roots through the structures are cool

3. Angkor Wat – big but much of the same throughout the temple.

 

11 Feb-Angkor Wat sunset

0

Today we set off from KL to Siem Reap. We managed to flag down a cab driver fairly easily and made it to the airport without any major dramas. By the time we found something to eat and were herded to a few different places we boarded the plane.

The flight was fairly short at 2 hours. As we’d pre-bought our visa getting through immigration was fairly quick, then had to wait for our bags, go through customs which was a line to put your piece of paper in a box and grabbed an airport taxi to our hotel for the next few days – Park Lane Hotel. We decided to keep our taxi driver and go out to Angkor Wat for the afternoon via a restaurant for some food.

Bought our 3 day pass and headed off to the temple for the afternoon.

1

The temple is filled with intricate carvings.

2

Some are in better nick than others.

3

8

The ones that look like timber carvings are kinda cool but they are actually stone.

4

There’s a hint of colour on some. You can only imagine what these looked like before the elements gave it a beating.

5

6

Others have been touched so much they are quite shiny.

7

Just this first building is quite massive.

9

It’s essentially a few gigantic rectangles.

10

Few steep bits of stairs to go up it you want a better view. After about an hour we’d pretty much “done” this temple so sat under the tree near the reflecting pond to wait for sunset and people watched for a bit. Had a few tourists who wanted their photo taken with us, so had to get rid of them quick smart.

11

While the right reflecting pond was fairly empty it approached 5pm (when people can get a free sunset without incurring a ticket day) so we picked a good spot for a photo. Even though this bank is about 50m long and there were no other people this lady decided this was the only place she wanted to get a picture.

12

Meanwhile the other pond was really busy with tour groups, people selling stuff etc. This one seems to give a slightly better reflection but don’t think it’s worth the extra “people effort”.

So back to our hotel to get a good night of sleep so we can try this again for sunrise. Out hotel internet is a bit flakey so posts may be a bit erratic over the next few days.

 

10 Feb – Transformers Expo

1

Today is our last full day in KL. We were lined up to do some more presentations which got cancelled so we had the whole day to fill in. I’d spotted the 30th anniversary Transformers Expo so off we went to Gentling.

Quick monotrain wide to KL Sentral then a ticket on the Gentling Express and skyrail for 10.30. Pretty easy trip up with the bus driver who was trying out for the formula one on the windy corners up the hills taking up random amounts of lanes. The cars that past sure we game as he weaved in and out.

2

Then it was a 3.5k ride up the sky rail. Pretty cool view over the mountains. There was an announcement about stopping and pretty much all we remembered were the words panic and elderly.

The complex is a long chain of hotels and casinos and we found out way to the very end where the expo was on.

First up was a really cool exhibit of a few thousand Transformer figurines. Massive collection from the different characters from 1984 to today. Found a few familiar ones the we both had owned in our childhoods.

3

One of my highlights was the Camero (Bumblebee) used in the movies. I had a major drool over this car.

4

Cool little touches like the Transformer logo on the wheel cap etc.

After wandering through a bunch of cool artwork that you can have your photo with we watched a 10min video on the history of Transformers. We remembered the cartoon / movie from the early 80’s so was interesting to see some of the other cartoons with Dinobots that we hadn’t seen before.

5

Up next was a projection show onto a 3D cut-out. This was in a massive arena and we were the only ones there. Nothing like a private show. Then it was an augmented reality experience which turned out to be dancing with Optimus – which John and I just laughed so hard at as we’re so into dancing Winking smile

bumblebee

 

The final bit we checked out was the full scale version of Bumblebee and Optimus.

optimusprime

You don’t really get a feeling for how huge these guys are till you put them in perspective with say a car.

6

We wandered around the rest of the complex for a bit and had a go at the Haunted House – which would have been quite boring except for the other couple with us who were freaked out, screamed the whole way and insisted I go first. I just spent the whole way through laughing at them totally freaking out.

Going back down we re-catch the skytrain but can only buy that ticket. Then we have trouble finding the ticket counter for the bus and John picks up a random driver hanging out near the bus that offers to drive us back for 80 (normal taxi fare is 150-200) and will take us by the strawberry farm on the way…Hmmmm…

This soon becomes a trip to the Chocolate Factory – which did have really nice chocolate and the girls had the sales pitch down pat – feed you a bunch of yummy chocolate then show you it’s pretty much buy 3 bags to get your monies worth.

7

The strawberry farm was interesting in that they grow them in special bags off the ground. We were reminiscing of the awesome strawberry farm we’d taken my mum to in Tasmania a few years back that had the most awesome strawberry milkshakes…yummo.

The driver was quite chatty as he drove us back to KL Sentral without any other detours , so that did work out fairly well in the end.

8

Used up close the the last credit on our card on the monorail to get some dinner. I must say I find it amusing the stations are sponsored e.g. Raja Chulan is the KFC stop to me.

Tomorrow we’ve got a decent flight to Siem Reap so see how the cab experience back to the airport is.

Technorati Tags: ,

7/8 Feb-First day in Kuala Lumpur

grid9

First trip to Kuala Lumpur for us this week. Our trip was to begin with an 11:20pm flight out of Brisbane. After running out of time to do things at home we quickly looked up the coffee club at the airport and noticed it was open till midnight so decided we’d get dinner at the airport.

So backed our bags and headed off to the airport. It’s our first time flying Malaysian Airlines and the queue is long and moving really, really slowly. With hit the first guy who asks us to weigh our carry on….mine 8.3, John’s 9.7 …. and the limit is 7kg …ooops. The guys nicely explains that if we don’t move bits into checkin security will send us back upstairs. Hmm, well we have lots of camera gear that’s never getting checked in and laptop, kinects etc so we’re just going to wing it for now.

After what seems like forever as everyone seems to be having issues checking in, we get through in about a minute and off to security we go.

Another long queue. I’ve never seen it this long. The guys is trying to herd us so more people can join the queue. As we slowly move up the queue – 2nd bag weigh … oh oh … but the guy is really nice and lets us go through cause we have laptops and camera gear or maybe it was just too late in the day.

After we finally make it through security we discover that yes Coffee Club is open, but the kitchen is closed, and so is most of the other food venues. Hmm…plane food….pass.

Plane trip is uneventful and we arrive in KL. Immigration and customs are really quick and go get our airport taxi. I must be getting less stingy in my old age, as we hit the airport taxi at 5:45, so get hit with the surcharge before 6am and I just don’t care, I want a shower and a sleep. Arrive our our hotel – Grid 9, and have a power nap before breakfast. It seems odd that it’s +8 here but it’s pitch black at 6:30am.

This is where I discover I have no hairbrush … doh … so off to Pentling st in seach of somewhere that sells one. Just as I’m ready to have crazy hair week we find a ware house hairdresser supply and grab a brush and comb for 10rmb. Not my usual stefan brush but hey…it eventually gets the knots out.

token

We decide to try the train as we’re right next to Maharajela monorail. Quickly discover that we can’t buy the oyster cards, the ticket machine doesn’t take credit card, and we don’t have the right notes to buy a ticket. We interrupt the poor ticket lady having breakfast and she kindly sells us a token. Off we go up the monorail and get off to switch to train when our token goes in never to be seen again…guess that was just a ticket to that part of our journey.

rapidkl

Wander across to the train line and the nice ticket lady explains that the oyster cards cost 2rmb (less than $1). Fine by me and you put 10rmb credit on it to start with.  Off we go to KLCC to check out where Petronis Towers is.

petronis

kltower

 

It’s definitely not small and is surrounded by shopping center. Grab a few quick shots and of KL Tower where I want to go tomorrow before grabbing lunch and heading back to our hotel.

kinect0

Then we’re back on the rail system to get to MindValley office to show of the new Kinect, Bing Maps and Photosynth.

kinect1

After massive demo failure finally get to show of the new sensor with some really good questions from the audience.

kinect2

The venue was really funky and we managed to get 6 people up in one frame as full skeletons which is pretty awesome. I must say I loved seeing their expressions when John showed off the new Bing Maps Preview control. If only I’d had a camera to capture that room full of “so cool” look. Microsoft put on some pizza and we had a good chat to the attendees.

Big thanks to Microsoft, MindValley etc for having us today.

 

Now we’re a bit tired and ready for sleep! Have 2 days to fill with exploring and I’m sure the humidity will take away some enthusiasm. I’m keen to check out the big bird park and get some night time pics of Petronis.

 

9 Feb-KL Bird Park, KL Tower, Petronas Towers

14

Our room has no windows so there’s no real indication of weather or time outside. It also appears that our phones aren’t synching their time properly. So we woke up this morning and thought it was 7 when in fact it was 5. Luckily we discovered this before we really did much about it which meant more sleep for us.

1

Waking up take two, and we hailed a cab and off to KL Bird Park we went. 5.20 (less than $2) was the fair – well worth it when it was pretty hard and about 3 trains to go a 5 min drive.

3

The park is a massive walk in aviary divided into a few sections.

2

I assume based on birds that are happy to live in the same environment. The enclosures are massive and it’s so nice to see these birds freely flying around.

5

I did like how they did a lot of the feeding too. They put fruit bits etc on spikes in the trees rather than everything on one big tray.

6

For part of our wander around it felt like these guys were our guides. There was a big group and they seemed to keep stopping to wait for us to follow.

4

There was also a few ponds filled with fish that you could feed using a little food dispenser. No wonder they came rushing to the surface as you approached the pond.

7

There was  a waterfall aviary where a bunch of the birds like to fly up really high.

8

And of course a fake water fall which was nice to sit inside and look out of.

9

One of my favourite sections you could feed the emus and ostriches.

11

I could have easily just stood there all day feeding these guys they were so friendly.

10

Right next door was the cassowary which I always think looks very prehistoric and dinosaur like.

12

I’m a bit of a sucker for a bird show. This one was quite cute with a few of the parrots talking, having races where one cheats and of course picking up rubbish. I thought it was a great little spot to spend a few hours if you like birds and like to see most of them out of tiny cages. Totally ripped off by taxis on the way back wanting 15 (three times as much as we paid to get there). They seemed to have a system so there was no getting around it, and in the end it’s like $5.

13

After a nanna nap we ventured back to town and up KL Tower. We went for the expensive trip to the Observation Deck which is an open air platform with glass bannister around the outside to allow you to see 360 degrees as you walk around. It’s always nice to get up high and get a feel for the size of a city.

14

We wandered back to KLCC and sussed out a few photo spots and waited for the sun to set to get a few snaps (with a bunch of other people with the same idea) of Petronas Towers. I think it looks much better at night. It’s really hard to get a good day shot as there’s not a nice blue sky (we haven’t seen one yet).

 

Kinect For Windows v2 Alpha at Infrastructure Saturday

IS

Popped into Infrastructure Saturday Brisbane on the 7th December to show off the Kinect v2 Alpha kit.

1

As we were back to back with other speakers had to setup in the room and gave people a chance to see what makes up the alpha kit. Also a great time to learn how to power the boardroom power sockets. Don’t get too far with Kinect without power.

2

Most people had seen the Kinect v1 on their XBox so were keen to see the new features of the new model.

3

Showing your skeleton while you’re presenting always gets a few laughs.

4

No shortage of cables and laptops.

 

DDD Brisbane 2013

1

We held our 3rd DDD Brisbane on 7th December. This year we were 50% bigger at 180 attendees + speakers , helpers etc. We arrived bright and early at 7am to unload cars full of bags, swag, drinks, lanyards etc. The attendees arrived early and were itching to check-in and we managed to hold them back till 8:15. Amazingly checking of 180 people went quite smoothly with Crystal, Lin, Dave and I madly checking everyone in and handing out bags.

2

Damian opened the morning to a packed room before our first round of sessions.

3

Andrew Harcourt – Your domain is too big for RAM (and other fallacies).

4

Maurice Butler – What is this Node.js thing and why should i care. Thanks so much for letting us swap your session at the last minute.

5

TJ Gokcen – Personal Kanban

7

Morning tea was up next. With lots of yummy fruit, bickies and of course the much needed coffee cart.

6

After morning tea it was straight back into sessions.

9

Liam McLennon – 10 things F# can do … and c# can’t

8

Must say everytime I see Liam’s slide I have to laugh

10

Brendan Kowitz – Realtime Web Applications with Signal R

11

William Tulloch -  Securing ASP.Net Web APIs

12

Session we had the duo of Andrew Harcourt and Damian Maclennon -  Messaging patterns for scalable, distributed systems

13

Lars Klint – Building your first Windows Phone App – who came along with a bunch of awesome prizes from Vaughan Knight from Nokia.

14

Robert Wagner -  Too agile for agile, and other such stories.

15 16

Through this session it was time to organise lunch! Dave and I went off on an adventure in town to collect 9 platters of sushi and 11 platters of subway.

17

John, Lin and Crystal were left back at the fort to look after the pizza guy and sneak in some food before the hungry hoards arrived.

18

 

Lunch was pretty cruisy with people catching up, getting stuck into the food.

21 22 23 24

After lunch it was straight back into it. Scott Hanselman had kindly made time in his busy schedule to show us the latest cool bits in Visual Studio 2013 aswell as some of his extensive collection of animated gifs.

25 26

Straight after this John and I had to dash off and show of the new Kinect For Windows device in a session at Infrastructure Saturday. Many appologies to the next lot of speakers for not having a picture of them.

Paul Stovell -  Automated deployment using Team City and Octopus Deploy

Aaron Powell – Javascript …. Aww yeah!

Kay Lam-McLeod -  Getting the best value out of your software licenses

Afternoon teal allowed us to catch up for a few of our very generous sponsors

30

Telerik

31

Dev Express

32

Digital Atmosphere

After noon sessions we had Hadi Hariri – Developing in a decade from now

35

Artem Govorov – Javascript tracing, debugging, profiling made simple with spy-js

36

Mouna Neelakanta -  Gamification and Enterprise Solutions

 

45

For our final session I moderated our Q&A Panel

40

Hadi Hariri

43

Scott Hanselman

42

Joe Albahari

41

Joel Pobar

We had some great questions come in from the audience over twitter and the guys on the panel proved most amusing and informative.

To wrap everything up we had a bunch of licenses and swag to give away.

50

Scott modeled the awesome noise canceling headphones

51

We had some happy new phone owners

52 53

and of course XBox ONE!

 

Thanks so much to everyone who attended, spoke and helped out. Big thanks to John for ferrying me around and taking all these great pics on the day. You all made it an awesome event. So looking forward to next year.

 

IIS 8 and mime type errors

I loaded up an existing project the other day and running on IIS 8. I was getting some weird Internal Server Error for mime types – mp4 etc., so I checked all the usual things – that I’d installed all the IIS features on my laptop and static content was ticked, and the mime type existed on IIS.

Turns out IIS8 handles most mime types by default now and the existing project was including them manually in the static content section e.g.

    <staticContent>
      <mimeMap fileExtension=".mp4" mimeType="video/mpeg" />
    </staticContent>

The solution – comment out those items in the web.config and it all magically works again.

 

Technorati Tags: ,

The transition to ‘office work’ after a long Work From Home stint

1

I’ve spent the better part of the last 3 years working from home, before that, John did a lot of work from home and I’d done a few stints here and there. I’ve gone onto client site every now and then but never for more than a few days at a time. Between the two of us, it’s probably the longest period in 10 years that there hasn’t been one of us working at home. I recently spent 13 weeks working on client site and found it quite tough and not for the reasons I first thought. Here’s my top 10 list (in no particular order) a few of the main things that grabbed me about being on client site after a long absence at home.

  • Office noise – At home it’s lovely and quite. You can hear the wind in the trees, the kookaburras and other native birds outside. Sometimes it is so quiet I can hear the fridge kick in from the other end of the house. Sometimes, I’d turn on the radio or play music through the house if the neighbours dog was barking non-stop but quite often the serenity ruled the house. Going back into an office was a bit of a shock to the sensory system. You could hear the sound of keys clicking as people typed and a lot of people spent a lot of time on the phone so you were bombarded with their loud phone voices. After being in a quite house for so long my hearing seemed to get overwhelmed with all this noise. The easiest way to get through this was to turn on my ipod and listen to music all day. Getting used to wearing earphones full time did take a few weeks as my ears would get a little sore by the end of the day.
  • Wearing shoes – Being home for so long I was used to running around the house in bare feet, occasionally putting on thongs outside or sneakers for anything more substantial. Having to wear shoes for 9+ hours straight a day took a bit to get used to. I wear Docs – so they’re heavy and quite warm. Luckily, I spent this time on client site in Winter when I’d normally be wearing thick socks or knitted booties around the house to keep them warm. Also clothing is a bit different. Now that I’m very much used to being at home I quite often wander around in some of my oldest and daggiest clothes. Having to wear slightly less daggy and certainly less comfortable clothes every day was a bit of a shock.
  • Sitting Down – After using my standing desk for 6 months – sitting down all day really took its toll at first. I’d be sore from sitting and i’d feel totally exhausted from sitting down all day.
  • No thinking spots – Slightly related to the standing desk – but I really missed my “thinking spots”. At home when I need mull time over a design, how to do something, need another activity so my brain could solve the problem when I’m not concentrating on it, thinking that there’s got to be a better way, need to draw someone up and think it through, I’ll get away from my desk and sit on the couch in the office, the seating in the dining room, on the lounge, on the sunlounge on the deck, on the retaining wall, go for a walk to the post office. In the office I was really just stuck at my desk and could really only scribble on paper or carefully surf the internet waiting for the answer to hit me.
  • No control over the environment – At home – I have a well lit room with a view of trees. I have a decent laptop, a colour calibrated monitor, equipment that I like and software that I need to use. Client site you are at their mercy. Chairs, mice, keyboards, screens, computers, software – none of which stacks up to your usual standards – you are stuck with. If something breaks at home – like a light or the kettle I either fix it myself or get someone in to fix it. Again, at client site you can’t fix things, and you don’t have the authority to get someone else in to fix it.
  • Lunch options – At home you can have ANYTHING you feel like – try the local food places or cook anything you like in your full kitchen. Client site can feel like the middle of nowhere – limited lunch options, tiny and/or poorly equipped kitchen and nowhere to really enjoy your lunch. I’d quite often sit outside in the garden at home and soak up the rays or the shade. In the office there isn’t many options. I did take to sitting out on the footpath just to get away from my desk. I’m sure I almost caused a few accidents with people staring at me as they drove past – probably wondering why i’m sitting on the footpath with a plate of sandwiches munching away.
  • Transit time and “watching the clock” – this one is obvious – you spend a lot of wasted time driving, or sitting / waiting for public transport. Worse still, is your morning and late afternoon is worked around using this transit. Do I start a new task or get too in the zone and risk missing that bus and have to wait for another 1/2 hour…do I stop now and race out the door in hopes the bus won’t pull off just as I reach the door. I was surprised how much more I “watched the clock” on client site – when i should get up to eat to beat the lunch time crush for bench space in the kitchen, when i should be preparing to leave to catch the bus. All these things never bother you at home so much.
  • Isolation – This one surprised me a bit too. I felt more isolated and alone working in an office full of people than i do working at home. A few weeks I didn’t physically speak to anyone in the office for 4 days in a row. I’d turn up, do my work, go home. While at home I don’t necessarily speak to anyone in person I’m in constant contact on skype, phone, twitter, facebook with people.
  • Odd jobs on hold – I knew this one would be a problem but it really highlighted all the little things I do during the day. The magic Friday washing fairy didn’t come – so we had to wash our clothes on the weekends. Getting parcels delivered – nobody is there to sign for them. Getting a tradie in to quote/fix something – nobody is there to let them in / supervise them. Small things like washing, washing up, tidying etc. that I’d just do between things just had to wait till I was at home or the weekend.
  • Inconvenient Office Hours – Trying to re-work my day was quite a struggle. At home, I’ll jump on the computer fairly early and do some admin and/or real work for a few hours. Then about 10am I’ll go through my list of people I need to call – chasing up work, chasing payments, calling the bank, arranging meetings etc. as everyone else works “normal business hours”. Then I’ll go back to real work for the rest of the day / evening. Working on client site – while i can get there early – it’s really just not a good look (not to mention anywhere really appropriate) to spend up to a few hours a day making “personal” phone calls. I did a bit of it on my “lunch hour” but the obvious problem there is everyone else is at lunch too. There’s also not really appropriate places to make the calls – again I ended up sitting on the pavement on the side street with my surface and wireless dongle so I could take notes/look at my calendar while talking on the phone.

Young ICT Explorers QLD 2013 wrapup

10

I was invited back to be a judge at this years’ Young ICT Explorers QLD competition for the Grade 6-7 category. Students from all around the state (and even some from over the border) came to UQ to present their projects in ICT to a panel of judges. On the day I judged 8 projects and visited a bunch more and was very impressed at the range and quality of the projects by the children.

22

Some of the entries were solo like this girl above who used flex sensors stitched to a golf glove to allow people to grab people in her game and pick them up to prevent them from entering a junk food shop. She’d done all the soldering herself and burnt her hair a few times along the way.

2

6

Lots of the other projects were done in teams like these two groups of girls who made african themed educational games to teach kids more about african animals.

3

There was heaps of enthusiasm for their projects like this group of boys that made a flight game where you fly past famous landmarks and gives the players a bit of information about history and geography.

4

Some had spent a lot of time thinking about their theme and message like this group of boys whose game centres around Gaia and maintaining conditions for life on earth.

5

Many had environmental themes to their games like this group that concentrated on education around reduction in rubbish, recycling etc.

 7

These two girls had made a game to help kids learn japanese characters.

8

Many had fun decking out their booths with their artistic talent.

9

It was great to see some big smiles when talking about the problems they faced and overcame in creating their projects.

There were lots of other interesting projects in the other grades with numerous autonomous helicopters, lego mindstorm etc. I didn’t get a chance to take too many photos as I was busy judging, but all my pics of the day can be found here.

 

Technorati Tags:

Presenting Kinect SDK at Teched Australia

SMIC1608_emailSig_speaking_smlWe’ve seen some exciting announcements around the Kinect for Windows SDK recently – with a new generation sensor coming next year and a new version of the SDK just released in March. In that March release, was a bunch of new controls and the Interaction stream, which I think is pretty cool – you can see my set of blog posts I covered off a bunch of the new controls. This year at TechEd Australia we’re doing a session on Interactions with Kinect.

Details for the session is below. Let us know if there’s something specific you want covered!

 

Kinecting the Dots – Interactions with the Kinect SDK

When: Friday September 6 11:30-12:45

Where : Central A

Details:

The Microsoft Kinect has come a long way since its release in November 2010, with the Kinect for Windows SDK and device released in February 2012. In the latest SDK, you now have the ability to take advantage of the Interaction Stream to help build better "Kinectified" apps. In this session Bronwen delves into the Interaction Gallery looking at some of the Kinect controls and interactions to help you build better navigation and engagement in your next Kinect application.

 

Rails Girls Brisbane – wrap up

railsgirlsbanner

I’d seen posts about Rails Girls events in other countries and cities and I was excited to see that they were going to hold one here, in Brisbane. When Katie Miller (@codemiller) posted on our Girl Geek Dinners wall about the event I checked it out and saw they were looking for volunteers so I asked what I could help with and the answer came back “Do you want to help with mentoring?”. I’ve done many years of dev and bits of training and presenting, but haven’t actually done any Ruby/Rails. I often find the best way to learn is to teach/help others so why not!

1

The evening of Friday 24th came along fairly quickly. Tonight was installation night – where our goal is to get as many of the ladies setup and running on their machines to they can get to the more exciting stuff the next day. They’d not only filled to capacity of 50 but they also had about half as many again on the wait list!

2

We knew from the registrations we had a massive range of ages and experience. One of the questions on the form was “What OS are you running?” and at least one of the answers was “Laptop”. This was really going to challenge some of us I think. How to step back from our tech jargon and try and explain the bits we do every day to normal people.

3

After a bit of food and drinks to loosen up our nervous tongues we embarked on our mission to get people up and running.

4

My first victim (ahh..I mean participant) was Minh McCloy. She was a lovely lady, not affraid to ask questions and a keen citizen journalist. I’ll be interested to see what she writes up about the event as she was running around interviewing people everywhere. The RailsInstaller site has nice download packages for lots of different environments. I’d put everything I used to setup my lappy and surface with me on a USB, but was quickly reminded I’m not normal…I have new gear that has been running 64 bit for a long time. So my first task was to download the 32 bit installers for everything. Other than that we got Mihn going quick smart.

6

Next I helped a mother/daughter combination that had a mac and a windows pc. Interestingly the Mac download is 10 times bigger! Setting up everyone with a GitHub account proved a bit of a problem when they stopped us signing up as we’d hit our IP address limit of requests (oops).

5

Now that most people had settled in, Adrian from Enova opened the night and set the scene for what we’d be doing tonight and Saturday. One of the main goals was to have fun!

7

To get a bit of a group dynamic going we started with the “Marshmellow Challenge”. Take a pack of spaghetti and a bag of marshmallows and see how high you can build a structure.

8

So with about 1/3 of the “recommended ingredients” our group started off our tower. As we got some height we needed a bit more bracing on our lower levels.

9

We opted for the double spire at the top to cheat our way into that last bit of height. Note for future – the marshmallows get a bit squishy and move the more you touch them and causes some twisting in your structure.

10

There was a definite triangle theme going on around the room.

11

I think these ladies had the neatest tower – and might have copied our spire idea 😉

12

To finish off the opening we did a Friday Hug photo. Unfortunately I didn’t have my wide angle with me so had to do a stitch. It’s gotta be one of the most out of focus photos I’ve taken for a long time as I didn’t really prepare very well for it. But since the resolution here is so small you don’t notice it so much. Now how often do you get a photo with this many women in it when it’s something to do with tech? Not often…

13

The rest of the night we spent setting up more computers and making sure everyone was good to go for Saturday. You don’t realise how quick your computer and especially your SSD drive are until you go and work on some of these older laptops that have “normal drives”.

14

Luckily there was plenty of drinks and people to talk to while it was all getting done.

15

Bright and early Saturday morning we wall started arriving. Not too long after we had a full room of people! You always worry about losing a bunch of people on day 2, but I think we gained a few. This is a great sign when people come back the second day. We spent the morning verifying everyone was set up to go and working on some of the more problematic machines i.e. ones without admin access, ones that had corrupted downloads etc. Some people were so keen for this event we had one lady (Tracy Mu Sun @tracymusung) who’d flown all the way up from Sydney to attend.

16

The morning was spent with a crash course on the internet, html and IRB. Here we covered a crash course in data types – strings, int, float, methods etc. For me it was time to sit up the back and quietly ask the other mentors who know rails lots of little questions on the finer details like …so what does 10 == 10.0 return true.

17

The next big section was letting the ladies have a go at their own pace with TryRuby. I’d had a go at this site and it’s really nicely laid out to let you have a go at commands on one side and read instructions and background information on the other. Talking to a bunch of participants, they really seemed to enjoy going through this one. It let them go through at their own pace and then ask questions if they needed something explained to them in a bit more detail. The front row you can see in the picture was lucky enough to have Matt Connolly (@matt_connolly) set up to be their personal help desk for the day.

18

It was about 11:30 and we asked if the ladies wanted to break for lunch a bit early and it was a resounding NO! We want to learn more! After some more learning and some much need brain re-fueling at lunch it was onto the really exciting part – making a photo website.

19

This is where being “mentor rich” really came into it’s own. It meant that there was at least someone to help per row and help was never very far away.

20

It allowed the ladies to work along at their own pace, get help or ask more in depth questions as they went along. Just remember, we had people from all walks of life – teachers, nurses, book-keepers, lawyers etc.

21

I think my favourite site was seeing them helping each other!

Overall I think the day was a great success. I heard some great feedback on the day, but also seeing some great stuff on twitter and facebook:

Jeya Karthika : @ItsJkTweeting: My first rails app is up & pushed to github as well. Wow. Thanks to all mentors, sponsors and @RiverCityLabs for this awesome #RailsGirlsBNE

Dayle Parker – Thanks to the mentors and everyone who organized this awesome event! It was a blast! 🙂

Kerry Kerry K – I very much appreciated the non judgemental enthusiasm, I lost my way for most of the day- I would like/ need to do it again , sit up the front where the white board is visible. Wow did the organisers expect this much interest " It was a geek girl stampede. " <hello ‘my’ world>

 

30 31 32 33 34 35 36 37 38 39

I was really impressed at the patience and enthusiasm the mentors put into the event. They truly seemed like a bunch of really nice people…even if they did pay me out for being a .Net developer.  Thanks guys for letting me infiltrate the group for the day. These people gave up their time on their Friday night and Saturday to share their love of Ruby with these ladies and did a fantastic job. Here’s a big thumbs up to Nigel, Dan, Adrian, Katie, Robert, Jason, Matt, Nick, Odin, Rob Dawson, Damien and everyone else I didn’t mange to get a photo of!

There’s a Facebook group you can join to stay in touch and hear about the event (due to popular demand) already in planning for later in the year here: http://www.facebook.com/groups/462831463794656/

Hopefully they’ll see many of this weekend’s participants return to learn the next level of Ruby Dev!

Edit: If you don’t believe me it was a successful day, here’s a couple of blogs from some of the participants:

Tracy Mu Sung @tracymusung: http://www.tracecode.com.au/blog/ruby/rails-girls-brisbane/ . “Unlike the Geek Girls events I have been to in Sydney, everyone was really, really friendly. I wonder if Brisbane is friendlier than Sydney?”

Jeya Karthika @ItsJkTweeting: http://freshsqueaks.com/railsgirls/#.UaKbqk5-9DF . I love her description: “Vibrant Atmosphere. Friendly Mentors. Excited Women. Friday Hugs. Witty Questions. Fervent Coding. – This is how I would describe the event.”

 

Kinect For Windows Interactions Gallery – Interaction Stream

Now that we’ve outgrown all the controls in the Interaction Gallery and we’ve exhausted all the ways we can use KinectRegion to make our own controls we get into the thick of it and look at the InteractionStream itself. The cool thing is we can use the stream for non-WPF applications. So you could write a console app or XNA using the stream data to perform functions. Here we can get data of multiple users, and both hands and what states they are in.

Ben from Microsoft has already written a great post on how to use the data here. So instead of basically repeating him, I’ll let you read that and just note a few things that struck me when I first used it.

1. It doesn’t follow the same pattern of the other streams – Most of us are used to enabling our stream and handing it’s frame ready event.  It looks a bit different:

_interactionStream = new Microsoft.Kinect.Toolkit.Interaction.InteractionStream(e.NewSensor, new MyInteractionClient());
_interactionStream.InteractionFrameReady +=InteractionFrameReady;

Firstly, we keep a copy of the stream, and we have to give it something the implements the IInteractionClient interface.

2. The InteractionFrameReadyEvent isn’t “it” – normally for other streams like depth we’ve handle depthframe ready and we’re all happy. With InteractionStream, if you only do that nothing useful happens…To get anything useful, you will need to hook up both the SkeletonFrameReady and the DepthFrameReady events. In the skeleton the key bits are:

skeletonFrame.CopySkeletonDataTo(_skeletons); 
var accelerometerReading = _sensor.AccelerometerGetCurrentReading();  
_interactionStream.ProcessSkeleton(_skeletons, accelerometerReading, skeletonFrame.Timestamp); 

We need to copy the skeleton data somewhere for later, and tell the interaction stream to process the skeletons.

In the depth stream it’s similar:

_interactionStream.ProcessDepth(depthFrame.GetRawPixelData(), depthFrame.Timestamp);

We need to tell the InteractionStream to process the depth data

Technorati Tags:

Kinect For Windows Interactions Gallery – Kinectify my own control

Now that we’ve looked at the existing controls in the Interaction Gallery. What happens now we want some other control “Kinectified”. Generally speaking I think you can get most of what you want without going direct to the interaction stream and getting the events and properties that are exposed in the KinectRegion.  So for our example we’re going to make a “Kinectified” CheckBox.

If you look at Microsoft.Kinect.Toolkit.Controls.KinectButtonBase it will give you pretty much everything you need for this.

public class MyCheckBox : CheckBox
{
    private static readonly bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
    private HandPointer _capturedHandPointer;

    public MyCheckBox()
    {
        if (!IsInDesignMode)
        {
            Initialise();
        }

    }

    private void Initialise()
    {
        KinectRegion.AddHandPointerPressHandler(this, this.OnHandPointerPress);
        KinectRegion.AddHandPointerGotCaptureHandler(this, this.OnHandPointerCaptured);
        KinectRegion.AddHandPointerPressReleaseHandler(this, this.OnHandPointerPressRelease);
        KinectRegion.AddHandPointerLostCaptureHandler(this, this.OnHandPointerLostCapture);
        KinectRegion.AddHandPointerEnterHandler(this, this.OnHandPointerEnter);
        KinectRegion.AddHandPointerLeaveHandler(this, this.OnHandPointerLeave);

        KinectRegion.SetIsPressTarget(this, true);
    }
}

Here we create our own checkbox based on the normal checkbox.

We intialise our control and grab the events we care about from the KinectRegion we will sit our control inside of so they are passed through and we can handle them.

We want the checkbox to act like the buttons, so we make sure we set the SetIsPressTarget to true.

private void OnHandPointerLeave(object sender, HandPointerEventArgs e)
{
    if (!KinectRegion.GetIsPrimaryHandPointerOver(this))
    {
        VisualStateManager.GoToState(this, "Normal", true);
    }
}

private void OnHandPointerEnter(object sender, HandPointerEventArgs e)
{
    if (KinectRegion.GetIsPrimaryHandPointerOver(this))
    {
        VisualStateManager.GoToState(this, "MouseOver", true);
    }
}

The HandPointerLeave and Enter are similar to a mouse leave/enter. As we have two hands, we first ensure the hand over the object is the “Primary Hand” before we change the look and feel of the control.

private void OnHandPointerLostCapture(object sender, HandPointerEventArgs e)
{
    if (_capturedHandPointer == e.HandPointer)
    {
        _capturedHandPointer = null;
        IsPressed = false;
        e.Handled = true;
    }
}

private void OnHandPointerCaptured(object sender, HandPointerEventArgs e)
{
    if (_capturedHandPointer == null)
    {
        _capturedHandPointer = e.HandPointer;
        IsPressed = true;
        e.Handled = true;
    }
}

private void OnHandPointerPress(object sender, HandPointerEventArgs e)
{
    if (_capturedHandPointer == null && e.HandPointer.IsPrimaryUser && e.HandPointer.IsPrimaryHandOfUser)
    {
        e.HandPointer.Capture(this);
        e.Handled = true;
    }
}

For the Capture and Lost capture we want to grab a reference to the hand pointer to ensure we’re checking the state of the same hand and setting whether we’re in a pressed state correctly.

When we detect a press, we want to ensure it’s the primary hand of the primary user before handle the event.

private void OnHandPointerPressRelease(object sender, HandPointerEventArgs e)
{
    if (_capturedHandPointer == e.HandPointer)
    {
        if (e.HandPointer.GetIsOver(this))
        {
            OnClick();
            VisualStateManager.GoToState(this, "MouseOver", true);
        }
        else
        {
            VisualStateManager.GoToState(this, "Normal", true);
        }

        e.Handled = true;
    }
}

For the pressrelease – this would be similar to a left mouse up – we only want to fire the onclick when they let the mouse go – here it’s when they let go of the control.

In this case – we need to see where their hand is. If it’s over the control we fire a click, but if they’ve moved off they’ve effectively cancelled the click so we go back to a normal state.

Now we can put our control into KinectRegion and see it in action. Note – I haven’t changed the style of the checkbox here. You’d most likely want to make the actual check box much bigger or more like a toggle switch look etc to make it easier to press.

<k:KinectRegion Name="KinectRegion" Height="350" VerticalAlignment="Top">
    <interactionStream:MyCheckBox VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,300,0,0"/>
</k:KinectRegion>

When we run we now get the hand pointer with indicators for hover, press, release and importantly the checkbox state changes.

check_hover

Hovering over the checkbox

check_press

Pressing / Checking the checkbox

check_checked  

Checked Box.

 

Using these principals, you should be able to make all the one handed/single person controls you need.  When you need two hands or two people you’ll need a bit more thought and more custom code of how to deal with and visually indicate what’s going on.  In that case you should look more into the Controls Projet like KinectRegion, KinectCursor and KinectAdapter.

 

Technorati Tags:

Kinect For Windows Interactions Gallery – KinectScrollViewer

The next control I want to touch on in the Interactions Gallery is the KinectScrollViewer. Now that we’ve learnt about the Regions, and button controls it’s time to see how we handle putting a lot of them on the page. 

 

Let’s first put the scrollviewer on the page and to make it obvious when we’ve hit it, we’ll set a bright colour for the hover:

<k:KinectScrollViewer HoverBackground="YellowGreen"></k:KinectScrollViewer>

scrollviewer_normal

Normally, it looks no different, but when we hover our hand over the screen the scrollviewer turns “YellowGreen”

scrollviewer_hover

I can move my hand around the screen etc. If I close my fist, the hand changes to indicate I’m “gripping”

scrollviewer_grip

This is all good, but I have to content, so there is no scroll at the moment. Let’s add a bunch of KinectButtons and see what effect this has.

First I’ll add a horizontal scroll bar in the centre of the screen:

            <k:KinectScrollViewer HoverBackground="YellowGreen" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto" VerticalAlignment="Center">
                <StackPanel Orientation="Horizontal" Name="buttonContent"></StackPanel>
            </k:KinectScrollViewer>

And then we’ll add 100 KinectTileButtons to the scrollviewer in codebehind (just for the sake of simplicity)

for (var i = 1; i < 100; i++)
{
    buttonContent.Children.Add(new KinectTileButton {Content = "Button " + i, Margin = new Thickness(0,40,40,40)});
}

When we run this we see the items as per normal:

scrollviewer_itemnormal

The colour change when we hover over the scrollviewer:

scrollviewer_itemhover

The grip indicator turn on when we close our fist

scrollviewer_itemgrip

Then we are free to move the items slowly with a closed fist or to move quickly through the list by moving our fist fast and letting the momentum move it for us.

I found the grip and drag a bit odd at first, after being used to hover and hold from my XBox. After the initial difference it’s much easier to get quicker at using it and be scrolling all over the screen like a pro.

So that’s all you have to do to hook up simple controls that work with the interaction stream out of the box.  If you need to do more complicated thing in your own controls and get to properties of the hands etc. you need to access the interaction stream directly.

Technorati Tags:

Kinect For Windows Interactions Gallery – KinectTileButton and KinectCircleButton

The next controls I want to touch on in the Interactions Gallery are the KinectTileButton and KinectCircleButton. Now we have our KinectRegion and can see what we’re doing with the UserView control, we can start interacting.

In its simplest form, the KinectTileButton still has a lot of visual features. Simply add it to your XAML and run:

        <k:KinectRegion Name="KinectRegion">
            <k:KinectTileButton />
        </k:KinectRegion>

TileButton_normal

In its default form it’s a giant purple button that you can easily put your hand cursor over.  With the interactions the team has added the ability to detect a “push” gesture from either hand. As I start to press in with my hand the cursor changes to indicate that I’m pressing

 TileButton_pressing

The cursor becomes more full of purple lines until I’ve pushed in to trigger a button click and then it changes colour completely.

TileButton_pressed

We can do other normal button things like set the title and the background of the button:

 

 <k:KinectTileButton HorizontalLabelAlignment="Left" Label="Press Me" LabelBackground="AliceBlue"/>

tilebutton_label

The KinectCircleButton is almost identical, except it provides a circular button rather than the boxy metro type.

        <k:KinectRegion Name="KinectRegion">
            <Grid>
                <k:KinectTileButton HorizontalLabelAlignment="Left" Label="Tile Button" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                <k:KinectCircleButton HorizontalAlignment="Right" VerticalAlignment="Center" Label="Circle Button"></k:KinectCircleButton>
            </Grid>
        </k:KinectRegion>
circleButton 
 
Technorati Tags:

Kinect For Windows Interactions Gallery – KinectUserViewer

The next control I want to touch on in the Interactions Gallery is the KinectUserView. Now that we know that our Kinect is plugged in and working, most of us want to give the user some indication of where they are in relation to the Kinect to ensure they are the correct distance and position from the Kinect for the things we want them to do. We’ve tried a few things in the past:

1. We made a little WPF skeleton that we’d overlay over some of our interactions. This was interesting to play with but tended to be a bit distracting.

2. Use the depth camera to give a silloute effect and give it some colour. We found this was much more useful as it resembled the user so they were more easily able to tell that the Kinect had recognised them and not the guy standing to the side etc.

I’ve seen various incarnations of this by other people also, so it’s good to see we now have a standard control that we all don’t have to write from scratch. To add this control we continue on from where we left off with the KinectRegion.

XAML:

Add the UserViewer Control and bind it to our Kinect Region:

<k:KinectUserViewer k:KinectRegion.KinectRegion="{Binding ElementName=KinectRegion}" />
Run the project and we can see ourselves:
userviewer_full 

Don’t like the colours for the user..then we can change these really easily with DefaultUserColor or PrimaryUserColor:

<k:KinectUserViewer k:KinectRegion.KinectRegion="{Binding ElementName=KinectRegion}" PrimaryUserColor="DarkCyan" DefaultUserColor="Crimson"/>

 

userColour1 userColour2

 

Now taking up the whole screen could be good to start but probably will get in our road fairly quickly. So we’ll just move the control up out of the way in top right in the XAML
<k:KinectUserViewer k:KinectRegion.KinectRegion="{Binding ElementName=KinectRegion}" VerticalAlignment="Top" HorizontalAlignment="Left" Height="50"/>

Now when we run, we get an idea where we are, and it doesn’t get in our way for other things.

userviewer_small

 
Technorati Tags:

Kinect For Windows Interactions Gallery – KinectRegion

The next control I want to touch on in the Interactions Gallery is the KinectRegion Control. It’s a canvas for the other Kinect controls and is associated with a particular sensor.

To add it:

XAML

<k:KinectRegion Name="KinectRegion"></k:KinectRegion>

Code behind:

1. Create our sensor changed event

 _sensorChooser.KinectChanged += SensorChooserOnKinectChanged;

2. In our event associate the control with the sensor

 KinectRegion.KinectSensor = e.NewSensor;

When we run this the first time, you’ll likely get an error like:

Unable to invoke library ‘KinectInteraction170_32.dll

To fix this we need to add two linked files: in our project that are found in:

C:\Program Files\Microsoft SDKs\Kinect\Developer Toolkit v1.7.0\Redist\amd64\KinectInteraction170_64.dll

and

C:\Program Files\Microsoft SDKs\Kinect\Developer Toolkit v1.7.0\Redist\x86\KinectInteraction170_32.dll

To do this, in the root of the project, right click and Add Existing Item

AddItem

Choose the dll from your file system and Add As Link

AddLink

Once the item is added, make sure you set the Copy to Output Directory to Copy If Newer

When we run this time the project doesn’t crash but we don’t see anything on the screen. We need to make sure we have both the Depth and Skeleton streams enabled. So now we add some standard sensor code and enable the streams and settings we want. I’m going to enable near mode and skeleton tracking of seated to make the demo easier. You can find this boilerplate code in most of the samples, but I’ll add it here as an example also.

private void SensorChooserOnKinectChanged(object sender, KinectChangedEventArgs e)
{
bool errorOccured = false;
if (e.OldSensor != null)   
{
    try
    {
        e.OldSensor.DepthStream.Range = DepthRange.Default;
        e.OldSensor.SkeletonStream.EnableTrackingInNearRange = false;
        e.OldSensor.DepthStream.Disable();
        e.OldSensor.SkeletonStream.Disable();
    }
    catch (InvalidOperationException) 
    {  
        // KinectSensor might enter an invalid state while enabling/disabling streams or stream features.  
        // E.g.: sensor might be abruptly unplugged.
        errorOccured = true;
    }  
}
if (e.NewSensor != null)
{
    try
    {
        e.NewSensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);
        e.NewSensor.SkeletonStream.Enable();
        try
        {
            e.NewSensor.DepthStream.Range = DepthRange.Near;
            e.NewSensor.SkeletonStream.EnableTrackingInNearRange = true;
            e.NewSensor.SkeletonStream.TrackingMode = SkeletonTrackingMode.Seated;

        }
        catch (InvalidOperationException)
        {
            // Non Kinect for Windows devices do not support Near mode, so reset back to default mode.  
            e.NewSensor.DepthStream.Range = DepthRange.Default;
            e.NewSensor.SkeletonStream.EnableTrackingInNearRange = false;
            errorOccured = true;
        }
    }
    catch (InvalidOperationException)
    {
        // KinectSensor might enter an invalid state while enabling/disabling streams or stream features.  
        // E.g.: sensor might be abruptly unplugged.  
        errorOccured = true;
    }

    if (!errorOccured)
    {
        KinectRegion.KinectSensor = e.NewSensor;    
    }
}
Now when we run, we see the hand cursor.
cursor 

Now we’re ready to add controls that work with the cursor!

 

Technorati Tags:

Kinect For Windows Interactions Gallery – KinectSensorUI

When we look at the range of controls in the Interactions Gallery , the first one I wanted to highlight that you’ll see in the Interactions Gallery is the KinectSensorUI.

It’s a nice little control that shows you the status of your Kinect. It gives a nice consistent way to visually indicate to the user there’s something wrong and gets around the question of “is this thing on”. It’s also really easy to add it its most basic form.

1. Add the control to your UI

<k:KinectSensorChooserUI HorizontalAlignment="Center" VerticalAlignment="Top" Name="SensorChooserUi"/>

2. Add it in the code behind

        private KinectSensorChooser _sensorChooser;
        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindowLoaded;
        }

        void MainWindowLoaded(object sender, RoutedEventArgs e)
        {
            _sensorChooser = new KinectSensorChooser();
            SensorChooserUi.KinectSensorChooser = _sensorChooser;
            _sensorChooser.Start(); 

        }

When you run this, it gives you a visual indicator of the status of your kinect and hovering over the control gives a little more detail e.g.

No Kinect normal and then in hover:

nosensor_smallnosensor_hover 

Once your plug your kinect in:

initialising_smallinitialising_hover 

When your kinect is connected:

connected_smallconnected_hover 

There’s also a property you can set to show if the Kinect is listening. This one is great if you want a visual indication to the user that the microphone is on or we’re waiting for an audio response.

You can set this on the UI control

<k:KinectSensorChooserUI HorizontalAlignment="Center" VerticalAlignment="Top" Name="SensorChooserUi" IsListening="True"/>
or by setting the property in code behind:
SensorChooserUi.IsListening = true;
When you run and connect the control looks a bit different.

isListening_hover isListening_small

 

Technorati Tags:

Kinect For Windows Interactions Gallery

interactionsGallery

As the Kinect For Windows SDK has started to evolve, the team has been adding some nice little controls which are quite useful and also controls everyone was writing in one way or another to solve the same issues. I think it’s a really good step so we’re not all spending a bunch of time writing similar controls plus it means there should be some consistency going forward if people use the supplied controls. This will help users with the learning curve with many of the applications.

When you first look through the interactions gallery it’s a bit overwhelming as there’s a bunch of controls and the interaction stream to deal with all at once. For this reason I wanted to do a set of posts so we can concentrate on them one at a time.

 

Technorati Tags:

Kinecting The Dots – Interactions with the Kinect SDK – BNE 28 May

I’ve been hanging out until the 1.7 release of the Kinect SDK to show off a bunch of the improvements and features in the Kinect SDK. This month we’re presenting at the Brisbane .Net User Group. Planning on taking you through a bunch of the new features and go into a deeper look at the Interactions Gallery and its controls aswell as showing a few fun demos. Hoping to make the session quite interactive so come prepared to get out of your chairs. Details of the session:

Kinecting The Dots – Interactions with the Kinect SDK

The Microsoft Kinect has come a long way since its release in November 2010, with the Kinect for Windows SDK and device released in February 2012. In this session Bronwen and John will take you through some of the latest features in the 1.7 SDK release, and delve into the Interaction Gallery looking at some of the Kinect controls and interactions to help you build better navigation and engagement in your next Kinect application.

Where: Brisbane .Net User Group – Microsoft Office – Level 28 400 George Street Brisbane

When: 28 May 2013 – 6pm onwards

Register: here

Phone Gap with Android – Hello World App

 Awhile ago we started building an Bing Maps app for a client using Phone Gap and initially targeting iPhone. Now that we’re happy with the functionality we’re looking at the Android version. Today I was trying to get to step one…setup the environment and have a “hello world” app run.

I learnt/reinforced in my mind a few things today:

  • Skimming instructions and not following ever step precisely = more pain than could be gained by rushing in.
  • Just cause something isn’t working doesn’t mean I’m an idiot – it might actually not work.

To start, I needed to set up my computer with the right tools for developing in Android. The PhoneGap site has a good overview on how to do this. My biggest recommendation here is to read the instructions CAREFULLY and not skip over steps or skim through it. I faced a few issues by jumping the gun a bit. While i could call “java” from a command prompt the %JAVA_HOME% variable wasn’t set correctly so it took me a while of scratching my head before I retraced my steps and did it properly.

What struck me coming from a environment like .Net again was how 80’s the setup all felt. Here I was setting ENVIRONMENT and PATH variables – cutting and pasting paths out of explorer like I did many years ago.

After I created the blank project running up the blank application was easy the first time. It’s cool with the number of devices you can configure to deploy to. My first problem was that I couldn’t seem to run my app more than once on the same emulator. I tried keeping it open, I tried closing and re-deploying. The only thing that consistently worked was deleting, creating and running. This is really time consuming as the emulator takes quite awhile to spin up the first time.

logcat

This can’t be right, I’m clearly doing SOMETHING wrong. I retrace my steps and can’t see anything obvious I’ve done wrong. In my LogCat window I’m getting the above “Unexpected value from nativeGeoEnabledTags: 0” filling up my log window but only the 2nd time I try to use an emulator. After a bit of searching I find a few other people have had the same problem here and here. I tried installing to different directories, uninstall / reinstall and still came across the same issue. I don’t have a real device so I take one of the suggestions and run the device as an ATOM rather than INTEL and “tada” I am actually able to run my blank app twice in a row.

It is interesting to try out these other developer environments I either haven’t used or haven’t used in many years and see what they are like and experience their pain points as a “newbie”. It definitely makes me appreciate the tooling I have in Visual Studio.

 

Technorati Tags: ,

Scenic drive around

50

This morning started very similar to yesterday. The place was surrounded in mist, this time though everything was already wet from yesterday/last night’s rain. No real point hiking today so a little sleep in was in order. Once we got up this little guy was hanging outside our front door, totally unphased by our presence.

They guys wanted to come and clean our cabin so we decided it was a good time to go for a drive around. On the tourist map we spotted a Zulu Cultural experience / craft centre so found roughly where it was on the gps and set off. On the way out of the park we passed some local ladies weaving on the side of the road so we pulled over and I grabbed some baskets.

51

Pretty much they’re made from grass, so not sure if I’ll lose them coming back home on Saturday but it’s worth a try. They’ve weaved in some ribbon-like material to add colour etc. Don’t want to think how many hours goes into each one of these! By 10am the cloud is starting to lift – just like I thought it would yesterday. We follow some gravel roads and get cut off by massive dips filled with water – so scrap the “zulu” experience and cross off another fail on our tourist map. It’s getting close to 12 and we’re getting hungry so we thought we’d try the next thing on the map – the waffle hut. Back out through Bergville, down through Winterton and towards the central Drakensburg we head. Starting to think it might be three strikes and then we spot it. So we pull over, get some food and check out the craft store. All very touristy packaged goods. We head towards Monk’s Cowl seeing we’ve come all this way. It seems much more touristy – lots more shops, golf courses etc. The area has quite a few pine plantations so doesn’t look as pretty as the Northern section we’ve been staying in.

52

We hit Monk’s Cowl and have a quick look around. Nothing much interesting here so we head back towards our cabin. Today has turned into a nice sunny day – pity we didn’t have this yesterday. When we get back to our cabin the cloud on the top of the mountains still hasn’t fully lifted – we are quite high up I guess.

The bbq area has dried enough that we can try and have a braai with our sausages etc. tonight. Up early tomorrow – another big day of travel. Drive back to Johannesburg to give a Kinect Presentation at Microsoft before we head to the airport for our long flights home.

The Gorge Walk

40

We woke to mountains of mist. Looking out our window this morning you’d never know we’re surrounded by beautiful mountains.

41

It’s a bit cold and bleak this morning but we’re essentially sitting in some clouds. I want to do the gorge walk today and it’s supposed to be 5-6 hours so if we’re going to do it, we need to leave soon. It’s not raining, just misty so we decided to give it a go see how we go. We wander down to the reception and sign the hiking book – snow shoes – N, overnight tent – N etc. Hmm…I’m ticking a lot of N’s here.

42

We walk for about an hour – it’s still misty, tiniest bits of rain but we still can’t see a thing – the mist isn’t lifting but it’s still only 9am. We’re walking around the other side of the mountain we climbed yesterday. We decide we should walk till 10 and then re-evaluate – if nothing else we’ll get a 4 hour walk in. About 1/2 hour later it starts to rain but we also start to hit patches of rainforest like cover. We hang out here till it lightens up again and set off.

43

We can see bits of mountain through the mist but the hiking map is next to useless in terms of landmarks so we have no idea how far along we are. The walking notes were – follow the obvious path till you hit the river – guess we keep doing that.

44

We hit 10am and we can hear a lot more water – hmm..can’t hurt to go a bit further – we’re a little damp but not really wet. We walk a bit further still trying to guess how far we are. We see a nice rock overhang that is dry as the rain starts up again so head for that. The sound of the water is loud now.

45

We don’t see any more path so we conclude we must have made it to the river crossing – the trip notes say there’s only 1600m left and most people turn around now – but we’ve come this far. So down the rock embankment and through the first river crossing – it’s not that bad and we hardly get our feet wet. There’s a cold breeze coming up the gorge. We walk up the left side of the river for a bit and hit the 2nd creek crossing – it’s ok with a bit of jumping from rock to rock but then there’s a big gap. The water is an amazing blue colour bit it’s also very cold.

46

John jumps and only gets one foot wet – too easy. Forgetting I’m not 6’4” he’s convincing me it’s not that bad…I jump but end up with both feet in the river in a jump that gives off the biggest splash like a kid purposely jumping in a puddle – I get water everywhere. Walking a bit further our final crossing – this one we basically walk through shallow water to the other side.

47

Walking, walking I’m starting to get cold with my damp clothes and this wind coming down the gorge.

48

We spot the chain ladder – which is chain and wood and very wet. The other option is “the tunnel” which I’ve seen pictures of and looks pretty – in the dry. Now it’s got a bunch of water running down it. John goes up the chain ladder and the top is just mud, mud and more mud – scratch that idea. I’m really cold now and want to head back.

49

John goes for a look in the tunnel. It’s John knee deep freezing water for about 100 metres. I’m really not keen – I’m really cold and don’t fancy walking through cold water that far twice so we head back – back through our 3 river crossings which we don’t mind getting as wet now that we are already pretty wet, back up the gorge rock wall and out of the main bit of wind.

Of course it’ raining now, and the path is just mud so we’re picking up the pace to get back to our warm cabin and hot shower. About 1 1/2 hours back, we run into another group on their way to the gorge – 1pm seems a bit late to me to be heading there but they have rain jackets and much warmer clothes than us – still they look pretty cold and miserable. The grass on the track is really long, cold and wet and it whacks against our legs on the track. My shorts are drenched from the grass, my shirt is drenched from the rain and my shoes are drenched from the creek. My rain jacket really wouldn’t have helped much here – my hands, feet and legs which are the coldest still would have got just as wet and cold. We go round the bend of the ridge and I know it’s not far now. Soon we spot our initial bridge at the bottom of the hill – close now. Across the bridge and up the steep hill – this is why I hate doing valley hikes – uphill at the end when you’re tired hurts.

Back to the reception to sign back in – John’s fingers are cold and has trouble signing his name. Up the rest of the hill to our cabin and hot shower, then hot food! The rain has really picked up now and it pours down the rest of the afternoon and night. So much for an afternoon drive. I think Sentinel’s Peak will be out for tomorrow.

Policemen’s Helmet

20F

First morning we’ve had since we started our holidays we don’t have to actually be anywhere at a certain time today. The view out of our bedroom window of the mountains in the morning is pretty cool.

21

We look up at Policemen’s helmet – it doesn’t seem that far but it’s supposed to be a 4 hour walk. So we head off about 9am. We quickly see why it’s 4 hours – instead of going down the gully and up the hill, it’s a long meandering track around the faces of the mountains.

23

About 10 mins in we hit our first “creek crossing” – just little bolder hops across without needing to get wet, and just around the corner another. About 1 hour in we hit a bigger crossing, this time there’s no way across without getting feet in the water. John goes no shoes, I go all in shoes and all. About 1/2 hour later, just as my shoes stop dripping we hit another so wet shoes again.

24

25

26

The last part of the walk is pretty steep up the mountain and a bit of a scramble right near the top to get to the helmet.

27

What a great view from the top down either side of the mountain. We can see back to our huts and further across the mountains and on the other side we can see the gorge snake through the mountains – that’s our walk for tomorrow – longer distance and time but should be much flatter.

22

On the other side is Sentinel Peak – that’s the plan if we’re not too tired for Thursday – the only day walk where you can get to the top of the ampitheatre – but we essentially have to drive around all the mountains to get to it. This could become a very long day.

28

29

We sit up the top for about 1/2 hour admiring the awesome view.

30

We can see our huts from up here and then head back down and back to our cabin and grab some lunch.

We’re missing a few essentials in our food – cheese and something to light our fire with – we’ve found wood and firelighters, just no matches or a lighter. John’s spotted a Cheese tasting place on our tourist map so we decide to go for a drive in search of cheese.

We follow the long windy road that the map says is unpaved – driving, driving – still bitumen which is good. We pass about 20 schools but nothing tourist like. We get to where map says there is cheese and there’s nothing even remotely resembling a cheese place. We’re getting a bit low on fuel so we decide to go back via Bergville hoping they have a petrol station. Once we get there we spot a Caltex and a BP. Hmm..now do they have a shop that sells cheese. We go down a side street and spot what looks like a set of bigger shops – and a ShopRite. There’s a massive queue out the front – not a good sign – but there’s a bunch of people going past the queue into the supermarket so we follow them.

It’s like the scene from Clerks when he walks into big video shop – this place looks like it has everything. We find everything we’re missing plus some braai salt – that’ll come in handy for our sausages tomorrow. Back to our little hut, food and sleep ready for tomorrow’s hike.

Arrived in Royal Natal National Park

1

We got up at 3 am this morning to catch our flight back to South Africa. We arrived at the airport just as they were opening the doors. The lady and her daughter in front of us hadn’t brought their proof of Yellow Fever vaccination book with them so after much protesting by them they were redirected to another section to wait for someone more senior. Not sure what happened i.e. they gave them another jab or just took their word for it, but they ended up on our flight so it must have worked out for them.

Then it was a short hop to Burundi and then to Johannesburg. Picked up our bag from storage and grabbed on our car and headed to the Drakensburg. It’s over 300k but the first 250k is very straight highway at 120km/hr. My favourite sign on the way was Pedestrians ahead – no fences! Just like herding cattle Smile The sign that got me every time was the ! Potholes – where the programmer in me read the sign as Not Potholes rather than Beware Potholes. We took the “recommended better road” to the park and boy was it a mess so I have no desire to travel the less recommended route.

We hit Harrismith just before 3pm and found a small supermarket to grab some essentials and then headed for the park gate. 4:15pm we hit the front gate and the people 2 cars up were having a good chat with the gate guard. I’m looking at my watch, knowing the office to our accommodation closes at 4:30pm. Waiting, waiting, we finally make it through the gate and up the hill to Thendele (which you’ll  also see spelt Tendele and Thendale pronounced Ten-dar-lee) reception. It’s 4:32pm and luckily the slow people in front of us are also at reception being slow so we’ve made it in just as they’re closing. We grab our key and head up to our cabin for the next 4 nights – we’re right at the top of the cabins.

2

Now that we’ve unloaded – wow – the view from our front porch is absolutely breath-taking. I’ve seen pictures, but they really don’t do the view justice.

3

We are surrounded by massive, green cliff faces. Tomorrow I want to go up to Policemen’s helmet as it looks like a Bobby helmet and a cool looking rock.

Big Badda Boom in the middle of the night

1

We were woken with a start to a MASSIVE BANG and a flash of light. We both sat up straight in bed – it’s 3:30 am in Rwanda and all i can hear is boiling water bubbling bubbling and water pouring everywhere. Our hot water system has exploded and is pouring boiling water all over the bathroom.  Amazingly the power is still on – guessing they don’t have safety switches here.

2

John opens the door to the bathroom and massive wall of steam pours out – it’s pretty busted. John wanders out in search of somebody to tell. There is steam pouring out of the room and now I can smell some sort of metallic gassy smell. I grab our passports and go outside for a bit into the fresh air. Water starts pouring out the front door, so I go back inside and pull everything off the floor for now.

Meanwhile, John has been playing charades with the french-speaking security guard trying to explain that our hot water system has gone bang and water is going everywhere. He comes back with the security guard and he sees the water pouring out the door and gets on the radio to somebody. It was a bit of a flash back to The Fifth Element as the guys looks at me, I say “BOOM” with some gesturing, he nods and says “big boom” and I nod, he nods back.

He runs off and quickly comes back with a key to the room next door and helps us grab most of our stuff and move there. We sit down on the bed and can still hear the hot water system gurgling next door. I wander towards our new bathroom and hit a puddle of water – coming in from our old room.

Outside we go and start charades again until someone else arrives who I think could be a manager who speaks English. He gets it straight away, grabs a few more staff who are starting to gather and they all grab our gear and we’re moved into a room in a different block. Meanwhile we can see sparks and the lights flickering on/off in our room, and someone has come over with a giant fire extinguisher to be safe. Some of our stuff is still in the bathroom and the guy wants to get it for us. We’re trying to explain our toothbrushes etc aren’t that important and it could be dangerous in there. They finally give up on the rest of our gear till light and wishes us a good sleep. 

It starts to rain, and rain heavy as we’re wide awake on top of our new beds. After slipping a bunch of times yesterday after it got wet I’m calling it – no hike for me. At some point we do go to sleep and our alarm goes off – I’m dead tired and it’s still wet outside. They guy who helped us move our gear knocks on our door and has retrieved what gear we had in our bathroom and apologies like 10 times. John goes out to tell our driver no hike for us. He’ll come back after lunch to take us back to Kigali.

It was actually nice to go back to sleep and have a bit of a sleep in after getting up pretty early (for us) every other day.

We have lunch and the owners come over apologise about our room. Now that I’ve had some sleep and it’s a few hours on, it’s actually kinda amusing. It’s not their fault at all, could have happened anywhere and nobody was hurt so all good. Every time I try and picture John trying to mime hot water system blown up I laugh to myself. The staff did handle it very well. I can picture if it was at home getting someone on the front desk who didn’t have the authority to move us or going to the other extreme and evacuating the building and leaving all our gear covered in fire extinguisher foam.

3

We start the 2 hour drive back and after going though hills and hills of fully cultivated land we catch sight of the city in the distance.

4

The terraced paddocks of crops are replaced with lots of housing.

We arrive at our room for the night at Step Town Motel. The view from the balcony next to us is quite nice (pic at top of post) and can see across much of the city.  We rest up here for the night as we’re getting up early for a 6am flight tomorrow morning back to Johannesburg, which means we have to be at the airport at 4am. Then a big drive down to Drakensburg to spend a few days hiking around the amphitheatre. Not sure what our internet coverage will be like down there so may be a bit quiet till we get home.