HN user

privacyfornow

26 karma
Posts0
Comments13
View on HN
No posts found.

We are going through a similar exercise but we avoided the approach of event driven CRUD and stuck to capturing customer's intent and an ability to read its side-effects as our de-facto API.

Consider for instance an API to create and account. Now let's say we want ability to update address. One approach would be an API that changes the address by updating the account but the customer never asked to update the account. The customer wants to change the address. How about we give them the API with change of address request/semantics? This way, no matter what happens, the API and the events remain in sync and you don't expose internal data storage semantics to customers that have no interest in them.

The claims here are factually accurate and helpful for people new to using event sourcing as a pattern. The pattern does lend itself very neatly to command query responsibility segregation with eventually consistent reads (except when reading just the last or all events). In addition, while the pattern itself wouldn't qualify as a systems or platform architecture, if the API for the system is designed to capture customer intent on the write side and read its side-effects on the read side, you can see how it all comes together in a neat architecture that not only allows the ability to reason about the system, it also mirrors and meets the needs of its callers/customers automatically because the API is simply a capture of customer's intent. And because the customer's intent (commands) and its outcomes (events) are immutable, you also get automatic change management even if the code continues to evolve and new features added.

As a general rule and as someone who grew up extremely religious in Pakistan, I started making fun of mohammad at every opportunity I got but the sad reality is that he was not a very funny man and that was that.

The reason Pakistan won't reform its blasphemy laws is that a large portion of the population will strangle the politician that tries to. This country (more than just about anywhere else in the islamic world) needs education for next two to three generations. The lack of action on this front has resulted in the tumor of religious bigotry and extremism to become a full fledged cancer that is now airborne. I don't support killing this patient, but forced quarantine and non-stop medication for next generation or two is the only way to save it and everyone else.

Spring vs. Java EE 9 years ago

My recommendation is Vertx.io

It is a very lightweight framework with support for most of the plumbing a developer might want without imposing its will on anyone.

If you are not that worried about having a REST or HTTP or TCP front-end, LMAX disruptor is amazing as well.

I am working on auto generating clients with built in service subscription based discovery, shock absorbers and circuit breakers based on open api (swagger). We design our APIs with customer focus and therefore haven't run into some of these problems so far.

I think this is a piece of the pie. The thing to recognize that I think is just as important is that it is possible to state several common use cases (even synchronous microservices) as collections of append only immutable logs for system of record and an in-memory read/view state for readers and mutating functions.

I am using this pattern in risk, fraud and commerce and once new members in my teams get over the mental barrier of decoupling the append only log from state, it all just clicks for them.

One way to understand CQRS is to realize that even the traditional model relies on CQRS underneath, it just so happens that the relational databases hide some of this behind a blocking wait on commit while a background thread reads and flushes the event log (consisting of SQL statements written to a redo log for example). Really what you are gaining by inverting the database like this is a lot more flexibility and simplicity for initial development and subsequent change management (maintenance). The flexibility I speak of manifests in your ability to tweak availability by introducing controllable circuit breakers with availability at the expense of some latency or alternatively putting an upper bound on latency at the expense of some availability (with every tradeoff fully documented and demonstrably adhered to).

I am of similar views. The feel of both performance and real keyboards/screens boosts my productivity significantly but I can see how others are able to get things done on a laptop.

Principles 10 years ago

This comment lacks context, however it isn't untrue. They view humans as automata that can be programmed to accept the views of the firms founder without questioning. On paper, questioning things is highly encouraged but in practice the entire thing is turned on its head and essentially used as a screening mechanism to find people willing to offer their life unconditionally to the so called social, economic and corporate governance experiment - hence the widely held perception of this being a cult. The recent article on AI is a testament to this thinking, at least in my view.

Meetup is my vector as well. I am organizing my first meetup on the topic of mechanical sympathy and low latency microservices with focus on low level details like dedicating cpu cores to interrupt request handlers, call routing within service discovery and so on. Only 5 people have confirmed but these are the folks I am interested in talking to and hearing from. It can be quite rewarding both personally and professionally.

The issue I have with it is not evident in your code but add another printf after the while and it becomes slightly more problematic:

  int i = 3;
  while (i--) {
      printf("%d, ", i);    // What does this print?
  }
  printf("%d, ", i);

Location: Private for now

Willing to relocate: Yes (To New York City, London, Bay Area)

Technologies: Java, Reactive, Streaming, Data (Modeling, Analytics, Persistence)

Resume: Confidential (CTO, leader, multiple startups, payments, investment banking, education, defense)

Email: privacyfornow@gmail.com