BMCs like DRAC or iLO are invaluable when you have hundreds or thousands of fresh servers with no OS. The BMC lets you mount an OS or hypervisor ISO in a way reminiscent of DaemonTools et al., and update bios and other firmware from a shared network folder. I'm pretty sure there's even an API to develop against.
> When someone is shopping for a drill bit, they don't want you to sell them a drill bit. They want you to sell them a hole in their wall.
If you're wondering, most people will put a nail or hook in the hole in their wall, and hang a picture or something. 3M would go on to sell them tape or other wall adhesives instead of a hole in their wall.
Rephrased to correlate to this thread:
> When someone is shopping for document signing software, they don't want you to sell them software. They want you to sell them a set of agreements already negotiated with their business partners.
If you're in .NET or Powershell, and Excel is installed on the PC, you already have the Excel libraries. Not to mention the amazing ubiquity of functions to convert, import, manipulate, export, and otherwise work with spreadsheets. Or just work with the functions directly.
Yes, but if it weren't hard-coded, it wouldn't count as being a one-liner. ;)
Besides, it's rare for DNS names to change; the point of DNS is the underlying server addresses can change without changing the name. And a service like SMTP relay should be less likely to change than other types of host.
But still, good point. This could easily be a Param if the function would be used in many environments.
If you convert to CSV, emailing the non-payers is a one-liner in Powershell. Even converting the XLSX to CSV is pretty easy with the Excel .NET libraries, and well-documented in blog posts and StackOverflow.
Sometimes, the bigger challenge with automation is getting users to see a service, function, or utility as the underlying algorithms and calls, and not as this immutable black box interface. Once viewed this way, it's easier to separate automation into more easily defined goals.
---
Foreach ($nonpayer in (Import-CSV ("C:\billing\" + (get-date -F MM) + ".CSV") | where {$_.pmt -eq 0})) { Send-MailMessage -from [email protected] -to $nonpayer.email -SMTPserver relay.example.com -title " Payment Overdue" -body "Hello $($nonpayer.first-name), your payment for $(get-date -f MMMM) was not received. Please send payment today."};
One of my high school friends finds my Arduino obsession ridiculous because he learned all about soldering and electronics st the high school he attended before transferring to mine. Our poor school district could barely afford welding, small gas engines, and basic Windows and Office (document/spreadsheet/presentation program basic use) classes.
Understanding how these work is one thing, and that used to be enough to be worth employing. Today, you have to have a passion for using that knowledge to solve problems.
"Computer" science is more like "computational" science - reducing everything to numbers, using logic to make safe assumptions and find paradoxes, etc. Humans can't compute as well as transistors so we use them for all of the heavy thinking.
It's engineering in the same way that constructing a stainless steel table is mechanical engineering (buy a sheet, cut it, put 8 bends in it, weld corners, grind corners, polish corners with acid, weld legs on, grind leg welds, polish leg welds)