|
|
Microsoft Office is overkill for most people -- 90% of the folks use 10% of the features. LibreOffice is good enough, although for those who use more than 10% of the features, LO falls down quickly. It's a distant second best to Office. Also, while each can read the other's formats, translation of moderately complex documents is a one-way trip -- neither MO nor LO plays nice with the other.
The advantage of Google Docs over Notepad is for when I want Google to know what's on my shopping list. And Google wants to convert everything to their format, regardless of what the owner wants.
Folks complain about the Microsoft 365 subscription? For $100 USD I get 6 licenses for all of Office + OneDrive. Each license allows me to install Office on multiple PCs (all access same license materials), plus on tablets and phones. 1 TB of OneDrive space is far more than I'll ever need, and it makes sharing of files across my devices effortless, plus sharing with others.
For $100/year I share with 4 family members, and have a license left over, so my actual cost is $20/person. This doesn't work for everyone, but the cost of what is provided can be quite low.
|
|
|
|
|
BryanFazekas wrote: 90% of the folks use 10% of the features
That is probably closer to 1% than 10%.
As you poitned out, the lacking format compatibility between MO and others is really a pain - and since MS moved to xml content, I hardly understand why it is still that complicated.
BryanFazekas wrote: $20/person
Ok, this sounds more reasonable than $100/year for a single user. What bothers me is not that price in particular, it is the accumulation of subscriptions that you have to do nowadays (phone/tv/sw/storage/, soon it will be cars, and maybe other household things) which brings the monthly bill on a quite high level ! The subscription prices are extremely high - a SW license that you would have paid $150 and maybe kept for 5 years before paying for an upgrade is now around $99.90/year, this is a $150 vs. $500 difference. So maybe OK for subscriptions, but not for the same price as the full license to be paid every year...
|
|
|
|
|
Well, you can always go back to stone tablets and smoke signals if you really want to save money.
|
|
|
|
|
I use LibreOffice with almost no regrets (I reckon PowerPoint is far better than Impress).
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
License keys are transferable.
Some companies buy in bulk then consign the ones they don't use.
One can buy these license keys at a fraction and that MS honors.
Just keys; no software; you download from MS and activate with your key.
You should be able to reuse your keys; if you can find them.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
I have been using libre office for years. I only use MSOffice at work when I have tooo.
To err is human to really elephant it up you need a computer
|
|
|
|
|
Wordle 307 3/6
⬛⬛🟩⬛🟩
⬛⬛🟩🟩🟩
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 307 3/6*
🟨🟨⬜⬜⬜
⬜🟩⬜🟨🟩
🟩🟩🟩🟩🟩
Happiness will never come to those who fail to appreciate what they already have. -Anon
|
|
|
|
|
Wordle 307 5/6
🟨⬜⬜⬜⬜
⬜⬜🟩⬜🟨
⬜⬜🟩🟨⬜
⬜🟩🟩🟩⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Back to 4:
Wordle 307 4/6
🟨⬜🟨⬜🟨
🟨⬜🟨⬜🟨
⬜⬜🟩🟩🟩
🟩🟩🟩🟩🟩
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I like them greens!
Wordle 307 4/6*
⬛⬛⬛🟨⬛
🟨⬛⬛⬛⬛
🟨⬛⬛🟨🟨
🟩🟩🟩🟩🟩
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[ ^]
|
|
|
|
|
Wordle 307 4/6
⬜⬜🟩⬜⬜
⬜🟨🟩⬜🟨
🟨⬜🟩🟨⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
In 2 today - and, somehow, I feel cheated! It's not like I had figured it out. I just picked a word that would rule in/out some common letters - and bang, it's all over.
Wordle 307 2/6
⬜🟦🟦⬜⬜
🟧🟧🟧🟧🟧
|
|
|
|
|
Not too difficult today:
Wordle 307 5/6
⬛⬛⬛⬛⬛
🟨⬛⬛🟨⬛
⬛🟨🟨⬛⬛
⬛🟨🟩⬛🟨
🟩🟩🟩🟩🟩
Get me coffee and no one gets hurt!
|
|
|
|
|
Wordle 307 4/6
🟨⬜⬜⬜⬜
⬜🟨⬜⬜⬜
⬜🟨🟨⬜🟨
🟩🟩🟩🟩🟩
|
|
|
|
|
Sometimes, defensive (employing rules that prevent the user from shooting themselves in the foot) programming/design can come back to bite you.
Consider this: A simple data collection/reporting application for vending machines. A couple of properties of a machine are initial meter reading and initial meter reading datetime. Once a machine has been setup, users log meter readings and money collected.
The rules are simple:
0: Datetime for a new reading must be greater than the previous reading datetime.
1: Meter reading must be greater than or equal to the previous reading.
If these rules are violated, the screen warns the user and refuses to save.
Did anybody spot the design/logic flaw here?
For two years and 58 vending machines, this model has worked perfectly, but real life has a way of disrupting the model.
Rule #1 is a problem if the meter gets reset to 0 or the meter/plc gets replaced! Apparently, this just happened on one of their machines, and now the customer is unable to enter a new transaction!
Sure, there are multiple ways to deal with a 'once in 2 year' glitch:
0: Manual entry (with a note) behind the scenes to force the new entry. This creates a huge overage for that transaction (against actual cash/cc collected) and creates other chaos with the 'order of things' in some reports.
1: Tape a note inside the machine informing the user to add X to the current reading before entering into the system. It's only for a few months until the end of the FY.
2: Create a new vending machine.
3: Alter the previous transactions to negative numbers thereby keeping the flow/order/calculations correct.
1 or 2 is what I'm pushing for, but my bp disagrees and thinks I should modify the app to enable a reset gracefully. I don't disagree, but it's not a priority.
One of the most challenging parts of this job is premonition...anticipating the edge cases before they happen. I do my best, but it's often misunderstood as negativity or introducing unnecessary complexity to a problem. At least it stays challenging!
"Go forth into the source" - Neal Morse
"Hope is contagious"
modified 21-Apr-22 15:21pm.
|
|
|
|
|
Option 4: Add a setting that is automatically added to the reading. This can be 0 for most machines and a sensible value for the machine you are 'hacking'
Quick and dirty.
|
|
|
|
|
That's actually a pretty good idea. Thanks!
"Go forth into the source" - Neal Morse
"Hope is contagious"
|
|
|
|
|
kmoorevs wrote: 0: Datetime for a new reading must be greater than the previous reading datetime.
1: Meter reading must be greater than or equal to the previous reading.
Well, for one thing, if local time is being used to track those transactions, rather than UTC, then if you're in a timezone that observes DST, every transaction will be rejected for a period of an hour when the clock gets moved back...
|
|
|
|
|
Use EPOCH timestamp that Unix/Linux uses. Make it 64 bit to make it last beyond 2038.
Don't know what a meter reading is so no help there.
It's been my experience that users will eventually find a way to break code.
Just a question of accidental or on purpose.
|
|
|
|
|
dandy72 wrote: if you're in a timezone that observes DST, every transaction will be rejected for a period of an hour when the clock gets moved back...
OK, you got me there. Can you imagine an underpaid manager taking meter readings at 2AM on Sunday? Thanks for the heads up, but I'm willing to take that risk.
"Go forth into the source" - Neal Morse
"Hope is contagious"
|
|
|
|
|
In my defense, I had very little context to work with. This could be some automated system that's working on transactions coming in 24/7.
Besides, it's an easy fix. Why risk it?
|
|
|
|
|
Overvalidation requires overtesting which itself causes more churn. That's the brutal irony of the situation.
The other day I spent almost an entire day poring over a routine because the test for it was broken - but it wasn't even the test itself, but bad metrics in a font file i downloaded.
I also can't count the number of times I've had to remove parameter validation as routines get nested inside the internals instead of being part of that API's surface area as things evolve, or to extend them with optional (read: nullable) parameters.
But worse is a situation like you describe. It's not an edge case - and the reason for that is you don't know all the situations in which the machine can be reset, necessarily - or do you? What about an EMP? Ergo, it's a failure condition that's not being handled gracefully. Therefore, it's a design flaw, and one that would have been non-obvious to catch in the design phase.
You got bit, only I don't think you did anything wrong, because erring on the side of overvalidating is better than the alternative, but honestly, I would have done your time validation at another level, like halt if the clock isn't greater than the last time you read it, and I would have skipped the transaction amount accumulation checking altogether barring a scenario you can think of where it's necessary.
Can you pull it out?
Can you adjust the clock code so it checks that the clock's good on start, instead of checking it where you are? That way all you theoretically have to do to restart it on a machine reset it set the clock.
I'm flying blind here, so I may be talking out my backside, but all of this is just stuff that occurred to me.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Sounds like your data model needs to track the PLC and the case as 2 separate entities.
I think the new PLC should start as a new PLC-30 (0 initial start) placed in CASE-10. PLC-04 previously in CASE-10 is retired/scrapped.
Just keep an eye on the collectors as they will find new ways to trick the cash control reports. Like entering negative currency on PLC-04 to balance what goes in their pocket!
|
|
|
|