jump to navigation

When is an Oracle ACE not an Oracle ACE? March 12, 2024

Posted by mwidlake in ACED, SYM42, User Groups.
Tags: , ,
2 comments

As of this week (11th March 2024) I am no longer a proper Oracle ACE – and this is exactly as it should be.

I am now an ACE Alum (I would prefer Alumnus but it’s their program, their titles) which means I am no longer counted as active and will no longer be invited to the updates, meetings, and meals at conferences. More importantly, it indicates that I am no longer doing the advocacy on Oracle products that result in you being an ACE. The ACE Alum is, as I see it, simply a “thank you for past services rendered”. Which is still very nice.

I’ve been a member of the Oracle ACE program since 2011 and I was made an ACE Director (the highest level – see the box for more info on what the Oracle ACE program is) in 2015. I actually dropped to ACE Pro (the middle level) in 2022 and I’ve just noticed I never altered my badge for ACE level here on my blog! Naughty Martin.

The ACE program recognises people who contribute to the Oracle community. You need to know what you are talking about to be recognised as an ACE but just because someone is an ACE does not mean they know more than a load of other non-ACE people about a given topic. And being an ACE Director does not mean you know more than an ACE Pro or that an ACE Pro knows more than an ACE Associate. The levels give more of an indication of how engaged, how active the person is – although ACE Director requires a few other things such as providing direct feedback to Oracle Product managers.

The ACE levels are based on points you get for activity – blogging, writing articles, helping on forums, feeing back to product managers. The more activity, the more points, the higher the ACE level. It’s not perfect but there needs to be some sort of system. It’s just a bit of a shame that some members get utterly fixated on Points and will argue endlessly about them. They don’t seem to understand that the points are a guide and there are other factors, such as demeanour maybe and help you give that has no direct points value.

Anyway, as I moved towards retiring I did less presenting and less blogging and less, well, everything. I recorded fewer points and it soon became obvious I was not hitting the level of ACE Director. However, I was given a bit of leeway and kept at that level, partly due to past efforts I think (my work for UKOUG, my support of smaller user groups) and also I was knocked sideways by a period of illness. But come 2022, by mutual agreement, I dropped down to ACE Pro.

This year, as the reminders came in to do my points, I made the decision I was really not active enough to justify any level of ACE. I contacted Jen (who runs the program) and asked to become Alum.

I think this is exactly how such a multi-level recognition program of community support should work. As people become more or less active, they get a higher or lower level in the program. And if they go and retire (or move tech (or totally change job)) they should drop off the program.

I’ll miss being an active ACE, especially the meals and meetings and get-togethers at conferences etc. I’ve got some nice “swag” from the program over the years, I especially like my hoody I use when I go for my regular walks around my village. Interestingly, I don’t think I’ll miss the content creation, I cannot get the focus to do it anymore and I find it very draining.

I’m proud and appreciative of my time as an Oracle ACE, and especially proud I was at the Director level for a few years. I think I understand how much work goes into running the program and I thank Jen and her team for all the hard work.

I’m still part of the Oracle community, but in a different way. I help run Symposium 42, which is an independent recognition program for content providers & event organisers in the Oracle user community. Hopefully I will still meet old and new friends at the few events I will get to.

What Were You Doing 24 Years Ago Today? December 31, 2023

Posted by mwidlake in development, humour, Testing, working.
Tags: , , , ,
4 comments

Yes, I know, some of you were still at school 24 years ago, a couple of you were not even born! But for many of you, 24 years ago today you hasd a job in I.T, it was the last day of the 20th century, December 31st 1999 – and you were either at work or on call!

Tha panic was real – so was the problem

Those of us in the I.T. industry at the time remember not only the media frenzy over the “Y2K” bug, where computer systems were predicted to crash because two-digit year dates had been stored not four, but also the shear tedium of fixing these systems or proving they would not crash (by doing that old-school thing called “testing”).

I did my fair share of that work, it almost seemed that all IT contract work in 1998 and 1999 was about the Y2K bug. I knew of several large development or hardware refresh projects that were cancelled or put on hold so that Y2K work could be done instead. A couple of the systems I worked on at the time would definitely have had issues without the remedial work, a couple would have not. In the end Y2K in computer systems was almost a non-event, some systems crashed or went wrong but most did not. And, of course, because the issue was not as bad as the end-of-the-world media made out it would be, there were loads and loads of people afterwards claiming it was all a hoax. Probably the same people who claim Covid-19 is just a ‘flu and the moon landings did not happen 😊. They were oblivious to just how much money and resource was spent fixing the issue.

In any case, the end result for many of us I.T people was that more (though dull) work was availabe on the run-up to the day and on the 31st December 1999 itself we were forced to be in an office or on-call & (theoretically) sober in order to handle any missed issues. While 95% of the world was partying and 4% were in their basement surrounded by 2 thousand tins of soup and bottles of water (waiting for world catastrophe or some religious thing or both), we were supposed to be in a fecking office.

Were you?

I wasn’t. I was in a big country house with a load of friends, having a good time. You see, when I took on the role that I was still in come 31st December 1999, I had put a clause in my contract that I would be unavailable the week that the Y2K night fell in. Other technical people in the company had booked holiday for then, but it nearly all got cancelled (I noticed at the time this did not seem to apply to senior management). But it was in my contract so, though they tried to bully me, their only real option would have been to fire and re-hire me (which they tried to make happen). Just occasionally, I would actually plan ahead and make a smart move. Occasionally.

Symposium 42 – Who? What? So Many Technical Experts. November 8, 2023

Posted by mwidlake in SYM42, User Groups.
Tags: , , ,
add a comment

Some of you may have become aware of a group called Symposium 42 – or SYM 42 for short, especially if you have been to a European Oracle user group conference in the last 12 months. But maybe not even then 😀. Symposium 42 has been created by a group of conference presenters & bloggers together with conference and community organisers. If you are reading this blog you probably know the names of a lot of the members of SYM 42, even though you do not know they are members of it. You can see a list of members at This Link Here.

So what actually *is* SYM 42? What does it do? It recognises people within our community (currently focused on the world of Oracle) who either share their knowledge or organise events. These people do this for free – they blog, write articles, present at conferences and events, or they organise those conferences and events. There are plenty of “recognise the expert” programs in the world of IT but most of them ignore those who work behind the scenes, making the community happen. Organising conferences is a lot, lot more work than people who have not done it realise. I’ve helped do it and it takes less work to organise a conference than become an expert at Exadata. SYM 42 recognises both the technically skilled and the organisational powerhouses – and sometimes a single person does both (hat tip to the likes of Kamil Stawiarski, Sabine Heimsath, and Neil Chandler, amongst others).

Of course, the names most people will recognise are those who present, write, help on the forums & are active on social media. There are three criteria for a technical expert to be recognised by SYM 42:

  • Be recognised as technically strong.
  • They share their expertise with others.
  • If challenged, they will justify what they say – and not charge for it.

That last point is key. Stating something about technology, such as having a table with over 255 columns is a bad idea, is only an opinion unless the person can back it up with some supporting evidence that can be tested, such as saying it causes multiple row pieces that can then result in more physical IO.

This might sound very similar – it sounds a lot like the OakTable. Hopefully most of you will have at least heard of the OakTable, and might even have been to OakTable Sunday at past UKOUG conferences or OakTable World that ran alongside Oracle Open World for several years. The OakTable used to provide rich, deep content at Oracle conferences – especially those where there was just too much marketing fluff instead of critical technical content.

However, they are not the same. For one thing, the OakTable still sort-of exists, and SYM 42 was not created to rival the OakTable. Some members of SYM 42 are also Oakies, one is even a member of the original “Junta” that created the OakTable. However, I think it is fair to say that the OakTable was mostly for the prior generation, many of the key members have retired or moved onto new challenges, the OakTable no longer has a website or organises events.

Another difference is that OakTable was utterly focused on the technical side of things. One of key reasons it was created was to counteract a lot of the BS that was being stated by “experts” in the 90’s & 2000’s who, frankly, were spouting rubbish. SYM 42 recognises community leaders as well as technical experts.

One thing that SYM 42 and the OakTable share is they are utterly independent and have no affiliation with Oracle Corporation. Some members of SYM 42 currently work for Oracle but SYM 42 receive no funding, no support from Oracle Corp. As such, SYM 42 members can ignore the sales & marketing direction of Oracle Corp. If a member of SYM 42 thinks part of Oracle Cloud Infrastructure is crap, they are free to say so. And if a member says an aspect of Oracle technology rocks, it’s because they believe it does rock. (This of course does not necessarily hold for SYM 42 members who are also Oracle employees – but the world is complex and we decided to not exclude members based on who employs them).

You can read more about Symposium 42 at their web site linked here.

So, that is Symposium 42. It’s of course not perfect, for example membership is currently focused on Europe with a few North American people and slight odd slice of Aus influence. This is because the group was formed by a group of friends based in those places. Not being a member of SYM 42 means nothing – they might not have been invited yet, they might have said no, they might not be known by the small clique who started the group.

But something you can be assured of is that a member of Symposium 42 is either a key person in organising the Oracle community, a technical expert who shares their knowledge, or both.

Don’t Forget Old Features – Materialized Views #JoelKallmanDay October 11, 2023

Posted by mwidlake in Architecture, database design, development, Knowledge, performance, SQL.
Tags: , , , , ,
add a comment

People who spread knowledge on technical subjects tend to focus very much on the new, shiny features and enhancements. Maybe as a result of this, old features get forgotten about – like Table Clusters. How many of you know what Oralce Table Clusters are and how they might improve performance? Who has used Table Clusters in Oracle in the last 20 years? (Apart from everyone – as the data dictionary still uses them!). Table Clusters are maybe worth leaving in the past as, apart from the niche use of Single Table Hash Clusters to give a very efficient selection path for a row in a static table via the PK, they generally have more issues than benefits I think.

Well, an old feature I do think is worth revisiting is Materialized Views. This is where you create a real table based on a SQL query. The SQL query can be simple or complex, it can join two or more tables together, it can even group data and select min, max, avg, analytical funcitons etc to summaries large data sets.

Consider the below query:

A Materialized View can be created that does the main, expensive join and includes SOME of the filters:

This query iu run and the yellow “MV_BF_BD” table is physically created and populated. It is “Just” a table.

If the data in the underlying tables change, the Materialized View is marked as unusable and won’t be used. Used for what?

If the SQL statement used to create the Materialized View is a SQL statement the application uses or, more significantly, is a common part of several larger, more complex SQL statements, Oracle can use the Materialized View (which is just a table remember) to help satisfy the query.

In the below we see two SQL statements. One will certainly use the Materialized View and will, as a result, run more quickly. The second query might use the MV, the opitimizer will decide.

If this Materialized View takes a lot of time or resource to be generated (say it joins a million row table to a 100 millon row table and then filters out 50% of the joined rows) then by generating it once and then using the RESULTS only in half a dozen queries then it will make that half a dozen queries run faster.

I know I have not explained Materialized Views in enough detail to help you use them (though I might come out of retirement to write about them based on real world experience I had with one of my last clients), but that is not my point, it is just an example of something that can really help certain Oracle systems run more efficiently. But is hardly used anymore, possibly as it is old and not talked about much.

Just because an Oracle feature is old, it does not mean it is not still of use. How do you find out about these features? Well, I have a load of old performance and database design manuals I am throwing out that you could buy… 😄. Being serious, go have a look at the concepts manual. I used to always recommend all DBA-types and Oracle Developer types read the concepts manual for their version of Oracle. I still think it is a good idea (though I have not done it for a few years as, in my opinion, the manuals got a bit crap for a while – they seem better now). Alternatively, go to speak with someone really experienced (and thus probably quite old, but there are exceptions), describe the issue you have, and they might say something like “ohhh, that sounds like Results Cache could help – but be aware of these 3 terrible drawbacks of them”.

This post is in honour of Joel Kallman, who was a tireless advocate of learning & community. Just like him, I think the more we share our knowledge and help each other, the better we will all become.

Creating a Cabinet for Sue’s Birthday October 9, 2023

Posted by mwidlake in DIY, off-topic, Private Life, Woodwork.
Tags: , , ,
6 comments

Last year I cooked Sue a hedgehog cake for her birthday. It was not what you would call an unmitigated success… So this year I thought I would ditch the culinary for carpentry! When we first got married I made a few bits and pieces, mostly simple sets of shelves to fit in gaps it was hard to find a (cheap) commercial item for. They were never brilliant but they did the job, and I have more tools now, so surely I can do a better job? 😁

The intention was to build a wide, deep cabinet with several shelves to hold awkward, large (but light) things like sheets of card, large envelopes, and hat boxes. The hat boxes are carboard and come flat-packed, so they are pretty big and take up a lot of space if stored flat, and are liable to get damaged or slowly bow if stored upright. You sometimes see antique furniture like I had in mind that was used to hold maps or posters, but they tend to be very, very expensive as they are so sort after.

I decided to build the unit out of plywood. This is because it is much stronger and durable than either Medium Density Fibreboard (MDF) or chipboard (also known as particle board or low density fibreboard) -both materials I dislike – and you can screw into the end of plywood and it does not split or fail so easily. Also, plywood has an outer skin of relatively nice wood and I think it looks OK left as it is.

First, I did a plan. Just as with designing a database or application, creating a plan before you touch any tools means you can visualise what you want and potentially spot mistakes. For example, I realised that if I had constructed the unit as originally envisioned the back panel would be larger than the panels I can buy that fit in the back of my car.

Having come up with the plan I went and got the sheets of plywood I would need and some glue. I had more than enough screws, sandpaper, and anything else I would need. The first thing I did was cut the side panels, which were made from chunky 18mm ply – as the sides need to be the strongest part of the unit. 18mm also allowed me to screw the base panel directly into the end “grain”.

I’m not in any way an expert on carpentry or cabinet making (my grandfather was a cabinet maker though he never said a word about it to me) but a few things I have learnt over the years are:

  • Keep the sawing/sizing of things to a minimum. Each cut is a chance to mess it up and, as I use hand tools (standard hand saw or a jig saw primarily) the cut is not always perfectly smooth. To reduce sawing I tend to make things to the size of the raw product I am buying, so this cabinet will be 605mm deep, the size of the panels.
  • Put masking tape along the cut. I used blue masking tape in the above shot so you can see it but the blue can stain the cut end, so use neutral coloured masking tape. The tape goes on the side the blade is cutting “towards”, so the bottom of the panel if using a hand saw and the top if using a jig saw. Why use masking tape? It reduces the tearing of the wood and gives a smoother cut end.
  • Always measure twice! And mark the cut line clearly in pencil – never pen! (Pencil lead can be sanded away, ink stains).
  • You can mark the cut THEN put on the masking tape, you can see the line through the tape. But if you want to put on the tape and then mark the cut, the woodwork police will not come visit.
  • Use a saw with as small a tooth size as you can face. It takes longer and is harder to do the cut but it is worth it for the smoother cut end.
  • For cabinet work you have to be as millimetre perfect as you can, else the end unit can be all a bit misaligned, or have proud edges. And you should take into account the width of the line. If I want to cut at 600mm, the inside side of the line is at 600mm, I cut along the outside of the line. I then plane/sand the end which brings it back from 601mm towards 600mm.

The side panels needed runners for the shelves to sit on. I decided early I wanted shelves than can be taken out (and easily replaced or flipped over when they warp a bit). I considered routing grooves inthe side panels for the shelves to slot into, but given the width of the unit the shelves would not need to bend much to pop out of such grooves! And I was not so sure my skill levels were to be relied on for that level of accuracy…

When I am attaching reltively small or thin bits of wood like this I always pre-drill the holes and make the hole about the same total width of the screws I am using. This so that the screw does not bind to the piece of wood I am attaching, which can lead to the screw holding the (in this case the runners) slightly away from the wood, you have a gap, and the fixing is not firm or secure. By having a pre-drilled hole as wide as the screw, the screw is biting only into the side panel and the head of the screw pulls the runner tight against the side panel. I always countersink the holes, though with the softwood (standard pine battens) being used here they would sink into the wood as I tighten the screws and end up flat with the wood.

The screws I used were 30mm. The battens were 18mm so the screws went 12mm into the 18mm side panels, so would remain hidden. I pre-drill thin pilot holes into the side panels and I used some wood glue between the battens and side panels for extra strength. I don’t tend to use glue as it pretty much stops you taking things apart, but I had no intention of ever taking the runners off.

You might notice that I cut the ends of the battens at an angle and they are set about 40mm back from the edge of the side panel. This is so the runners “disappear” from sight.

I wanted carry handles on the side (and top) of the unit. It’s a big piece of furniture and plywood is relatively heavy.

I’m not the best with a jig saw, but you can neaten up the job later. I found an oblong object about the width I wanted the handle to be but, most importantly, I found a little pot that was also the width I wanted, so I was able to draw the outline I wanted (otherwise I would have had to have gone and found a drawing compass). The trick to jig sawing curves is to use as thin a saw blade as you can find, take it slowly, and try not to pause as you do the curve. The trick to jig sawing a nice, straight line is to use as deep a blade as you have. The curve was most critical so I went narrow. I drew two pilot holes and cut the hole. What I should have done was only drill one pilot hole but hey ho.

You might notice that the jig saw plate had slightly marked the surface of the wood. It was not a problem, a quick rub with very fine sandpaper got rid of it.

I should add, I smooth visible edges and surfaces as I go, with fine sandpaper. The surface of plywood is usually acceptable as a finish, but going over it with fine sandpaper really brings the grain out and makes the surface more tactile.

The hand hole was nothing like as neat and smooth as shown above after I had used the jig saw, but I used wood files and a Dremel (hand-held power tool with 2 thousand different bits available, including sanding disks) to flatten the sides, improve the curves, and give a bit of a bevel to the edges. One disadvantage of ply is that, as it has layers, it can accentuate any unevenness with bevelled edges, so I took a lot of effort over that bit. I then used the first hole as a template to mark the hand hold on the other side panel and the top panel.

Next I cut the bottom panel but that was simply a case of cutting a sheet of 12mm ply to 1000mm long and pre-drilling/countersinking a row of holes along each short edge at 9mm in, so I could scew up into the side panels (18mm wide remember). As I was going to screw into the end of the ply side panels there was a danger I could split the ply, so 2.5mm pilots holes were drilled to take the 3mm wide screws, and I used 40mm long screws to give a good, strong join.

I then cut another sheet of 12mm ply to 1050mm. Why 1050mm? I wanted a small overhang for the top panel to disguise any mm inaccuracy which would be shown up by making the top panel a perfect fit to the sides. I could make the bottom panel a perfect fit as attaching it to the side panels would be the first part of the build. I did not think it was wise for me to attempt a perfect fit with the last and most visible part that would be added to the cabinet.

Have you ever walked into a low cabinet? It really hurts your shins. As for catching the sharp corner, it tends to rip a gash in the skin! To reduce this risk, I routed a bevel around the sides and front of the top panel, and added a grab hole. The router can cause small burn marks on wood, especially ply, but it’s OK as the edge got a really good sanding down and that removes any scorch marks.

The final panel to construct was the back panel. Even though the pack panel was not going to be seen it was actually the most important part of this cabinet:

  • The back panel gives the whole unit it’s rigidity.
  • It also keeps the sides, top, and bottom panels at 90 degrees to each other – so long as the panel is itself a perfect oblong!
  • It cannot stand proud, it would ruin the whole look of the piece.
  • It cannot be too small, it has to be fixed securely to all the other panels.
  • It will have runners on it to support the shelves and help prevent them from sagging.

The runners were the tricky part as they have to be at exactly the right height and that height had to take into account the thickness of the base. I could not add them after construction as I needed to screw through the back panel into the runners (the panel was too thin to do it the other way around, being 9mm ply. I’ve tried to add them to a constructed cabinet before and usually made a right mess of it.

To add the runners I had to measure and pre-drill holes in the back panel, then align the runners on the top surface and screw “up” into them. I used a little glue again.

(Hint – if drilling up into a piece of wood that you have to hold down, try not to rely on either not holding it above where you are drilling or not accidentally drilling too deep. Drilling your hand/palm hurts like heck. Either set the drill bit to a length too short to go all the way through or hold a block of thick wood on top of what you are drilling!)

I now had all the structural parts made and I was ready to construct. And this is when I screwed up.

I was running out of time to get this cabinet ready for Sue’s birthday (the next day) and when I drilled and countersunk the holes on the top panel (the only screws that would be visible) I failed to do that “measuring twice” thing. I had made a lovely row of very visible, countersunk holes too close to the edge, the screws would be just outside each side panel. Bloody, bloody hell! I did not have time to go buy another panel.

I knew how to fix it – I could re-cut the top panel to be an exact fit to the sides of the cabinet (1000mm), something I had been trying to avoid as I did not trust my skills to manage the accuracy, and I would need to add battens on the top of side panels to fix the top to. Remember, I had bevelled the sides of the top panel, screws would stand proud in that bevel and it would risk being too weak if I screwed close enough to the edge of the top panel to go directly into the side panels.

Now, if I had decided to use joining battens from the start I would have not needed to have visible screws on the top, I could have screwed from underneath, through the battens and into the top. But I was not sure I’d get a strong enough joint screwing into only 12mm ply. Anyway, I now added the battens to the side panels (using glue and screws), as can be seen in the below shot of all the bits ready for construction:

I was also now having to work in the shed as it was raining. Bugger.

In a brief break in the rain, I got the top panel out onto my work bench in the garden, cut it to exactly 1000mm (well, actually, 1001mm), smoothed the end, routed the end, smoothed it again (thus that extra mm!). I put in the second set of countersunk holes and got it back into the shed just as the rain started again.

It was now time to construct the cabinet. This usually takes a lot less time than constructing the individual parts.

The first step was to attach the side to the base panel. At this point I realised the base panel was slightly warped, so I used a heavy plant pot to hold it down! I had to get the cabinet up on the workbench so I could screw into the bottom panel (think about it, if it was on the floor there would be no space to line up the drill/screwdriver flat to the bottom panel.) Once attached to the side and bottom panels, the back panel held the bottom panel flat and I removed the pot! I checked the back runners were at the right height and they were perfect. Well, perfect enough. Almost perfect :-).

Finally, I put on the top panel and, to my relief, it fitted pretty well. So I screwed it in place.

The final thing to do was cut the shelves. There were three of these, made of 5.5mm ply. They all wanted to be the same width, they were all getting a notch at the front and it would have looked bad if those notches were not all in the same place, the same size, the same shape. So I put the three panels on top of each other, bound with masking tape, and cut them As One. I used the jig saw for all the cuts and I made the shelves about 2mm too wide. I then used an electric plane to shave off the edge off the shelves until they just fit into the cabinet. I had to take about 1mm more off the back of the side than the front as, well, the “box” of the cabinet was skewed by 1mm. Not bad for something 1000m*615mm (side panels are 605, the back panel adds 9mm 😁). They slotted in lovely once done.

And that was it, cabinet made!

I have to confess, I am pretty pleased with it! The end result is much better than the cake was last year.

I am pretty sure I am going to end up strengthening the shelves but I have the battens to do that already, and I might give the whole thing a light layer of wax. The top fits exactly, there are no proud edges, it’s a shame about the screws in the top but I made a decision from the start to sacrifice a little aesthetic appeal to make the construction easier. If I did it again, that top would be attached from underneath and no screws would be visible. And yes, in the pictures below I have not pushed the top shelf all the way in. It does fit really!

Stopping “AVG Service” using loads of CPU August 23, 2023

Posted by mwidlake in off-topic, security.
Tags: , ,
3 comments

Just a real quick one as I found nothing useful on the internet about this.

I’ve had AVG causing high CPU and constant cooling fan activity on my laptop.

For the last couple of days (as of 24/8/2023 or, if you are American – oh, you strange country, just swap to using a date format that makes sense! 😀) I have had process “AVG Service” at 16-20% CPU and my laptop fan running all the time. Doing a full AVG scan does not help, there seems nothing recent on google search on high CPU from this process and, of course, you can’t kill the AVG process via Task Manager (Processes or Details) or drop it’s priority. AV software is kind of a V itself.

Shutting down all browsers does not help (as some old posts suggest), rebooting the PC does not help – the sodding process immediately starts up at high CPU. Nothing seems to help, the AVG Service process just sits there smashing the CPU.

I checked for updates – AVG had actually updated only a few days before and I am suspicious they introduced something poor with it.

But I found a fix! Stop and start teh AVG protection. To do this see below:

RIGHT click on the AVG icon on the right of your taskbar, or if the AVG icon is missing Left click on the ^ arrow and get the hidden apps up. Now RIGHT click on the AVG one (that is the multicoloured set of blocks as shown bottom left below:

Once you have the below options, turn off AVG protection. It will whine, just turn it off.

Hopefully your fan will almost immediately slow and AVG Service will drop out of Task Manager. Ahhh, quiet. The CPU monster muncher is silenced.

But you are unprotected! Worry not, just turn AVG back on, and hopefully (like me) you will see the AVG Service once more just ticking along in the background causing no issues, as it should.:

Why does this work? I have no idea, I know a fair bit about programming and database design but nothing about windows software or internals. But as we all know, turning something off and on again sometimes works – as it returns it to a known stable start state. Why does rebooting the PC not achieve this? Because some programs are just shitily implemented and will save their state across a controlled shutdown or similar, especially stuff like AV software that kind-of takes things over anyway.

I hope that helps someone.

Friday Philosophy – And I’m Done June 30, 2023

Posted by mwidlake in Friday Philosophy, Private Life.
Tags: ,
9 comments

I said back in April I was Actually, Really, Retiring. Well, today is the last day of my current company year, and it will be my last company year. Since then no “friends” have managed to pin me down and make me agree to do another “one last job” (Thank Goodness), so it really is it!

The laptop belonging to my last client will be sent back next week (I agreed to be available to help until the very last possible day), I will cancel my insurance on Monday (I’m keeping it alive today, just in case I decide to make a last, final check of that client’s system). And, for the very first time ever, I will prepare my annual paperwork immediately at the end of my company year. My accountant knows I’m shutting the company down and he’s expecting the paperwork.

There are just a few tasks to do.

I’m updating my social media profiles to show I am now a pipe & slippers (and dressing gown, of course) man.

LinkedIn Updated

The shareholders have, of course, been informed. They seemed cool with it. In fact they really did not seem to care at all.

Shareholders informed

The obligatory time-piece-based leaving gift from the subordinates.

Mickey Mouse Watch

The tools of the trade are no longer required.

Keyboard hung up
Time to start the clear-out

And senior management took me out for a slap-up feast on my last day.

What to do now? I only have a couple of hundred books to read, dozens of films to watch, a stupidly large and rather shabby garden to beat into some sort of shape, a list of DIY and house things to do that’s longer than my arm, half a years’ worth of New Scientist to catch up on.

I know what to start with…

A nice cup of tea.

Friday Philosophy – What Is The Thing I Have Been Doing For 20 Years? June 2, 2023

Posted by mwidlake in conference, Friday Philosophy, Presenting, VLDB.
Tags: ,
3 comments

The 21st May 2003 was the day I first presented to the Oracle community. The talk was about how my colleagues and I were working on a new database to hold information about genetic variation, especially in humans. We all have a unique genome (even identical twins have a few genetic differences from each other, which surprises most people) and we were developing an application to show the differences between individuals (note, totally anonymised!) and identifying how common each difference was in the population. The long term goal was to identify what, if any, impact these differences had. The application was based on an Oracle database and it was going to be a big database. The two main tables would hold 3.5TB of data between them, which back in the early 2000’s was a heck of a large database.

This first presentation was given to the Oracle Life Sciences Community, which would soon morph into the Oracle Life Sciences User Group, which sucked me in as one of the organisers. I’ve never decided if I should thank Susie Stephens and Charlie Berger (the two key Oracle employees behind OLSUG) or not for getting me going with presenting and user groups. I jest, they were both brilliant. And the presenting and being part of the community transformed both my career and my work satisfaction.

It was a while until I presented publicly again. It was the next day! At the Oracle Discovery User Group Meeting (22nd May). This was when I first talked about our “Trace” database, the one holding all the raw genetic sequencing information for the human genome project and also for other publicly available genome sequencing efforts, such as for mice and rice. At that time the Trace Oracle database, on 8i, was 240GB and indexed 5TB of raw data on disc. Backing up the raw data and synchronising it with the Oracle-held metadata was becoming a real issue and a key reason I had been hired was to move it all into a single Oracle database. By the end of 2003 it was indeed all in a dedicated Oracle 9 database, incremental backups, nicely partitioned, performing well. As more data had been constantly arriving, the database was about 12TB at the end of 2003. There were some databases around that were bigger than that (some significantly bigger!) but as they were mostly to do with banking, related finance, or “defence” (no one likes to say War or Killing) the organisations would simply not talk about them.

The reason I mention the science and the database size is because when I first started presenting on Oracle tech I got asked only a few questions about the Oracle stuff (maybe I just explained it very well? ) and a load of questions about the Science! There were some people who were very interested in how we looked after such large databases, especially as we used really cheap kit to host and query such an (at the time) huge data volume, and also how we backed it up and generally looked after it. But if I had allocated 10 minutes of the presentation to Q&A it would be 2 minutes on database stuff and 15 minutes on genetics and the science. Yeah, 15 minutes, I kept over-running! I would often end up in the corridor outside the room, talking with people well after the next session got going.

The work being done then by the scientists that I (actually, to be more accurate, the teams I looked after) supported laid the foundations to huge advances in biological knowledge that now are resulting in new treatments for cancer, dementia, malaria, multiple sclerosis, arthritis and a whole bunch of diseases you never heard of but together cause misery to millions. It remains the role I am most proud of.

And, of course, it led to 20 years of me getting up in front of an audience and talking about “stuff”, mostly Oracle tech but sometimes management topics or IT disasters. It also led to me being part of the Oracle user group community, a bunch of ladies and gentlemen who have helped and guided me so much.

A Little Materialized View 23C Improvement April 24, 2023

Posted by mwidlake in Architecture, database design, development, PL/SQL, SQL.
Tags: ,
3 comments

I’ve been doing a lot of work on Materialized Views recently. MVs are a really old feature of Oracle (originally called snapshots and came in with ?V7.3?) and though they can be very useful, they just don’t seem to be used much anymore, which is a shame if you can live with maintenance pain they come with. I think the last time before now that I really spent time on MVs was Oracle 10g! Might have been 11.

Little has changed with MVs for years and years, though as a friend in Oracle commented “They work, and no one buys Oracle for Materialized Views, so why change them?” That said, 12.2 brought in Real Time Materialized Views. Go Look at Tim Hall’s post if you want to know more on them.

Sometimes they do show their age. The DBMS_MVIEW package is a bit old & clunky for example (no pipeline functions to explain your MVIEW). And you can’t use ANSI standard joins with them – or, at least, it is not supported.

Well, that was until 23C!

Oracle 23C Free is now available to download and the documentation has been released and, in the data warehousing guide, they make this comment:

That’s nice.

Personally, I tend to stick with the old Oracle join syntax and the ugly (+) for outer joins, because I have been doing it for 30 years and I’m old & ugly. But more and more developers are much happier using the ANSI syntax. And the ANSI syntax is more flexible. There, I admitted it.

Normally I would do a few little tests for a blog post on a feature, but I’m retired and I have not got 23C yet, so I am just highlighting the official documentation and nothing more.

And I was missing out on so many of my friends doing 23C posts and getting ACE points for it, so I am wondering if I will get away with citing this post for a few points myself… 😀

(Joke – I never do anything for ACE points and I think those ACEs who get all angry about the points thing are doing their community work for the wrong reasons).

Retiring. Again. Really! April 20, 2023

Posted by mwidlake in off-topic, Private Life, working.
Tags: , ,
10 comments

Over the last few years I’ve gained something of a reputation for banging on about being retired, only to then mention the following week something I found out working for a client. Fingers are pointed and people laugh at me and say “so much for retired!” In my defence, I have said many, many times that, for me, I see retirement as not so much stopping working totally but more having far more control on what I do and for how long. And it does not involve daily commutes or 6 months tied to contract. And for the last 10 years I have pretty much stuck to that, more so as time has progressed. I now only work if a friend asks me to help out.

My friends know what I’m like! From a speaker/organiser twitter group I’m in.

Well, I’m banging on about retirement again, only this time it really is a bit different. Today I am 55 and I am retiring. Honest!

Once I have wrapped up the current assignment (final report sent earlier this week, I have a meeting next week – and that’s it), I’ll be doing my final company accounts for June and shutting down ORA600 (UK) Ltd. I’ll be terminating my work insurance so only an idiot would let me on their systems. And I’ll probably delete my LinkedIn profile – well, I’ve never like the bloody site anyway.

The reason for this much harder, more complete retirement is – I just can’t do the job anymore! It takes too much out of me.

In December 2019 I was sat in Intensive Care in a Cambridge hospital, plugged into a ventilator that was blasting pure oxygen into my lungs at high pressure. I’d got a really quite bad case of influenza and a secondary bacterial lung infection. Don’t worry, this is not a “oh poor me” post, but the illness did have a large impact on me. I had something called silent hypoxia – my blood oxygen was so low I should have been unconscious, or at least incoherent, but I was sat up asking the docs how I was doing. And they were looking puzzled and saying “we don’t really know…?”

I got better, they let me out, I had a period of recovery for a few months, and slowly things like my breathing and memory and coordination got better. But never *quite* back to how it had been. The biggest problem as far as work is concerned is that getting new information in my head is like getting a square wooden peg into a round hole. It can be done, but you have to really whack it with a mallet! My memory is also shot. I never had a good memory anyway, and we all deteriorate with age, but that spell with really low blood oxygen seemed to take a large swipe out of mine. Being as low in blood oxygen as I was can do damage to the soft, squidgy things inside you, including your brain, and it seems to have dropped 10 points off my IQ and put a permanent leak in my memory. This was not a slow decline like you get with dementia or age, it was like someone simply turned my brain dial down from 10 to 7.And forgot to turn it up again.

The end result is I now find it a lot harder and a lot, lot slower for me to sort out issues for the client. I can balance that to some degree by simply putting in a  lot, lot more hours (which I do) but it also means I get stressed at my lack of progress and tired from all the hours, and I ignore all the things I semi-retired to do. I can still solve the problems and investigate areas that are new to me, but I can’t expect a client to pay for all the time it takes. And if I can only hammer so much new stuff in my head in a given period, I want it to be other stuff I am interested in like science. Or cat videos.

Well, I don’t have to work, it’s not making me happy anymore, so I’m stopping and I’ll do more of what does make me happy. I won’t be disappearing out of the community just yet, I have things to do still and I actually *like* some of you lot. And I might do what some other “retired” people have done and start doing more technical blogs. But don’t bet on it, it might be more stuff about lawn mowers and bread. But I won’t be working.

I really am retiring. I need to spend more time with the current Mrs Widlake and the cats.