Oct 16

 Exhausted. As much as I hate to admit it, I am going backwards again, struggling to maintain energy, tired, slow to warm up, riddled with the mystery all over pains.

Possibly it could be because I've been "overdoing it". Which is bullshit. But. I went into the city on Sunday for glasses and late lunch. And then repeated the trick on Monday despite feeling tired, because I needed to get out and get things done and yada blah. Monday evening I crashed out hard. Yesterday I hardly stirred until the sun went down. And today I have spluttered into awful functionality through gritted teeth and compelled by an "interesting problem to solve".

This evening I feel like I've been run over by a truck.

I wish I knew a consistent trick to hit a painless day. A day where I wake up feeling a bit better. With a bit of energy. It is very frustrating to have a sample of one or two of those days in a six month period, know that it's at least possible, but then never have it again.

Perhaps it's the nature of the beast. Like a clapped out car that misfires all the time except that one day in Summer where it all works for a bit again before belching smoke out the back.

Clapped out.

Meh.

I have things and tasks stacking up around my eyeballs.

Another work problem has flopped onto my plate - in better times something very interesting to get hold of. As it is, it's just another bit of work on my stack I need to get through.

This one involves packages into shipping containers. Have a random bunch of packages. Arrange them in the shipping container. Show the humans how you did it in a nice graphical 3d display.

In mathy computery terms this is known as the "Bin Packing Problem". In the way that such high end types love to throw around fancy ( bullshit ) terminology it is a non deterministic NP hard problem that is NP complete. Honestly. Although that terminology is very standard for discussing algorithms and it's kinda useful and descriptive if you already know the arcane language, it's bullshit in my humble opinion and does little except gatekeep concepts to those in the know, and everyone else can just ponder wtf NP hard means.

What does it all mean ?

It means it's tricky as in, there's no perfectly accessible answer, and it takes time* ( time in the sense of computing time, or rather, how many iterations you need to go through ).

There is no fast single general solution for it. You have to basically brute force it - ie grab all the pieces and try sticking them in.

Personally I'd rather they label problems like that.

Tricky mate. Brute force it.

One strategy - called the best fit first - is to sort all your items by size. And then. One by one stick them in the container in the first place they fit. How do you determine where to stick it and if it fits ? By effectively quantising the space into units, lets say, 10cm blocks ( or whatever you like ). One way to imagine this is filling the space with cubes of lego. To check if a space is empty you ask, is there a lego block there ? Yes ? No ? Can I place X amount of new legos in that space ? Yes ? No ?

Possibly easier to imagine in 2d space as a grid. Like a sudoku. As you fill each grid space, you draw an X through it. For each new item you scan left to right, top to bottom, for the first suitably sized hole. Once found, you mark it off with X's, and get the next item and start from the top again, left to right, row by row.

Conceptually this is very easy. Stupidly easy. You can watch a toddler do this with bricks.

Theoretically if you read up about it you get stuff like this :

"Computationally, the problem is NP-hard, and the corresponding decision problem, deciding if items can fit into a specified number of bins, is NP-complete. Despite its worst-case hardness, optimal solutions to very large instances of the problem can be produced with sophisticated algorithms. In addition, many approximation algorithms exist. For example, the first fit algorithm provides a fast but often non-optimal solution, involving placing each item into the first bin in which it will fit. It requires Θ(n log n) time, where n is the number of items to be packed."

and

"To measure the performance of an approximation algorithm there are two approximation ratios considered in the literature. For a given list of items the number denotes the number of bins used when algorithm is applied to list , while denotes the optimum number for this list. The absolute worst-case performance ratio for an algorithm is defined as

On the other hand, the asymptotic worst-case ratio is defined as

Equivalently, is the smallest number such that there exists some constant K, such that for all lists L:[4]

.

Additionally, one can restrict the lists to those for which all items have a size of at most . For such lists, the bounded size performance ratios are denoted as and ."

Lovely. Mathematical. Comparative.

Utter bullshit.

A bit like trying to describe how to cut a piece of wood with a saw by talking about quantum physics, the nature of atoms, and that time as a concept doesn't really exist as everything is relative.

What ?

Pick up the fucking saw and cut the wood.

Uh huh.

Personally when I teach people complex things, I use the latter, and not the former. Because conceptually most of this shit - even the most advanced scientific stuff - is actually very accessible. The language that gets bandied around and the contractions, acronyms and everything is absolute wank.

IT is full of it.

For instance.

If we're no longer using a bit of code - it is on the way out, but not yet removed. You don't call it the old version. Or legacy. Or previous standard. No. We call it. Deprecated.

Deprecated.

I use this word without thinking about it.

But for normal people, when was the last time you used, or heard in use the word fucking deprecated.

Even for some of the more junior side of IT people. They mangle the word. Spell it wrong. Use a slightly different word because they didn't really get it. Which just shows you how much special princess gate keeping is going on with it that it's that fucking unintuitive.

Another one.

When you create an object from a class ( of which terms are also smeared in bullshit ), you don't create it. You don't make it.

No no.

You instantiate it. Again. You use this without thinking. But it's another bullshit word that no one outside IT will probably have ever used and probably never heard of. It's like people reach through the fucking theasaurus for an obscure bullshit term and then cling to it.

It ends up putting up walls between those that know, and those that don't. And creates an artificial wall of superiority. Artificial because the concepts are often simple enough for a 5 year old to grasp.

Deprecate = Avoid using this.

Instantiate = create from a pattern. IE. Cut a cookie ( object ) from dough with a cookie cutter ( class ) so that you end up with a cookie shaped lump of dough that you have just created ( instantiated ). And although I really like the terms and they are very descriptive, the OO concepts of abstraction, encapsulation and inheritance are also mired in bullshit ( if you're not in IT, you're going to need a dictionary to try and figure out what that sentence is trying to tell you, and even then, you're not going to be sure until someone who already knows, tells you what it actually fucking means ).

Abstraction - hide the working, just give the result ( kind of ).

Encapsulation - put all the working bits in its own box.

A television is a good example of both. It has abstracted a bunch of science, electronics, programming, et al, where you can't see any of it - and dont want to see any of it - except for the end result - a big display that reacts to a button presser. It is encapsulated in that all the bits that pertain to the working of the TV are inside the TV case. Move the TV case, and everything that makes up the TV moves with it. ( Imagine the converse if all the bits were spread out on a worktop - to move the tv you'd need to move dozens of wires and boards and yada blah. This would not be encapsulated. The happy swishy looking TV box keeps it altogether and simple looking - even though it isn't ).

Inheritance - one bit of code includes all the bits of code from somewhere else as a starter.

The above three things in terms of OO serve a major purpose - make shit easier. Again, I am cutting down the bullshit language. It makes you have to think less. Just like no one builds a microwave from scratch or understands how the fuck a magnetron works - you open the door, shove food in and hit a button. It has pulled that complicated problem - build a working magnetron and programmable cooking device - into the sphere of, can you push a button and open a door ? Most people can open a door and push a button. Next to no one can build a microwave from scratch.

It's a little different for OO - because you will likely be building shit from scratch. But it's more of a way to stop you getting lost in the weeds. Build a box. Place a box. Build another box. Place another box. Like making sure you have a drawer for each type of clothing. Socks here. Knickers there. Instead of everything you owned junked into one enormous drawer.

OO as its highest simplest concept, is just a way of keeping things neat, tidy, and not overwhelming the idiot monkeys that have to program computers ( and we are, very very stupid compared to even the most basic of computers ).

Anywho. Off the track.

A word I like to use for all of this - just to myself, I don't force it on others to try and figure out - is arcane. An arcane piece of knowledge is something that is unintuitive, which is to say it's either very difficult or impossible to figure out on your own, and is something you either know - having been specifically taught it directly - or you don't - no one with the already existing arcane knowledge has told you.

Arcane knowledge is frequently utter bullshit. It defies logic or rationality and is often a very quaintly wonderful piece of human arbitrary know how. Typically that way because it's always been done that way, or no one has bothered to simplify it, or, it's doing a job of gatekeeping wisdom and making the people that know feel better about themselves and superior to everyone else. Rarely because it is what it is, and that's just how it works. But often it's just people being dickheads about sharing their know how ( even if it's sub conscious ).

Personally I think being a good teacher is thoroughly understanding what you are teaching so that you can dissolve every piece of bullshit and arcane bit of terminology, break it down into simple real world concepts. And then. And only then. Once someone has got the hang of it. Start labelling the bits with their professional arcane special secret handshake terminology. Whatever field that is.

I equate it to wiping off the mud to see the actual thing. Letting people understand the thing. Before caking it again with mud - which everyone has agreed is the standard. Mud covered things.

Rant over.

I need to sleep. And be free of pain.

I am loathe to give in and collapse for days.

Perhaps that's half the problem.

Trying to live in ways I can no longer maintain.

Ho hum.

New glasses on the 27th or so. Something to half heartedly look forward to. My eyesight might be better.

I will say this. During the eye exam. It was wonderful to see everything pin sharp again through the machine. A pity my glasses don't seem to ever match the experience of the machine anymore. It's not the machine per se. It's the vagaries of my eyes just not properly adapting anymore. Old age.

Old age blows.

Chronically ill and old blows twice as hard. 

Perhaps one day they will invent glasses like the eye test machines. Like the auto focus you get on any kind of camera or phone these days. They can be made incredibly tiny - way smaller than glasses. Imagine glasses like the focus on your phone. Able to see down to a stupid detail level. And all the way out miles away. Always pin sharp. Always adapting.

That'd be cool.

Comments

Popular posts from this blog

Feb 29

May 9

Mar 10