Wednesday 19 December 2012

Weakness


This year I've tried to focus more heavily on managing my time. As soon as the assignments were given I allocated time for them. I made sure that I approached all of my school work as a whole instead of the more serialised approach that I took last year. While this has equated to none of my assignments being completed, they are each very nearly finished, and all of them are above passing point according to their associated marking schemes. I'm pretty proud of this achievement, and will be sticking closely to my time management approach, its served me well.

I've identified a couple of weaknesses that I'm going to work on this semester that that's mostly around my programming approach. I'm very much a write now and ask questions, or not, later type of programmer. On my final year project it was mentioned, and this year it's already been mentioned a couple of times and that's testing. I'm lousy at testing, in that, while I test as I go, I don't keep any record of it. So one could say that I don't do any testing at all.

I went to an interview for a placement and was given an exercise to carry out in a TDD situation. I failed this catastrophically. I should know about unit testing, and TDD as I've had a fair amount of exposure to it but I just never use it.
So this semester I'm going to approach all of my programming assignments using TDD. I've seen the quality of the code it promotes first hand and I want to bring myself up to that level.

Another weakness that I tackled early on and feel is worth mentioning is time wasting. This was actually a bigger problem than I realised. There was the phrase I heard that went something like "A lot of time is wasted beating your head against a wall hoping it will turn into a door." I thought about this and realised that I spent a lot of time not understanding stuff. The next time your in a 'beat your head against the wall' situation think about how much time you spend with your head on the desk, or in your hands, or wherever. For me it was a lot. I've sat for hours thinking and fretting about how I don't understand it, or don't get it, or whatever. As soon as I get past that hurdle, the work would get done. But often by that time it was bordering on too late. So initially I focussed on how quickest to get over that hurdle, which is ridiculous now that I'm looking back at it, it's kind of like planning to fail, or trying to take account of your own stupidity. So I determined that there was no need for that hurdle to be there in the first place. I know I don't understand the subject, which is why I'm sitting there trying to learn it. So now when I approach work I find myself struggling to grasp the concept or whatever I push my brain into different mode, usually I just push on, I try things, test things, read things if it comes to that until the concept become more clear.
I tell you, I'm getting twice the amount done as before.

Monday 17 December 2012

Open-Source.

I've decided that I'm going to embark on some sort of open-source project. This is a world that I have great respect for as a lot of really cool things have resulted from it.

The only problem is that I don't have a clue what I would want to do for it. I thought about trying to create a game engine of some sort, but I think that's a little ambitious. And there's already a lot of really great open source engines out there that I'd really only be copying.

So while I think about, I put it to the world. Or those that read this blog anyway. What sort of open-source project should I go for.

Thursday 13 December 2012

Onward

I'm officially a degree student now.

I've completed my first semester and I must say, it's good being on the degree course, even if it is all the hard classes. Let me explain.

Now that I've completed my HND, awarded with distinction I might add, I'm topping it up to a full blown bachelor's, but in my HND I already took many of the modules, certainly many of the easier ones. So now on the top-up I'm enrolled in all the more difficult modules of the award, and all at the same time. As one lecturer somewhat apologetically put it, "The games top-up students either thrive or die within the first semester."

So here I am, thriving I think. I'm one of only about 4 surviving games HND students and I'm just doing my best to keep up. I must be doing something right because so far it looks like I'm not going to have much, if any, work to do over the Christmas holiday. Just review for the exams.

Sunday 15 July 2012

Cleverlist


Presenting my latest creation, Cleverlist. 

This is a shopping list app that I wrote for my wife. She designed the interface and everything else and I developed it. This app learns your shopping habits and tries to predict what item in the store you're going to arrive at next. The more you use this app, the more accurate it becomes. 

Wednesday 9 May 2012

End of Year 2 and HND

09-05-2012

I completed an exam today that marked the last of all the work for year two of my HND. All being well I'll have a diploma in a couple months and I'll be more than half way to my degree.

I didn't do particularly well this term. By that I mean that I'm pretty confident that I passed but I don't like having less than distinctions and I'm not sure that I got many, if any, this term. I put it down to poor prioritising. I got so stressed and wrapped up in my project that I let it consume all my energy, thus everything else suffered.

Still, I did very well first term, and I had couple of curve balls thrown at me in the second so I'm still pretty pleased with my over all performance.

Things I learned.

Each subject gets equal time until they're completed.

Learn the academic report structure and get used to using it. Introduction, Implementation, Critical Evaluation each having a conclusion. Most of my assignments had some sort of writing element to them and nearly all of them followed that format. Get used to it, learn to like it, because it's everything.

I've definitely picked the right award. I had a class this year that I hated with my very soul and I found it impossible to put any effort into my work. I suspected this was going to be a problem when I decided to go to University and chose my course accordingly, and it looks like I was right.

Consider applying the chosen methodology of your FYP to all of your work. I found this to be a great way to keep everything moving.

Study groups are very helpful, even if you listen more than your contribute, just getting together and reviewing out loud is very useful.

Always read your assignments over and over. I wasted a lot of time on inconsequential or otherwise incorrect aspects of the assignments because I hadn't read the assignment document correctly... or at all.

Conclusion.

So, pending my results I now move on to top-up, which means I become a real boy and move in with all the degree students. Four terms down, three to go.

Monday 26 March 2012

Sprint 4 Demo and Reflection

Sprint 4 Demo and Reflection

Implementation of the wind grid went much smoother than I expected, the grid is simply an array of points and a wind force value, each frame the position of the ship is tracked through those points and the corresponding wind value is applied in a specified direction. Currently the wind force is set to a value that increases as the ship gets further away it's an excellent proof of concept. With a little more work the colour values from a perlin noise image would replace the wind force values and create a much more realistic and dynamic game experience. Currently the array is 2D but would easily update to 3D.

Implementing the 3D perspective is still proving to be a challenge.  I'm going to do another sprint dedicated to it's implementation.




What I would do differently?
Nothing. I'm happy with the use and result of this sprint.

What did I learn?
I'm putting the success of this sprint down to the design. The trouble I had implementing the gravity was likely the result of a lack of good design. With the wind implantation I had a good clear design.

Sunday 18 March 2012

Sprint 4 Planning

It's time to start with the wind model.
This is actually the initial idea behind the project and it was looking like I wasn't going to be able to manage any aspect of it, which would have been a shame.

So I'm starting small. I'm going to get the grid working. This will be a simple grid in which the ships position will be tracked. Each element of the grid will have effects of the wind assigned to it.

It all seems very straight forward so hopefully it will be.

While I'm at it I'm going to try to complete the 3D implementation.

Sprint 3 Demo and Reflection

The investigation has gone better than I hoped. With only a little work I was able to implement a 3d perspective, 3 dimensional gravity and collisions.

I did come across a couple of problems that I'm going to seek advice on.
The Z frame buffer seems to be working in reverse. I've got some experience with depth checkers and I'm sure I've just got something backwards but I can't find it.

I can't figure out how to implement the chase camera. As soon as I have this I can look at implementing a better control system. I'm going to speak with my supervisor about it on Tuesday and go from there.


What I would do differently?
Nothing. I'm happy with the use and result of this sprint.

What did I learn?
A sprint aimed at research and planned experiments can be every but as productive as a sprint dedicated to implantation.

Monday 12 March 2012

Sprint 3 Planning

Now that I'm getting a grip on this project I'm going to look at expanding into the 3rd dimension.
I'd initially abandoned the idea of doing this project in 3d due to the problems I was having using the framework. Now I'm thinking that I should give it a go.

So sprint 3 is going to be exploratory. I'm going to take a slightly XP approach and write a bunch of experimental throw-away code and see if I can't get a hold on the Z axis. I'll implement what I can and identify the things that are going to cause me trouble. Then speak to my supervisor about it all.

Thursday 8 March 2012

Sprint 2 Demo and Reflection

I'm very proud of myself right now.

This sprint started off well but got very rocky pretty quickly.
I set off to correct by collision handling so the rocks weren't just reversing direction when they collided.
Turns out that the gravity wasn't working anywhere nearly as well as I'd hoped. Some problem with my implementation made managing collisions impossible.
So once again I found myself working on the gravity forces instead of moving on with the project.

Anyway, I've revamped my gravitations, it now less resembles real gravitational forces and more resembles a very simple pursuit model. Basically all of the objects encourage the other objects to chase them at speeds calculated by their mass.
Once that was completed the collision work went relatively smoothly. I say relatively because at the level where the collision responses are being handled I only had access to one of the objects velocity, which made working out the forces pretty challenging. But what I did have was both their masses and positions. So my algorithm assumes that all colliders are moving at least a little bit, it then works out the trajectories of the collision from both object positions and combines, multiplies that by the collidee's mass and applies the result to the collider's speed with a 40% reduction to make it feel a little more real, and controlled.


It's still not perfect but it's much better than it was, I'm hoping that as I get more practice with my vector math I'll be able to more finely tune it.

What I would do differently?

Don't worry so much about getting stuck. Even if you find yourself redoing work, of course it's not ideal, but it's still a step toward completion.

What did I learn?

Smaller bites certainly works. I pretty much chose a single thing and went for it. Now here I am having completed what I wanted to right on schedule.

Monday 5 March 2012

Sprint 2 Planning

05-03-2012

I’ve had to take a week break from project work to complete other assignments.
Planning for Sprint 2. The plan is:

Collision Detection. Get the collision forces and vectors calculated correctly.
Gravity: turn down the gravity to a slightly more realistic scale. The idea being that the gravitations might be less dramatic but more realistic and more importantly more manageable while ‘playing’ the game.

Triple all my time estimations.

While planning Sprint 2 I estimated that I’d need 13 hours to complete all the tasks I wanted to complete on this sprint. Looking at my current workload I couldn’t see how I could schedule in that many hours. So I had to push from of the tasks to a later sprint.

Friday 24 February 2012

Sprint 1 demo and draft reflection.

It turns out that multiplying my time estimations by three wasn't even close to enough. but I've finally managed to get a grip on the framework and have created my first demonstration. I present to you... GRAVITY. It's only a 3 second clip because things get pretty crazy pretty quickly.

It's really just a proof of concept because I've not implemented the collision forces correctly, by which I mean at all. The forces just reverse upon collision. That's going to be in another sprint. But gravity works.

For those that might be interested and my own personal remembrance. Each screen object's gravitational pull is calculated using Newton's equation. The distance is measured in 1000m and the objects masses are variants of 100,000 metric tons. The ships mass is 355,000 which is the same as the USS Defiant.

What I would do differently next time?


Consider approaches more carefully.
To start with I approached the gravity all wrong. I initially set each object to gravitate toward everything around it based on it's own mass. I'm not sure why I went about it this way, I suppose I thought that it would just be easier... Anyway after 3 weeks of issues I approached things in a more accurate way and implemented the whole thing again from scratch in about 4 hours. How each object pulls every other object toward it based on universal gravitation.

Smaller bites.
This a fundamental principal of the Scrum approach. If things are taking too long, or are too hard, or if maybe you're just bored of it then the problem is too big. I spent a lot of time trying to understand very complex implementations of iOS and the game framework instead of just focusing on the little things that needed to be done. As soon as I broke the gravitation down to individual lines of code it came very easily.

What did I learn?
When it comes to gravity it's really all about the fine tuning. Pick a scale and stick too it, even if it's just to keep your head straight.

Saturday 21 January 2012

The Burnout

As a dyslexic I find that my biggest problem at University is burnout. I learned a long time ago that I have a limited mental capacity, I used to call it my mental threshold. People I worked with quickly learned how to identify when I'd reached this point and often would resort to intellectually picking on me when ever I was found in this state by forcing me to engage in a complication conversation.

Burning out for me is the end all. I can't concentrate or focus on anything.
I can't string sentences together. Sort of like a stutter but as well as pronunciation trouble I mix up my word order and often struggle to find the words at all.
I become very clumsy. I'm normally not a particularly clumsy person, I can't dance but that's not dependent on my mental state. After a burnout I find I bump into things and drop everything I pick up spill drinks, everything.
I can't read, words disappear on the page or just plain don't make any sense, it's very irritating.

I drive my wife crazy at home, it's like I'm in a vegetative state, only walking around. As a dyslexic my mind is disorganised at the best of times and adding mental strain to it is cataclysmic.

Burnouts have lasted as long as 6 weeks and can have a huge impact on motivation. I've completely abandoned projects in the past sheerly due to a lengthy burnout, most of which I've never been able to return to, despite my best efforts. When I started looking at University it was near the top of my list of things I'd need to learn to manage if I was going to get through it. I didn't want to let some extended burn out lead to my quitting the course.


I've experienced two major burnouts this year, both were very untimely. The first was just before an exam when I'd been cramming all morning. I answered some of the questions so fantastically poorly that one of my lecturers actually assumed that I'd had some sort of computer problem during the test... sadly I'm honest and owned up to my mistake.

The second was just recently on my FYP. I missed out a couple of key elements of my design and research document, such as the front cover, hopefully it's not going to cost me too many marks.


Prevention:
1. Time-management seems to be the key, not necessarily the allocation of time per task but the listing of the tasks itself it what helps. Somehow knowing what I've still to do delays the burnout.
2. I do my best to keep ahead of all my school work. As soon as I receive a body of work I start on it. Especially if I've still yet to learn anything about how to complete it (which is common in my Uni, they favour the 'here's what you're going to do. Now let's learn ya to do it' approach) If I already have a start on it in some aspect, even if it's just an idea, it's much easier to work on it later.

Handling:
Dealing with a burnout is tricky. I've found that there are two ways that work best.
1. A hobby. I bounce between music and writing. While music is immune, writing can be affected by a burnout, so I rely more on music but I value them both equally as therapies. After an hour or so writing or a jam session with the band I can actually feel my mind enter a state of repair. Usually by the next morning I'm back up to speed.
2. Sleep. It's sometimes really hard to leave something until tomorrow but I find it's usually the best thing to do. Unless the deadline is tomorrow morning, it can wait one night.

The trick is to keep your mind working, just not as hard and not of the same type of thing that caused the burnout in the first place. My school work is all technical thinking and information assimilation, both writing and music are creative outputs.

Friday 20 January 2012

The Danger Meter

Did you realise that you could be in danger right now, if there was only some way to find out. Well now there is. Announcing the release of my third app, the Danger Meter.

It uses real statistics as well as some things that I just made up to tell you just how much danger you're in. Think of the applications, first off your safety, if you know how much danger you're in then you can plan accordingly.

Or just when you need an excuse to leave. "Sorry gotta go, I'm in danger."

You can verify certain claims made by your psychic.

The possabilities are endless.

Dangermeter is free and can be found here http://itunes.apple.com/gb/app/dangermeter/id494654553?mt=8

Wednesday 18 January 2012

A new app.

There really will be an app for everything when I'm finished.

I'm feeling pretty proud of myself right now because I've just written an app from start to finish in about 2 hours. The only reason it took that long was because I was chasing a phantom bug in the programming, I never did find it, nor was I able to recreate the problem.

Anyway I wrote this little app that I've called FlipCards. My son is learning to read and from time to time he comes home from school with a set of new words to learn. He loves to play with my iPhone so while he watched the last half of The Lion King this evening I whipped up an app for him with all of his words so far.

It's not on the app store, for now I can't be bothered to get it approved, it can be found here instead. I might expand on it some time in the future and then get it approved... we'll see.

Sunday 15 January 2012

Project Sprint 1

I started my project on Friday. This is after a conversation with my second assessor who suggested that I get the difficult stuff out of the way before my classes become as difficult. It's a good this too because it too me forever to figure out what I was doing.

So I've re evaluating this sprint, everything is getting re-evaluated. I think I'm just going to multiply all my time estimates by three.

Saturday 14 January 2012

Changes

The original intention of this blog was to provide information on dyslexia in a very broad sense.

Due to lack of time and motivation this site went nowhere pretty quickly. So, I'm repurposing it to a somewhat more egocentric theme. It's now going to serve as the main outlet for my own personal experience in higher education. In the hope that this blog will serve as more inspirational rather than educational.

As part of my final year project I'm going to be posting elements of my progress and other things on the site.

Also my thoughts solutions and ideas will hopefully find there way here too.