Mostly Bollogs, I'm afraid

But occasionally, a glimmer of truth.
If you find one, please let me know.

Thursday, 21 August 2014



Multiply by a:


Subtract b²:




Divide by (a-b):


As a=b, substitute:




Divide by b:


Question. What's wrong?



namespace MVAP
    class Canvas : Panel
        public class StateObject
            // Client  socket.
            public Socket workSocket = null;
            // Size of receive buffer.
            public const int BufferSize = 1024;
            // Receive buffer.
            public byte[] buffer = new byte[BufferSize];
            // Received data string.
            public StringBuilder sb = new StringBuilder();
        StateObject state;
        public int iPage;
        public static Socket sock;
        Timer t;

        int X, Y;

        public Canvas()
        public void Close()

1.  Q1  I want to change X on an instance of Canvas from another class inside the MVAP namespace.

Canvas canvas=new Canvas();

When I type


I expect intellisense to offer me canvas.X. Why doesn't it?

2.   Q2 When I change X from my other class, I want the canvas to calculate Y as X*2 automatically. How do I do that?

3.   Q3 I want a routine which opens sock and broadcasts a single character poll on it. I want the program to do nothing apart from accept user input after that, but if the equipment receiving the broadcast sends a response, I want the canvas instance to asynchronously receive it and act on it. How do I do that?


int i;
int k;

switch (i)
         case 1:
                 int j=1;
         case 2:
                 int j=2;

1.  Q4 Where are the compilation errors?

2.  Q5 Assuming I fix the compilation errors, what is j at the end of this?

3.  Q6 What is k at the end of this?

struct a {
         int i;

struct b {
         int i;

struct c {
         struct a *pa;
         struct b **ppb;

1 Q7   I want to make a new instance of struct c, which holds exactly one struct a and many struct b's. I want to expand this as and when required. How would I declare this and how would I add to it?


I have two PICs which need to communicate via SPI. The master needs to communicate at 2Mbps.
1.  Q8 How do I set the speed of the slave PIC?
2.  Q9 The master sends a single-character request to the slave, and reads back a single-character response dependant on the request. How do I achieve this without the master sending more than one byte?


Thursday, 14 August 2014


I don't know why I'm telling you this, perhaps I'm hoping it will go away.

I have recurring nightmares, about three things. I used to have only one, but it went away. I had a bedroom (I didn't really, it was in the nightmare) which was three floors up in a house and I had to go through a winding corridor to get to it, but I kept getting stuck in the corridor and died. Most nights.

I'm glad I don't have that one any more.

The ones I have now are from experiences.

First one: I was a Plod at the Guildford Bombings (yes, I am that old) and I had to pick up bits of body and stuff. I get flashbacks from that one, still. I think this was in 1976.

Second one: I visited an old gaol somewhere in the lakes years ago. There was a dungeon, which was a gurt hole in the ground, with a small hole into which they dropped a prisoner for (say) stealing a chicken or owing the council some money. A "magistrate" sentenced him to having his arms tied behind his back and then dropping him down the hole, so his shoulders dislocated. If it didn't work, they did it again with weights tied to his feet, and if it didn't work again, increased the weight until it did. I think they did this in the 1800's.

Third one is the story of a chap who had a cross-amputation, i.e. have one arm and the opposite leg removed, with no anaesthetic, on a carpet of polythene, by "priests" with bonesaws and butchers' cleavers. The thing that got me was that he said "please make it quick." They didn't. They did this very recently and a far as I know they still do.

What I'm getting at is how, and why, a human can do any of these things to another human, or animal, in the name of some old bollocks which really didn't matter then and still doesn't.

WHY can't people just be?

"Many and sharp the num'rous ills 
Inwoven with our frame! 
More pointed still we make ourselves, 
Regret, remorse, and shame! 
And man, whose heav'n-erected face 
The smiles of love adorn, - 
Man's inhumanity to man 
Makes countless thousands mourn! 

Robert Burns.

Wednesday, 6 August 2014

Weird email

Good Morning

 Hope you get this on time, I made a trip to Brussels(Belgium) i had my bag stolen from me with my passport and personal effects therein. The embassy has just issued me a temporary passport but I have to pay for a ticket and settle my hotel bills with the Manager.

I have made contact with my bank but it would take me 5-7 working days to access funds in my account, the bad news is my flight will be leaving in less than 12-hrs from now but I am having problems settling the hotel bills and the hotel manager won't let me leave until I settle the bills, I need your help/LOAN financially and I promise to make the refund once I get back home,the fastest and safest means of getting the money to me now is via Western union Money Transfer you are my last resort and hope, Please let me know if I can count on you and I need you to keep checking your email because it's the only way I can reach you.

Waiting for your mail

Many thanks,

Thursday, 3 July 2014


Notice of removal from Google Search: we regret to inform you that we are no longer able to show this pages from Pengy's website in response to certain searches on European versions of Google.

Monday, 23 June 2014


I went to Marrakech last week for a few days. Spell checker says it's Marrakesh. It isn't.

Marrakech is in Morocco, which is officially Royaume du Maroc, because the French overran it in the early 20th century, when the Brits were overrunning India and places like that. That's why they speak French. They speak another language too but, like Flemish, nobody else speaks that, so they can talk about you while you're there.

They're all crooks. All of them. They're all skint, apart from the King, but they all have pictures of the king hanging on their walls, presumably so when the revolution comes and he deploys the army, they hope not to get shot. The king has loads of palaces and shit.

The currency of Morocco is the Dirham (easier to remember Durham and say it in a Northern accent), which is abbreviated to DH, or MAD. Every 10 of those is worth roughly 70p, unless you change money at Heathrow in which case every ten of those is worth £1, and you're an arse.

Petrol is £1 a litre. That doesn't matter, because you get in a taxi which will try to charge you 60DH (about £4) to go anywhere. You tell them 20DH. They say 45. You say 20. They say 40. You say 20. They say "vous voulez" which means "bugger it, I need the money" and you give them 20 at the end of the journey, unless they are nice in which case you give them 30. Check your change. Fuck it, it's £1.40 and you've got ten miles for that, in blistering heat. The aircon doesn't work. The windows are either open or missing, though. I THINK they drive on the right, but it's hard to tell.

Go to the Ensemble Artinasal, a government (I use the term loosely, the government is lining its own pockets, not like our one) run bunch of shops where you don't haggle. The price is the price. Find the price of the thing you want, then go to the souk, or market, or den of thieves, which is like Mos Eisley Spaceport except the people in Mos Eisley have better teeth. At least they have teeth.

Go round the souk, where everything similar is grouped. So if you want a particular thing, say a lampshade, you go to lampshade street. You can get a heck of a lot of work for not much money. Tell them that is what you're offering and walk off, they'll find you, eventually that's what you'll pay. If he won't take it, next door will, and if you're lucky a fight will break out and they will throw stuff about.

A bloke will come up to you and tell you that the way you're going is the wrong way, and "is closed." He will take you round in circles for hours and then ask for money. Tell him to fuck off. Whatever you offer him "is not enough." Take the piss out him for a while then tell him that in payment, you will give him some advice, this being "find the twat who told you that you could rip off an Englishman with a simple trick like that, and kick him in the bollocks." This leaves them confused. If it doesn't work out, growl a bit. They're mainly short and not very well-nourished.

Passport control is shit, like every banana republic I've been to. Takes ages. I presume they're worried about people getting out, because nobody in their right mind would want to get in for longer than a few days.

On the upside, the restaurants are excellent. I managed beers, wine, escargots (6), locally caught Atlantic spider crab, ris de veau, proper Baba au Rhum (where they put the rum bottle on the table and you neck most of it), decent brandy, coffee and petits fours, cost about £22 and I was in the gutter. Taxi home, £1.40. Brilliant. Put on half a stone.

Or you can eat in the square, on the street, choice of 50+ "cafes", no alcohol, loads of food, great kebabs, salads, watch a fight, about £4. Imodium and Diarolyte, as well as unbranded Kaolin and Morphine available at all pharmacies, about £4 too. Lost half a stone.

Interesting fags can be bought from the baccy-man, "normal" Marlboro about £2.80. Or 20p each if you only want one. Or 50p if you want them a bit interesting. If you are caught smoking these, Plod would like some too, and a few quid, please.

Don't take the piss out of Allah. They hate that.

Ah yes, camel. I missed the camel and got this pic of some people going to work. Have that instead.

Pengy x

Monday, 9 June 2014


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BuildRack
    public partial class Form1 : Form
        public Color[] cTable={Color.Black, Color.Brown, Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Gray, Color.White};
        public int ix = 0;
        TableLayoutPanel Rack;
        public Form1()
            this.Rack = new System.Windows.Forms.TableLayoutPanel();
            Padding pad = new Padding(0);
            Rack.Margin = pad;
            Rack.Enabled = true;
            Rack.Location = this.ClientRectangle.Location;
            Rack.Size = this.ClientRectangle.Size;
            Rack.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;

            for (ix = 0; ix < 10; ix++)
                this.Rack.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10.0F));
                this.Rack.RowStyles.Add(new RowStyle(SizeType.Percent, 10.0F));
                Label b = new Label();
                b.Text = ix.ToString();
                b.BackColor = cTable[ix];
                Rack.Controls.Add(b, 0, ix);
                Rack.SetColumnSpan(b, ix+1);
                b.Size = b.Parent.Size;
                b.MouseDown += b_MouseDown;
            Rack.DragDrop += Rack_DragDrop;
            Rack.DragOver += Rack_DragOver;
            Rack.DragEnter += Rack_DragEnter;

        void Rack_DragEnter(object sender, DragEventArgs e)
            throw new NotImplementedException();

        void Rack_DragOver(object sender, DragEventArgs e)
            throw new NotImplementedException();

        void Rack_DragDrop(object sender, DragEventArgs e)
            throw new NotImplementedException();

        void b_MouseDown(object sender, MouseEventArgs e)
            Rack.AllowDrop = true;
            ((Label)sender).DoDragDrop(sender, DragDropEffects.Move);