Posts

Showing posts from November, 2020

Agile Wasteland

Image
Agile is a wasteland . Don't believe me? Read Kent's Beck(Creator of Extreme Programing) article . IMHO Agile has been in decay since 2013. However, Agile become mainstream since 2000; in Brazil, agile become mainstream in 2015, more or less. Success means misuse. The demand for agile is very high in some countries like Brazil and quite inexistent in Europe and the USA(mainly Silicon valley). Scrum has often sold dogma and easy answers with easy certifications. Scrum is really a big part of agile being mainstrain and also why it is such a shit show. There is so much demand in some places and literally very few people who really understand the software and digital products which greats a very complicated enviroment. So having said that, should we drop agile completely? Well, in some sense, yes. Things we just do because of Dogma and we dont understand and really dont add value should be dropped 100%. However, would all problems just go away? 

Why Encryption is so hard?

Image
Regulated Industries like Financial/Fintech, Insurance/Insuretech, HealthCare/HealthTech requires more care in sense of security. However pretty much everybody else It's very likely your PII(Personal Identifiable Information) will be in form of plaintext(unencrypted) in your databases. When I use the word Encryption I mean Symmetrical encryption. Asymmetrical encryption often used for Certificates and Files. When we have data in our Datastores(Relational, Non-Relation, New-SQL, or BigData) we often rely on symmetrical encryption. Symmetrical encryption is being around for many decades. AES (Advanced Encryption Standard) is one of the most Standards. So if there are standards why encryption is hard? Security/Encryption it's a cross-cutting concern which is hard for lots of reasons and also ends up introducing other engineering challenges. Cloud computing also it's another force that will eventually more and more push companies to deal with security and therefore encryption. 

GraphQL Server With Java & Clients in Go and Rust

Image
GraphQL it's an interesting approach for Data Aggregation. GraphQL is a query language API for existing data. You can leverage all your REST APIs and existing data sources. GraphQL it's mobile-friendly and you can ask literally just the fields you need. GraphQL also allows you to share queries and there are clients for pretty much all languages. GraphQL allows you multiplex and de-multiplex multiple requests in one, being really great for tail latency and nice for data-intensive applications. However, not everything in graphql is flowers and I dont want to paint a rosy picture. There are issues and tradeoffs you need to take into account. I highly recommend you read these 3 series of posts I made comparisons with other approaches like BFs. BFF and GraphQL Dilemma part 1 , part 2 , and part 3 . Today I want to share a video I made where there is a GraphQL Server written in Java and we have 2 clients one Written in Go Lang and the other written in Rust. So Let's get started.

Kafka Streams with Java 15

Image
Kafka Streams is a Streaming library similar to Spark and Flink which works with Apache Kafka. Kafka stream can be useful to process historical and near-real-time big data workloads but also for non-realtime analytical computations at scale for the online world as well. Kafka-Streams is elastic, highly scalable, fault-tolerant, and fully integrated with Kafka. You can use Kafka Stream with Java, Scala, Kotlin JVM applications and also have exactly-once processing semantics. Kafka-Streams is being used by the New York Times, Pinterest, Line, Trivago, Zalando, and many other companies. Today I want to share a video of Kafka-Streams running with Kafka 2.6 and Java JDK 15. So Let's get started. 

gRPC with Java

Image
gRPC is a high-performance universal RPC framework. gRPC has support for interoperability between several languages such as Java, C++, C#, Go, Dart, Kotlin, NodeJS, Objective-C, PHP, Python, Ruby, Rust, and many more. gRPC has a schema for service definition and it can generate code based on that schema. gRPC also supports bi-directional streaming and authentication with HTTP/2 protocol. gRPC is battle-tested by Square, CoreOS, Cisco, CockroachLabs, Netflix, and many other companies. gRPC is also part of the CNCF project. Today I want to share a video made with gRPC and Java. So Let's get started. 

Cassandra and Kubernetes with K8ssandra

Image
Cassandra is a kick-ass database. It's reliable and works pretty well for insert heavy workloads. Cassandra does well with reads as well as long as you design your tables with your access patterns in mind. In order to work well with Cassandra, you need to avoid Tombstones either by avoiding deletes and updates or by avoiding collections. Cassandra cluster configuration and distribution can be tricky and also repairs can be a challenge at scale. K8ssandra is a complete Cassandra distribution with observability( Grafana and Prometheus ) and a simple solution for repairs called Reaper . You also need to keep in mind that by using Cassandra in containers you will lose throughput. Let's say you want to explore Cassandra and you are already using kubernetes or you have a tier 2 or 3 need or even want to save some cost in your development environment that could be an interesting solution. Today I will show how to install K8ssandra in Minikube.

Fun with Akka Actor System

Image
Akka is a kick as technology. Today I want to share a video I made about how we can model an actor system using Akka, Scala, SBT, and IntelliJ Idea. We will model a vending machine using Akka and Scala. We will take advantage of the Scala Type system and Akka typed actors. Type Systems are great because they make programming more secure and prevent bugs and require less testing since the compiler does more for you. For this video, we also will be using SBT 1.4.0, Scala 2.13, and Akka 2.6. So I hope you guys like it. So let's get started!

Java Collectors

Image
To be 100% clear this post is not about Java Garbage collector neither Java getting your money :D. Java 8 introduced Collectors, but still most engineers just barely know them. Collectors are pretty useful if you are working with Streams. According to the book Effective Java 3rd edition, you should not abuse from Streams but unfortunately thats, not the reality. However, if you still have fit you stream code in a few lines of code Collectors can be handy and save you some additional transformation steps. Most people when they know collectors they tend just to use the toList() collector but there is much more to explore. Today I recorded a video showing some other collectors' features with you guys. I hope you like it. Let's get started. 

Linux Terminal Goods VI

Image
  It's time for another Linux Terminal Goods post. This is post #6 of the series of posts about cool, productive Linux terminal tools for Engineers and DevOps Engineers. If you did not read the previous posts(there is lots of cool and useful stuff there) I recommend you take a look now: I , II , III , IV , V .  So without further due let's get started and checkout 5 new cool commands/programs for you!