Weekend: Dropfleet Commander
First game of new tabletop miniatures.
Week Seven: Docker, containerize all the things!
Superior to Puppet. Also get to use cloud :D
Watching films.
Also Coup
Weekend: Trip to Edinburgh
Train rides give time to do technical posts. Meetup with family see how they are doing. Get painting supplies. More films. No Dnd?
Week Eight: Interview preparation
further docker experimentation
some short tests
and interview NDA
Friday, 28 October 2016
Friday, 21 October 2016
Technical Blog Entry 3
This blogpost will go over some of the methods to generate textures procedurally, focusing on the uses of noise.
Pseudorandom Number Generation
Pseudorandom Number Generation
Generator Seed:Can be nice to be able to affect this pseudorandom generator so that you can recreate the same results repeatedly. Used in any random map generator with a seed. see example pseudorandom output of balls to the left.
Complete randomness, white noise. Suitable for some purposes but is paradoxically distinctive. Humans good at seeing no pattern.
<pictures of main noise types>
Look into noise which has local patterns.
Perlin Noise
Perlin Noise
Generator Seed:type:
Noise in Multiple Dimensions/Time
Time Varying Noise
burning animation only needs to vary values globally.
<web app here>
electrical effect would be nice...
Friday, 14 October 2016
Personal Blog Entry 3
Weekend: Branching out into Board Games
Weekend was a great chance to relax after completing two weeks of Enterprise Architecture, fingers crossed that I would be going on to do my specialisation of choice. From what I understood about the market I would be taking the most difficult yet highly demanded specialisation so the odds looked good!
Last week had been a busy one and everyone was in need of some rest. So instead of a full DnD
session we simply got together to play some board-games. My family had brought some good ones from home so had a chance to show them off. Smallworld which is a fantasy version of Risk with several decades of game design improvements applied to it. I do enjoy the implausible skill/race combinations each match gives you. Aquatic Human Farmers vs. Dragon Taming Halflings? Sure why not! Other game was Wizwar, a magical gladiatorial combat game with hundreds of weird and wonderful spell card. Lovely art as well with miniatures for each player or monster model.
Had a lot of fun play-testing a friends homemade card game. He'd made printed cards
for all four factions and we unwisely decided to play a four player free-for-all. Suffice to say it got a bit silly as we successively ganged up on the strongest players until we were left with only a few, useless units left. There were some lovely imbalances too due to the game being designed for two player duels. Neat game concept that could really do with some card art.
Week Five: I've got no Strings on me
The whole trainee group nervously congregated into the office break room, none of us knowing what or where we would be working. We were directed to go into a classroom and then were called out one by one to go to diffierent classrooms to do who knows what. QA sure like to leave their trainees in suspense! Eventually I was directed to another room along with about half the group. Seemed like everyone in the room was interested in either cloud or DevOps and lo and behold that's exactly what we would be doing, wonderful! :)
As Cloud differs from DevOps only in the emphasis on using hosted servers we will all be doing the same kind of tasks to begin with. The first of which was to be looking into using the Puppet provisioning tool; A piece of software which assists in automating the setup of multiple computers in terms of their configuration and installed software. Naturally we would be using virtual machines instead of literally having multiple computers connected together. As far as the VM's are concerned they were fully fledged computer systems but their virtual nature meant we could boot them up and down as needed :3
So the start of our education on puppet was to boot up a virtual machine image which had a pre-installed guide on how to start using Puppet. Amusingly the guide refers to each step as a quest and even has a quest tracker. Each of us was set the objective to complete the series of quests to 'level up' to become a true puppet master XD Suffice to say this tracking feature turned it into a race of sorts and I was determined to be the best. Having finished the main questline I and the other fastest students were tasked with doing more complex tasks without instructions. This is where some of the challenges of using Puppet reared their head. Cryptic error messages abounded.
Regardless I did manage to get the extra tasks complete, even if I did have to fall back to using shell scripts instead of properly using Puppet functions. On Wednesday our tutor felt everyone had had enough time to get acquainted with Puppet so we began a group project. Unsurprisingly the students who had completed the previous tasks the fastest were assigned as group leaders (incl. me) woo...
The group project was a reasonably complex one, to setup multiple Puppet agents with many software modules on each. The group was large enough that each person could work on an agent and module each. I got to work setting up the Puppet Master which would tell each agent what modules to install. We would also be using Git as version control (good) and Jira for project tracking (less good)
To begin with there was a lot of work to be done to get everyone up to speed on how all these pieces of software functioned. Because we had been progressing through the Puppet quests at our own speeds some people hadn't really understood what the tasks were meant to teach. Perhaps lectures would have been better. We all had to get used to using Git from the command line rather than the nicer desktop or web based clients of Github.
First few days of the project were exhausting, I had to lead the group as well as fix problems people were having as I had more experience. Quite a stressful experience as we encountered all the annoying problems that occur with multiple people, computers and different versions of software collide. Towards the end of the week was feeling quite morose and like I had let my team down and that we were behind the other groups. Thankfully It wasn't quite so grim and other members of the group would become project leaders as the project progressed. Was very glad when Friday arrived.
Social Times and Weekend:
The week wasn't all work and there were plenty of opportunities for a bit of fun. We played DnD on Tuesday evening and our characters were predictably on terrible form. I think more of us got knocked out by falling down a pit than by the actual enemies! It's impressive in a twisted way how long it has taken for us to blunder through a dungeon which was mostly likely expected to take a single session to complete :P
Amusing anecdote from social drinks on Friday, somebody had challenged Gareth, the head of teaching to a game of pool. Nothing surprising as he often plays, the unsual thing was they both agreed to a bet where the loser would give the victor their shoes! It was a close match which it looked like he would lose but a last minute comeback saw him walk away with a trainee's pair of shoes. QA Consulting sure are something :P
A nice delivery during the week was a parcel sent from home. I had backed a Kickstarter for a tabletop miniatures game last year and had been waiting all summer for it to be delivered after multiple delays. Figured that it would only arrived once I had left. Amusing to have to explain that a package delivered to the office was full of plastic spaceships.
It was a treat to get back to the flat and unbox it. There were heaps of extra editions due to how successful the kickstarter was. Even though I had only backed to receive one starter fleet everyone who backed it had been given a selection of free ships from each of the four factions. Because of this, instead of getting 7 ships in total I actually got 27! package had some badges and a t-shirt too.
The absolute best part of it had to be the rulebook, a lovely 200 page, landscaped book in full colour. The page layout immediately made me nostalgic for Battlefleet Gothic, an out of print tabletop game from my childhood. The comparison is apt seeing as the same names behind that game worked on this one too. It was a delight to explore this book and the rules within.
Unfortunately one thing I did not manage to do during the week or at the weekend was work on a technical blog post. The weekdays had just been too stressful and I was feeling very drained. A pity as I genuinely enjoy writing technically minded pieces. It was probably unwise to attempt to write a blog post accompanied with multiple interactive web apps. I have made progress on many of the things I had hoped to include, the question now is whether I go back and fill in that week's post or leave it for the next.
Week Six: DevOps sure is... Something
The second week of the DevOps project wasn't nearly as stressful as the first. I felt I was adjusting to the workflow requirements dictated by waiting for virtual machines to load up and scripts to run. A pity the internet was slow in the office, it gave a very different view of how provisioning systems. We had to work around not being able to upload and download as we pleased. Everyone was getting the hang of how to use the systems and I did not have the burden of managing the group weighing me down.
As the class got onto the more advanced tasks there was more of a spirit of cooperation. When nobody could get something to run for hours any help was appreciated whether from ones own group or without. As a class we actually made quick progress and were done with the tasks faster than our tutor expected. Due to this we arranged to give presentations on our implementations at the end of the week instead of the next.
As the group work was wrapped up, leaving only tweaks left to do to the system I had some time to spend on other pieces of work. I managed to return to the aforementioned technical blog topic and make some neat web apps for it. I'm more hopeful of being able to back fill it in now. Will have to wait and see how much time I can spare in the coming week though.
There was also time after work to fit another evening DnD session. I bet the DM regrets giving us magic-powered firearms. We blew up a bus! :D
The presentations passed without event on Friday, it was a shame they were done so late in the day as I would have liked to spend more time asking the other groups about their implementations.They had used the end of the week to do some interesting additional functionality. I'm not too sure of using the Puppet software now, this project has reinforced how powerful the basic Linux utility tools are. You can do anything so long as you know the correct incantation (command).
Weekend was a great chance to relax after completing two weeks of Enterprise Architecture, fingers crossed that I would be going on to do my specialisation of choice. From what I understood about the market I would be taking the most difficult yet highly demanded specialisation so the odds looked good!
Archmage confused by presence of two tiny wizards in his cereal bowl. |
Last week had been a busy one and everyone was in need of some rest. So instead of a full DnD
session we simply got together to play some board-games. My family had brought some good ones from home so had a chance to show them off. Smallworld which is a fantasy version of Risk with several decades of game design improvements applied to it. I do enjoy the implausible skill/race combinations each match gives you. Aquatic Human Farmers vs. Dragon Taming Halflings? Sure why not! Other game was Wizwar, a magical gladiatorial combat game with hundreds of weird and wonderful spell card. Lovely art as well with miniatures for each player or monster model.
Had a lot of fun play-testing a friends homemade card game. He'd made printed cards
for all four factions and we unwisely decided to play a four player free-for-all. Suffice to say it got a bit silly as we successively ganged up on the strongest players until we were left with only a few, useless units left. There were some lovely imbalances too due to the game being designed for two player duels. Neat game concept that could really do with some card art.
Week Five: I've got no Strings on me
The whole trainee group nervously congregated into the office break room, none of us knowing what or where we would be working. We were directed to go into a classroom and then were called out one by one to go to diffierent classrooms to do who knows what. QA sure like to leave their trainees in suspense! Eventually I was directed to another room along with about half the group. Seemed like everyone in the room was interested in either cloud or DevOps and lo and behold that's exactly what we would be doing, wonderful! :)
As Cloud differs from DevOps only in the emphasis on using hosted servers we will all be doing the same kind of tasks to begin with. The first of which was to be looking into using the Puppet provisioning tool; A piece of software which assists in automating the setup of multiple computers in terms of their configuration and installed software. Naturally we would be using virtual machines instead of literally having multiple computers connected together. As far as the VM's are concerned they were fully fledged computer systems but their virtual nature meant we could boot them up and down as needed :3
Unrealistic depiction of Puppet use, the error message isn't in red! |
Regardless I did manage to get the extra tasks complete, even if I did have to fall back to using shell scripts instead of properly using Puppet functions. On Wednesday our tutor felt everyone had had enough time to get acquainted with Puppet so we began a group project. Unsurprisingly the students who had completed the previous tasks the fastest were assigned as group leaders (incl. me) woo...
The group project was a reasonably complex one, to setup multiple Puppet agents with many software modules on each. The group was large enough that each person could work on an agent and module each. I got to work setting up the Puppet Master which would tell each agent what modules to install. We would also be using Git as version control (good) and Jira for project tracking (less good)
To begin with there was a lot of work to be done to get everyone up to speed on how all these pieces of software functioned. Because we had been progressing through the Puppet quests at our own speeds some people hadn't really understood what the tasks were meant to teach. Perhaps lectures would have been better. We all had to get used to using Git from the command line rather than the nicer desktop or web based clients of Github.
First few days of the project were exhausting, I had to lead the group as well as fix problems people were having as I had more experience. Quite a stressful experience as we encountered all the annoying problems that occur with multiple people, computers and different versions of software collide. Towards the end of the week was feeling quite morose and like I had let my team down and that we were behind the other groups. Thankfully It wasn't quite so grim and other members of the group would become project leaders as the project progressed. Was very glad when Friday arrived.
Social Times and Weekend:
The week wasn't all work and there were plenty of opportunities for a bit of fun. We played DnD on Tuesday evening and our characters were predictably on terrible form. I think more of us got knocked out by falling down a pit than by the actual enemies! It's impressive in a twisted way how long it has taken for us to blunder through a dungeon which was mostly likely expected to take a single session to complete :P
Amusing anecdote from social drinks on Friday, somebody had challenged Gareth, the head of teaching to a game of pool. Nothing surprising as he often plays, the unsual thing was they both agreed to a bet where the loser would give the victor their shoes! It was a close match which it looked like he would lose but a last minute comeback saw him walk away with a trainee's pair of shoes. QA Consulting sure are something :P
Loot! |
A nice delivery during the week was a parcel sent from home. I had backed a Kickstarter for a tabletop miniatures game last year and had been waiting all summer for it to be delivered after multiple delays. Figured that it would only arrived once I had left. Amusing to have to explain that a package delivered to the office was full of plastic spaceships.
It was a treat to get back to the flat and unbox it. There were heaps of extra editions due to how successful the kickstarter was. Even though I had only backed to receive one starter fleet everyone who backed it had been given a selection of free ships from each of the four factions. Because of this, instead of getting 7 ships in total I actually got 27! package had some badges and a t-shirt too.
The absolute best part of it had to be the rulebook, a lovely 200 page, landscaped book in full colour. The page layout immediately made me nostalgic for Battlefleet Gothic, an out of print tabletop game from my childhood. The comparison is apt seeing as the same names behind that game worked on this one too. It was a delight to explore this book and the rules within.
Unfortunately one thing I did not manage to do during the week or at the weekend was work on a technical blog post. The weekdays had just been too stressful and I was feeling very drained. A pity as I genuinely enjoy writing technically minded pieces. It was probably unwise to attempt to write a blog post accompanied with multiple interactive web apps. I have made progress on many of the things I had hoped to include, the question now is whether I go back and fill in that week's post or leave it for the next.
Week Six: DevOps sure is... Something
The second week of the DevOps project wasn't nearly as stressful as the first. I felt I was adjusting to the workflow requirements dictated by waiting for virtual machines to load up and scripts to run. A pity the internet was slow in the office, it gave a very different view of how provisioning systems. We had to work around not being able to upload and download as we pleased. Everyone was getting the hang of how to use the systems and I did not have the burden of managing the group weighing me down.
Glorious Ali the Great! |
As the group work was wrapped up, leaving only tweaks left to do to the system I had some time to spend on other pieces of work. I managed to return to the aforementioned technical blog topic and make some neat web apps for it. I'm more hopeful of being able to back fill it in now. Will have to wait and see how much time I can spare in the coming week though.
There was also time after work to fit another evening DnD session. I bet the DM regrets giving us magic-powered firearms. We blew up a bus! :D
The presentations passed without event on Friday, it was a shame they were done so late in the day as I would have liked to spend more time asking the other groups about their implementations.They had used the end of the week to do some interesting additional functionality. I'm not too sure of using the Puppet software now, this project has reinforced how powerful the basic Linux utility tools are. You can do anything so long as you know the correct incantation (command).
Friday, 7 October 2016
Technical Blog Entry 2
An arbitrary sided shape, a polygon is defined by positional values of it's vertices. Being numeric in nature it is easy to create some sort of rule which produces a list of vertex positions when iterated upon. As can be seen in the header banner above it's simple to randomly assign vertex number, position, even colour (24-bit red, green, blue colour space is ideal for this). One of the most powerful ways of procedurally generating shapes is to create rules which can be applied an arbitrary number of times.
Rule based generations
Rule Based Shape Generation
type:corners:
depth:
This creates some lovely patterns with edges detailed down to the pixel level. Depending on which rule is used snowflakes can be made or the edge tends towards a square, circle, diamond etc. Such shapes with 'infinitely detailed edges are known as fractals and have fascinating mathematical properties <links!> Mention fractional dimension, infinite edge length, zero volume and so on
<piccies>
Fractals: Infinitely Detailed
Mandelbrot Render
<show equation>
Like all fractals it is infinitely detailed and the same overall pattern is repeated at different levels of zoom.
The only limit to the render to the right is the floating point accuracy of the web apps calculation (estimate?)
L-System: Forestry
L-Tree System
L-Trees systems <link> are an abstract grammar where a sequence of symbols can be replaced by others. By using such symbols to represent branches and leaves they can be used to create their namesake. Wonderfully simple algorithm which draws line segments iterativly (mention turtle drawing tools). Like a fractal render a depth value can be set with the limit replaced with secondary structures (leaves and flowers?) Option of pure, symmetric structures or introducing a little bit of randomness.
Friday, 30 September 2016
Personal Blog Entry 2
Picking up where my last personal blog left off, finished the introductory week of DevOps on Friday with a very early finish at 1pm. This was so that the trainers could get away for a conference over the weekend. It was a Consultancy convention in Barcelona. Jealous that I'll have to wait a whole year for one I can go on. They even got to do a Hackathon! :o
Weekend: It's all fun and games till your healer sets you on fire
Finally got around to seeing Kubo at the cinema. Damn good film that met and exceeded my expectations. Always enjoy Studio Ghibli-esque animations. Original story too.
Speaking of bards, the DnD group had our first proper adventuring session. It was heaps of fun and I enjoyed playing a bumbling elf hacker named Dawn-Willow-Eustace-Eragon-Brook-Iris-Earthmore (or Dweebie for short :P ) Having L337 HAXX0R skillz in a fantasy setting is rather over-powered. Not that it is much of an advantage when your character is so incompetent they manage to get knocked out by the party's healer :D
To the Right is a (googled) artists conception of Dawn-Willow-etc's Hacking deck. I imagine it looks as old as this but grimier.
Week Three: Off to the theatre for Enterprise Architecture
Week was first week of studying Enterprise Architecture, a topic much more relevant to going into a company as a consultant. Finding out how a business works (and politely telling them all the things wrong with it) We were working in the Lowry Theatre which is a rather nice place. Had lots of business terminology to learn and created dozens of diagrams. mapping the messy, complicated, ad-hoc rules of human organisations onto the much nicer structure of a computer program. Quite a tricky task involving mock interviews and avoiding all those pesky assumptions about business practises...
Big thing of the week was interviews with tutors pretending to be part of the business we were pretending to be consultants for. It was rather weird but I think our group did well, managing to deal with some of the more, 'eccentric', performances our tutors put on during interview.
My fondest memories of working in the Lowry will be those tea breaks, so many nice varieties and oh my, the biscuits, so good!
One last surprise at the end of the week was that last thing on Friday we were asked what specialisations we wanted to go into. Gareth wrote up the available specialisations on the board and, once he had explained what the hell a Mulesoft was, we made our choice by going to a corner of the room. Bit of a moot point for me as I had had my heart set on DevOps since first hearing about QA Consulting. Cloud development might have been interesting, a lighter, more fluffy and nebulous version of DevOps. Other option was Pega which I believe has strong ties into Enterprise Architecture.
Social time and drink(s)
There were lots of social events (read: drinks) on this week with Dan, a fellow trainee (and our DM), having birthday drinks on Tuesday.
Then on Thursday we had another DnD session: we had planned to complete the first dungeon but events and inanimate objects conspired against us. Who knew arguments about tables and rope could get so heated?. :o Friday was the usual social evening with free drinks. Good fun, even if I ended up round at Dan's once more with most of the DnD group.
Because the week had been rather busy with work and socialising it was tough to get the technical blog completely finished on time. I got it submitted on Friday with most of the content there but it took a little bit more work to get all the web applets set up completely. Don't worry it's all finished now! Pretty pleased with the Bi-gram generation. Strong temptation to keep tinkering with it but next weeks technical blog will be on another topic :)
Weekend: Trip into town and museum-going
At the weekend had family come to visit so was busy doing things with them. Got lots of new useful things for the flat, went out for dinner and a chat with some family friends. Sunday was out at the Museum of Science and Industry. Brilliant place :D
There was a whole exhibit on Graphene which had information on some novel new uses being researched. Another cool exhibit was a replica of the very first stored program computer; the Manchester Small-Scale Experimental machine, affectionately known as the Baby. On the 50th anniversary of it's construction some computer enthusiasts created a working replica of the machine which is now on display at the Museum.
It was a wonderful piece of kit with nothing but valves as logic components. The memory which could store a program? It is a Cathode Ray tube with a wire mesh across it! :D The code was easy to visualise as it was literally stored upon the screen display as an array of dots. The memory was only 1000 bits with values in 5 bit words. I got heaps of information from the exhibitor, including details of an online emulator. He was so impressed with my questions and interest that he suggested I volunteer to help out at the museum. I have to say I wouldn't mind doing that!
Week Four: Enterprise Architecture, the second half
Weekend ended up rather busy so I started the second week far too tired. We seem to have gotten through the most interesting parts of Enterprise Architecture and have just been working towards the final presentation and test. Few more lectures here and there which gives a little bit of a break from preparations. Alas this part of consultancy isn't something we can automate away :/
On Thursday there were some Welcome drinks to chat with other members of QA. Of course it was at the Dockyard, best bar in the Quays :D Nice of them to have a company tab on the bar but with exam and presentation looming nobody was really in the mood to drink to excess (perhaps according to the trainer's plan, sneaky!)
Finally Friday came around and we had a chance to prove ourselves. The exam was pretty solid, good thing I had revised well for it. The most stressful part actually was some eleventh hour tech troubles, obviously a practical example for why good Ops management and planning is essential!
Before the presentation the office had all the atmosphere of a funeral, I think the week-long wait had been getting to all our nerves. The questioning after the presentations was brutally direct, just like real management. I feel my group handled it with aplomb though, we had some rather novel, well-thought out solutions. The mood lifted as each presentation was done though and I got to indulge in my annoying habit of asking questions at the end too :3
We were all in need of a drink (or several) after three hours of presentations. I was nodding off to sleep whilst still in the office, slept well that night. It's good to have a proper work-week routine, makes the weekends all the more sweeter.
Wrapping up
Enterprise Architecture was interesting but I would really want to be given more training and the chance to work with an experienced team before undertaking it in the real world. Telling people that the way they do their jobs is wrong and what *you* think is best is not my strong point. Then again in the real world people are a little more complex than characters in a course exercise.
Anyway what I am really looking forward to is the specialisation training starting next week, this is where the properly challenging training should begin. Can't wait to be learning how to be a DevOps Puppet Master!
Oh and my flat is looking a little nicer now that I've unpacked all my goodies :)
Weekend: It's all fun and games till your healer sets you on fire
A portable Flux Capacitor! Isn't Magiotech just amazing? |
Finally got around to seeing Kubo at the cinema. Damn good film that met and exceeded my expectations. Always enjoy Studio Ghibli-esque animations. Original story too.
Speaking of bards, the DnD group had our first proper adventuring session. It was heaps of fun and I enjoyed playing a bumbling elf hacker named Dawn-Willow-Eustace-Eragon-Brook-Iris-Earthmore (or Dweebie for short :P ) Having L337 HAXX0R skillz in a fantasy setting is rather over-powered. Not that it is much of an advantage when your character is so incompetent they manage to get knocked out by the party's healer :D
To the Right is a (googled) artists conception of Dawn-Willow-etc's Hacking deck. I imagine it looks as old as this but grimier.
Why yes, our theatre DOES look like it's wearing a hat |
Week was first week of studying Enterprise Architecture, a topic much more relevant to going into a company as a consultant. Finding out how a business works (and politely telling them all the things wrong with it) We were working in the Lowry Theatre which is a rather nice place. Had lots of business terminology to learn and created dozens of diagrams. mapping the messy, complicated, ad-hoc rules of human organisations onto the much nicer structure of a computer program. Quite a tricky task involving mock interviews and avoiding all those pesky assumptions about business practises...
Big thing of the week was interviews with tutors pretending to be part of the business we were pretending to be consultants for. It was rather weird but I think our group did well, managing to deal with some of the more, 'eccentric', performances our tutors put on during interview.
My fondest memories of working in the Lowry will be those tea breaks, so many nice varieties and oh my, the biscuits, so good!
One last surprise at the end of the week was that last thing on Friday we were asked what specialisations we wanted to go into. Gareth wrote up the available specialisations on the board and, once he had explained what the hell a Mulesoft was, we made our choice by going to a corner of the room. Bit of a moot point for me as I had had my heart set on DevOps since first hearing about QA Consulting. Cloud development might have been interesting, a lighter, more fluffy and nebulous version of DevOps. Other option was Pega which I believe has strong ties into Enterprise Architecture.
Social time and drink(s)
Two mortal enemies fused into an unholy whole... |
Then on Thursday we had another DnD session: we had planned to complete the first dungeon but events and inanimate objects conspired against us. Who knew arguments about tables and rope could get so heated?. :o Friday was the usual social evening with free drinks. Good fun, even if I ended up round at Dan's once more with most of the DnD group.
Because the week had been rather busy with work and socialising it was tough to get the technical blog completely finished on time. I got it submitted on Friday with most of the content there but it took a little bit more work to get all the web applets set up completely. Don't worry it's all finished now! Pretty pleased with the Bi-gram generation. Strong temptation to keep tinkering with it but next weeks technical blog will be on another topic :)
Weekend: Trip into town and museum-going
At the weekend had family come to visit so was busy doing things with them. Got lots of new useful things for the flat, went out for dinner and a chat with some family friends. Sunday was out at the Museum of Science and Industry. Brilliant place :D
Check out the rack on that Baby! |
There was a whole exhibit on Graphene which had information on some novel new uses being researched. Another cool exhibit was a replica of the very first stored program computer; the Manchester Small-Scale Experimental machine, affectionately known as the Baby. On the 50th anniversary of it's construction some computer enthusiasts created a working replica of the machine which is now on display at the Museum.
It was a wonderful piece of kit with nothing but valves as logic components. The memory which could store a program? It is a Cathode Ray tube with a wire mesh across it! :D The code was easy to visualise as it was literally stored upon the screen display as an array of dots. The memory was only 1000 bits with values in 5 bit words. I got heaps of information from the exhibitor, including details of an online emulator. He was so impressed with my questions and interest that he suggested I volunteer to help out at the museum. I have to say I wouldn't mind doing that!
Week Four: Enterprise Architecture, the second half
Weekend ended up rather busy so I started the second week far too tired. We seem to have gotten through the most interesting parts of Enterprise Architecture and have just been working towards the final presentation and test. Few more lectures here and there which gives a little bit of a break from preparations. Alas this part of consultancy isn't something we can automate away :/
On Thursday there were some Welcome drinks to chat with other members of QA. Of course it was at the Dockyard, best bar in the Quays :D Nice of them to have a company tab on the bar but with exam and presentation looming nobody was really in the mood to drink to excess (perhaps according to the trainer's plan, sneaky!)
Finally Friday came around and we had a chance to prove ourselves. The exam was pretty solid, good thing I had revised well for it. The most stressful part actually was some eleventh hour tech troubles, obviously a practical example for why good Ops management and planning is essential!
Before the presentation the office had all the atmosphere of a funeral, I think the week-long wait had been getting to all our nerves. The questioning after the presentations was brutally direct, just like real management. I feel my group handled it with aplomb though, we had some rather novel, well-thought out solutions. The mood lifted as each presentation was done though and I got to indulge in my annoying habit of asking questions at the end too :3
We were all in need of a drink (or several) after three hours of presentations. I was nodding off to sleep whilst still in the office, slept well that night. It's good to have a proper work-week routine, makes the weekends all the more sweeter.
Wrapping up
Flat: now with 100% more spaceship |
Anyway what I am really looking forward to is the specialisation training starting next week, this is where the properly challenging training should begin. Can't wait to be learning how to be a DevOps Puppet Master!
Oh and my flat is looking a little nicer now that I've unpacked all my goodies :)
Friday, 23 September 2016
Technical Blog Entry 1
For these technical blog posts I shall be doing a review of methods for:
- Procedural Generation -
What is Procedural Generation?
Instead of explicitly recording information an algorithm or procedure is used to create it when required. Whilst the phrase is now most commonly seen in reference to content generation in computer games it has been used by people long before the development of computers to produce interesting results.
The most basic form of procedural generation is to use randomness to determine somethings state. Imagine shuffling a pack of cards to play hearts of solitaire. The order that they end up in has been "procedurally" created in the shuffling and with have a large impact upon the game and whether it will be possible to complete.
Complete randomness is very noisy and not very interesting. The human mind is a powerful pattern finder and can identify and ignore data with no pattern at all. To avoid this the output can be structured and made to follow rules of generation. The created patterns and shapes will be much more appealing to the eye. Some examples of procedural generation are to the right, map generation algorithms that create landmarks and geographic features.
John Carmack famously disparaged Procedural Generation as simply another form of compression algorithm. (link) In some sense he was correct, procedural generation is fantastic for creating textures for organic surfaces like wood, stone or the swirling flux of a fire.
A well known example of 3D models and textures was the demoscene project kkrieger. Imagine a whole Doom-like shooter in just X KB!
In this first blog post I will be starting with some basics of procedural generation in the realm of text generation. To that end I have created several web applets which you can play around with to get procedurally generated output :D
I do hope they work ok, so long as you are using a modern browser (i.e. NOT Internet Explorer) they should function. It stands to reason that they won't work without JavaScript enabled!
Why Randomness is not enough
Random Stream of Letters
Doesn't look great does it? It's only a slight improvement over opening up a binary file as text and getting a garbled mess. The main issue is that words don't have normal lengths (~5 letters). Here a "word" might span multiple lines!
Another aspect of this output that instantly marks it out as artificial is that the punctuation characters are incorrectly placed. In real text they should only appear a sentence endings every 5-10 words. To get more useful output you require the generation algorithm to observe some aspects of the structure of real sentences.
Simple Example: Weighted Text Generation
Sentence Generator
The web applet above does so with three different source texts, using words as the tokens it tracks. Ignore the punctuation marks as they don't really work (ideally punctuation would be tracked as tokens too)
A neat example of procedural text generation is if you successively click on predictive text options on a smart phone. You might learn a lot about your most frequently used words and sentences!
What my phone's predictive text produces. I, uh, talk about tech a lot... |
Like many algorithms the output of this bi-gram analysis depends on the "correctness" of the input data. If you put in nonsense sentences you'll get the same out. Another property to consider is how tightly fitted the model is to the input training data. It can often be advantageous to have an aspect of noise or randomness to the algorithm to avoid repeating the sequences in the input data *exactly*
Whilst bi-grams can produce impressive results in terms of looking real-ish sentences composed of them tend to be meaningless; all structure and no content. Whilst it is still an open problem of how many rules go into producing real human language texts there is always the option of throwing more computing power after deeper frequency analysis.
While bi-grams are concerned with the immediately subsequent token there is nothing stopping an enterprising computational linguist measuring tri-gram (next two token) frequency or any n-gram frequencies. There is fascinating work being done in terms of word vectors at the moment. See here for tutorial: (www.tensorflow.org)
New Word and Name Generation
New Word Generator
Finer grained procedural generation of novel words can be done similarly as the weighted sentence generation above. Instead of tracking frequency of word bi-grams you track pairs of letters. The final Web Applet gives and example for this along with consonant-vowel-consonant random generation for comparison. The source texts (also referred to as corpus) for this Applet are a bi-gram analysis from Google Book's English texts: (norvig.com/mayzner.html) and an equivalent for German texts from here: (www.staff.uni-mainz.de/pommeren/Cryptology/Classic/8_Transpos/BigramsD1.html)
A further step in creating new words would be to create the bi-gram frequencies procedurally. What would a language with 'z' as common as 'e' look like? Alternatively you could improve the 'englishness' of a text by looking at longer combinations of letters, triplets, quadruplets and so on (tri-grams, quad-grams or n-grams).
How many pieces has the Triforce been split into?? |
Summary
I've enjoyed creating this first blog on procedural generation, especially the interactive Web Applets. I hope my enthusiasm has been well received by you the reader. Thank you for having a read-through and perhaps you've learnt something too!
I could happily continue on procedural text generation for another three weeks, alas there are many more topics to discuss. Next fortnight's technical blog post will be on generation of shapes. I'm looking forward to it. Perhaps I'll do fractals, Menger Sponges or tree generation (what is an L-System exactly?) :D
Friday, 16 September 2016
Personal Blog Entry 1
This blog is a recording of my time on the QA Consulting IT training course at the QA Academy in Manchester. Training began on the 5th of September so at the time of writing I have had two weeks of instruction, they're been pretty fun!
QA Consulting has offices for training in the Salford Quays area, just a stones throw away from Media City where the BBC and ITV have studios. Suffice to say the location is very nice what with the tram stops right outside the offices and the area crisscrossed with canals and green spaces.
The training course is up to 12 weeks and will cover various parts of Software Development. After training I'll be assigned a 2 year consultancy role at one of QA's clients.
Week One: Of flats and Java
Main order of business on arriving in Manchester was to secure proper accommodation, getting a three month lease, right when University terms were starting was proving to be a difficult task. Thankfully I found a place by Tuesday and moved in on the spot. The flat is in Old Trafford to the South so I'll be getting a bit of exercise each morning on the way to the tram stop. Perfect Excuse to play Pokemon Go :)
It was a great, busy week. Settled into Manchester and training. Java is very fun to return to and re-explore. Flat shows promise and landlord is friendly chap and a software developer too. The Java tasks we've been given are good fun, the final one is to implement the board game Battleship!
Enjoyed getting an intro to design patterns, better way to structure code to be more readable and flexible. Had to give a surprise presentation on the Flyweight design pattern on Thursday but it went fine.
Friday there was a short test on Object Orientated Programming, no issues there. The test assignment was to make a Jukebox Application's Object hierarchy. If only we had access to online materials I could have used an ACTUAL Jukebox program I made previously! Started late in the week on the Battleship task, too much time spent messing around making a library for a default project GUI :P Still I was pleased with what I managed to create:
Weekend: DevOps and Dragons
On Friday the work day finished early for some office social time. Played an enjoyable game of Pirate dice and there was way too much free alcohol on offer.
It was very nice to get to lie in on Saturday, spent morning relaxing in bed. The DnD group actually got together for a session in the afternoon! I'll be playing as an incompetent magical hacker in future sessions. What wonderful typecasting.
Sunday I sorted out the bedding in my flat (finally) and chatted to parents a bit. Been getting through more of the Java textbook that I brought with me. Other than that the day has been a well earned rest.
Week Two: Where we're going we don't need GUIs!
First Monday of a full work week! Amusingly I forgot about the late start on Mondays so I was in at 9am (along with most of the DnD group :P) meant we got to go to Costa for proper coffee. The tutor Aaron is back and we're diving into DevOps (trans: setting up computer systems for serious bizness) It sure involves a lot linux scripting... Been learning some interesting things about Continuous Integration too, software development in the internet era is fascinating.
For our projects this week we've been using virtual machines and installing software by hand on the terminal in Linux. Surprisingly easy and a bit of silly fun. Using the CentOS Linux Distro which seems nice to use; same graphical user interface, Gnome, as Debian and has useful preset software for server use. Very nice to return to Linux, lots of comfy terminal tools:
Also been playing around with logging into each others VM's using ssh and running some cheeky scripts. Good practical lesson in the importance of setting up network firewall rules >:D
I could get used to this DevOps work, very satisfying to write a script to have a Provisioning tool such as Vagrant setup a server the way you want. Explored using Jenkins (yay) and Jira (boo) to set up a build server. I'll have to look into setting such a build server up for some of my existing Github projects.
In closing
This training has gotten off to a strong start, we'll be going onto Enterprise Architecture next few weeks, Might have less coding involved but it will be fun to be doing some group projects.
The Landlord is finally moving into his room in the flat, meaning that the internet should get sorted out soonish. I'm getting tied of having to piggyback off BT Openzone to get my daily internets.
Pic to the left is of QAbootie, caught him on a wander round the canals. The whole place is great for water Pokemon. I've found the tram is quite good for catching Pokes too, goes at a slow enough speed that the game doesn't twig that you're not walking :D
Anchorage building at Salford Quays, our offices are in the wing to the left |
QA Consulting has offices for training in the Salford Quays area, just a stones throw away from Media City where the BBC and ITV have studios. Suffice to say the location is very nice what with the tram stops right outside the offices and the area crisscrossed with canals and green spaces.
The training course is up to 12 weeks and will cover various parts of Software Development. After training I'll be assigned a 2 year consultancy role at one of QA's clients.
Week One: Of flats and Java
Home base |
Main order of business on arriving in Manchester was to secure proper accommodation, getting a three month lease, right when University terms were starting was proving to be a difficult task. Thankfully I found a place by Tuesday and moved in on the spot. The flat is in Old Trafford to the South so I'll be getting a bit of exercise each morning on the way to the tram stop. Perfect Excuse to play Pokemon Go :)
It was a great, busy week. Settled into Manchester and training. Java is very fun to return to and re-explore. Flat shows promise and landlord is friendly chap and a software developer too. The Java tasks we've been given are good fun, the final one is to implement the board game Battleship!
Enjoyed getting an intro to design patterns, better way to structure code to be more readable and flexible. Had to give a surprise presentation on the Flyweight design pattern on Thursday but it went fine.
Friday there was a short test on Object Orientated Programming, no issues there. The test assignment was to make a Jukebox Application's Object hierarchy. If only we had access to online materials I could have used an ACTUAL Jukebox program I made previously! Started late in the week on the Battleship task, too much time spent messing around making a library for a default project GUI :P Still I was pleased with what I managed to create:
Battleship! |
Weekend: DevOps and Dragons
On Friday the work day finished early for some office social time. Played an enjoyable game of Pirate dice and there was way too much free alcohol on offer.
It was very nice to get to lie in on Saturday, spent morning relaxing in bed. The DnD group actually got together for a session in the afternoon! I'll be playing as an incompetent magical hacker in future sessions. What wonderful typecasting.
Sunday I sorted out the bedding in my flat (finally) and chatted to parents a bit. Been getting through more of the Java textbook that I brought with me. Other than that the day has been a well earned rest.
Week Two: Where we're going we don't need GUIs!
First Monday of a full work week! Amusingly I forgot about the late start on Mondays so I was in at 9am (along with most of the DnD group :P) meant we got to go to Costa for proper coffee. The tutor Aaron is back and we're diving into DevOps (trans: setting up computer systems for serious bizness) It sure involves a lot linux scripting... Been learning some interesting things about Continuous Integration too, software development in the internet era is fascinating.
Best way to use a computer, honest! |
Also been playing around with logging into each others VM's using ssh and running some cheeky scripts. Good practical lesson in the importance of setting up network firewall rules >:D
I could get used to this DevOps work, very satisfying to write a script to have a Provisioning tool such as Vagrant setup a server the way you want. Explored using Jenkins (yay) and Jira (boo) to set up a build server. I'll have to look into setting such a build server up for some of my existing Github projects.
In closing
This training has gotten off to a strong start, we'll be going onto Enterprise Architecture next few weeks, Might have less coding involved but it will be fun to be doing some group projects.
The Landlord is finally moving into his room in the flat, meaning that the internet should get sorted out soonish. I'm getting tied of having to piggyback off BT Openzone to get my daily internets.
Pic to the left is of QAbootie, caught him on a wander round the canals. The whole place is great for water Pokemon. I've found the tram is quite good for catching Pokes too, goes at a slow enough speed that the game doesn't twig that you're not walking :D
Subscribe to:
Posts (Atom)