Showing posts with label COBOL. Show all posts
Showing posts with label COBOL. Show all posts

Thursday, 2 October 2014

Coding and Poetry

It's National Poetry Day, apparently, so I thought I should finally tie up the loose ends from the COBOL poem I posted the other week.  Loose ends like what on earth possessed me to write a poem in COBOL...

It all started with a blog post from Girl on the Net, detailing the filthy things she'd like to do to programmers (link probably NSFW, needless to say).  More power to her elbow, I say, though since I work in an open plan office none of the things she's thinking of would be even remotely feasible.

Anyway, that was where it started.  Following on from that, via the magic of Twitter, I found myself reading an elderly article about poetry in Perl.  And this is where the trouble started.  That article makes a couple of snarky comments about COBOL, like "getting a volunteer to write poetry in COBOL is likely to be impossible."  So what was I supposed to do?  Just let it pass?  No, I couldn't really ignore the gauntlet that had been thrown down, even if it was a gauntlet that only I could see.  So I sat down, and I wrote a COBOL poem, and I posted it on here.  And then I sent it to Girl on the Net and the individual who'd linked to the Perl article, just because.

Don't worry, I'm not about to announce that I've now compiled an entire anthology of poems in COBOL, or in other obscure programming languages.  Though I did write a haiku in Spectrum BASIC while messing around on Twitter:

10 PRINT "Forever"
20 PRINT "I will love you"
30 GOTO 10

Anyone who bothered to look at the comments on the COBOL poem, however, will have seen that I was challenged to write something using Inform 7.  Something that would work as a code poem and as a piece of interactive fiction.  In the end, I wrote two.  Sort of.

See, although Inform 7 is practically English anyway, it's still code.  And it's code designed for a very specific job.  The closest I got to actual poetry in the code wasn't a very good piece of IF; you can examine a couple of things and there's a single command that allows you to win, and that's it.  Otherwise you just expire after about five turns.  It's very poetic and lovely, but it's a bit rubbish to actually play.  The other one managed to be slightly (but only slightly) more engaging as IF, but wasn't much cop as poetry as a result.  To make good IF you need to build a rich environment and then nail down absolutely everything the player might consider doing; poetry works better when you skirt around the edges and hint at things.

So I shan't be posting the results, as interesting a challenge as it was.  They were sent to my challenger, as proof that the challenge had been completed (and since he didn't write anything I win by default!), but they won't be seeing the light of day as poems.  Maybe as IF, if I work on them a little more someday.  Or maybe I'll write something else instead.

You are in a maze of twisty little passages, all alike...

Thursday, 11 September 2014

COBOL Poetry

 IDENTIFICATION DIVISION.
 PROGRAM-ID. POETRY.
*
***********************************************************************
* THIS IS WHAT HAPPENS WHEN I READ ABOUT PEOPLE WRITING POEMS IN PERL *
* AND THE ARTICLE SUGGESTS NO ONE WOULD EVER WRITE ONE IN COBOL       *
*            CHALLENGE ACCEPTED!                                      *
***********************************************************************
*
 ENVIRONMENT DIVISION.
*
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*
 01 WONDER-IF-YOU-LOVE-ME  PIC X(1).
      88 YOU-LOVE-ME         VALUE 'Y'.
      88 YOU-LOVE-ME-NOT     VALUE 'N'.
*
 01 MY-BEST-SIDE  PIC X(40) 
                  VALUE 'ALL NEUROSES HIDDEN SO YOU WILL LOVE ME.'.
*
 PROCEDURE DIVISION.
*
 HOW-TO-MAKE-YOU-LOVE-ME.
*
     IF YOU-LOVE-ME
        CONTINUE
     ELSE
        PERFORM TO-WIN-YOUR-LOVE
     END-IF
*
     GOBACK.
*
 TO-WIN-YOUR-LOVE.
*
     PERFORM UNTIL YOU-LOVE-ME
        DISPLAY MY-BEST-SIDE
     END-PERFORM
*
     EXIT.
*

Tuesday, 11 March 2014

A Permanent Fixture

Today I got the official confirmation that I have passed probation and am now employed in a permanent capacity at the COBOL factory. Needless to say, this pleases me immensely.

The odd thing is, a year ago I'd sworn I wouldn't go after a job like this. After hopping around through various temporary and retail jobs, I'd finally settled into something I thought I could see myself pursuing as a career (online marketing and SEO, if you must know). And so I'd told myself that I was going to do exactly that. The job I was in wasn't exactly brilliant in terms of pay and conditions, but I thought I could take the experience and use it to get a better job doing the same sort of thing somewhere else.

But life's a funny thing, ain't it? As soon as I decided to focus on looking for marketing jobs, an advert in the local paper for this position caught my eye. I was done with trainee positions, I thought, but as previously discussed I've always had a hankering to code. So I took the plunge.

There were certain provisos. I wouldn't have taken the job if there had been any suggestion that a job wasn't guaranteed at the end of the six months. If the four of us who were taken on had been competing for a single position when it was over, I'd have stayed in my old job. I'm too old to take that kind of risk these days, especially with a mortgage and Small Girl to consider. Fortunately it was made clear that if we were all up to scratch then we'd all be kept on (and indeed that's exactly what has happened).

The time between accepting the job offer and actually starting was tense, to say the least. First there were the hurdles to jump; a ten-year background check that had to be completed before the job offer would be absolutely concrete. Then there was the general fear of the unknown, the panic that making this leap would turn out to be a bad idea. That disappeared as soon as I got here and started learning. The phrase 'duck to water' has seemed fairly apt over the last six months.

I got some very nice comments on my final probation paperwork today. In particular, it was nice to see an acknowledgement that, although I may make it look easy, I'm actually working damn hard. I'm blessed with a good memory (for things I actually want to remember, anyway) and the right sort of mindset to approach a coding problem in a reasonably structured manner, but those things alone don't get you through. I have a folder packed with notes that I refer to regularly, links to useful sites for researching commands and syntax, and a certain amount of dogged perseverance that often leads me to spend time looking for elegant solutions rather than just taking the easiest route. I've been less likely than the others to ask for help from others in the office, but that's not because I don't have the same problems as them. It's just because I prefer to try to solve the problems myself and hopefully learn something in the process.


In some ways, I can relax now. I've passed, I've got the job, panic over. In other ways, the hard work is only just starting. Now is the point where I really need to prove myself, to get myself established as 'programmer' and not just 'trainee'. I can see a lot of rungs on the career ladder above me, and I'm ready to start climbing.

Tuesday, 18 February 2014

Why I Didn't Become a Programmer Until Now

Prepare yourself for a tragic tale of wasted potential...

As a child, I loved computers. We were a ZX Spectrum family, and my parents both took the time to learn BASIC and write programs for it. They even had listings published in magazines (and my mother these days is referenced on World of Spectrum, thanks to one of her programs being in an issue of 16/48's tape-based magazine). So the groundwork, the opportunity, was there. I dabbled in learning BASIC myself, thanks to an Usborne book or two, though at that age I was mostly content to just type in listings or play commercial games. By the time I was old enough to really consider coding, the Spectrum was already obsolete (sob).

That's not to say I didn't still dabble. I recall, in my first year of secondary school, writing some code on an ancient BBC Micro for a technology project. Something about helping new students to find their way around, if I remember correctly. Coding was an option, so while other people were cutting up wood to make signs I was joining forces with another kid to write a program that would give you directions based on the room number you entered. Fairly simple stuff, though it would have been truly unwieldy if we'd ever tried to write it to handle more than about four rooms.

And then we got to GCSE, and the ill-fated Information Systems course. We were told in advance that this was a hard course; that we needn't think it would just be two years of 'messing about on computers'. It wasn't a course for lazy students looking to muck around. That's what they told us and so, being a diligent, bright student who liked computers, of course I signed up for it.

What I got, sadly, was two years of messing about on computers. The school didn't have any dedicated IT teachers, so the course was taught by Maths and Chemistry teachers in their spare time. That didn't help, but I'm not sure having a proper IT teacher would have made much difference. There wasn't a single piece of coding in the course. We learned instead about how to use ClipArt and snazzy fonts to jazz up a poster for a school fĂȘte. We learned about how a computer system could help a supermarket with sales and stock control, but might not be so helpful for a small corner shop because of the costs involved. We possibly learned about the SUM formula in Excel, but no macros or pivot tables or even any of the more interesting formulae.

Looking back, I can see that this wasn't the sort of course I was expecting or even a very useful one to have been taught. At the age of fifteen, though, I lacked that sort of awareness. All I really knew back then was that I'd signed up for a computer course and spent two years utterly bored stiff. I blamed computers for that boredom, rather than the course, and turned my attention to other things at A-Level and at university. Computing was not for me, I decided.

By the time I realised my mistake, while hanging out with CompSci students at university, it was too late. I was already deep into a Philosophy degree, with a minor in Creative Writing, and there was simply no way of altering things. I took a unit in Formal Logic as part of Philosophy, the one unit I received a First for, but that was as close as I got. The door was closed and there was no reopening it.

It didn't entirely stop me trying. I applied for a couple of 'trainee programmer' roles after university, but without success. I dabbled in the odd bit of programming at home, but the trouble with trying to learn code by yourself is that you need an idea of what you want to achieve. I picked up HTML because I could use it to make silly websites with Lego minifigs doing ridiculous things, but I never had the same options available in other languages. There are only so many business reporting exercises you can do out of a textbook before getting bored and going to do something else, if you don't have a teacher standing over you waiting for your results.

And then this opportunity at the COBOL factory came up. And somehow this time I was successful in my application (twelve years of real work experience and a better interview technique may have had something to do with that). So now I've finally been taught to code, in the way I never was before, and I love it. It comes easily to me, somehow, and as happy as that makes me it also makes me sad for what might have been. What might have happened if I'd been given a proper course at GCSE, or if I'd recognised the weaknesses in the course I did do and looked at doing something coding-related at A-Level or with my degree? Have those twelve years of working, frequently in retail jobs for various reasons, been a complete waste of my potential?

Somewhere, there's a parallel universe where I went a different way. And maybe in that universe I minored in CompSci at university and got put off by the mouthbreathing geeks who didn't know how to react to an actual female person in their midst (unlikely, given that I dated a few in my time as it was). Maybe I still failed to get a job in programming and ended up on the same career path anyway. Maybe by now I'd be earning a comparative fortune writing ground-breaking software (something that will never happen while I'm working in COBOL, I know). Sadly, it's the nature of the world that I'll never know what might have happened. But I can be happy to be here at last, and I can certainly learn from my mistakes. I'll be watching Small Girl's interests and potential closely, whatever they may be, to make sure she doesn't get put off from something for the wrong reasons.


And in the mean time, I've got code to write.

Saturday, 15 February 2014

Everything is Awesome!!!

Everything is cool when you're part of a team!  And if you don't agree, I can only assume that you haven't seen the Lego Movie yet.  You really should, by the way.

I'm not going to spoil it here.  Instead, I'm going to take advantage of the uncharacteristically upbeat mood I've been left in, and talk about some other things that are awesome.

1).  COBOL is Awesome!

I have four weeks left of my probation period at the COBOL factory, and the current expectation is that I'll pass with flying colours.  In the past five months I've picked up COBOL and JCL with reasonable facility, and I'm finding coding to be remarkably fun.  I haven't enjoyed a job this much in a long time.

2).  Editing is Awesome!

In the past week I've put together over 5,000 words of the second draft of the novel.  That's nowhere near the sort of pace at which I crank out words during November, of course, but it's pretty good for keeping regular life ticking over at the same time.  There will doubtless be further blogging about the process at some point.

3).  Making Stuff is Awesome!

I've already blogged about the cushions I made recently.  No doubt there'll be more in future, since I have crochet on the go and plans for several cool jackets (I'm weirdly obsessed with the idea of making jackets.  Not sure why, but jackets are awesome).  The fireplace in my living room is decorated with crocheted amigurumi and a tiny robot panda made of felt, and I recently rediscovered the pencil tidy I made from clothes pegs in my youth and redeployed it so I won't have to spend quite so much time looking for a pen to do the crossword at the weekend.

4).  This Thing is Awesome!

Look at it.  It's beautiful.

I came across this in a shop window in Kyoto a few years ago, and it's one of the most awesomely steampunk things I've ever seen in real life.  It's an automated machine for making tiny cakes of some description.  Metal rings come down a chute at the back and are positioned on the inner ring of the hot plate.  Batter is squirted in, then they make a full rotation to cook one side before being flipped over onto the outer ring to cook the other side.  After that second rotation they're taken off the hot plate and are ready to go.  The photo doesn't entirely do it justice, because it was absolutely mesmerising to watch.

5).  Lego is Awesome! (Obviously)

Do I really need to say anything here?  I think I'll let this be my final word on the subject: