Great work explaining the networking OSI model.Probably best material i have read in all my technical years (including**spoiler alert** Stuff i liked:
Great work explaining the networking OSI model.Probably best material i have read in all my technical years (including the dedicated course in university). The physical, link layer , NAT, NIC , headers all explained so nice with a lot of examples and pictures.
Great at explaining state machines , the lower level of networking in a game , Berkeley sockets , streams, checksums, retry packet strategies bandwidth etc...
Great work on expalining how to reduce traffic by using entropy prediction for the state of the game !
Superb work at explaining strategies to mitigate latency, jitter using interpolation, extrapolation and many other techniques.
Really appreciated that the book included a section on what it means for a game to have intrgrated game services (for example Steam) , anticheat strategies and moving to cloud
The stuff i didn't grok:
Though the book was deep in many aspects it jumped ahead and raced exactly when having to explain how does one manage partitioned world state in a MMORPG like World of Warcraft, how do you provide fallbacks and how do you distribute players across geograhpyically distributed servers.
I get that game programming is done mostly in C++ but i found it many times cumbersome to read the code samples with the pointers and all that stuff. I think pseudocode or any other high level language would have worked, or even more diagrams. Its ok to read a class containing 1-3 mrthods , but when the sample is pages long C++ will be in your way (if you are not a cpp dev)
Some sections included too much code and a too deep dive where i think it wasn't necessary.
I would say this book is great for starters into Networked Games, but beyond that when you have some experience i would use carefully selected chapters of this book as refrences.
**spoiler alert** So i have read almost all published Erlang reosurces ,and, since i wanted to get a hold on Elixir i started with this one.
I found th**spoiler alert** So i have read almost all published Erlang reosurces ,and, since i wanted to get a hold on Elixir i started with this one.
I found the first 25% of the book really clean cut , concise , sharp. Author does outstanding job presenting the language features , and goes deep enough to give you a bird's eye view of Elixir. He also does a really cool job , including elixir manual links for the programming features that deserve a deeper dive !! +10 for that man !
Now for a starter the next 25% of the book is also great , since he introduces the OTP mechanisms (genserver, supervisor, app) , explains them in a simple manner , yet again with another big plus - he includes images ! Those are so damn good for conceptualization.
I knew most.of that stuff so i got a little bored and i thurdged fast through the pages.
Next part he goes all.the way to build a HTTP distributed system which i sincerely applaud ! Seeing the system go from Erlang primitives to a full blown http app running over a cluster is a damn fine job !
However i already read something like this in Erlang in Action , so again i passed through a bit faster.
What i really really loved in this book was the final part ! The release part , the way you build, deploy, monitor and interact with a running erlang system. That part is golden and comes from a guy that spent days on forums, erlang man and slack channels trying to understand the black arts behind the release process...and this guy in 2 pages explains and provides simple scenarios on how to do exactly this 100 clearer than all materials i've read. Marvellous !
Great fine and polished book ! I recommend it wholeheartedly to anyone interested in the Erlang/Elixir !...more
**spoiler alert** While the book started really strong and interesting explaining historical modelling , around the 30% mark it gets nasty , confusing**spoiler alert** While the book started really strong and interesting explaining historical modelling , around the 30% mark it gets nasty , confusing and you don't really understand how the pieces fit together.
The author while most certainly knows alot of &$it about distributed systems and immutable architecture , he certainly didn't give much thought on how to put it all together and create some damn coherence for the reader.
Ex: we are discussing historical modelling on the first 5 chapters , then out of friggin nowhere i'm cramped in a chapter about security - assymetric keys/hashes. Down the road another chapter is.about sql databases. The chapters are tackled somehow relating to immutable architecture but there is no damn structure , no order and definetly no logic as to why they were pushed there and in that order , its more like reading a memo.
**spoiler alert** The reason this book gets such a low rating is due to my frustration of not getting more architecture case studies with their chosen**spoiler alert** The reason this book gets such a low rating is due to my frustration of not getting more architecture case studies with their chosen solutions for the buck i paid.
The book is abstract , written in a bird view way , just as a software architect should look at the system he is building.
My favourite part was the high-elasticity bidding system.Its a masterpiece to see how a problem formulated by the business analysts/clients/pm gets decoded and translated into rock-solid system constraints and then based on these constraints ,how the system gets split , decoupled into functional components.
What i think is useful but for me was a bit too pedantic and dry compared to the previous parts was the last part of thee book.where the focus is people skills/negotiatiion. While i don't deny its useful , i would've preferred more case studies like the one i mentioned where you are given some ambigue systems constraints and its ur job too figure all out....more
Unfortunately i have read this book after Martin Kelppman's Designing Data Intensive apps and probably this is the reason i rated it poorly.
The book sUnfortunately i have read this book after Martin Kelppman's Designing Data Intensive apps and probably this is the reason i rated it poorly.
The book starts really good by describing the intetnal systems that are encompassed in any dbms ( Connection Listener layer , Query parser+ optimizer layer , execution layer and of course the storage layer).
I wanted the book to explore more on this subject , how the components are drsigned and how they deal with concurrency etc.
The book then took a deep dive into tree-based data structures ..as in really deep. I found myself at times wondering why am i reading this.It was way too terse.
Now after this part the book became interesting once again by the time it started tackling distributed transactions,consensus ,replication,byzantine faults, paxos algorhitms.
I was already familiar with all of those which in my humble opinion were tackled slighty better in the first book i mentioned.
All in all a good book , but i wouldn't classify it as complementing Martin Klepmann's...more
This is one of the best books i have read so far regarding concurrency. Although i am usually skeptical about reading books for a specific language , SThis is one of the best books i have read so far regarding concurrency. Although i am usually skeptical about reading books for a specific language , Stephen did a tremendous job with this one and i have already adopted a bunch of hia techniques right after reading his book.
This book is like a wikipedia for concurrency/parallelism, reactive and asynchronous programming. The author goes to great lengths to display all kinds of nasty scenarios that you could get yourself into when developing complex code and pragmatically offers the most elegant solution(s) from worst to best.
The aspect that i loved about the book is that he doesn't focus on the basics of concurrency because as he puts it "there are a plethora of resources out there".He instead focuses on the newest frameworks and libraries (thoroughly tested by the .NET team of course) that will help you get your job done with minimal effort and headaches. He is basically teaching the reader how to write a modern .NET application and how to leverage the goodies of the language.
He treats Rx,TPL Dataflow (mind blowing for me) , PLINQ , regular TPL , async-await , concurrent/immutable collections , events , task schedulers , synchronization contexts, cancellations , synchronization primitives and many more.
Best .NET book i have read so far and one of the best resources on concurrent programming !
"The moment you write -Thread.StartNew()- your application is gone into legacy code."...more
**spoiler alert** A solid choice for getting into HTTP and how the internet works under the hood.For experienced developers the early sections can be **spoiler alert** A solid choice for getting into HTTP and how the internet works under the hood.For experienced developers the early sections can be skipped.
I enjoyed how the book treated subjects such as : caching, security , consistent connections and proxies.
**spoiler alert** This book can be easily considered one of the pillars of optimization.
It is really incredible how the author begins the journey from**spoiler alert** This book can be easily considered one of the pillars of optimization.
It is really incredible how the author begins the journey from the lowest OSI layer to the browser and the newest trends in realtime communication.
The book starts with detailing each different medium (fiber, satellite , radio , wifi) we can nowadays use in order to send packets over the network.Interestingly enough he gets you into data transmission , signal processing , electronics and physics in order to give you an idea on how each medium impacts your app's performance and their hidden latencies.
The book then shifts to TCP and UDP, TLS, TURN , ICE and STUN protocols.Awesome chapter , i would have never known the intricacies of TCP and its adaptability regarding the unreliability of the underlying network.(The congestion window mechanisms part was insane).
Another chapter is dedicated to wireless networks.
The most interesting part was the one regarding mobile networks. The author does a terrific job by first explaining how your handset works , how it efficiently uses its battery in order to accomodate the ever consuming radio(s) (2G,3G,4G) , its complicated RRC (radio resource controller) protocol that manages the exchanges with the radio tower and handles your phone state-machine that manages your battery and its sensible connection with its radio.
Then he goes overdrive detailing LTE radio networks , with their architecture and components (RAN, ETC-SGW,PGW,MME) , the way they manage to serve users that are in constant motion (MME) switching them from radio tower to radio tower , updating their position in realtime and performing billing and security checks ; the way they direct packets from the public internet to their gateways ,parse , corect them , resolve users , find corresponding tower and negotiate protocols with the user handset to in the end forward the message. Its really interesting that the principles of clustering and load balacing that apply nowadays to any web application component (database, api , web app) were present in the telecom domain for a very long time and more importantly , not only for software but for radio towers as well.
The book then moves to HTTP , HTTPS , XHR(interesting history part here ) , SSE , Websockets and last but not least WebRTC.
Even though the last part was detailed and interesting i found it nowhere close to the one regarding mobile networks( could be due to the fact that i was already familiar with the concepts)
Awesome read and i recommend it wholeheartedly for anyone interested in building high performance applications.It is one of those reads which takes a hollistic view on all the layers and components involved to give you a neat idea on how to build something !...more
Having googlers reason about their giant architecture, the difficulties it imposed and then explain on how they handled them is invaluable for any IT Having googlers reason about their giant architecture, the difficulties it imposed and then explain on how they handled them is invaluable for any IT engineer.
While reading it , it might (hopefully) occur to you that there's a whole new world out there , at a total different scale with problems that need solving that you could not even imagine ( Multi Paxos , Resource Planning , Borg , Big Table etc...)
I see this book as a creativity additive before all else....more
I feel i must start with a statement : This is hands down THE BOOK for anyone interested in learning Erlang.
Even though Erlang as an ecosystem (languagI feel i must start with a statement : This is hands down THE BOOK for anyone interested in learning Erlang.
Even though Erlang as an ecosystem (language , platform) is huge , the author did a terrific job in separating it in some big sections: -basic erlang (syntax), BIF's (processes, links and monitors, refs,exceptions...) ,OTP and its behaviours ,deployments, distribution, testing, dyalizer and much more
The book is written in an entertaining and humoristic manner. It is heavy on explanations , tips and complete code examples (top down approach usually).
The only drawback to this book is that as a developer after writing my first app i found the build toolchain used in the book is no longer the preffered option by the Erlang community .The new way of building your apl is via a tool named rebar which i found not that straightforward for me. I wished the author would cover it also.
Aside from this little impediment the book is great and i recommend it to anyone interested in Erlang !...more
Definetly a must read for anyone interested in designing fault tolerant large scale systems.This book covers most hot topics and problems encountered Definetly a must read for anyone interested in designing fault tolerant large scale systems.This book covers most hot topics and problems encountered by organizations when trying to scale , operate and extend their infrastructure. The style of writing is entertaining and still the author is does not shy from tackling hard problems like consensus algorhytms, database engines , synchronization in distributed systems, CAP , efficient indexing ..etc...more