Opinion: Start meetings ontime – "give it a few minutes" is rude to other attendees

I attend a lot of online meetings nowadays, and I can't tell you how often at meeting that starts at 10 AM actually ends up starting at 10:05 AM or 10:10 AM to cater for people who are running late. Right now I'm in yet another meeting that hasn't started yet, as we're just "giving it a few minutes for stragglers to join".

Now it's a different story if there is a specific person who really is needed in the meeting, and they've let you know they are running a few minutes late. But I see this as routine in pretty much every meeting I attend. Meetings almost never start at the correct time.

Don't do this!

All you are doing is being rude to, and wasting the time of, the people who did turn up at the right time.

I spent a lot of time coaching kids playing baseball, softball, and soccer, and it was the same thing. I always made it very clear to all the parents that practice sessions would start and finish on time. Anything else is just rude to the people who make the effort to be on time.

I understand that things come up and people will be late. Sure. But meetings should run for the people who met with the timings, not for the people who didn't.

 

Opinion – Modern isn't a synonym for Better

I've been in the IT industry a long time. I see trends come and go. (Mostly they go). At this point, I think I'm an OK judge of what's going to fly and what isn't. (Far from perfect but OK).

One thing that always puzzles me though is the way the word Modern is used as a put-down for things that aren't modern, as though it's a synonym for the word Better.

It's not.

SQL Language

My favorite over the years has been the SQL language. I cannot tell you how many times I've heard about its imminent death, and how we need a modern alternative.

And yet, time after time, even the products that claimed they didn't need a SQL layer seem to end up adding one.

I think this comes from a type of brashness that I see in many new developers where they think that the output of their last day's thinking is somehow vastly superior to all the thinking that's gone on in the industry over decades.

Guess what? It usually isn't.

It was pretty funny watching products like MongoDB appear and claiming to not need all that pesky ACID transaction stuff. And after a few disasters from the lack of it, then add it into the product as a feature.

Wow, who knew that transactions and consistency actually mattered in most applications?

We aren't all writing blog post or chat applications.

It was also pretty funny to see NoSQL get redefined as Not Only SQL.

Modern Data Warehouses

I like to keep across most data-related trends and products, even if I don't plan to use them. I want to be able to discuss them sensibly and understand the pros and cons of each.

I spend some time every single day, learning about data-related products, applications, and languages.

Over many years, I've seen what works and what doesn't when it comes to data warehouses, and have lost count of how many shiny new things were going to fundamentally change how we work. The put-down is always that you want a modern data warehouse, not one of those old ones that required hard work.

Guess what? Building a good data warehouse is hard work.

As an example, the next time you hear someone tell you that you should just apply your analytics tools directly over your transactional systems, at least stop and ask yourself how that would be a good idea.

In other areas of your life, I'm sure you have a built-in detector for snake oil salesman. It needs to be applied to technology too.

Image from Clark Stanley (public domain)

Hadoop

Yesterday I was amused reading this article by Derrick Harris on What happened to Hadoop?

When Hadoop first appeared, I spent quite a bit of time checking it out. Then when the SQL Server team became enamoured with it and added HDInsight (their flavor of it), I spent even more time checking it out. I even did the Big Data certification in the Microsoft Professional Program that I wrote about recently.

And the more and more I looked into it, and the more and more that I played around with it, I kept feeling Is that it?

I kept feeling like I was taking part in an Emperor's New Clothes skit.

There were certainly possible use cases for it, but almost every time that I saw it being forced into a solution, it was the wrong tool. So why did the technical people involved want to push it in? Either they just wanted to learn about the shiny new thing to enhance their CVs, or somehow they were bowled over by the hype.

I remember writing blog posts back in 2013 asking if most use of Big Data was mostly just Big Hype instead.

Tools aren't better just because they're considered modern. Don't get lost in the hype.

 

 

SDU_FileSplit – Free utility for splitting CSV and other text files in Windows

When I was doing some Snowflake training recently, one of the students in the class asked what utility they should use on Windows for splitting a large file into sections. They wanted to split files for better bulk loading performance, to be able to use all available threads.

On Linux systems, the split command works fine but the best that most people came up with on Windows was to use Powershell. That's a fine answer for some people, but not for everyone.

Because the answers were limited, and people struggled to find a CSV splitter, I decided to fix that, and create a simple utility that's targeted as exactly this use case.

SDU_SplitFile

SDU_SplitFile is a brand new command line utility that you can use to split text files (including delimited files).

Usage is as follows:

SDU_FileSplit.exe <InputFilePath> <MaximumLinesPerFile> <HeaderLinesToRepeat> <OutputFolder> <Overwrite> [<OutputFilenameBase>]

The required parameters are positional and are as follows:

<InputFilePath> is the full path to the input file including file extension
<MaximumLinesPerFile> is the maximum number of lines in the output file
<HeaderLinesToRepeat> is the number of header lines to repeat in each file (0 for none, 1 to 10 allowed)
<OutputFolder> is the output folder for the files (it needs to already exist)
<Overwrite> is Y or N to indicate if existing output files should be overwritten

There is one additional optional parameter:

<OutputFilenameBase> is the beginning of the output file name – default is the same as the input file name

Example Usage

Let's take a look at an example. I have a file called Cinemas.csv in the C:\Temp folder. It contains some details of just over 2000 cinemas:

I'll then execute the following command:

This says to split the file Cinemas.csv that's currently in the current folder with a maximum of 200 rows per file.

As you can see in the previous image, the CSV has a single header row. I've chosen to copy that into each output file. That way, we're not just splitting the data rows, we can have a header in each output file.

We've then provided the output folder, and also said Y for overwriting the output files if they already exist.

And in the blink of an eye, we have the required output files, and as a bonus, they're all already UTF-8 encoded:

Downloading SDU_FileSplit

It's easy to get the tool and start using it. You can download a zip file containing it here.

Just download and unzip it. As long as you have .NET Framework 2.0 or later (that's pretty much every Windows system), you should have all the required prerequisites.

I hope you find it useful.

Disclaimer

It's 100% free for you to download and use. I think it's pretty good but as with most free things, I can't guarantee that. You make your own decisions if it's suitable for you.

 

Opinion: Please let me have a clean desktop

I might be a bit anal about this but I really dislike clutter all over my computer's screen desktop. You'll notice above that I keep it empty. If there's something on my desktop, it's something that I'm working on really briefly. If I need to do a presentation, I might have a single folder called Desktop that I'll sweep anything on the actual desktop into.

There are two things that drive me crazy in terms of desktop clutter though:

The first is applications that insist on putting icons or shortcuts on your desktop during installation. Hello, it's not 1981 any more.

And worse, if you delete the shortcuts,those applications often put them back every time they are auto-upgraded.

Application writers: Please don't do this.

The other issue is around IT departments. I spend a lot of time working at client sites. And on many of the corporate desktops that I'm supplied to work with, the IT department have both plastered shortcuts all over the desktop, and worse, made it so that I'm not able to delete them.

IT departments: Please don't do this.

Opinion: Are red-haired DBAs unwilling to learn?

I've seen a lot of discussion lately about diversity and inclusion, and rightly so. It's incredibly important. But there are two points that I want to draw attention to. The first is that language matters. And the second is that we shouldn't be generalizing about people, based upon either their physical characteristics, or their race, religion, sexual preferences, etc.

Language that singles out people based on these things is regularly called out. But one that's often missed is age.

I was disappointed the other day to hear one of my friends who is normally a champion for diversity and inclusion, saying:

Quite a significant number of older DBAs I've met just think what they don't know is not their job to learn.

Regardless of how you react to that sentence, ask yourself how you would have reacted to any of these instead:

Quite a significant number of female DBAs I've met just think what they don't know is not their job to learn.

Quite a significant number of Christian DBAs I've met just think what they don't know is not their job to learn.

Quite a significant number of gay DBAs I've met just think what they don't know is not their job to learn.

Quite a significant number of red-haired DBAs I've met just think what they don't know is not their job to learn.

Anyone saying those things would rightly be shouted down. The person's characteristics, beliefs, preferences, etc. have NOTHING to do with their interest in learning. I have many older friends who are always at the cutting edge of modern technologies, and have a thirst to learn. Conversely, I have many younger friends who see a job as a means to getting some money and will put as little effort as possible into their own development.

The person's attitude is the issue here, not their age, no more than it's their gender, sexual preference, religion, or hair color.

When I started in IT, the entire industry was very young. Computer Science degrees in their current form either didn't exist or were extremely rare. The majority of people who entered the industry then were career starters, and they were young. But they aren't now. So while IT has always seemed a "young" industry, it's not now. In IT, we now have a big spread of ages.

Sadly though, ageism is still rampant in our society and seems to be one of the remaining forms of discrimination. And of course the final sentence was:

All old white men, of course.

Opinion: The best apps tolerate user mistakes

Over the years, I've been noticing which apps users love and which ones they don't like, or even hate. And I've decided that one of the biggest indicators of this is about how well they tolerate mistakes by users.

Users tend to learn to use apps in three ways:

  • They watch or read some instructional material (this is actually the least common)
  • Someone else shows them how to use the app (this is really common)
  • They just experiment with the app (this is actually the most common)

How well do your apps allow people to experiment?

  • Can a user click to enter part of an app without consequences?
  • If a user starts to create something, can they opt out at the last moment?
  • If they did create/change/delete something, can they undo it?
  • Can they truly undo the action, not just reverse it with a compensating action? (i.e. can they make it like they never did it in the first place?)

I see new users who are terrified of using applications, and time and again, it's they are actually terrified of "messing something up" or "doing something by mistake". In either case, they're worried that they can't fix what they did. (And in come companies, they're going to be blamed for doing it).

How do your applications rate on this basis?

Opinion: Banks, Governments, Councils – please stop aiding identity theft

I don't know if it's an Australian "thing" but whenever I'm setting up new financial or government accounts, these organizations insist on actually sending things to our street address.

Given how rampant identity theft has become in many places, this is just not sensible.

Awesome image by Mathyas Kurmann

Take a look at letterboxes that people have on local streets, and please try to convince me how sending anything there, is in any way safer than sending it to a post office box.

Post Office Boxes

I know that in some countries, post office boxes are a bit anonymous. That's not the case here in Australia. You have to take a lot of steps to prove who you are when setting one up.

What post office boxes are, is far, far safer than street letterboxes.

There have been countless examples of mail being stolen from letterboxes. Apartment complexes are even worse. Often there are a bunch of them in a place that isn't too visible, and they're often broken into. Even breaking into them isn't all that necessary as I often see mail just sticking out of letterboxes.

And the situation is far worse for people who travel regularly. Do you want your mail being collected in a post office box, or have ever-increasing amounts of it sticking out of a letterbox? (At least many of us have good neighbours who will help with this).

Please don't force us to send mail to a letterbox in our street, when we have a perfectly good post office box!

One final even-worse scenario

I have to close by adding one of my even-worse scenarios that I see banks doing. When we call a bank to tell them we've changed address, often they send details of the address change to the previous address!

Yes, that's the one where we don't live any more.

 

 

 

 

 

Opinion: RIP Microsoft Professional Program

Three years back, with much fanfare at a partner conference, Microsoft announced the Microsoft Professional Degree program. It was going to be a set of courses that you could take that would lead to one of their professional degrees.

Now here in Australia, you can't just call something a degree, and I'm guessing that's the same in the USA, so I wasn't surprised when I noticed soon after I started with it, that the name had changed to the Microsoft Professional Program (MPP), and they'd dropped the "degree" word.

The first program available was for Data Science. It required you to complete 11 courses. Each course restarted every three months, and had an exam and certificate at the end. Importantly, to complete a program, you also had to complete a practical course, called the capstone project.

I loved these programs, and I completed four of them: Data Science, AI, Big Data, and DevOps.

It's not all roses

The program retirement was announced the other day. You can't enrol after next month, and you must complete everything before December.

Many people are part way through the program, have paid to certify previous exams, and are now unable to complete before the deadline. That's really not fair to them. A nice touch would have been to at least refund their exam certification costs if they're part way through a program.

And more importantly, what does it really mean for those that have invested time, money, and effort in the programs? I don't know but I'd almost bet that within a year, it'll be hard to even find any trace of the entire program ever existing.

What I don't love is the way that Microsoft has constant churn in these types of things. For things like certification that require substantial commitments to pursue, this type of churn is just not appropriate.

I wish it was the first time that many of us have been down this same path but sadly, it's not. (#MCM4Life)

Microsoft's offerings around learning have been really messy and jumbled for a very long time. The move to refocus learning around Microsoft Learn is a good move. I just wish they'd learn how to make these types of changes and consolidations without leaving their biggest supporters feeling abandoned (again).

Why I liked the MPP

I really liked the format of the MPP for a number of reasons:

  • You could take any of the courses for free (this meets the goal of the product groups who just want to get the information out there widely and without the friction of cost). Initially, that also included the exams.
  • You could pay for a certified exam. The courses were done in conjunction with edX and they would check out who you were. (i.e. government issued photo ID, etc.) If you wanted the certification, you needed to pay to certify all the relevant exams.
  • The content was not just Microsoft content. For example, the initial statistics course was actually a course from Columbia University. Some of the content was taught by DataCamp (who I'm not happy with after their data breach), and by a prof from Norway. This gave the material a wider context.
  • There was often a choice in the content. For Data Science, you could use either R or Python in each required course. For AI, there was a choice of areas of AI to work in: Speech, Vision, etc.
  • The work could be done in your own time, and fitted in amongst other activities as you had free time.

Tracks were expanding

Eventually, there were many tracks:

  • Data Science
  • AI
  • Big Data
  • DevOps
  • IoT
  • Data Analysis
  • Cybersecurity
  • Entry Level Software Development
  • IT Support

Thanks is due

Naturally, like with most things, the quality varied across the courses. But overall, I liked the effort that had been put into the classes.

A hearty thank you to anyone who was involved in creating these courses and their associated materials!

Awesome image by Pete Pedroza

For Posterity

Like a friend of mine and fellow MVP, Thomas LaRock, said in a recent post, I have no idea what really happens to the certifications that were achieved in the program. As I mentioned, I suspect they have suddenly been massively devalued. And as Thomas did, I include my course certificates for posterity.

 

Opinion: Don't call me and then ask me to identify myself

I continued to be stunned at how banks don't get security.

Had a call just now from a sales guy from the my bank. It's annoying enough that they call at night, but I really don't like it when they want to confirm who you are before they can talk to you.

Told him, Sorry, can't do. Have no idea who you are.

Why would I tell personal details to some guy who just calls out of the blue, claiming to be from my bank?

He said "you don't want to continue with the call then?", so I said "I'm guessing that's a no then". Invariably, it's just a marketing arm of the bank that's trying to sell you something or some service anyway.

I also had the same thing with a credit card company. They call me then say Before I continue, I'll need to confirm who you are".

I don't think so. You rang me.

Now the credit card company must be getting told this a lot, because they then followed up with You can see from the number that we called from that it's us.

I told them how easy it is to spoof a phone number, and told them that I'd received a phishing attack just the day before, that appeared to have come from Australia Post, and merged right in with previous texts from them.

I'm not sure what the right answer is for outbound marketing from banks and financial institutions, but I'm guessing that over time, they're going to get fewer and fewer responses to this type of approach.

Fix: curl complains that HTTP protocol is not supported in libcurl (same for HTTPS)

I'm writing this post more to remind myself next time I run into the same problem, but hopefully it'll help someone else too.

curl is a useful utility but the Windows version of it certainly has some quirks. Often though, that leads to error messages that aren't helpful at all.

I kept running into an error where it complained that HTTPS protocol was not supported in libcurl. When I tried HTTP, I saw the same error.

That started me on a journey trying to find the issue, and there are lots of articles that tell you that you need a version that was compiled with those protocols.

But of course, that's not the real issue. The problem is that the Windows version doesn't cope with single quotes like the other versions do. It wants double quotes.

Hope that helps someone sometime.