A post by C. S. Wyatt started me thinking about what games and sports I enjoy, and why.
I have always enjoyed word-based puzzles, particularly crosswords, and complete at least one cryptic crossword most days - my favorite is the Daily Telegraph which I usually finish in under 20 minutes. What attracts me is the challenge of interpreting the clue in the correct way to construct the answer - it's a combination of an extensive vocabulary, an awareness of multiple meanings of words and logical reasoning.
I occasionally solve Sudoku puzzles but find them much less satisfying because of the purely mechanical methods involved. I found it much more interesting to write a computer program to apply the methods and solve the puzzles that way.
Quizzes in various forms can be fun. I used to enjoy taking part in a local pub quiz but after a while got bored by the consistently variable level of difficulty of the questions - the first few would be insultingly easy, while the final ones would often be so obscure that they just resulted in a random choice of one of the multiple options provided. I enjoy playing Trivial Pursuit now and again but get frustrated by the element of luck introduced by rolling a die to determine where I can move my counter.
I have played card games in the past - blackjack, poker - in social settings for chips rather than "real" money in a casino. While I did very much enjoy studying and designing strategies to guide my play (I bought a copy of Hoyle as a reference), I found that the random turn of the cards and the unpredictability of other players meant I did not get nearly as much pleasure from actually playing the games.
I play pool (8-ball) on occasion - I used to captain a pub team - and ten-pin bowling, but the sport I play most has to be darts. In all of these sports, how well I do depends on my individual skill - there is no significant random element apart from the very small variation in ambient conditions - these being indoor sports - which affect all the players equally. I also enjoy the fact that, unlike in team sports such as rugby, I can play at whatever pace suits me.
In summary, I have a strong preference for games of skill rather than chance. I much prefer turn-based games. I enjoy puzzles and other activities that exercise my mind. I prefer games where it is only my individual performance that affects the outcome, although I have played pairs matches in both pool and darts. I believe that the individual turn-based nature of these is a much more significant factor than any interaction between myself and my partner in the pair - there is not the depth of strategy and real-time interaction involved unlike a regular team sport.
In fact, having considered the reasons why my preferences lie in a particular direction, I can see strong parallels between these leisure activities and my love of programming. There are the same elements of skill, knowledge, problem-solving and individual effort. Just as I am happiest and perform best when left to my own devices at work, so I prefer those leisure activities that involve solo endeavor.
Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts
Friday, 3 February 2012
The Joy of Darts
Tuesday, 3 January 2012
2011 Retrospective
Goodbye 2011, you were a year of new experiences, happiness and sadness.
Last year started cold. We were snowed in for a week - too icy to drive - and I had to walk to the local stores, hoping their deliveries had got through. Bread was in short supply. But it was so enjoyable walking through the snow, the absence of traffic on the roads, everybody on foot. Parents towing their children on sleds. A peaceful, happy time.
I started working part-time as a barman at the local pub, just to help out at first. I took to it like a duck to water and now, almost a whole year later, I'm still there. It's been a great help as it gave me a way to talk to people, initially within the boundaries of the job and then, as I got to know the regular customers better, beyond it. By now I think of the people there as a kind of extended family - I feel accepted and wonderfully comfortable among them.
My main job as a software developer continued to be a source of great pleasure - interesting, challenging projects and opportunities to learn new skills and technologies. I'm incredibly lucky to get paid for doing something I enjoy so much. I'm not financially motivated - the work is its own reward for me, but obviously I need to earn money to live.
I started this blog in July, initially just to write about my day-to-day experiences through the lens of Aspergers Syndrome but soon expanded to become a means to express my feelings, whether through my attempts at poetry or through prose. One unexpected result was that I've connected through blogging with other people on the autism spectrum which has helped me both to understand myself better and to feel less isolated by my differences - I now know I'm not the only one whose brain functions in this special way.
The past few months has seen times of great strain in the relationship between my wife and me. Various events, my Aspergers and her deteriorating health have combined at times to set us at loggerheads. When communication breaks down everything else starts to tumble after it in an avalanche of self-destructive behavior. But through our mutual love we have found the will and the strength to keep working on our marriage and, although I cannot say with all honesty that everything is fine right now, we are past the lowest point and building up again.
I saw the year out with a New Year's Eve shift in the pub - 6pm to 3:30am. It was physically tiring but emotionally exhilarating. I can recall noticing the clock around 8pm and the next time I looked it was well past 11! It truly felt as if only minutes had passed, yet it was more than three hours later. An enjoyable busy night.
Overall despite the lows it was a good year and seems to have passed so quickly. Hello 2012, I wonder what you'll bring. Interesting times, I'm sure.
Last year started cold. We were snowed in for a week - too icy to drive - and I had to walk to the local stores, hoping their deliveries had got through. Bread was in short supply. But it was so enjoyable walking through the snow, the absence of traffic on the roads, everybody on foot. Parents towing their children on sleds. A peaceful, happy time.
I started working part-time as a barman at the local pub, just to help out at first. I took to it like a duck to water and now, almost a whole year later, I'm still there. It's been a great help as it gave me a way to talk to people, initially within the boundaries of the job and then, as I got to know the regular customers better, beyond it. By now I think of the people there as a kind of extended family - I feel accepted and wonderfully comfortable among them.
My main job as a software developer continued to be a source of great pleasure - interesting, challenging projects and opportunities to learn new skills and technologies. I'm incredibly lucky to get paid for doing something I enjoy so much. I'm not financially motivated - the work is its own reward for me, but obviously I need to earn money to live.
I started this blog in July, initially just to write about my day-to-day experiences through the lens of Aspergers Syndrome but soon expanded to become a means to express my feelings, whether through my attempts at poetry or through prose. One unexpected result was that I've connected through blogging with other people on the autism spectrum which has helped me both to understand myself better and to feel less isolated by my differences - I now know I'm not the only one whose brain functions in this special way.
The past few months has seen times of great strain in the relationship between my wife and me. Various events, my Aspergers and her deteriorating health have combined at times to set us at loggerheads. When communication breaks down everything else starts to tumble after it in an avalanche of self-destructive behavior. But through our mutual love we have found the will and the strength to keep working on our marriage and, although I cannot say with all honesty that everything is fine right now, we are past the lowest point and building up again.
I saw the year out with a New Year's Eve shift in the pub - 6pm to 3:30am. It was physically tiring but emotionally exhilarating. I can recall noticing the clock around 8pm and the next time I looked it was well past 11! It truly felt as if only minutes had passed, yet it was more than three hours later. An enjoyable busy night.
Overall despite the lows it was a good year and seems to have passed so quickly. Hello 2012, I wonder what you'll bring. Interesting times, I'm sure.
Wednesday, 20 July 2011
How I Got Into Programming
My dad got us our first computer when I was 11; it was a BBC Model B+128 with a 40/80 track switchable double-sided 5.25" disk drive. And it came with a manual. Printed. On paper! Not just how to connect it up and switch it on but full details of all the OS commands and the built-in BBC BASIC programming language. So I started using it, learning to program in BASIC, slowly at first but with increasing speed and confidence. I subscribed to Acorn User magazine and slavishly typed in the program listings. I was hooked!
BBC BASIC was an great language in an great environment for learning to program. It introduced me to control structures: conditions and loops. It had named functions and procedures (rather than the usual GOSUB in most microcomputer BASICs). It had floating point as well as integers. It had strings and a set of built-in functions for manipulating them. It could access the machine's memory directly. It even had a built-in assembler. It gave me such a feeling of control over the hardware that I felt I could do anything with it.
When the 32-bit ARM2 Acorn Archimedes was released in 1987 I got one (one of the first batch of A305 machines with Arthur 0.2 OS), later upgraded to 1 MB RAM and Arthur 1.2; then RISC OS 2.0. I thought it was a marvellous machine, so fast and capable. I later upgraded to an ARM3-based A540 with 8 MB RAM and two SCSI hard disks for a total of about 160 MB storage. Huge for its time, especially for a home computer. I continued programming in BBC BASIC (version V included with the "Arc") which included additional control structures (WHILE...ENDWHILE, multi-line IF...THEN...ELSE...ENDIF, CASE...OF...WHEN...OTHERWISE...ENDCASE), RETURN parameters in procedures, libraries (via LIBRARY, INSTALL or OVERLAY) and had a built-in full-screen editor, the ARM BASIC Editor or ARMBE. I reckon I probably spent the majority of my time in front of the machine in that editor, developing programs.
A number of times I would spend upwards of 12 hours at a stretch at the keyboard and some of the programs ran into thousands of lines. I wrote interpreters for scripting languages, bitmapped font editors, a parser for chemical formulae, a graphical plot of magnetic fields in a plane intersected by wires carrying current, and many others. I even wrote a kind of hypertext application inspired by the depiction of the "Guide" in the TV adaptation of The Hitchhikers Guide to the Galaxy.
It was on this A540 that I first encountered C. I got a copy of Acorn C and a book to teach me the basics. Once I grasped the concept of main() being the entry point for the program I was well away. The nature of BBC BASIC meant I already understood structured programming: conditions, loops, functions, and was used to thinking in those terms. It wasn't long before I got hold of a copy of Software Tools in Pascal and coded the programs presented therein in C. I wrote a utility to implement IO pipelines on top of RISC OS's pipefs (OS-implemented named pipes) so I could reproduce unix-style filters without needing intermediate files. I got a copy of Expert C Programming: deep C secrets and found it very informative and practical: it taught me a lot and by this stage I was proficient enough to program C professionally. I got my first job programming C on 16-bit DOS and Windows 3.1 despite having limited experience of those platforms: I was given the job on the strength of my performance on a C programming test at the interview.
I had had some limited exposure to a fairly new language called C++ that introduced something called classes. I didn't really get a lot of exposure to it until the mid-90's and it took a little bit of perseverance to get used to object-orientation. There were no templates in those days, at least not in the version of Microsoft C++ used where I worked, and exceptions were avoided because of concerns about performance. I really got the hang of it after taking a course in OO design which gave me the mental toolkit for thinking about classes naturally. The language support from Microsoft's compilers improved over time and it was really with the move to 32-bit Windows and new development for that platform that C++ became my new programming language of choice. I got copies of and read Effective C++ and Exceptional C++ to learn about best practices.
It's now some 15 years down the line and I consider myself a skilled C++ developer. (More to the point, so does my employer.) Along the way I've had exposure to several other programming languages, some of which I use regularly such as Python, sh, javascript, perl and awk while others I've used as and when the job has demanded it such as Java, C#, SQL, Visual Basic and several application-specific embedded scripting languages. I've dabbled with other languages such as Haskell, Lisp, Ruby, Pascal, Fortran and even Cobol at times just out of interest but never becoming fluent enough to use them as a first choice day to day.
So what started out as "just" a hobby is still, over 25 years later, my main hobby. The only difference is that I get paid to do it. I still feel the same joy and excitement when I produce code that does something neat. I get exactly the same satisfaction from my latest code to, say, ingest video and audio from an XDCAM disk as I did from my first BASIC program that just printed "hello, world" to the screen. What will I be doing in 10 or 20 years' time? I don't know, but I'm pretty sure I'll still be programming and loving it.
BBC BASIC was an great language in an great environment for learning to program. It introduced me to control structures: conditions and loops. It had named functions and procedures (rather than the usual GOSUB in most microcomputer BASICs). It had floating point as well as integers. It had strings and a set of built-in functions for manipulating them. It could access the machine's memory directly. It even had a built-in assembler. It gave me such a feeling of control over the hardware that I felt I could do anything with it.
When the 32-bit ARM2 Acorn Archimedes was released in 1987 I got one (one of the first batch of A305 machines with Arthur 0.2 OS), later upgraded to 1 MB RAM and Arthur 1.2; then RISC OS 2.0. I thought it was a marvellous machine, so fast and capable. I later upgraded to an ARM3-based A540 with 8 MB RAM and two SCSI hard disks for a total of about 160 MB storage. Huge for its time, especially for a home computer. I continued programming in BBC BASIC (version V included with the "Arc") which included additional control structures (WHILE...ENDWHILE, multi-line IF...THEN...ELSE...ENDIF, CASE...OF...WHEN...OTHERWISE...ENDCASE), RETURN parameters in procedures, libraries (via LIBRARY, INSTALL or OVERLAY) and had a built-in full-screen editor, the ARM BASIC Editor or ARMBE. I reckon I probably spent the majority of my time in front of the machine in that editor, developing programs.
A number of times I would spend upwards of 12 hours at a stretch at the keyboard and some of the programs ran into thousands of lines. I wrote interpreters for scripting languages, bitmapped font editors, a parser for chemical formulae, a graphical plot of magnetic fields in a plane intersected by wires carrying current, and many others. I even wrote a kind of hypertext application inspired by the depiction of the "Guide" in the TV adaptation of The Hitchhikers Guide to the Galaxy.
It was on this A540 that I first encountered C. I got a copy of Acorn C and a book to teach me the basics. Once I grasped the concept of main() being the entry point for the program I was well away. The nature of BBC BASIC meant I already understood structured programming: conditions, loops, functions, and was used to thinking in those terms. It wasn't long before I got hold of a copy of Software Tools in Pascal and coded the programs presented therein in C. I wrote a utility to implement IO pipelines on top of RISC OS's pipefs (OS-implemented named pipes) so I could reproduce unix-style filters without needing intermediate files. I got a copy of Expert C Programming: deep C secrets and found it very informative and practical: it taught me a lot and by this stage I was proficient enough to program C professionally. I got my first job programming C on 16-bit DOS and Windows 3.1 despite having limited experience of those platforms: I was given the job on the strength of my performance on a C programming test at the interview.
I had had some limited exposure to a fairly new language called C++ that introduced something called classes. I didn't really get a lot of exposure to it until the mid-90's and it took a little bit of perseverance to get used to object-orientation. There were no templates in those days, at least not in the version of Microsoft C++ used where I worked, and exceptions were avoided because of concerns about performance. I really got the hang of it after taking a course in OO design which gave me the mental toolkit for thinking about classes naturally. The language support from Microsoft's compilers improved over time and it was really with the move to 32-bit Windows and new development for that platform that C++ became my new programming language of choice. I got copies of and read Effective C++ and Exceptional C++ to learn about best practices.
It's now some 15 years down the line and I consider myself a skilled C++ developer. (More to the point, so does my employer.) Along the way I've had exposure to several other programming languages, some of which I use regularly such as Python, sh, javascript, perl and awk while others I've used as and when the job has demanded it such as Java, C#, SQL, Visual Basic and several application-specific embedded scripting languages. I've dabbled with other languages such as Haskell, Lisp, Ruby, Pascal, Fortran and even Cobol at times just out of interest but never becoming fluent enough to use them as a first choice day to day.
So what started out as "just" a hobby is still, over 25 years later, my main hobby. The only difference is that I get paid to do it. I still feel the same joy and excitement when I produce code that does something neat. I get exactly the same satisfaction from my latest code to, say, ingest video and audio from an XDCAM disk as I did from my first BASIC program that just printed "hello, world" to the screen. What will I be doing in 10 or 20 years' time? I don't know, but I'm pretty sure I'll still be programming and loving it.
Subscribe to:
Posts (Atom)