Rather Useful Seminar - What to do when you are stuck

The final slide....

The final slide....

Today David Grey and me gave a Rather Useful Seminar all about "what to do when you are stuck". I think everyone who was there got something out of it. You can find the slide deck here. If you want a quick summary, here goes:

  • Remember that everyone gets stuck on things every now and then (including me). The important thing is what you do when you get stuck - it's all about coping strategies.
  • The first step is owning the problem. You need to attack it. It will not solve itself, it will just end up owning you.
  • One way to own problems is to write them down. Rather than sitting trying to count how many things you've got to do, write down a list and then you can start dealing with each in turn.
  • Once you've written down the problem, decide whether you need to seek help. It is surprising how many students are shy of asking staff for help because they are concerned that we might think less of them, judge them for being stupid, or whatnot. We simply don't have time for this. What we want is as many students as possible to do really well. This is not because we might get paid a bonus. It's because that way we feel like we are doing something useful with our lives.
  • When you ask for help, rather than saying "I've no idea what to do, help me!", as for help with a plan. This can be as simple as getting a copy of the assignment highlighting the terms you're having the most bother with and getting them explained. Or it can be identifying a couple of next steps and asking which is the best one.
  • Break a problem down into chunks. Nobody does anything all at once. So you should find out what the intermediate steps are and then work on each in turn.
  • Give yourself time to fail. Start on work as soon as you get it. That way you can afford to walk away from a problem for an afternoon and then go back and solve it. If you are under time pressure you can't do this.
  • If you hit a problem coding, try to explain it to somebody else (or even the cat). If that doesn't work, take a break for a while and go back to it.
  • And finally, do what it says on the slide at the top.

Coding Conundrums

We've been running the "Wrestling with Python" sessions again. Each Tuesday we get together with some local teachers and continue the process of getting up to speed with the Python language. We've reached the point where we are having a go at programming puzzles. And it is proving quite fun.

I've put the "Coding Conundrums" up on the Python site so anybody can have a go. You don't have to use Python, in fact I'm sending the same puzzles around our department to give folks some programming puzzles to get their teeth into. I reckon that programming is something that you have to work at continuously if you want to get (and stay) good at it. Bit like learning a musical instrument.

I'm also starting to properly like Python. Most of my Python programming takes place in the forbidding environment of the FreeCad graphic design program. I've got no debugger, scant error messages and Python programs can be terribly "brittle", in that a small mistake can cause them to shatter into a million pieces. But I must admit I'm really liking it.

To See More of this Picture - Sponsor Me

Last time I did a Red Nose Day Lecture in Rhyme I offered to wear a tutu if I hit my target on the sponsorship page. Rather sadly we missed by only 16 pounds.

This year the offer still stands, and to show my faith in my sponsors I've actually bought the tutu.

So, if you want to see me make a complete fool of myself, as opposed to the incomplete version that is normally on show,  you can sponsor me here.

3D Printed Red Nose Day Tags

Tags Ready for printing

Tags Ready for printing

Red Nose Day is a UK charitable appeal. I do Lectures in Rhyme for it and all kinds of silly fun stuff. If you want to sponsor me for the next one you can do so here:

http://my.rednoseday.com/sponsor/robmiles

Last time we had a Red Nose Day I had some RFID tags that I used as the basis of a raffle. The holder of the winning tag won a rather nice Gadgeteer kit.

This year I thought I'd try something different. I thought I'd 3D print some tags and sell those instead. Each tag is completely unique thanks to a Python program that I've written that creates a combination of square and round layers of different sizes on the top of each one. Above you can see how this works. Each tag has five layers on top, of which two are square, the rest round. The square layers are rotated a random amount too so that there is plenty of variation.

I'm going to print only one of each tag design, except for the winners, where I'll print a "golden" tag as well.  We'll draw out the golden tag at the lecture on Friday 13th and find the winner. 

Printed tags. I'm going to do lots of different colours.

Printed tags. I'm going to do lots of different colours.

I'm quite intrigued by the idea of using software to produce 3D printed objects which are unique. This lets me explore the field in a good cause. 

The tags will go on sale later this week at a two pounds each. You can do what you like with them, they'll come with a keyring attachment, but you could use them as unique earrings if you were so inclined. And the more you buy, the more chance you have of winning our top secret big prize.

Note: Sharp eyed readers might have noticed that some of the red tags above have more than two square layers. These are test ones that I produced while tweaking the code. 

Home Repair Hints: How to fix a broken router

Lunch at Thieving Harry's at the marina. Great stuff.

Lunch at Thieving Harry's at the marina. Great stuff.

I've noticed for a while that our broadband at home has been a bit poor. Today I did a speedtest and found I was getting around a third of what I should have, data rate wise. So we did some more testing and were on the cusp of deciding that it was a problem with the line when I remembered that I might have a spare router up in the loft. 

Turns out I did. We plugged it in and instantly the speed was restored to something that is very nearly good enough to watch 4K video. In fact we were able to view some of the rather good Harry Bosh series from Amazon in quite sparkly detail.

Oh, and how to fix a broken router? You just need two things. A new router. And a dustbin.

Pick Up the Crew is Go

I published the First Year programming coursework today. If students fancy writing a game they can create a version of "Pick Up the Crew", an action packed game where the captain has to search the cruel sea for overboard crew members, all the while avoiding hungry sharks.

Above is my highly abstract test version written in XNA. I'm a great believer in "placeholder graphics", as you can see. 

I'm expecting great things from the students this year. I've even bought "pickupthecrew.com" and I'll sign it over to the student who produces the best looking game at the end of the semester. As long as they publish the game of course. 

Formatting Code Listings in Kindle Books using the Html Agility Pack

Well, that could have gone better. I got an email from Amazon suggesting that I buy a copy of the C# Yellow Book.  I get these from time to time, and this time I thought I'd tweet about it as above.  It turned into a very popular tweet (for one of mine).

Anyhoo, with my ego nicely built up I thought I'd took a look at the Amazon page for the book. And I found a 1 star review which noted that they would have liked the book a lot more if all the code samples were properly formatted....

Oh dear. Turns out that if you view the book on your iPad or iPhone the code samples all get printed on one line. I thought I'd checked this, but apparently I hadn't. So I did some digging. 

Kindle books are basically HTML documents, a bit like web pages. Like web pages, if you want to tell the renderer that you have already formatted the document you can use the <pre> </pre> enclosure to mark text that already has a layout. You can put code samples into text without their layout being damaged. 

But there is another way to do this.  You can add "white-space: pre-wrap; " to your styles for the pre-formatted text. This works fine on Kindle devices, Android devices. But not iOS devices.  Guess which technique I'd gone for. My reasoning was sensible enough, I wanted to add other stylistic touches to the code samples (a grey background for example) and it made sense to do it all in once place. But it didn't work.  Stupid me.

I had around 200 pages of text with lots of code samples, all of which were wrong. And a broken text up on Kindle that I really, really, needed to fix quickly. So I did some digging and came across the Html Agility Pack on CodePlex. This is completely wonderful. 

It provides a way of reading in a large HTML text and then traversing the notes in the document and fiddling with them.  Turns out all I needed to do was load each of the chapters and then do this:

void processNode(HtmlNode node)
{
    foreach (HtmlAttribute attribute in node.Attributes)
    {
        if(attribute.Name == "class" && attribute.Value == "CodeExplained")
        {
            node.Name = "pre";
            attribute.Value = "CodeExplainedPre";
            debugString.AppendLine(node.InnerHtml);
        }
    }
    if (node.ChildNodes != null)
    {
        foreach (HtmlNode childNode in node.ChildNodes)
        {
            processNode(childNode);
        }
    }
}

 

This starts at the base node and then looks for anything with the class CodeExplained. It then changes the name of the node to pre (for pre-formatted) and changes the attribute to CodeExplainedPre

It is not very elegant, but it does use recursion. If a node contains any child nodes it calls itself to sort those out too. I was going to figure out the structure of the document and only target the page for fixes, but I was in a hurry and this code meant I could reformat the document and make it to the coffee break in time. 

Note: There are probably lots of much cleverer ways of doing this using the Document Object Model or regular expressions or something. But at least this worked and got I was able to get the fixed version up on Kindle within the hour. 

Careers and Internships Networking Event

Gathering at the start. Nothing brings folks in like Free Food..

Gathering at the start. Nothing brings folks in like Free Food..

We held a Careers and Internships event last year. It went really well so we thought we'd do it again. So we did.  And it went really well again. We had loads of companies show up and present, and then they manned stands and took business cards (that we had rather thoughtfully provided) from our students. 

Peter gets things going

Peter gets things going

One thing that surprised and pleased me was the number of companies in the area doing world beating stuff. And one company mentioned the awesome news that Hull was one of the top ten cities singled out in a recent Tech City UK report. You can find the report here.  Skip to pages 45 and 46 for the good stuff. 

Plenty of action at the exhibition again

Plenty of action at the exhibition again

It was great to see the students and employers engaging again. Many companies had brought Hull University graduates with them as part of their teams, and there was something of a reunion flavour to the event, which was really nice. And, of course, we'll run it again next year.

Ooh. Free pens..

Ooh. Free pens..

If you're a Hull student, I wrote a little executive summary about the event. Send me an email and I'll let you have a copy. 

Fixing your WiFi Radio

I'm quite proud of myself. I've managed to fix something. In the kitchen we have an internet radio which works quite well. We need one because there are no other radio signals that work properly there. But sometimes it stops working, It's taken me a while to figure out the cause of the problem, but finally I have the answer.

It's the microwave. 

The confusing thing is that because the radio uses a lot of buffering it doesn't stop as soon as the microwave comes on and blocks out the signal. The radio plays for a minute or so and then drops out. Then, when you turn the microwave off it takes a few seconds for the radio to re-establish connections with the server and start working again. 

I've checked on-line and apparently this is not an uncommon problem and the microwave radiation isn't hazardous as such, but it is irritating. 

For me the fix was quite easy. I just switched the WiFi channel from 6 to 10 and the problem has gone away. Go me. 

In Praise of Older Cameras

If you fancy owning an older camera my tip is to buy one and then wait. Works for me. I've had my Sigma DP2S for a while now. I bought it ultra cheap off eBay some years ago. I think you can get them even more ultra cheap now, which is unfortunate for me, but good news if you fancy an interesting camera to have a play with. This weekend I got it out to have a play with again. 

The Sigma uses a rather strange Foveon sensor, which means that rather than combining adjacent Red, Green and Blue pixel information it has a multi-layered sensor which grabs all the colour intensities at one spot. This makes for sharper appearing pictures even though the actual resolution of the shot is modest. The camera also has a rather nice fixed lens.

The biggest problem with the camera is that, compared with modern devices, it needs a lot more light to get a good quality picture.  The good news is that when you get a shot, it looks very good, on a par with much more expensive cameras.  

Sometimes, rather than spending a huge amount on an expensive, state of the art, camera it is fun to spend much less on something that has been around a while. If you choose your supplier carefully (eBay feedback is important here) you can get some quite fun devices to have a play with. 

Capturing the Students Union

We've had a few lovely mornings on campus over the last week or so, and I've become kind of obsessed with getting a decent picture of the Student Union building in the sun first thing. After a few sweep panoramas that didn't turn out very well I've managed to stitch the above together out of six different photographs. It's not quite perfect, there is a bit of weirdness right at the very top of the roof, but will do for now. 

Students that Blog

I strongly encourage all our students to blog. Not because I think they'll gain a world following, but because it is a great way to practice writing. And it turns out you don't need a world following anyway. You just need that one potential employer to find their way to your site and suddenly you are streets ahead of everyone else.  I know students who have had job offers purely on the basis of their blogs. 

Anyhoo, here are a few Hull folks who have taken up the blogging challenge. These are just the first few that sprang to mind. Apologies to anyone I've missed out. Ping me an email and I'll update the list. If you want to go on the Blogroll (not sure about that name) at wherewouldyouthink, let me know about that too.

Go See Shaun the Sheep the Movie

As I've mentioned before, I don't go to the movies for dramatic insights into the human condition. I go for fun. And popcorn. 

Shaun the sheep is fun. It won't win any prizes for dialogue, because there isn't any. But there is a nice story, well told, with some very funny set pieces. The phrase "recommended for children of all ages" is a bit overused these days, but I reckon this one really is. 

Konstructor Camera Shots

Portrait of the artist...

Portrait of the artist...

Some time back I made myself a camera. I've just got some of the pictures back and it's worked. Yay!

When I dropped the film off to be processed I said to the girl in Jessops that it was quite possible that the pictures may all be black, or white, or on the same frame. But I took 25 or so pictures and got 22 back, which is great.

We don't have a word that describes that feeling you get when you go to get something from the place where it is usually stored and it isn't there.  If we did have I'd be able to use it now. I thought I'd been clever by having all my photographs transferred onto a CD when I had them processed. But of course when I got home I couldn't find my CD drive. Fortunately I'm an inventive soul and managed to use the PS3 to move the files somewhere I could read them.

Turns out that they have not been scanned to very high resolution and there are some nasty scratchy artefacts, but I'm very pleased with the results. They have a nice "other worldly" feel. I'm definitely going to put a few more rolls of film through the device. 

I like Saints Row 4 more than Destiny

I quite like Destiny. But I love Saints Row 4. Destiny is a bit serious for me, with a portentous narrative about "The Collapse" and ancient warlike races with mythical pasts of great mystery. Or somesuch. But Saints Row 4 is just crackers. Destiny is very worthy, but it hasn't made me laugh out loud once. But the presidential press conference right at the start of Saints Row 4 had me chuckling all the way to the alien invasion which takes place shortly after.

After the aliens arrive you get dumped into some deeply silly simulated worlds for no particular reason which is good for two reasons. Firstly you can lay waste to lots of people and buildings and stuff without worrying too much because none of it is real. And secondly you can break all laws of physics in increasingly outlandish ways.  

It reminds me a lot of a game called Crackdown that I played on the Xbox 360 many years ago. It's a bit like Grand Theft auto, but after you've been eating some really strong cheese.

I'm only 9% or so through the game at the moment, but I'm having a blast. The graphics aren't as good as Destiny, the game is supposed to be glitchy (but I've not seen this),  and I guess that for long term appeal it won't be as good. But I don't care about any of that. It's just more fun. 

FYI I'm playing the PS4 version of the game that I arranged to have as a Valentines Day present. Which has turned out rather well. I've not played any of the previous versions of the game. The word on the street is that if you've played any of the other editions you might not get as much out of this version, but if you haven't tangled with the franchise before, you're in for a treat.

Windows 10 Phone Edition First Impressions

The settings screen has had a serious makeover

The settings screen has had a serious makeover

Well, right on time, as promised, we get a technical preview edition of Windows 10 for the phone in February.  The only problem is that it doesn't work on my Lovely Lumia 1520. This is a technical thing involving the size of the boot images and phone internal storage. I reckon this is fair enough. The only problem is that I really want to have a go. Enter a bright orange Lumia 630 into my life.

You can pick up unlocked versions of these from Amazon for well under 100 pounds and they are actually a smashing little phone. They have nice things like a removable back and exchangeable battery, along with a socket for an SD card to boost the rather internal memory.  They can also run the Windows 10 Technical Preview.  Yay!

The install process was easy enough. I did it over the afternoon, just checking every now and then to see if the progress bars had moved any. You just install the Windows Insider application (you can find it here)  then follow the instructions. There's a "red pill - blue pill" moment where you have to choose between bleeding edge or an older but slightly better supported preview version (I went for bleeding edge - of course) but after that everything runs on rails. Microsoft really are getting good at rolling out over the air updates. 

And when it has all finished you are left with the latest build of Windows 10 on your phone. And you can play "spot the difference". Lots of things look exactly the same, almost certainly because they are exactly the same just at the moment. The Settings menu has had a makeover, the keyboard is a bit different, there's a file explorer and you have to configure the phone to the US region of you want Cortana. 

From the point of view of Microsoft I think it makes very good sense to use the lower spec. phones to start with. If things run OK on the slower devices they are going to run really well on the larger ones. In fact the quality of the experience on the Lumia 630 brings out a problem that Microsoft have with flagship devices. Just what do you make the flagship do that sets it apart from the very acceptable behaviour of this low cost Lumia?

I was very pleased to find that Cheese Lander works fine on the phone, as has much everything else I've tried. I've had a few freezes in Internet Explorer but nothing that would stop me from using this phone as my daily driver. The interface is a bit choppy sometimes and there are occasional flashes of red screen as the video catches up, but it all works fine. I'm really looking forward to seeing how the system evolves in the future.