November 2018

240 tweets

Replying to @MaritvanDijk77

@MaritvanDijk77 I try to make this a habit
during work time. Because it is part of my job therefore I should be able to
learn new skills for work on work-time. If not, it's a signal that my
organization is on crunch-time too much and won't move forward.

Are developers paid to build what others envision or is there more value in
developers who challenge that vision?

So, you need to integrate a third-party service using their RESTful API and
expose this functionality to your users.

"That's an easy #architecture to build", you think, "I'll create a proxy with a
thin authentication layer on top of it. Problem solved."

Not so fast ...

Replying to @coderbyheart

Doing this you will make the service quality of this third-party API your
problem. If it is down, your users will see a timeout. If it is slow, your users
will have a bad experience when interacting with this part of your service -
they won't know the difference.

Replying to @coderbyheart

A proxy will also tightly couple your client implementations to the API of the
third party service, because it passes endpoints and workflows 1:1 through. If
the API of the third party changes (and it will) this needs to trickle down to
all clients.

Replying to @coderbyheart

There is a better way to do it. Instead of a proxy, write a client service (is
that the right name?). A client service is a high-level abstraction of the
functionality and uses your domain language (👋 #DDD) and records user
intentions, and processes these actions out of band.

Replying to @coderbyheart

This means that users will have immediate feedback when interacting with your
API for that service (202 Accepted) and don't have to wait for a slow third
party API.

Replying to @coderbyheart

The service will try to full-fill the intention in the background which provides
opportunity to implement retry-strategies and handle degraded service quality
gracefully. This also makes the rest of your system agnostic to the details of
that API (they use the client service).

Replying to @coderbyheart

State can be fetched from the third-party API regularly and in a controlled
manner. That means your users cannot hammer the third-party API with requests
and get you blocked.

Replying to @coderbyheart

As architects and engineers we need to not forget what software is great for,
and that our easy often means letting users do work which can be solved with
software.

Software has unlimited patience, users don't.

@mailbox_org das neue UI funktioniert nicht
so super auf meinem Moto G6, die Slide-Gesten ziehen häufig die rechte weiße
Leiste in die View und dann kann ich den "Delete"-Swipe nicht abschließen.
Embedded Photo

"Hei, we are ACME Consultancy and we are a team of fantastic software engineers
building the best and most modern apps for the connected world.

Want to read about what we believe to be the future of technology?

Here is a PDF optimized for your printer. kthxbye"

Replying to @gr2m

@gr2m
@SemanticRelease
@pvdlg_ That's great, I'll definitely give it a
try.

Could you consider using something else then master? @SemanticRelease could
use this opportunity to set an example and not proliferate the use of this
problematic term (it's also not correct). How about "latest", or "main"?
Embedded Photo

Replying to @toddlibby

@toddlibby If it is not “master who holds a
slave branch” then there it is actually incorrect to call it that.

What are the reasons you need to keep calling it something that does not reflect
its function?

Replying to @toddlibby

@toddlibby Copies are by definition the same,
not a modification - but branches are.

A master branch does not control other branches, rather the opposite is often
true: code gets merged into the main branch from other branches.

Hey #Git users, 👂 Typically we use a branch called "master" as the default
branch in repos. Do you need it to have that name? If Yes, please specify why.

RT for reach! 🙏

Replying to @MayaPosch

@MayaPosch Which in the context of git is not a
good choice. Other branches are created as copies, then modified and the changes
are applied back to the source branch. So it is receiving changes, not
controlling.

Replying to @MayaPosch

@MayaPosch Aren't releases snapshots of a
certain state of the main branch? That's why I use tags to mark releases, not
branches. A release is never changed, but there will be a new release (as a new
tag).

People who blame the former maintainer of event-stream also complain that they
cannot win a Tour de France with a bike they bought at the flea-market.

When you have an API with three different key formats in one response body ...

{ lowercase: "...", CamelCase: "...", snake_case: "...", }

you know they truly do #microservices, or?!

@heitor_lessa are you planning to add
support for subscriptions which are not results of a mutation in appsync?

E.g. assume that I have a business event happening without user interaction and
I would notify the user of that.

Replying to @coderbyheart

Because right now I do have Service Objects, which have a constructor where I
pass in dependencies, and I then use these dependencies in instance methods. But
the instance methods are side-effect free, meaning that basically all my object
members are declared as private readonly.