I'd say that, under EU consumer law, a device that completely stops functioning within 24 months is a clear case of "non-conformity" and reason for a full refund/replacement.
Grunnen
@Grunnen
Best posts made by Grunnen
-
RE: Google Permanently and Remorselessly Bricking Hardware Sold in 2014
-
RE: Solving the wrong problem. Wrongly.
@anonymous234 An e-mail can be saved. An e-mail can be referred to from a design document. An e-mail can be adressed to the customer and CC'd to a coworker, to the project manager and to someone from another team, so that everyone is informed even if they don't all have a particular software installed.
-
RE: The Official Status Thread
Just found this:
for i = 1 to 2 if i = 1 then #do something end if if i = 2 then #do some more things end if next i
-
RE: WTF Bites
Today I had discussion with a colleague about a database that has a primary key consisting of an UUID together with an user-entered identification.
I asked if there is any chance that you can have two entries with the same UUID but a different user-entered identification. We could not come up with any scenario. My colleague also couldn't imagine anything better than a fear that a UUID might not be really unique.
-
RE: New from Samsung: Fire and explosions
It's not just the opinion of Ars Technica, but also official now:
-
RE: WTF Bites
Well well well, what have I got here:
bool process(int line_nr, char* action) { switch (autogenerated_xml_parser_global[line_nr - 1]->action) { default: case ns2__action__I: (void)strcpy(action, "I"); break; case ns2__action__U: (void)strcpy(action, "U"); break; case ns2__action__D: (void)strcpy(action, "D"); break; } return true; } ... std::string action; bool success; action.reserve(20); success = process(line_nr, reinterpret_cast<int32_t>(action.data)); if (success) { if (action == 'I') { command.action = action_insert; } else { if (action == 'U') { command.action = action_update; } else { if (action == 'D') { command.action = action_delete; } else { success = false; } } } }
There is a suspicion that there is a bug in this code or in the code around it...
-
Support for commercial software
I have a
MSNLiveMicrosoft-account. Originally, like 15 years ago, I registered it to use MSN Messenger. But I did not want a Hotmail mail account, so I just registered a MSN account with my other e-mail address "grunnen@gmx.de".Fast-forward to 2014. I buy a Windows Phone and use this Microsoft-account to log on to it. Especially the calendar integration is nice, so at work I take the "Hotmail connector" to connect Outlook 2007 to the calendar so that I can drag-and-drop my work appointments to my phone.
Forward to 2015. Upgrade to Office 2013. It does not need the connector anymore. However, automatic configuration is useless, because Outlook interprets my user name as an e-mail address and tries to connect to "gmx.de", which fails. Solution: manual configuration for "Service compatible with outlook.com or Exchange ActiveSync".
Forward to 2016/2017. Microsoft has decided to migrate all accounts to a new server which is supposedly compatible to regular Exchange. If you log in using the old way, you just receive a single e-mail message "You need to reconnect Outlook to your account."
Problem: When "reconnecting", automatic configuration fails (because of the aforementioned reason) and I don't know the parameters for manual configuration to connect to the new server (and in Office 2016, manual configuration of a regular Exchange connection won't be possible anymore at all).
Attempt at solution: Chat support from Microsoft with LogMeIn remote access. First-level support in India insisted to set up an IMAP connection to "gmx.de". After repeating again and again that I want a connection to my Microsoft Outlook.com calendar and not to my gmx.de email, I got escalated to second level support. "Working" solution after one hour: an IMAP connection to outlook.com, of course without calendar support. Clearly they also haven't got the slightest clue.
Attemt 2 at a solution: create a hosts file that redirects autodiscover.gmx.de to the IP address of autodiscover.outlook.com. That works, but finally leads to the error "The action cannot be completed. the name cannot be matched to a name in the address list."
Attempt 3 at a solution / workaround: create an extra alias in my Microsoft account in the form of "grunnen@outlook.de" so that autodiscover should work normally. But no: "The action cannot be completed. the name cannot be matched to a name in the address list."
Of course I am not the only one having this problem:
But as usual on the Microsoft Community forums: no solution.
Okay, attempt 4 at a solution / workaround: create an extra alias in my Microsoft account in the form of "grunnen_addition_because_username_already_in_use@outlook.com". And yes, it works. Sort of.
But first: Why does Microsoft not even configure autodiscovery properly for all of their own servers?
Second: Why is the account name shown as something like "outlook_1234ABCD5678FEDC@outlook.com"? How can I configure everything so that the proper sender ("grunnen@gmx.de") will show up if I accidentally send an e-mail from Outlook using this account? Well, MS support does have something about that:
Okay, great. And what side effects will that workaround have?
Why can't a company with billions in cash make sure that this work smoothly?
-
RE: WTF is happening with Windows 10? And nothing else
Welcome back to Photo's!
We have a great new feature for face recognition. So convenient!
By enabling this setting, you recognise that you have received permission from all people that appear in your photos and videos.
[Accept] [Deny]I know it's similar to what WhatsApp does with your phone number connection - but I'm still curious how this can be legal. I mean, if the vendor should reasonably know that 99% of all consents given are fake...
Edit: Ok, let's click 'deny'
Disabling this setting will remove face recognitions in your photos. The photos themselves remain.
Are you sure you want to disable this setting?
[Accept] [Deny]Now what?
-
RE: How much data did I use in 1970?
Why would 2010 as a wrong date be better than 1970?
Actually, I also have a shitty Samsung phone (that I don't use anymore), which indeed does sensibleness checks on the system clock. For example, it only allows years up to 2014. If you try to set the internal clock to 2015, it complains about "invalid date" and aborts.
-
RE: WTF Bites
@Matches If a software cannot do something, it should give an error. Just randomly doing something else, that the user didn't ask for, is .
Latest posts made by Grunnen
-
RE: Why, oh why, do we return empty things on error
@Jaime Then remove the default constructor of
SomeType
and add a constructor that obligatorily initializes it into a valid state. -
RE: WTF is happening with Windows 11? And nothing else
@loopback0 Apparently this is a deliberate choice:
-
RE: WRITING TESTS IS NOT TDD!!!!!!!!!! (Re: The Official Funny Stuff Thread™)
@Gąska said in WRITING TESTS IS NOT TDD!!!!!!!!!! (Re: The Official Funny Stuff Thread™):
Well, if you actually practice TDD, you naturally end up committing both tests and implementation together anyway.
I had to look up the definition of TDD, and apparently it entails:
- Write a test
- Verify that the test fails
- Write the shittiest possible code that could make the test pass
- Verify that the test passes
- Refactor the code into something less shitty
Now, if you want to strictly embed this into CI, you have to check the intermediate stages and thus you cannot commit everything in one go. So, the CI should only allow the following types commits:
- 1+2: A test is added. The added test fails.
- 3+4: Code is added. A test that failed before, now passes. The added code is shitty (e.g. returning a hard-coded value that the test expects instead of doing anything useful).
- 5: Code is modified. All tests that passed before, still pass. The code quality has been improved.
Maybe some kind of AI needs to be integrated into the CI enviroment to prevent the developer from doing 5) in one go with 3)+4).
-
RE: You know WPF, but do you know .Net Core?
@topspin In C++ it is already a huge advantage to have "globals" that have an explicitly defined lifetime and are constructed and destructed in a determined order, compared to globals scattered around modules with indeterminate lifetimes, and core dumps if they depend on each other in a way that is incompatible with the construction/destruction order that the compiler thought out.
-
RE: Opinions: What kind of API service logging is useful?
Remember that, no matter the logging level, you don't want sensitive data (like passwords, social security numbers, credit card data etc.etc.) accidentally ending up in your logging from indiscriminately logging all database queries or input form data.
-
RE: Unit tests for methods with trivial logic?
@Gąska Well, one of the main arguments in this thread has been that ideals like 100% test coverage etc. cost a lot of effort, which ultimately doesn't translate into an equal amount of value for the customer. So your remark seems to suggest that there might be truth to that.
-
RE: Unit tests for methods with trivial logic?
@Gąska said in Unit tests for methods with trivial logic?:
Don't tell me you've never accidentally introduced new bugs in code that used to work fine.
Surely. And that obviously happens with code that you touched - and by your logic, any changes in code should lead to failed unit tests, and the unit tests only check if code has changed, not if code is correct. So after changing the code, you update the unittest so that it doesn't fail anymore, and that accidentally introduced bug won't get noticed.
-
RE: Unit tests for methods with trivial logic?
@error said in Unit tests for methods with trivial logic?:
That he desperately needs an IoC framework.
I was intentionally exaggerating, but with an IoC framework you'd still have a lot of overhead if you want to do 'pure' unit testing.
-
RE: Unit tests for methods with trivial logic?
@Gąska Yeah well, you can make a function
pi()
with a unittest, and make a functioncircle_radius()
with a unittest. And then, yes, you are completely right, the unittest forcircle_circumfence()
must not depend on the functioning of thepi()
function.So, we encapsulate
pi()
in aclass pi_calculator
and in order to unittest it, we derive it from ainterface abstract_pi_calculator
and we implement aclass pi_calculator_mock
with another functionpi()
which e.g. simply returns 3. Obviously we then also need to putcircle_circumfence()
in aclass circle_circumfence_calculator()
which we pass theabstract_pi_calculator
in the constructor. Then, of course, we also need aclass circle_circumfence_calculator_factory
to encapsulate all these internals properly.Hence, we can finally perform our unittest:
assert(circle_circumfence_calculator_factory.get_circle_circumfence_calculator(circle_circumfence_calculator_factory.mode_unittest).circle_circumfence(1) == 6)
And thus we achieve enlightenment.