Are you ready to help shape a member’s entire shopping experience by giving them a positive first and last impression? We are looking for people who take pride in their work to join our team. As a Maintenance Associate at Sam’s Club, you are responsible for ensuring members see a well-kept parking lot, clean restrooms, and clean floors. This means you are constantly on your feet and on the go. However, maintaining a positive attitude will ensure customers have a great experience from start to finish.
You will sweep us off our feet if:
•	You thrive in fast-paced environments
•	You take pride in your work
•	You’re comfortable with change and quickly adapt to different work scenarios
•	You keep member satisfaction as your top priority
•	You can work an entire shift on your feet and work in physically demanding environments.
You will make an impact by:
•	Ensuring a safe and clean environment for members and associates by performing maintenance as necessary
•	Ensuring customers have a great first and last impression
•	Maintaining a positive attitude
The maintenance associate role is a great way to start a fulfilling career at Sam’s Club. Apply now!
The above information has been designed to indicate the general nature and level of work performed in the role. It is not designed to contain or be interpreted as a comprehensive inventory of all duties, responsibilities and qualifications required of employees assigned to this job. The full job description can be made available as part of the hiring process.
What you'll do...
Maintains safety of Facility by following all safety standards, procedures, and guidelines including conducting safety sweeps, following proper forklift spotting procedures, following proper procedures for handling and disposing of hazardous materials, following Company steel standard guidelines, and correcting/reporting unsafe situations to Management.
Cleans all areas of the Facility (for example, floors, windows, restrooms, trash receptacles) while following Company procedures, guidelines, and methods, and utilizing approved chemicals, supplies, tools, and equipment.
Ensures a safe and clean environment for Members and Associates by performing maintenance as necessary, responding to spills, operating floor scrubbers, and disposing of cardboard, plastic, and trash in accordance with Company Environmental Sustainability Program.
Maintains appropriate levels of Company-approved chemicals and supplies needed to ensure a safe and clean facility, including ensuring that chemical supplies are rotated and stored in proper containers in preparation for their use and placing orders to replenish supplies are low.
Minimum Qualifications...
Outlined below are the required minimum qualifications for this position. If none are listed, there are no minimum qualifications.
Must be 18 years of age or older
Preferred Qualifications...
Outlined below are the optional preferred qualifications for this position. If none are listed, there are no preferred qualifications.
Primary Location...
3951 GRAND AVE, CHINO, CA 91710-5429, United States of America
About Sam's Club
Sam Walton opened the first Sam's Club in 1983 to meet a growing need among customers who wanted to buy merchandise in bulk. Since then, Sam's Club has grown rapidly, opening more than 600 clubs in the U.S. and 100 clubs internationally. By offering affordable, wholesale merchandise to members, Sam's Club helps make saving simple for families and small business owners.
Sam's Club employs about 110,000 associates in the U.S. The average club is 134,000 square feet and offers bulk groceries and general merchandise. Most clubs also have specialty services, such as a pharmacy, an optical department, a photo center, or a tire and battery center.
Sam's Club is an Equal Opportunity Employer – By Choice. We believe we are best equipped to help our associates, customers and the communities we serve live better when we really know them. That means understanding, respecting and valuing diversity – unique styles, experiences, identities, ideas and opinions – while being inclusive of all people.
All the benefits you need for you and your family
Multiple health plan options, including vision & dental plans for you & dependents
Free Membership and discounts in fresh produce
Financial benefits including 401(k), stock purchase plans, life insurance and more
Paid education assistance with college degrees through our Live Better U program
Parental Leave
Pay during military service
Paid time off - to include vacation, sick leave and parental leave
Short-term and long-term disability for when you can't work because of injury, illness, or childbirth
Eligibility requirements apply to some benefits and may depend on your job classification and length of employment. Benefits are subject to change and may be subject to specific plan or program terms. For information about benefits and eligibility, see One.Walmart.com/Benefits.
Frequently asked questions
On average, how long does it take to fill out an application?
On average, it takes 20-30 minutes to complete your application for the first time. Subsequent applications will take less time to apply as our system saves some of your application information. Please note that some positions require the completion of assessments in order to receive consideration for that role. Those would take additional time.
Can I change my application after submitting?
No, you cannot change your application after submitting, so please make sure that everything is finalized before you hit the submit button.
How do you protect my personal information?
Processing of information on paper is minimal, and Walmart processes application information using an applicant tracking system (ATS). Access to the data within the ATS is restricted to authorized personnel, and the system itself is held to high security standards by Walmart.
What are the recommended Internet Browsers for applying for open roles?
Internet Explorer 8.0+
Firefox 4.0+
Safari 4.0+
Chrome 12+
See All FAQs
Recently viewed jobs
{{{ jobDepartmentName }}}
{{{ jobLocation }}}{{# jobState }},{{/ jobState }} {{{ jobState }}} {{ dateCreated }}
Events
FAQ
Terms & Conditions
Privacy Policy
Sitemap
Corporate
©2021 Walmart Inc. All Rights Reserved. Walmart Inc. is an Equal Opportunity Employer – By Choice.
Walmart Inc. participates in E-Verify. Learn more about applicant rights under Federal Employment Laws.


At the moment, I’m spending a fair amount of time thinking about a new version of the C# API and codegen for Protocol Buffers, as well as other APIs for interacting with Google services. While that’s the context for this post, I want to make it very clear that this is still a personal post, and should in no way be taken to be “Google’s opinion” on anything. The underlying issue could apply in many other situations, but it’s easiest to describe a concrete scenario.
Context and current state: the builder pattern
The problem I’ve been trying to address is the relative pain of initializing a protobuf message. Protocol buffer messages are declared in a separate schema file (.proto) and then code is generated. The schema declares fields, each of which has a name, a type and a number associated with it. The generated message types are immutable, with builder classes associated with them. So for example, we might start off with a message like this:

message Person {
  string first_name = 1;
  string last_name = 3;
}
And construct a Person object in C# like this:

var person = new Person.Builder { FirstName = "Jon", LastName = "Skeet" }.Build();
// Now person.FirstName and person.LastName are readonly properties
That’s not awful, but it’s not the cleanest code in the world. We can make it slightly simpler using an implicit conversion from the builder type to the message type:

Person person = new Person.Builder { FirstName = "Jon", LastName = "Skeet" };
It’s still not really clean though. Let’s revisit why the builder pattern is useful:
We can specify just the properties we want.
By deferring the “build” step until after we’ve specified everything, we get mutability without building a lot of intermediate objects.
If only there were another language construct allowing that…
Optional parameters to the rescue!
If we provided a constructor with an optional parameter for each property, we can specify just what we want. So something like:

public Person(string firstName = null, string lastName = null)
...
var person = new Person(firstName: "Jon", lastName: "Skeet");
Hooray! That looks much nicer:
We can use var (if we want to) because there are no implicit conversions to confuse things.
We don’t need to mention a builder at all.
Every piece of text in the statement is something we want to express, and we only express it once.
That last point is a lovely place to be in terms of API design – while you still need to worry about naming, ordering and how the syntax fits into bigger expressions, you’ve achieved some sense of “as simple as possible, but no simpler”.
So, that’s all great – except for versioning.
Let’s just add a field at the end…
One of the aims of protocol buffers is to support an evolving schema. (The limitations are different for proto2 and proto3, but that’s a slightly different matter.) So what happens if we add a new field to the message?

message Person {
  string first_name = 1;
  string last_name = 3;
  string title = 4; // Mr, Mrs etc
}
Now we end up with the following constructor:

public Person(string firstName = null, string lastName = null, string title = null)
The code still compiles – but if we try to use run our old client code against the new version of the library, it will fail – because the method it refers to no longer exists. So we have source compatibility, but not binary compatibility.
Let’s just add a field in the middle…
You may have noticed that I don’t have a field with tag 2 – this is not an accident. Suppose we now add it, for the obvious middle_name field:

message Person {
  string first_name = 1;
  string middle_name = 2;
  string last_name = 3;
  string title = 4; // Mr, Mrs etc
}
Regenerate the code, and we end up with a constructor with 4 parameters:

public Person(
    string firstName = null,
    string middleName = null,
    string lastName = null,
    string title = null)
Just to be clear, this change is entirely fine in protocol buffers – while normally fields are assigned incrementally, it shouldn’t be a breaking change to add a new field “between” existing ones.
Let’s take a look at our client code again:

var person = new Person(firstName: "Jon", lastName: "Skeet");
Yup, that still works – we need to recompile, but we still end up with a Person with the right properties. But that’s not the only code we could have started with. Suppose we’d actually had:

var person = new Person("Jon", "Skeet");
Until this last change that would have been fine – even after we’d added the optional title parameter, the two arguments would still have mapped to firstName and lastName respectively.
Having added the middle_name field, however, the code would still compile with no errors or warnings, but the meaning of the second argument would have changed – it would now map onto the middleName parameter instead of lastName.
Basically, we’d like to stop this code (using positional arguments) from compiling in the first place.
Feature requests and a workaround
The two features we really want from C# here are:
Some way of asking the generated code to perform dynamic overload resolution at execution time… not based on dynamic values, but on the basis that the code we’re compiling against may have changed since we compiled. This resolution only needs to be performed once, on first execution (or class load, or whatever) as by the time we’re executing, everything is fixed (the parameter names and types, and the argument names and types). It could be efficient.
Some way of forcing any call sites to use named arguments for any optional parameters. (Even though in our case all the parameters are optional, I can easily imagine a case where there are a few required parameters and then the optional ones. Using positional arguments for those required parameters is fine.)
It’s hard (without forking Roslyn :) to implement these feature requests ourselves, but for the second one we can at least have a workaround. Consider the following struct:

public struct DoNotCallThisMethodWithPositionalArguments {}
… and now imagine our generated constructor had been :

public Person(
    DoNotCallThisMethodWithPositionalArguments ignoreMe =
        default(DoNotCallThisMethodWithPositionalArguments),
    string firstName = null,
    string middleName = null,
    string lastName = null,
    string title = null)
Now our constructor call using positional arguments will fail, because there’s no conversion from string to the crazily-named struct. The only “nice” way you can call it is to use named arguments, which is what we wanted. You could call it using positional arguments like this:

var person = new Person(
    new DoNotCallThisMethodWithPositionalArguments(),
    "Jon",
    "Skeet");
(or using default(...) like the constructor declaration) – but at this point the code looks broken, so it’s your own fault if you decide to use it.
The reason for making it a struct rather than a class is to avoid null being convertible to it. Annoyingly, it wouldn’t be hard to make a class that you could never create an actual instance of, but you can’t prevent anyone from creating a value of a struct. Basically, what we really want is a type such that there is no valid expression which is convertible to that type – but aside from static classes (which can’t be used as parameter types) I don’t know of any way of doing that. (I don’t know what would happen if you compiled the Person class using a non-static class as the first parameter, then made that class static and recompiled it. Confusion on the part of the C# compiler, I should think.)
Another option (as mentioned in the comments) is to have a “poor man’s” version of the compiler enforcement via a Roslyn Code Diagnostic – add an attribute to any method call where you want “All optional parameters must be specified with named arguments” to apply, and then make the code diagnostic complain if you disobey that. That diagnostic could ship with the Protocol Buffers NuGet package, which would make for a pretty nice experience. Not quite as good as a language feature though :)
Conclusion
Default parameters are a pain in terms of compatibility. For internal company code, it’s often reasonable to only care about source compatibility as you can recompile all calling code before deployment – but for open source projects, binary compatibility within the same major version is the norm.
How useful and common do I think these features would be? Probably not common enough to meet the bar – unless there’s encouragement within comments here, in which case I’m happy to file feature requests on GitHub, of course.
As it happens, I’m currently looking at radical changes to the C# implementation of Protocol Buffers, regretfully losing the immutability aspect due to it raising the barrier to entry. It’s not quite a done deal yet, but assuming that goes ahead, all of this will be mostly irrelevant – for Protocol Buffers. There are plenty of other places where code generation could be more robustly backward-compatible through judicious use of optional-but-please-use-named-arguments parameters though…
Share this:
Twitter
Facebook
Like this:
Like Loading...
Related
Post navigation
Previous PostCommon mistakes in date/time formatting and parsingNext Post“Sideways overriding” with partial methods
53 thoughts on “Backwards compatibility is (still) hard”
Jude Melancon says:
June 3, 2015 at 7:53 pm
A hypothetical “type such that there is no valid expression which is convertible to that type” could have no default argument, since they cause the implicit use of a constant expression at compile time.
LikeLiked by 2 people
Reply
markrendle says:
June 3, 2015 at 8:25 pm
Interesting post, and of course I couldn’t resist trying to solve the problem :)
How about a fluent API? Properties can still be immutable; the actual constructor stays private so the public API can change without breaking anything. The main ugly thing is naming, since the method to set a property obviously can’t have the same name as the property.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Show hidden characters
namespace PersonApp
{
public class Person
{
public Person()
{
}
private Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public string FirstName { get; }
public string LastName { get; }
// Be nice if C# could cope with Properties and Methods having the same name…
// Let's protest by violating naming conventions :)
public Person firstName(string firstName)
{
return new Person(firstName, LastName);
}
public Person lastName(string lastName)
{
return new Person(FirstName, lastName);
}
public override string ToString()
{
return $"{FirstName} {LastName}";
}
}
}
view raw
Person.cs
hosted with ❤ by GitHub
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Show hidden characters
using System;
namespace PersonApp
{
public class Program
{
public static void Main(string[] args)
{
var person = new Person().firstName("Jon").lastName("Skeet");
Console.WriteLine(person.ToString());
}
}
}
view raw
Program.cs
hosted with ❤ by GitHub
LikeLike
Reply
jonskeet says:
June 3, 2015 at 9:11 pm
That’s the kind of pattern I use in Noda Time, yes. It does end up with a lot of objects being created though – and while normally I don’t like micro-optimizing this sort of thing, setting all the properties on a message with N fields ends up using O(N^2) memory… I know the GC’s good, but it feels a little flamboyant. I suppose with the builder as well, clients could always use that when they’re concerned about the cost. I doubt that we’ll end up going this way, but it’s a good thought.
LikeLiked by 1 person
Reply
Jude Melancon says:
June 4, 2015 at 5:53 am
A fluent API returning a type that requires a finalizing call or an implicit conversion to the target type could be implemented via a builder to avoid creating an object for every property set. It would unfortunately create two objects when modifying a single property, though.
LikeLike
Reply
jonskeet says:
June 4, 2015 at 6:16 am
That’s what we’ve got in the current implementation, other than the implicit conversion. It’s still ugly, and an implicit conversion would also cause confusion when using var I suspect.
It’s not so bad for more advanced developers who are used to the builder pattern, but it’s quite a burden to enforce on everyone wanting to use Protocol Buffers. It’s a matter of judging the right API for your target audience, and I’m hoping that GRPC will expand the target audience for Protocol Buffers a lot…
LikeLike
Reply
Alex Godofsky says:
June 9, 2015 at 1:21 pm
Wouldn’t it be best to fix this through a compiler or CLR optimization that reuses the ‘immutable’ object (since it should be able to detect that there are no future references to that object after the dot).
LikeLike
Reply
jonskeet says:
June 9, 2015 at 1:36 pm
Not sure which “this” you’re referring to, but if you’re basically saying “Trust the GC/CLR to deal with garbage quickly” I’m happy to do so to some extent – but not when there can be hundreds of allocations, each involving copying hundreds of fields.
LikeLike
Reply
Alex Godofsky says:
June 9, 2015 at 6:49 pm
I mean the O(n^2) memory thing. And I’m not suggesting you just trust the GC/CLR – I’m suggesting that the .NET/C# devs add in an optimization for this specific use case.
LikeLike
Reply
ViRuSTriNiTy says:
June 4, 2015 at 8:33 am
…why not using WithFirstName() and WithLastName()?
LikeLiked by 1 person
Reply
markrendle says:
June 3, 2015 at 8:28 pm
Fluent APIs are a good pattern for building immutable objects without breaking binary compatibility between versions, although in this instance it’s made ugly by the fact that ideally the setter methods would have the same name as the properties.
Anyway, here’s a spike: https://gist.github.com/markrendle/13c84348970224975837
LikeLike
Reply
Nzall (@realnzall) says:
June 3, 2015 at 9:39 pm
As requested by via Twitter, a more detailed explanation:
As far as I understand it, these feature requests are designed to improve backwards compatibility of APIs by improving how constructors handle optional parameters from client code consuming this API.
However, C# itself is ALSO an API of sorts. If we change how C# handles constructor calls in the way your second request does and no longer allow unnamed arguments for optional parameters, that’s going to break a lot of legacy code, even very recent code.
Suppose this was implemented in a future version of C# and you (Jon) decide to port the next major version of Nodatime over to it because of other new functionality being critical. Depending on the implementation of the C# change and how many optional parameters are called without a name, you could be looking at a long list of errors on the first attempt at building. You also then need to consider which constructors of the Nodatime API itself should be changed to make use of this new feature.
In turn, anyone upgrading to the next version of Nodatime later on (because their own product is updating to take advantage of the new features in C#) will also need to change their own API calls that make use of the updated constructors.
I realize that these changes likely make structural improvements to the readability and functionality of any code using these APIs, but many businesses also need to consider the implications for not just their own projects, but also for their clients and their users. If the necessary changes are too extreme, they might just not bother with this new feature, leading to a net result of C# being more complicated for no gain in code clarity and functionality.
LikeLike
Reply
jonskeet says:
June 3, 2015 at 9:46 pm
I wasn’t suggesting changing the behaviour of any existing code. I was suggesting something like adding a modifier to a method which would enforce that calls specifying optional parameters do so by name. Adding that modifier to an existing method would indeed be an incompatible change, but then so do many other changes on existing code. That doesn’t mean it wouldn’t be useful for new code. (In the same way, if you have an existing API with many overloads to make up for the lack of optional parameters, converting those into a single method call with optional parameters breaks binary compatibility – but that doesn’t mean that optional parameters are useless, does it?)
LikeLike
Reply
Nzall (@realnzall) says:
June 3, 2015 at 9:57 pm
I see. I was thinking more along the lines of a project-wide setting, but your solution indeed does make more sense. Something like a “named” modifier would indeed be useful. I also just realized that my example was inconsistent, with Nodatime itself having the project-wide setting configured, but the methods still requiring a flag. A modifier would be much more useful than a combination of the 2.
LikeLiked by 1 person
Reply
bp says:
June 4, 2015 at 10:11 pm
So you’re basically wishing for Python 3’s * guard?
def foo(bar, *, baz): pass
foo(1,2) #error
LikeLike
Reply
jonskeet says:
June 4, 2015 at 10:12 pm
Yes, something like that. (A friend made the same comparison this morning.)
LikeLike
Reply
Paulo Morgado says:
June 3, 2015 at 11:52 pm
What we really need is for people stopping using optional arguments on public APIs!
LikeLike
Reply
Stephan says:
June 4, 2015 at 7:43 am
Isn’t your second feature request already possible (and a nice example for) using a roslyn analyzer?
The analyzer could warn on or even prohibit using the API without named arguments.
LikeLike
Reply
jonskeet says:
June 4, 2015 at 7:59 am
Funnily enough, I was thinking about that just on the train this morning. Yes, it could – it would only be useful for VS2015 users of course, but better than nothing. Will edit to mention that.
LikeLike
Reply
Pingback: The Morning Brew - Chris Alcock » The Morning Brew #1874
Tommy Carlier says:
June 4, 2015 at 9:03 am
I actually like the mechanism StringBuilder uses: its Append-methods return the StringBuilder-instance itself, and the ToString-method creates the immutable string, like the current ProtoBuf builder implementation. I like the following kind of code for that:
var person = Person
.CreateBuilder()
.SetFirstName(“Jon”)
.SetLastName(“Skeet”)
.Build();
The advantage of the builder-pattern that the constructor-pattern does not have: it’s easy to build an instance gradually, like this:
var builder = Person
.CreateBuilder()
.SetFirstName(“Jon”)
.SetLastName(“Skeet”);
if (isDoctor) { builder.SetTitle(“Dr”); }
else if (gender == Gender.Male) { builder.SetTitle(“Mr”); }
else if (gender == Gender.Female)
{
if (isMarried) { builder.SetTitle(“Mrs”); }
else { builder.SetTitle(“Ms”); }
}
LikeLike
Reply
jonskeet says:
June 4, 2015 at 9:08 am
Yes, it’s definitely useful to still have the builder – it’s just a pain to need it. Look at how much cruft is in your original code vs var person = new Person(firstName: "Jon", lastName: "Skeet"). Unless I am building something gradually, I don’t want to have to care about a builder – I just want to say what I want the end result to be.
It’s not huge, and not awful to get used to – but it’s a barrier to entry.
LikeLike
Reply
Scott Brickey says:
June 5, 2015 at 1:49 pm
I would argue that the two code samples are pretty similar, other than some simple coding preferences…
I could just as easily write:
var person = Person.Builder.withFirstName(“Jon”).withLastName(“Skeet”).Build();
sure, the call to Build is an extra step (as mentioned first thing in your article), but I think it’s pretty minimal all said and done… but initializers/parameters on one line vs several is just preference (personally, I often place my named parameters in several lines for readability).
I would also argue that the example above includes extra logic (dr/mr/mrs/ms) which would be just as messy for your approaches (perhaps cleaned slightly with ternary’s, but still not “ideal”)… though for those cases, I would actually argue in favor of those being calculated (readonly) properties anyway… the need to pass them in a proto buffer would only depend on whether you’d need those values on the other side, or whether they can be re-calculated after deserialization.
Alternatively, what about a lambda style builder?
var person = Person.Build(p => p.withFirstName(“Jon”).withLastName(“Skeet”));
again, not entirely as intuitive as initializers, but addresses the issues.
LikeLike
Reply
Patrick Huizinga says:
June 4, 2015 at 10:15 am
Marc Gravell had a similar problem (binary incompatibility when using optional arguments) last year. http://blog.marcgravell.com/2014/08/optional-parameters-considered-harmful.html
If you don’t add optional arguments in the middle, but only at the end, it is possible to remain binary compatible. Also this fix is only practical when you change the api by hand and not rely on code generation.
In that case what you do is go from one method:
Method(string firstName = null, string lastName = null)
to two methods:
Method(string firstName, string lastName)
Method(string firstName = null, string lastName = null, string title = null)
The first method will make the code binary compatible, the second method will be source compatible.
LikeLike
Reply
jonskeet says:
June 4, 2015 at 10:18 am
Right – as you say, it’s only viable for non-generated code. Definitely a technique to remember though, so thanks for pointing it out.
LikeLike
Reply
harry.at@ada.dk says:
June 4, 2015 at 10:20 am
I think it is way worse to loose immutability than improve the construction of objects. There is nothing wrong with the builder pattern, in fact it is used for ImmutableCollections so is a known pattern used by Microsoft for key data structures, so please please do not make objects mutable, in fact please allow us to specify whether object can be value types as well. GC pressure is a big thing for apps that process a lot of data.
LikeLike
Reply
harry.at@ada.dk says:
June 4, 2015 at 10:23 am
Optional arguments are a much worse solution to the problem than a builder pattern. Its just plain awful. It would be good if one could specify whether “null” is allowed for certain ref fields so guarantees can be made about all ref fields having non-null values.
LikeLike
Reply
jonskeet says:
June 4, 2015 at 10:28 am
I very much doubt that we’ll add an option to turn protobuf messages into structs instead of classes, especially as that would lead to a lot of boxing if we weren’t really careful.
While I’m a big fan of immutability in general, and was perfectly happy for protobufs to use the builder approach previously, I think there’s a justifiable concern about it being too “different” for many developers. Yes, it’s far from unheard of – but I suspect the proportion of developers using ImmutableCollections is small too.
I’ll take your feedback in mind, but I suspect we’ll still be going the mutable route – possibly with a “freeze” operation.
LikeLike
Reply
Dwight Matthys says:
June 4, 2015 at 11:17 am
Ouch Jon, that freeze() operation really looks ugly to me.
We solved this problem a few weeks ago by indeed using a fluent builder pattern. So in the end we achieve an immutable object and the builder genlty forces you to fill in the parameters.
var person = Person.Create().WithFirstname(“Dwight”).WithLastname(“Matthys”).Build();
Doesn’t look so akward to us, since using a constructor with named parameters also introduces some cruft in your code. The new can be easely associated with Create(), the With methods speak for themselves opposed to the named parameters and yes, we have one extra thingy at the end. But the benefits are greater than the losses.
Just my 2 cents of course ;)
Kind regards,
Dwight
LikeLike
Reply
jonskeet says:
June 4, 2015 at 12:00 pm
I think we’ll have to agree to disagree on this. In particular, I don’t see how “the with methods speak for themselves opposed to the named parameters” – while I agree that WithLastName(x) is clear, I’d say that lastName: x is at least as clear. What I like to do is look at a statement or expression and try to identify every identifier or value which is intrinsically part of what I’m trying to express – versus ones which are just formality. Additionally, using Person.Create() instead of new Person.Builder prevents the use of object initializers.
LikeLike
Reply
Lucas Trzesniewski says:
June 4, 2015 at 11:24 am
Here’s an idea you could try: make a Fody waiver which would substitute DoNotCallThisMethodWithPositionalArguments with System.Void. It’s perfectly legal in IL but C# won’t let you write default(System.Void) no matter how hard you try :-)
LikeLiked by 1 person
Reply
dotnetchris says:
June 4, 2015 at 3:49 pm
Crazy.
LikeLike
Reply
Lucas Trzesniewski says:
June 4, 2015 at 11:27 am
Here’s an idea: Make a Fody waiver that substitutes DoNotCallThisMethodWithPositionalArguments with System.Void. It’s perfectly legal in IL, but C# won’t let you write default(System.Void) no matter how hard you try :)
LikeLike
Reply
jonathanpbarker says:
June 17, 2015 at 4:52 pm
+1
Jon do you have an opinion on this?
LikeLike
Reply
jonskeet says:
June 17, 2015 at 4:58 pm
It’s wonderfully nasty, but I don’t think it would be practical – way to confuse callers :) I don’t know whether it would actually work from a CLR perspective, either.
LikeLike
Reply
biqas says:
June 4, 2015 at 12:59 pm
Maybe you can use bond (https://microsoft.github.io/bond/manual/bond_cs.html) instead of protocl buffer.s
LikeLike
Reply
jonskeet says:
June 4, 2015 at 1:00 pm
I think you’ve missed the point of my post: a) it’s about limitations of optional parameters around compatibility; b) I’m implementing Protocol Buffers. I don’t think asking the GRPC project to switch to a Microsoft serialization format is going to fly…
LikeLike
Reply
dotnetchris says:
June 4, 2015 at 3:48 pm
What post is really stating is that C# needs to support record types that can be duck typed to strong types.
Problem solved.
LikeLike
Reply
Dwight Branscombe says:
June 4, 2015 at 7:49 pm
How about a language request for a read-only enabled Object Initializer or maybe a Set-Once property?
LikeLike
Reply
Alois Kraus says:
June 4, 2015 at 10:10 pm
Not sure if this is better at all but you could define a wrapper for each field which encodes its field position. This way you always know where the data is stored in old and new messages. Old code will not be disturbed by new fields and new code can use new fields wherever it wants to.
class Person
{
    public string First { get; private set; }
    public string Middle { get; private set; }
    public string Last { get; private set; }

    public Person(FieldPos1<string> first, FieldPos3<string> last)
    {
        First = first.Value;
        Last = last.Value;
    }

    public Person(FieldPos1<string> first, FieldPos2<string> middle, FieldPos3<string> last)
    {
        First = first.Value;
        Middle = middle.Value;
        Last = last.Value;
    }
}

struct FieldPos1<T>
{
    public T Value { get; private set; }
    public FieldPos1(T value)
        : this()
    {
        Value = value;
    }
}

struct FieldPos2<T>
{
    public T Value { get; private set; }
    public FieldPos2(T value)
        : this()
    {
        Value = value;
    }
}

struct FieldPos3<T>
{
    public T Value { get; private set; }
    public FieldPos3(T value)
        : this()
    {
        Value = value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        var p =     new Person(new FieldPos1<string>("Alois"), new FieldPos3<string>("Kraus"));
        var pV2 = new Person(new FieldPos1<string>("Alois"), new FieldPos2<string>("Christian"), new FieldPos3<string>("Kraus"));
    }
}
You “only” need to ensure that you generate all optional overloads which leave out one or more fields because the did not exist yet to make it truly binary compatible. I am not sure if this positional wrapper is worth it. It is not as easy as using the person ctor with the real values but the concept it is quite easy to follow even for beginners which try to make their code compile by using Intellisense.
LikeLiked by 1 person
Reply
Pingback: Ideal Windows 10 App Development Environment
csells says:
June 5, 2015 at 8:42 am
Are protobufs only used with GRPC? And if so, what if you think about it from a procedure POV instead of from the message POV? That’s what the P in RPC stands for, after all. : )
LikeLike
Reply
jonskeet says:
June 5, 2015 at 8:46 am
No, protobufs can certainly be used for scenarios other than GRPC. The “P” part is indicated in the service definitions, not in the message definitions…
LikeLike
Reply
Eamon Nerbonne says:
June 6, 2015 at 11:01 am
I think your proposed optional parameter syntax is bad idea irrespective of the C# limitations you point out.
Most people interacting with your API won’t be experts; and even experts have better things to do than memorize a large API – and that means you want to avoid many “practical” but slightly different ways of achieving the same thing. The downside to the optional parameter approach is that it composes poorly. If you want to build a message with a few fields, you cannot delegate most of those fields to a helper method and then set the final field yourself – the construction call is indivisible; all fields must be set, or none.
At the end of the day, what’s wrong with the new Person { FirstName = ... }.Build() syntax, or, if you prefer, a fluent api?
If GC pressure is an issue with a fluent interface, you could always consider using value types.
LikeLike
Reply
jonskeet says:
June 6, 2015 at 11:16 am
Well, the constructor would probably have been an option rather than the only way of doing it – I’d probably have a builder as well, for those scenarios. I think it’s entirely reasonable for there to be multiple ways of achieving the same thing when they’re useful in different scenarios. As for what’s wrong with new Person.Builder {... }.Build() – the builder-specific parts are ugly, particularly if you’re only specifying a field or two. The language feature I’d really like is to be able to specify a builder type alongside the immutable type, so that the compiler would allow object-initializers to work with the builder and build the immutable type automatically… but that’s another matter. There are various other issues with using the builder pattern here that I don’t want to go into too much detail on – that wasn’t the point of the post, after all.
As for the fluent interface with just an immutable type – O(n^2) space allocation and assignments (where n is the number of fields) is really nasty – and the places where it’s nasty are places where you don’t want a value type with all those fields, either. This is where the context is important – protocol buffers are defined by other people, and can have many, many fields… and the same codegen applies whether there are 2 fields or 100. In a tightly controlled API like Noda Time, the fluent syntax is absolutely fine, because I can make the right decision about what to do based on the context. For codegen of arbitrary protobufs, I don’t believe it’s the right answer.
I’m still torn between the mutable API and the builder approach – both are ugly in different ways :(
LikeLike
Reply
OmerMor says:
June 6, 2015 at 7:17 pm
What about having 2 versions of of each message class: mutable and immutable? You could implicitly convert mutable messages to immutable ones, and explicitly convert the other way round (.ToMutable()).
You can then enable construction only for the mutable messages, which means they could serve as your builder, but could also be used as real messages. You can then nudge people toward preferring the immutable messages by naming the mutable messages MutablePerson and the immutable ones as Person which hint that they should be preferred.
LikeLike
Reply
jonskeet says:
June 6, 2015 at 7:36 pm
Yes, that’s mostly what we’ve got now, but it’s annoying in various ways – basically there’s no clearly good option here :(
LikeLike
Reply
Pingback: Automate the Planet
alexandru1337 says:
June 19, 2015 at 1:26 pm
Have you considered using a Dictionary<String, String> as your one and only parameter? That’s a mapping of parameter names to serialized objects your method needs to use, and then, you can simply just use what you need in your method from whatever the contents of this dictionary are, and/or serialize and de-serialize whatever you wish, manually, using XElement parsing.
LikeLike
Reply
jonskeet says:
June 19, 2015 at 1:48 pm
No, I’d really rather not do that. Complete lack of compile-time assistance, requirement to convert everything to strings and back… nope, not for me :)
LikeLike
Reply
alexandru1337 says:
June 19, 2015 at 6:55 pm
For compile-time assistance, you could define your own class that returns a parameter name and serialized object for a particular set of inputs. Your problem revolves around changing parameters anyways, so everything should work okay since you’ll change this construction logic with each build.
LikeLike
Reply
ChaseMedallion says:
July 20, 2015 at 4:48 pm
I sometimes use the following variant of the fluent pattern which, while more complex in some ways, helps eliminate some of the issues mentioned (e. g. excess copying):

public class Person
{
    public Person(Action<Builder> builder)
    {
        if (builder == null) { throw ... }
        var personBuilder = new Builder(this);
        builder(personBuilder);
        // ensures that even if someone captures a reference to the
        // builder in the passed-in action they can't use it to further mutate this objkect
        personBuilder.End();
    }

    // all "immutable" properties allow private set
    public string FirstName { get; private set; }

    public class Builder
    {
        private Person person;

        // it's important that this isn't publicly accessible or else someone could use it to mutate a Person.
        // If we have our own assembly, internal will do just fine. However, if this source code will
        // go right in the consumer's assembly we're probably better off making our public Builder class
        // abstract and then providing a private implementation to forbid external construction
        internal Builder(Person person)
        {
            this.person = person;
        }

        public Builder FirstName(string firstName)
        {
            this.person.FirstName = firstName;
            return this;
        }

        // other builder methods

        // comments about internal on the Builder constructor apply here too. If we had a private implementation
        // this could just be Dispose()
        internal void End() { this.person = null; }
    }
}

// we can then use this as
var person = new Person(p => p.FirstName("Jon"));
Not as nice as optional parameters, but has the benefit of being fully backwards compatible (both source and binary) and being discoverable (the Person class is constructed through its constructor). As far as performance, we do no copying of fields since we write straight to the person object. On the other hand, we allocate the builder object and (likely) a delegate and closure object.
Another thought I had when reading this is that I could see the library generating the optional parameters constructor as a nice-to-have on top of another more verbose pattern for any message types that have contiguously numbered fields from 0-N. That still leaves us with the binary backwards compatibility problem, but that can be easily solved by adding N constructor overloads.
LikeLike
Reply
JT says:
June 12, 2016 at 3:07 pm
I’m not sure why immutability is such a must have. These generated objects are purely used to serialise data over the wire, it’s not like anyone is using the generated classes as domain objects (if you are… oh dear). What’s the benefit of immutability in this scenario? Sure, it’s a nice a to have but not at the expense of additional GC pressure. In fact the uglier these generated objects are the better(!) as it would discourage people to reuse them where they shouldn’t (leaking outside their data layer).
LikeLike
Reply
Thomas Hansen says:
June 23, 2017 at 8:59 am
Thx for gr8 writeup.
PS!
I explicitly invented this design pattern to solve the problems you’re describing … ;)
LikeLike
Reply
Leave a Reply Cancel reply
Enter your comment here...
Fill in your details below or click an icon to log in:
Email (required) (Address never made public)
Name (required)
Website
You are commenting using your WordPress.com account.	( Log Out / Change )
You are commenting using your Google account.	( Log Out / Change )
You are commenting using your Twitter account.	( Log Out / Change )
You are commenting using your Facebook account.	( Log Out / Change )
Cancel
Connecting to %s
Notify me of new comments via email.
Notify me of new posts via email.
Δ
Categories
async Benchmarking Book reviews Books C# C# 4 C# 5 C# 6 C# 8 CSharpDev CSharpDevCenter Design Diagnostics Eduasync Edulinq Evil code General Google Java LINQ Noda Time Parallelization Performance Protocol Buffers Speaking engagements Stack Overflow Uncategorized V-Drums Versioning Wacky Ideas


"... Stopped Working" error when opening product - OpenFlows | Hydraulics and Hydrology Wiki - OpenFlows | Hydraulics and Hydrology - Bentley Communities
Bentley Communities
Site
Search
User
Site
Search
User
Welcome
Products
Support
About
More
Cancel
Product Communities
More
OpenFlows | Hydraulics and Hydrology
OpenFlows | Hydraulics and Hydrology Wiki "... Stopped Working" error when opening product
Sign in
Questions about this article, topic, or product? Click here.
"... Stopped Working" error when opening product
Product(s): WaterGEMS, WaterCAD, StormCAD, SewerGEMS, SewerCAD, CivilStorm, FlowMaster, PondPack
Version(s): CONNECT Edition, V8i
Area: Installation
Problem
When opening the standalone version of an OpenFlows product or when trying to open or create a hydraulic model, a small window appears with an error like "WaterGEMS has stopped working" (with no other details and no option to submit a crash log) and the program does not open.
Solution
This is a generic crash that can occur in a number of different situations, mostly related to operating system components or other supporting prerequisites. Here are some cases that have come up before:
Case 1
The "Stopped working" error can occur starting with versions that include access to CONNECTION client.
First, make sure you have the most recent version of the CONNECTION Client installed. This can be found in the Windows system tray - you can typically right click and choose to update. Also, try logging into the CONNECTION Client after updating. In some cases you may need to exit the CONNECTION Client and the OpenFlows product, reopen the CONNECTION Client (check the Windows start menu to find it), log in, then open the OpenFlows product.
Also, if possible, try running the OpenFlows product as Administrator - right click on the shortcut and choose "Run as Administrator"
If that doesn't help, try reinstalling CONNECTION Client, then performing a clean reinstallation of the OpenFlows product.
Case 2
This can occur if there is a problem with the Microsoft Visual C++ prerequisite. To resolve this, uninstall all existing versions of Microsoft Visual C++ as seen in the Windows "Programs and Features", then reinstall. Different versions of the OpenFlows product require different versions of the C++ redistributable, as well as other software you may have installed. Reinstall the OpenFlows product after uninstalling the C++ redistributables, and it will reinstall the requires ones, which usually consist of the following versions: 2005, 2008, 2010, 2013, 2015 (both the 32-bit and 64-bit versions).
In at least one case, it was found that the Microsoft Visual C++ "2015-2019" (14.26.28619) component needed to be manually installed first.
Case 3
In one case, the problem was resolved by running the program in compatibility mode. Right click on the desktop or start menu shortcut, choose Properties, click the Compatibility tab, then select to run in compatibility mode. Try different options such as Windows 7.
Case 4
This issue can also occur if there is a problem with the Microsoft .NET Framework prerequisite.
In one case, the Windows Event Viewer Application log contained a separate entry corresponding to the time of the crash, indicating an issue with "CLR20r3". Running a scan on the system resulted in the following:
It appears the issue has to do with the .NET Framework component that is a part of the operating system. The user had a repair done on his operating system to resolve this issue.
In another case, a full reinstallation was necessary:
1) Uninstall the OpenFlows product (from Windows "Programs and Features"). Preferably, do a clean reinstallation (removing leftover components after uninstalling)
2) Uninstall all Microsoft .NET framework versions, which need to be uninstalled in descending order. This may require you to uninstall Windows Media Player.
3) Restart your computer
4) Perform a registry cleanup. (Perform this step if comfortable - if not, try proceeding to the next steps) This can be done with a number of registry cleanup utilities, such as "CCleaner". This may locate and repair missing entries related to .NET Framework.
5) Reinstall and check if the error no longer occurs. Reinstallation of .NET Frameworks may also require reinstallation of Windows Media Center.
6) If the problem still occurs, try checking for any new additional updates to the .NET framework that are available. You may also want to check for recent Windows Updates of ".NET security and quality rollup".
Possible related links: 1 | 2
Case 5
If using a 64-bit Operating System, try opening the 32-bit version of the program first, create a new model, then try opening the program normally (such as from the Desktop shortcut). For example the 32-bit version of WaterCAD is C:\Program Files (x86)\Bentley\WaterCAD\WaterCAD.exe
Case 6
Another option would be to run a Repair on the program through the Control Panel (Control Panel > Programs and Features). After doing this, right-click on the shortcut for the program and select Properties. In the Compatibility tab, place check mark for the item "Run this program as an administrator". Also click on "Change settings for all users" and make sure that "Run this program as an administrator" is set for there as well.
Case 7
Products: FlowMaster 08.11.01.03, PondPack 08.11.01.56
Note: This workaround will not apply to OpenFlows applications other than the ones listed above.
Try opening the following managed starter file.
For FlowMaster: C:\Program Files (x86)\Bentley\FlowMaster\FlowMaster.Starter.exe
For PondPack: C:\Program Files (x86)\Bentley\PondPack8\Haestad.PondPack.Starter.exe
Opening the application using this file should not have any adverse effects. If the program opens without the error, then do the following to create a desktop shortcut.
Right-click on the file listed above, which corresponds to the application having the issue > Create Shortcut > Yes (to place it on your desktop).
Right-click on the new desktop shortcut > Properties > Compatibility tab > Change settings for all users > Check "Run this program as an administrator" > Apply > OK > OK.
Case 8
If this issue occurs with a specific model, try the following:
First, try compacting the database. To do this, close the model but leave the product open. Go to Tools > Database Utilities > Compact Database. Select the database file and choose the option to purge the model to save space. Once completed, open the model and see if the issue still occurs.
This is an indication that the output files are too large or numerous. Try creating a new folder and moving just the starter file and the database file (.wtg and .wtg.sqlite for the water products, .stsw and .stsw.sqlite for the storm and sewer products) to the new folder. Once done, open the model from the new folder location.
If that doesn't help, try importing the database into a new drawing. This is done by going to File > Import > (product name) database.
Lastly, you can also try deleting the engineering library database. Go to c:\users\<user name>\AppData\Roaming\Bentley\EngineeringLibraries and delete EngineeringLibraries.mdb and EngineeringLibraries.sqlite. Make sure the program is closed when you do this. When you open the program again, the files will get re-created. Note: Custom items in the engineering library will be lost if you do this.
What if none of these help?
Generate a "dump" file and send it to technical support for investigation. To do this:
1. Start the OpenFlows product (such as WaterCAD)
2. Do not close the Application has stopped working window
3. Run Windows Task Manager (press Ctrl-Shift-Esc or right click in the bar at the bottom of the screen and select “Start Task Manager”)
4. In Task Manager, go to the Processes tab and right-click on the crashed process
5. Select Create Dump File
You can compress this into a zip file and upload it as an attachment to your forum post here or your service request here (log in to the CONNECTION Center then click the "New Service Request" link). If the file is too large, request an upload link from technical support.


When it comes to marketing, whether it is branding or social media, graphics are a key component. In a world increasingly dependent on digital marketing, having the right visuals is vital for any brand to thrive in a competitive marketplace.
With that in mind, it is also essential to hire someone who can professionally create these digital graphics. Professional graphic designers are great for many reasons, here are a few:
1) They execute your vision well
One of the best aspects of hiring a professional graphic designer is that they can achieve your vision well, while still adhering to your overall needs. Professional graphic designers are good at balancing your vision with artistic design to strike a happy medium. An expert graphic designer can help you achieve brand power.
2) Don’t drain your resources
Trying to do in-house graphic design will never quite work, so it is better to outsource some of that work. You might decide to invest resources, both time and money in trying to do digital design within your business, but it does not usually yield the desired results. Instead, allocate those resources towards hiring someone with the right expertise for professional graphic design.
3) They know the best trends and practices
You might have an idea in mind of what works for your graphics, but it may not be the best practice according to the rest of the industry. Or it might be too similar to other competitors, and will not enable you to stand out. Professional graphic designers are able to leverage their expertise and experience to create something that is truly unique to you while still being able to hold its own amongst competitors.
We understand how vital the role of graphic design is for effective and successful marketing. Our team knows how to help brands cultivate a foundation of success while staying true to what makes a brand special. Let us know how we can help you with your graphic design needs.
This meeting will include key Drum team members assigned to your project. Together, we will cover the following topics:
• Establish a Timeline for the Project
• Analyze the Content
• Define your Target Audience
• Create your Brand Story
• Determine a Design Direction
• Identify Future Goals
Company
Name
First Last
Email
1. List Your Products/Services
2. List Your Target Audiences
3. What problem(s) is your customer faced with that you want to be known for solving?
4. How does your product/service solve your customer's problems? (How do you improve their lives or their business?)
5. Is there an area of growth you want to focus on in your business or is there a new product you would like to feature?


Pastor Lethebo Rabalago has posted photos on Facebook of him spraying insecticide into his congregants' faces.
Story highlights
South African pastor photographed spraying insecticide into faces of congregants
South Africans have taken to Twitter to voice their disbelief
Johannesburg (CNN) Images of a South African Pastor spraying insecticide into the faces of his congregants are circulating on social media.
Lethebo Rabalago, of the Mount Zion General Assembly (MZGA), in Limpopo, has openly posted photographs on his Facebook page of him spraying congregants with Doom Super Multi Insect Killer to cure various ailments.
A post from Saturday was captioned as if quoting a congregant, saying: "I came here with a pain on my back and stomach. Now, after the prophet sprayed me with Doom I am healed. My nose was blocked since last week, but after the prophet sprayed me with Doom I feel coming out of my nose. I thank God for healing me."
When reached by phone, Rabalago declined to answer CNN's questions about his use of bug spray and hung up. MZGA could not be reached for comment, but in an interview with South African TV channel eNCA Rabalago said that God had told him to use Doom, and that he had healed countless people using it.
In a press statement, Doom manufacturer Tiger Brands said that it found the practice "alarming and extremely concerning" adding that it is "unsafe to spray Doom Super Multi Insect killer or any other aerosol spray for that matter, into people's faces."
Read More
It also advises that if the insecticide is sprayed into someone's face, they should wash their face and/or wash out their eyes immediately, and to avoid excessive inhalation.
South Africans have strongly condemned the practice, taking to social media to voice their disbelief and concern.
I find this very disturbing. A pastor from the MZGA congregation is spraying people with Doom insect repelant to heal them. pic.twitter.com/NEgJyE2AMj
— Aki Anastasiou (@AkiAnastasiou) November 21, 2016
Nothing humouress about the 'Doom' debacle. What I see is people in desperate need of hope being dehumanized in the name of God. Tragic
— Ryan Cummings (@Pol_Sec_Analyst) November 21, 2016
South Africa's Commission for the Promotion and Protection of Cultural, Religious and Linguistic Communities (CRL) is currently undertaking a study into the commercialization of religion and the abuse of belief systems. In a media statement the CRL described Rabalago's actions as shocking and repugnant, saying: "no one should be subjected to conditions that are detrimental to their health and wellbeing."


Vitamins are vital nutrients, along with carbohydrates, proteins, fats and trace elements. Once people were enough of those vitamins that have entered the body through food. But currently the contents of natural vitamins in food are reduced, so the deficit should make artificial multivitamin complexes.
Related articles:
How often can I drink vitamins
Is it harmful to take vitamins
How long can I drink vitamins
How long can I take vitamins
Instruction
1
Necessary for normal functioning of biologically active organic compounds – vitamins, the human body does not synthesize, he gets them along with the food. Vitamin deficiency – vitamin deficiency – can cause dysfunction of internal organs, and also affect the appearance and occur in brittle and dull looking hair, the nails, peeling of the skin. When all the necessary vitamins enter the body in sufficient quantities, the body is ready to resist the harmful effects of the environment and diseases.
2
Because even the most balanced menu is unable to provide the right amount of vitamins, their deficiency can be filled with artificial mono and multivitamin complexes. However you should know that artificial vitamins are drugs and should be taken according to the recommended dosage, excluding the hypervitaminosis. A surplus in the body is no less dangerous than a disadvantage, therefore, the intake of mono-vitamins should be on the recommendation and under the supervision of a physician.
3
Self-administration of multivitamin complexes should be carried out in strict accordance with the instructions, recommended dosage and never combine courses of several such complexes. In addition, the timing of the intake of multivitamins should be limited to 30 days, the frequency of self-initiating courses of therapy – 1-3 times a year.
4
So at this frequency, repeat courses of treatment to obtain maximum benefit, take vitamins properly. It is known that some vitamins cancel each other out if they fall in a stomach at the same time. Therefore, in some complexes of these bioactive substances are separated. Pills which vitamins of the same type are arranged in layers, separated by impermeable soluble shells - the most convenient form of release. During the promotion in the stomach and intestinal tract, the vitamins are dissolved consistently with no contact with each other.
5
How many vitamins of a group you need depends on many factors, including gender, age, lifestyle and physical activity. The need for them may vary, including during pregnancy. In the instructions enclosed in the packaging each multivitamin complex, you can always find the instructions, how often you need to apply it based on your individual circumstances. Sometimes on the packaging or in the user specified percentage of a vitamin in terms of daily dose for an adult.


Remove quotes around phrases to search for each word individually. bike shed will often show more results than "bike shed".


I've been reading a lot about hyperinflation, and how it makes life more difficult for a lot of people, because it makes prices go up, and it makes cash lose its value, which punishes savers, and so forth.
But there is one perspective I haven't read about lately, and it just occurred to me: hyperinflation isn't bad for everyone. It's not bad for you if you're the one printing the money. It's not bad if you're friends with the ones printing the money, or friends of those friends, or so forth.
Many of the people running the banks, the Fed, and large parts of the government, graduated from the same Ivy League universities (there was an article to that effect a few years ago, maybe around the time of the 2008 financial crisis), and they're spreading the loot among themselves. They also have a decidedly Leftist slant.
This is not really new. What's new is the scale of it. The money supply in 2020 increased by 30%, or so I've read.
The Left is basically parasitic and can't survive without subsidies from somewhere. They used to try to rely on taxes for that, or their monopoly on unions, but now they are largely using the printing press, instead. Now taxation is not a means of raising revenue for them, it's just a means of control. Their main way of getting what they want is the printing press, either through government spending or through the banks.
The reason they have all the power right now is because they have all the money. They're the ones printing it. They're distributing it among themselves and using it to buy up whatever they want. If you're not a Leftist, you don't get any free money. You have to work for it, or sell something, and then you're a sucker, because in order for you to get money, you have to give up something else in exchange. They don't.
Even if your productivity amounted to millions of dollars per day, and even if you moved that money out of cash as quickly as possible and bought gold or land or something, there would still be people who can make at least as much money as you do, and they can buy all the same stuff as you, but they don't actually have to do anything, because they have a fountain of free freshly-printed money, and you don't.
This is happening across international borders, too. There are gangs of Leftists using the printing press in many "free" countries, careful to proceed in lockstep so that the exchange rates don't move too much.
I also think they are using the money to try to control the culture, such as by buying up media companies and so forth. This affects both news and entertainment. They can play the king-maker and choose which things will succeed by deciding which to promote and which to bury, which to produce and which not to produce. In a free economy, a king-maker would still have to listen to audiences in order to avoid going broke, and so would also have to be an innovator. But people who are getting free money from the printing press don't have to worry about going broke. They don't have to work for their money, whereas their competitors do. This gives them an advantage. They can claim that they're "succeeding in the marketplace," and it will look like they actually are succeeding in the marketplace. This influences others, who may be unaware that the game is rigged.
The Leftists don't actually have to twist any arms in this. Nobody can tell the good money from the bad. All the Leftists have to do is buy whatever they want, and it's theirs.
The more currency they print, the larger their advantage over everyone else. Lately they have been printing more money than ever before, and that explains their outsized influence right now. However, even though they have lots of money and can buy whatever they want, they aren't producing anything much of value (because they don't need to), and since the people who are producing things have to work harder and harder, eventually "supply problems" happen, and that drives prices up, and so the Leftists have to print even more money. That's about where we are now.
There will be a crash eventually -- but even after the currencies collapse, the Leftists will still own whatever they managed to buy earlier with the money they printed, whether it be land, businesses, or whatever -- and that will give them an enormous advantage in whatever happens after the collapse.
That worries me.
Edited June 6 by necrovore
Moved "the money supply increased by..."
Quote
Link to comment
Share on other sites
More sharing options...
Easy Truth
Posted June 6
Easy Truth
Regulars
1.3k
Report
Share
Posted June 6 (edited)
23 minutes ago, necrovore said:
But there is one perspective I haven't read about lately, and it just occurred to me: hyperinflation isn't bad for everyone. It's not bad for you if you're the one printing the money. It's not bad if you're friends with the ones printing the money, or friends of those friends, or so forth.
It's unlikely that governmental control of the money supply will be relinquished.
Governmental controls are good for cronies. It's also good for the administrators that work in Government.
Until the money runs out and the side show has to stop.
As far as the crashing goes, another currency would become the currency of choice. It could be sudden.
Ultimately this country could break up similar to other empires that came and went. But as long as there is mostly law and order and a slow incremental downfall, it can be repaired if the institution of free speech is respected. Sweden is the best example, they became heavily socialist twenty years ago, and then they voted against it because they saw how bad it got. They spoke out against it freely.
So as long as there is no violent civil war, or an authoritarian system preventing free speech, the country can in fact correct it's bad behavior.
Edited June 6 by Easy Truth
Quote
Link to comment
Share on other sites
More sharing options...
3 months later...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
necrovore,
It is in the interests of Objectivists to be a witness to the government's attitude that they can continue to print money every day, as much money as they deem necessary according to their Keynesian formulas.
But the United States will never experience hyperinflation because smart investors are still interested in the bond market.
As more and more people learn about bonds, and as more people in the United States secure higher-paying positions that allow them to buy bonds, the more of a counter-balancing effect there is on the government's money printing.
Hyperinflation is not caused by printing too much money. It is caused by an acute or chronic faltering of confidence in the dollar.
The dollar gets its strength not by what it can buy in the hands of citizens and residents of the US,
it gets its strength by how it trades on the international market.
The strength of any commodity is how well it trades with others. Money is no exception.
If the government stops issuing bonds domestically, foreign countries take it as a sign that the US government is not confident in its ability to pay for the bonds when they reach maturity.
What that does is it freezes the extensions of foreign loans to the United States, and at the same time it causes short-selling of dollars by foreign nations.
As soon as dollars begin to get short-sold, it is a sign to everyone in the international market that the dollar is weak.
The select nations that continue to loan money to the United States raise their interest rates,
and the government is forced to print more money to pay the interest.
Commodities which are traded internationally begin to sell for more dollars.
Only then do commodities at home become more expensive, because they are produced by international supply chains.
Printing money is not the cause of hyperinflation. Hyperinflation is the cause of printing money.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
If you want proof for my explanation, just ask yourself this question:
When all sellers of commodities raise prices, how are they all measuring the increase in the supply of money?
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
The answer is they don't.
Market forces dictate uniform raises in prices.
The simple matter is that producers raise prices because the parts in the supply chain are more expensive.
The parts in the supply chain are more expensive because foreign companies raise their prices when the dollar is weak.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
The dollar becomes weak when there is little interest in the bond market.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
The important thing to remember is that fiat currency is defined
when the dollar is backed by the taxing power of the federal government.
Nowhere does this definition say the dollar is backed by the power to print money.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
Sound money is ultimately our goal. But why?
Because when the government promises that a dollar can be exchanged for 1/1000 of an ounce of gold,
in effect this is the same as a bond.
It is just a promise of value.
As long as bonds continue to be attractive, our money, while it is deteriorating, will never completely fail.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
Ultimately, what we will see in the course of history
is that the United States will return to sound money.
Why?
Because gold and silver will always, always be desirable.
Just look at a gold coin and tell me you don't want it.
As more and more people can afford gold and silver, and also learn about Objectivism and also Austrian Economics as well,
there will be a greater and greater push for a sound money standard.
It's just going to take a little bit of time before we get there.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
In the meantime, it's time to buy a Treasury Bond!
Quote
Link to comment
Share on other sites
More sharing options...
Doug Morris
Posted September 24
Doug Morris
Regulars
796
Other Public-visible Contact Info:[email protected]
Gender:Male
Report
Share
Posted September 24
2 hours ago, Sebastien said:
The important thing to remember is that fiat currency is defined
when the dollar is backed by the taxing power of the federal government.
Nowhere does this definition say the dollar is backed by the power to print money.
Fiat currency is defined by the government forcing people to accept it. This does not automatically result in printing money, but it gives the government free rein to print money.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
Doug Morris,
I would offer that you are correct about the implication of fiat currency, but not the definition.
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
Government does not force anyone to accept using paper money. When was the last time a government official pointed a gun to your head and said "You must use U.S. dollars."
Quote
Link to comment
Share on other sites
More sharing options...
Sebastien
Posted September 24
Sebastien
Regulars
115
Report
Share
Posted September 24
The Federal Government guarantees that if you want to participate in the cash economy, your cash will serve as legal tender.
Quote
Link to comment
Share on other sites
More sharing options...
necrovore
Posted September 24
necrovore
Regulars
232
Gender:Male
Location:Jacksonville, FL
Chat Nick:Necrovore
Author
Report
Share
Posted September 24
Sebastian,
Next time you should combine all your posts into a single post.
The value of the dollar comes from the illegality of counterfeiting. That's all.
However, the government can legally print money, and if it does, and enters that money into circulation, then that diminishes the value of the dollar.
Of course, the government doesn't want to be seen printing money directly, so there is some genius-level fraud at work. Somebody had the great idea that a central bank would print the money, and the government would then borrow it, and theoretically have to pay it back with interest, which is a great deal for the central bank.
Prices go up during inflation when people receive the newly printed (borrowed) money and use it to bid up the price of supplies. Everybody else has to bid higher, too, or else they don't get the supplies. The effect is uneven because the newly printed money is not distributed to everyone evenly, and because the people who get the money first (usually the government and its beneficiaries) might want some supplies more than they want other supplies.
It doesn't make any difference whether these trades cross international borders or not.
I don't buy the idea that a "loss of confidence" causes hyperinflation. The loss of confidence is an effect, not a cause. Hyperinflation happens when there's a feedback loop: when inflation causes the government to have to pay higher prices, they print more money to cover the higher prices, and this causes more inflation, which causes even higher prices, and so forth. Technically this feedback loop happens with regular inflation, too, and is already happening now, but it is very slow at this point. It will speed up if the government decides to spend more. This will cause problems, the government will decide that even more spending is the answer, and so forth.
The Federal Reserve is itself one of the biggest bond buyers. It buys the bonds with freshly-printed money. The Fed does accounting tricks to conceal this (I think it's actually illegal for the Fed to do it directly, so they do it indirectly.) The Fed encourages banks to buy bonds and then deposit the bonds in a reverse repo facility which temporarily (but repeatedly) exchanges them for cash. That way the banks are the nominal owners of the bonds but actually the banks are swapping the bonds right back to the Fed. If the repo facility were closed then the banks would not have enough cash for their operations, and bonds are too illiquid to serve as a substitute.
Also, you seem to be contradicting yourself. "Legal tender" laws mean that the government forces creditors to accept dollars as payment for debt. The creditors cannot legally say, "No, we want you to pay in gold or something other than dollars."
----
My original post wasn't really about hyperinflation per se, it was about the idea that government money-printing can be used to influence the culture. If you have access to free freshly-printed money then you can buy up book publishers, record companies, movie studios, and so forth, and make them churn out propaganda, and buy huge ad campaigns for it. Even if audiences leave in disgust, the fountain of free money can keep the companies in business anyway (when normally they would go out of business). It can even create the illusion that the material is popular (because the ads are everywhere). Competing businesses, seeing the "popularity," may also try to cash in on it by imitation, and may refuse good work because it doesn't "follow the trend." I think this is happening now.
I suppose what this boils down to is that, if you're worried by the way certain Leftist ideas seem to be taking over the culture, you shouldn't worry. When the money runs out, the illusion that this stuff is popular will vanish.


Male student, 25, edited photos of two former schoolfriends then uploaded them to a porn site – including image of one victim when she was aged 14
James Devenport had not spoken with the two former schoolfriends in 10 years
The women received edited photographs of themselves from anonymous profile
They made repeated requests to have them removed but were uploaded again
Police probe led to Devenport, 25, after he was identified through his IP address
He has now admitted posting the indecent sexual images of the women online
He also admitted possessing indecent images of children in November 2020
A student doctored images of two former schoolfriends before uploading them to an X-rated website, a court has heard.
James Devenport, 25, had been friends with his victims, but had not kept in touch in over 10 years.
But the women were left horrified when they received edited photos of themselves from an anonymous social media profile and also found the images on adult websites.
The victims, who cannot be named for legal reasons, made repeated requests to have the photographs removed, but they were uploaded again.
They were also subjected to a string of vile sexual remarks and comments by the unknown user via Instagram and Facebook.
A Twitter account was also created showing an image of the second victim along with links to other social media profiles she had.
A police probe led to Devenport being identified through his IP address after the porn website handed over his details.
When officers arrived at his home in Carmunnock, Glasgow, he said: ‘I might as well tell you because you’ll find out anyways. It was me. I’m so sorry, I need help.’
James Devenport (pictured), 25, had been friends with his victims, but had not kept in touch in over 10 years. But the women were left horrified when they received edited photos of themselves from an anonymous social media profile and also found the images on adult websites
A search of his home also revealed he had nine images showing child sex abuse on a hard-drive.
Devenport, now of Belfast, appeared at Hamilton Sheriff Court and admitted posting indecent sexual images of the women online and communicating indecently with them between January and December last year.
He also admitted possessing indecent images of children in November 2020.
Depute fiscal Abby Seal said: ‘The first witness received a message on Instagram from someone named “Petefakeman” and the image contained an unedited picture of her when she was 14-years-old which was not available on any active social media account.
‘The witness told her partner who advised her to do a “reverse” Google search to trace where the image originated.
‘She recovered the image on the pornography site which had been uploaded numerous times and the image had been edited in an indecent manner.
‘She contacted the website administration requesting that the images should be removed as soon as possible in January.
‘In February the witness was informed by her partner that the same indecent edited image had again been uploaded numerous times on the pornographic website.’
‘In February 2020 an account was created on a pornographic website with the profile picture of the second witness when she was aged 18 which had been edited in an indecent manner.
‘She made no reply to any messages and blocked the user known only as John Goffey.’
Devenport (pictured), now of Belfast, appeared at Hamilton Sheriff Court and admitted posting indecent sexual images of the women online and communicating indecently with them between January and December last year. He also admitted possessing indecent images of children in November 2020
The prosecutor added: ‘A request was made by police to the website to ascertain the subscriber details and further identifiers attached to the account usernames.
‘Both accounts were found to have been accessed by the same IP address attached to the home of the accused.
‘Police attended his home and examined an HP laptop and also recovered was a CV and an academic honours transcript from Glasgow Caledonian University.
‘Multiple images relating to the first witness were recovered as well as various files relating to the second.’
Sheriff Ray Small deferred sentence until next month for reports and Devenport had his bail continued.
He said: ‘You have pled guilty to two totally unsatisfactory and despicable crimes and they will need to be dealt with in due course.
‘These are serious matters and I would be perfectly entitled to send you to custody but will keep an open mind until I read the reports.’
Devenport was placed on the sex offenders’ register.
Source: Read Full Article
World News
I quit admin job to be a camgirl – now I'm on £96k a year thanks to stripping & pretending to be lads' girlfriend
'Atmospheric river' alert issued with 8m people under winter warning as 53m travel after Thanksgiving weekend
Domestic abuser still living in Britain despite deportation order ten years ago
Celebrities
Tom Kerridge: TV chef breaks silence after defending price of £87 sirloin steak at his pub
Kevin Clifton defends Rhys Stephenson as Strictly star left in floods of tears
Jason Sudeikis’ New GF Keely Hazell, 35, Sizzles In Leopard Print Bikini On Mexico Vacation – Photos
Recent Posts
Pac-12 recap: Oregon wins the North as Jake Dickert gets the WSU gig
Khloe Kardashian looks unrecognizable in video as she poses in outfits from Good American including leather top & bra
'Ryan's Hope': Where Are They Now? What Happened to the Cast?
Pauline Hanson, Donald Trump and Jacqui Lambie walk into a theatre …
Inside luxurious $105M 12-bedroom mansion featured on TV hit Succession – and you won't believe who built it


JACKSON, Miss. (AP) -- A Jackson-based company has announced plans to build a green hydrogen hub in Mississippi it says will be the largest of its kind in the U.S. and create an easier pathway for hard-to-decarbonize manufacturing industries to move away from fossil fuels.
Fresh look for Mississippi planetarium before 2023 reopening
October 17, 2021
AP NEWS
JACKSON, Miss. (AP) -- A planetarium in Mississippi's capital city is undergoing renovations and is expected to reopen at the end of 2023 with a fresh look and more extensive exhibits.This is the first renovation in decades at the Russell C.
Mississippi student test scores decline in math, English
By LEAH WILLINGHAM
September 23, 2021
AP NEWS
JACKSON, Miss. (AP) -- The number of Mississippi students learning at or above grade level in math and English decreased across almost every age group during the first statewide assessments amid the COVID-19 pandemic, according to results released by the Department of Education on Thursday.
First flames, then fees: Tahoe evacuees report price gouging
By SAM METZ and SCOTT SONNER
September 3, 2021
AP NEWS
STATELINE, Nev. (AP) -- As fearful Lake Tahoe residents packed up belongings and fled a raging wildfire burning toward the California-Nevada border, some encountered an unexpected obstacle: price gouging.
We Might Not Know The True Toll Of Hurricane Ida For Weeks
Chris D'Angelo
September 1, 2021
HuffPost
Officials have attributed seven deaths to the powerful storm. But past hurricanes, including Katrina and Maria, offer lessons about early fatality counts.
Hurricane Ida forecast to strengthen as it nears Louisiana
Rebecca Santana and Kevin McGill
August 29, 2021
phys.org
Forecasters warned residents along the northern Gulf of Mexico coast to rush preparations ahead of Hurricane Ida, which is expected to rapidly intensify and bring winds as high as 130 mph (209 kph), life-threatening storm surge and flooding rain when it slams ashore Sunday in Louisiana.
100,000 more COVID deaths seen unless US changes its ways
By CARLA K. JOHNSON and NICKY FORSTER
August 26, 2021
AP NEWS
The U.S. is projected to see nearly 100,000 more COVID-19 deaths between now and Dec. 1, according to the nation's most closely watched forecasting model. But health experts say that toll could be cut in half if nearly everyone wore a mask in public spaces.
Gassing Satartia: Carbon Dioxide Pipeline Linked to Mass Poisoning
Dan Zegart
August 26, 2021
HuffPost
A CO2 pipeline in Mississippi ruptured last year, sickening dozens of people. What does it forecast for the massive proposed buildout of pipelines across...
The Latest: US health officials call for virus booster shots
The Associated Press
August 18, 2021
https://www.inquirer.com
U.S. health officials are recommending all Americans get COVID-19 booster shots
Pandemic of unvaccinated continues to rage as states set new COVID records
Beth Mole
August 17, 2021
Ars Technica
Seven states have hit new peaks for COVID hospitalizations.
'I Can't Keep Going': ICU Nurse Shares Grim Account As Virus Surges In Mississippi
Josephine Harvey
August 12, 2021
HuffPost
"People aren't doing what they need to do to protect us," said Jen Sartin as cases soar among the unvaccinated.
Doc: Delta variant spread 'like a tsunami' in Mississippi
By LEAH WILLINGHAM
August 5, 2021
AP NEWS
JACKSON, Miss. (AP) -- Mississippi's top health official said the delta coronavirus variant is "sweeping across Mississippi like a tsunami" as the state reported more than 3,000 new cases of the highly transmittable virus in a single day Thursday.
The Latest: Florida governor holds to anti-lockdown stance
Associated Press
August 4, 2021
news.google.com
As Florida continues to lead the nation in hospitalizations for COVID-19, Gov. Ron DeSantis is holding to his anti-mask, anti-lockdown stance. The governor ...
Robert Moses, American civil rights activist, dies aged 86 in Florida
July 26, 2021
Hindustan Times
Moses, who was widely referred to as Bob, worked to dismantle segregation as the Mississippi field director of the Student Nonviolent Coordinating Committee during the civil rights movement. | World News
Analysis: Wicker says Yazoo pumps would alleviate injustice
By EMILY WAGSTER PETTUS
July 24, 2021
AP NEWS
JACKSON, Miss. (AP) -- Installing massive pumps to drain water from the south Mississippi Delta would be a way to fight environmental injustice because the pumps would help low-income and minority residents whose lives are disrupted by flooding, Republican U.S.
COVID-19 cases in U.S. rising again, doubling over three weeks
AP
July 13, 2021
The Hindu
Health authorities appeal to even immunised people to resume wearing masks in public.
Amazon announces plans to build solar farm in Mississippi
June 23, 2021
AP NEWS
JACKSON, Miss. (AP) -- Amazon has announced plans to build a solar farm in Mississippi and in at least 10 other states, including Arkansas and Pennsylvania.The project is part of a company launch of new renewable energy projects throughout the U.S., Canada, Finland, and Spain, according to a news release.
Michael Baker International Names Sirish Peyyeti, P.E., Vice President and New York Office Executive
Michael Baker International
June 23, 2021
www.prnewswire.com:443
/PRNewswire/ -- Michael Baker International, a global leader in engineering, planning and consulting services, announced today that Sirish Peyyeti, P.E., has...
Abortion Is at the Supreme Court Again. It's Different This Time
Elizabeth Nash
June 23, 2021
Scientific American
Scientific American is the essential guide to the most awe-inspiring advances in science and technology, explaining how they change our understanding of the world and shape our lives.
Storm expected to be another blow to Gulf Coast businesses
Kevin McGill and Jeff Martin
June 19, 2021
phys.org
A weekend that was supposed to be filled with celebrations of Juneteenth and Father's Day has turned dreary in coastal Louisiana and Mississippi, where an unpredictable tropical weather system has brought wind, heavy rain and fears of flooding to a region where some have sandbags still left over from last year's record-breaking hurricane season.
SHOW MORE
mississippi.gov
Is a

Location
Other attributes
Also known as
State of Mississippi
Country
United States
Founded date
December 10, 1817
Location
Jackson, Mississippi
Wikidata ID
Q1494
Categories
Add a category
Related Topics
Add a related topic
Contributors
1
Umair Shah
I am Word Press expert website designing is my passion. I love to learn new things
2
Carla Faraguna
Golden People and Operations.
3
Jude Gomila
Founder and CEO of Golden, Entrepreneur. Investor in 200+ companies. Cantabrigian (Gonville and Caius). Interested in the Universe.
4
Henry Ogolla
Passionate about reading and writing.
Company
HomePress & MediaBlogCareers
We're hiring
Product
OverviewPricingEnterprise
Legal
Terms & ConditionsCommercial Terms & ConditionsPrivacy Policy
Help
Help centerAPI DocumentationContact Us
Text is available under the Creative Commons Attribution-ShareAlike 4.0; additional terms apply. By using this site, you agree to our Terms & Conditions.


Convenience is one of the big drivers of new online experiences; according to a report by PwC, 32% of consumers would abandon a brand they were loyal to in the past after only one bad experience.
San Mateo, CA, October 01, 2021
The Current State of Affairs
Password-Based Authentication
Strong Customer Authentication
Managing Usability vs. Security
About LoginID
Convenience is one of the big drivers of new online experiences; according to a report by PwC, 32% of consumers would abandon a brand they were loyal to in the past after only one bad experience.
Authentication, and how this takes place, will have a big impact on the customer experience; studies have found that around 31% of users have abandoned lengthy or difficult sign up processes, translating to a loss of potential revenue for the business.
Recent years have seen a major shift to customers demanding digital services; an estimated 6 billion consumers will perform electronic transactions by 2023. They want to be able to perform everything they could do in person or on a desktop or laptop, right on their phones.
This shift has put a strain on businesses across various industries, who have had to deal with an unexpected surge of digital customers, or if unprepared, scramble to overhaul their product stack to meet these new customer demands.
The Current State of Affairs
This digital acceleration has transcended limited use cases - in the financial industry, traditional banks have now started looking at enhancing ther digital offerings, allowing their customers to do everything from the palm of their hands, from opening accounts to depositing cheques. There has also been a wave of digital-only banks coming up, giving customers even more options to save, invest and manage their finances.
The shift towards ecommerce has made its way into the food and beverage industry, with users now accustomed to firing up an app and ordering food right on their phones. It has even overhauled the transportation industry, with users simply picking up their phones to book rides. In the COVID-19 era, this digital transformation has even made it possible for people to speak to doctors, book appointments, and order medicines right from the palm of their hand.
However, this digital acceleration has not only impacted user experience and product offerings, but has also heightened the importance of security, strong customer authentication, and fraud prevention as well. With the sheer quantity of user data flying around, businesses are not only expected to protect user data, but also to abide by international jurisdictions and laws such as PSD2, the GDPR and the CCPA. Therefore, in order to protect user data, businesses must first ensure controlled access to their websites.
Password-Based Authentication
The most common way businesses ensure controlled access to their websites is requiring users to authenticate themselves, and the most common form of authentication is a username and password. Simple to implement, however, in terms of security, passwords are the weakest among all authentication methods for numerous reasons:
Passwords are often reused across websites and apps. Once a password is hacked or falls into the wrong hands, the fraudster can use it to access all the other websites or apps that the user has replicated the password on.
Some users may, due to the sheer volume of passwords they are required to remember, suffer from password fatigue; this could lead them to use easy-to-crack, weak passwords which a fraudster can easily gain access to.
Some users might have poor password hygiene - they might be writing their passwords down in easily accessible places, or saving them in unsafe apps that fraudsters can easily access.
Passwords face a number of various types of sophisticated attacks due to their common and widespread use.
The fact is, passwords are outdated; they have been deemed the weakest authentication method by numerous security firms and studies. Apart from the security aspect, passwords are also cumbersome for customers to use. Nowadays, users are accustomed to easier passwordless authentication methods such as scanning their fingerprint or their face to unlock their phones; users expect this level of ease and security to be made available to them on a global scale.
Adding friction to a user’s experience results in a lower login frequency, cart abandonment (58% of US consumers have abandoned purchases due to passwords), and eventually a shift to a competing brand, thereby resulting in a lower ROI.
Strong Customer Authentication
Companies need to add fraud prevention measures and enhance customer authentication security, with solutions such as strong customer authentication (SCA). Strong customer authentication allows companies to secure access to their users, reducing the risk that passwords carry. Strong customer authentication requires a user to provide 2 or more ‘factors’ to prove their identity.
Some examples of factors are:
Something a user knows (i.e. a PIN or a password)
Something a user has (i.e. a hardware token or their smartphone)
Something a user is (i.e. biometrics in the form of a fingerprint swipe or facial scan)
Europe’s PDS2 regulation requires strong customer authentication to protect electronic payments. The regulation is designed as a fraud prevention measure by requiring payment authentication for online transactions.
By adhering to strong customer authentication requirements and security best practices, companies have been able to add effective fraud prevention measures such as payment authentication to their checkout process.
FIDO2 (Fast Identity Online) has quickly become the de facto standard for strong customer authentication by reducing the world’s dependency on passwords and offering simple authentication methods that utilize a device's biometrics or an external FIDO2 supported security key.
Studies have shown that facial recognition is one of the most favored authentication methods by users, with an estimated 1.4 billion users worldwide looking to leverage the technology within the next 5 years. Another highly popular biometric authentication technology is fingerprint scanners, which are expected to be equipped on 93% of smartphones in the next 5 years. Due to the security and convenience of biometrics, 73% companies deemed it to be essential to a good customer experience, with 64% prioritizing the technology for user authentication.
Recent studies showed that approximately 65% of customers abandoned websites upon being asked to create a username and password, and an astonishing 92% said they would prefer to completely abandon a website than try to recover their credentials. Another 87.5% admitted to being locked out of a website for too many failed login attempts. 10% of users even admitted that they would rather undergo a root canal than create a unique password, resorting to bad password hygiene such as recycling passwords.
Highly effective against phishing attacks, FIDO2 passwordless authentication requires that consumers register their devices on each website. The device then generates a unique public/private key pair for each domain and returns the public key to the website. Any subsequent phished/fake website request then will fail since the attacker is not originating from the registered domain the devices are bound to.
Managing Usability vs. Security
Users no longer want to sacrifice usability for security. The first thing people see on your website or app is the login screen, and making this too cumbersome will direct users away from your business and straight into your competitor’s hands. Users are turning to digital interactions more than ever; they do not want to adjust to complex authentication methods for the sake of security. Businesses need to find the ‘sweet spot’ between protecting their customers’ interactions and data while making their experience as user friendly as possible.
Businesses, at the same time, need to pay attention to the authentication process, ensuring the user is who they say they are, and are performing transactions willingly and legitimately. A combination of a good user experience and security, creatively brought together, is the key to retaining and growing customers. By focusing on achieving this, businesses are assured of delivering quality experiences that are secure and enjoyable for customers, thereby reducing abandonment rates, and leaving a favorable impression in their users’ minds.
About LoginID
LoginID is disrupting the Consumer Identity and Authentication market. We are a FIDO2-certified passwordless authentication company providing a SaaS-based Strong Customer Authentication Solution coupled with Digital Onboarding, Identity Verification and eKYC solutions. Backed by serial fintech entrepreneurs and strategic partners such as Visa, we are a strong global team based in San Mateo, California and Toronto, Canada, and are experts in security, encryption and tokenization.
The advantages of using LoginID include:
FIDO2 / FIDO UAF certified biometric authentication solution
Extensive APIs and SDKs available for integration such as OpenID Connect, iOS, Android, and Web
Detailed and thorough documentation created by developers for developers
A scalable business model that grows with your business
An OpenSaaS plan to support start-ups
Transaction Confirmation with Digital Signature Service
Get started by registering for a free account, or by checking out the demo here. If you would like to learn more about LoginID’s FIDO2 and FIDO UAF biometric authentication, you can do so here.