**spoiler alert** When you send a picture or some text over the internet, or you record your voice or some video , you make a call with someone, or wh**spoiler alert** When you send a picture or some text over the internet, or you record your voice or some video , you make a call with someone, or when DNA is replicated all of this can be seen as information and can be efficiently translated into a sequence of 0 or 1, that is BITS or binary format
This is what Claude Shannon gave to the world , a unified way of viewing , encoding , compressing information and sending it over a communication channel from the sender to the receiver. It was a blast, it changed the world as we know it. He was the ancestor of the digital age, the father of information theory , the theory upon whose shoulders lies the world we see today.
The second ground breaking theory was that Shannon solved the issue of noise. A sender encodes a message using a tranceiver , sends it over a channel, arriving at a receiver that decodes it. The channel is ALWAYS noisy , it will always distort your message. When you talk with someone over the phone , or on the street there is noise. When DNA is replicated , there are always faulty mutations that can lead to cancer , that is noise. When you send morse code , it can be distorted...etc.. So Shannon proved that there is a formula between the channel capacity, bandwidth and the ratio of noise to signal.
This second theory changed everything since it proved that if you can send messges with very high accurancy that are not affected by noise IF you keep your payload UNDER the channel's capacity.
But Shannon was not a man of ego or fame, what defines him was a brilliant playful mind always tinkering at some interesting mathematical-engineering problem. He had a brilliant intuition and he would first use his hands to tackle a problem (build a prototype) and then write the math to back it up. He didn't have time to fool around prizes , medals , fame glory ...he wanted to play , and played he did , monocycles , juggling , building robots , rat labyrinths.
What a book and what a man Claude Shannon was , and to think that he met and befriended, Alan Turing , Von Neumann , and many other collosus of his age in the 1940s and 1950s.
**spoiler alert** Before i say my opinion , you must understand i read this book (which is full of examples) without writing or testing the code sampl**spoiler alert** Before i say my opinion , you must understand i read this book (which is full of examples) without writing or testing the code samples, so i am highly biased !
Though i have read the first book of the author and it remains one of my favourite programming books, i feel this one was really cumbersome to underatand even having prior Erlang knowledge and despite the author explaining the concepts related to Property Based Testing really well.
The problem in my opinion is the language itself, Erlang. I found the examples written in it not suitable to understand what is going on there. The Erlang macros were really annoying and there is too much to understand about the framework PropEr and not about property based testing.
What i understood quite frankly from the begining is that you can't really do property based testing without an already mature existing framework on it....and this basically becomes learning a new framework....
I wad interested more in the theoretical concepts and how they could be used in general. I would have enjoyed less code and the content to be language agnostic....more
Stellar the 30% of this book explaining basic data science stuff like regression, decision trees, lifts, gains , profit curves as well as how datascieStellar the 30% of this book explaining basic data science stuff like regression, decision trees, lifts, gains , profit curves as well as how datascience solves real world problems (costumer churn) and all the stages of devising such a solution.
The problem afterwards is that it got quite verbose, a lot of text sprinkled with some (not many though) formulas and for me it got quite confusing and unnerving.
I was expecting more on the implementation part to be able to see the stages of deployment of data science models and the results but it wasn't to be.
There was just too much text talking about the formulas and the variables and i think this was worse than having more of said formulas.
First 40% of this book is literally the history of the microchip, starting with the first transistor in late 50's designed by Shockley, tOutstanding !
First 40% of this book is literally the history of the microchip, starting with the first transistor in late 50's designed by Shockley, then mass produced in emerging companies like Texas Instruments and Fairchild initially for the Pentagon's guided missles used in Vietnam war then for general use.
We then hit the 60-70's when America outsources its production to Japan and loses its grip on memory chip DRAM technology. 3 engineers leave Fairchild and create Intel. In the 80's Intel loses market share to Japan which learned to integrate chips in consumer electronics (radios , walkman) via companies like Sony and Sharp.
Late 80's Intel gambles and leaves DRAM market and together with IBM and Bill Gates MSFT devise an alliance around IBM computers , running Windows OS , powered by Intel's x86 microchip architecture. This will dominate the next 30 years.
We also get to see how the smartphone arena changed the balance of pwoer from USA to Taiwan and how Intel refused to produce custom chips for the emerging Apple , thus throwing away a huge opportunity for divestment.
We get to understand the different types of chips (memory , logic and analog) and who specializes in what as well as the complex procedures required to.build a chip (design, production and assembly) and learn why everything now is centered around Taiwan's TSMC behemoth.
The transistor lessons are above par , as well as the complex machinery needed to build it nowadays via the process of litography , and why only Netherlands's ASML can do it (using no less then 460k parts ) including high precision lasers from Germany's Trumpf which in turn uses Carl Zeiss optics.
There are so many things explained regarding transistors , cpu's , memory , supply chains , the companies that design ,produce and consume (Intel, AMD, Nvidia, ARM, Micron , Huawei , Samsung , Apple) , world gonverments, USA trade war with China and the banning of Huawei....
This book is literally a compact enciclopedia involving topics such as history , electronics , science , politics , warfare and everything that has to do with microchips which is the new world's gold standard. Besides developers , and electronic nerds, people into tech and not only will find this book mind blowing !...more
**spoiler alert** For a long time i was damn convinced that i was missing the next big thing not jumping into the bitcoin programming job market. Readi**spoiler alert** For a long time i was damn convinced that i was missing the next big thing not jumping into the bitcoin programming job market. Reading this proved me i didn't actually miss anything and i was right to see all this as some hyper advertised meme
The book does a great job in the first 4 chapters laying the mathematical foundation for understanding cryptography more specifically Finite Fields , and Elliptic Curves. However that being said later on you realise you won't reimplement the wheel and you can be totally ignorant on how the specific algorhitms are performing hashing.
So having said that, you can see a smart contract as a assembler language , neaning that operations and variables come in as a stack which is consumed sequentially , or as a matrioska doll.
Ex: 22 33 Op_equal hash
Put 22 on the stack , put 33 on the stack Perform equal on these 2 values Then hash the result
You are at all times deoendant on the blockchain and for whatever you need to perform , you make exterrnal calls to some Blockchain node to verify coins , accounts, address to send coins etc...basically everything everyone has ever done has to be stored for perpetuity somewhere...which violates the Steady State principle , the transactions have no god damn lifecycle...imagine the energy and stroage cost of this never ending , continously expanding...totally unfeasible.
Still this is in the area of Proof of Work , for your smart cotnract to do the stuff you program it to do, your Inputs>Outputs, so that there is some bitcoin fee left for the miners , the ones that lend their processing power.
Nowadays everyone jumped the Proof of Stake bandwagon when talking about crypto , meaning rhat we dont deal with blockchain anymore , with hashing and everything mathematically complex but with some dudes launching a virtual currency and hold the majority of the coins and sucking up most of the revenue generated , like the stakeholders in a typical corporation.
A filthy domain that i am glad i have not touched in my careet !
The first introductory chapters were interesting , mathematically-wise but after getting deeper you realise you could skip them and still be able to code smart contracts.
Then the mid book is a bonanza of code samples containing different methods of hashing and representing different operations when dealing with contracts (serialization, networking , parsing , etc)... The python code samples were quite cumbersome.
I for one felt the book needed more day to day examples on how to code the contracts , uniting both the business logic part with the interactions with the blockchain. However since every blockchain is different you would need to fiddle with each of them and learn their particularities... Similar to what frontend devs do whenever a [new_shit].js comes on the horizon....more
**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** Unique book , in that it approaches management in tech companies as some kind of systems engineering. Topics include but are not limi**spoiler alert** Unique book , in that it approaches management in tech companies as some kind of systems engineering. Topics include but are not limited to : - management styles , team sizing , providing feedback and help to your team, task splitting , career progression , feedback , promotions , interviewing. The book provides tips and strategies that you can approach in order to becomr sucessful in your organization....more
**spoiler alert** The book is not really written for novices and expects the reader to have played around with Erlang for some time.
While the book is **spoiler alert** The book is not really written for novices and expects the reader to have played around with Erlang for some time.
While the book is rich in explanations , diagrams and theory regarding Erlang and OTP , the reason it shines is its hands-on , goal oriented approach toward building systems.
The book provides rich examples on how to use erlang behaviours, distribution, releases ,interop , drivers , tracing , tcp and http servers , performance tracking .
This being said , the place where it really shines is developing a caching system.
We get to build a caching system starting from Erlang behaviours , then we add distribution (really really amazing part ! ) and mnesia. We then add an interface application on top. Then the author goes to great depths to use interoperability with Java using Drivers and NIF's in order to add a hard storage behind this cache in the form of Apache HBase.
The fact that all this add-ons are made upon this caching application which spans across multiple chapters aspect is both a plus and a minus from my part.
Its a plus because you see how an application evolves, adding layer on top of layer and the way you abstract away implementation details.
Its a minus because I felt that many of this features should've been treated as standalone apps. I do not really like to check/remember the implementation details from some 3 chapters ago.
All in all a solid book and to those interested in Erlang/OTP i can definetly say : You won't regret reading it !...more
**spoiler alert** A solid pick if you want to get some leverage the next time your manager has your back against the wall trying to make you commit to**spoiler alert** A solid pick if you want to get some leverage the next time your manager has your back against the wall trying to make you commit to some project impossible to deliver in the preseneted timeframe.
You will get a good understanding on what estimation means , how are estimates different from commitments and targets. Once you realise this , your approach with non technical people from your organization will hopefully change radically
There's a lot of useful tips on topics such as estimation errors , planning , the cone of uncertainty and many tools and approaches on figuring out how in deep shit you.are when starting a new project with the given resources or how badly the ongoing one was planned.
This one gets 3 stars since i was hoping for some end to end scenarios like "you receive project X and you do Y,Z,T in this order". I was expecting a bit of handholding and more cohesion regarding the multiple tips and approaches you get familiar along the chapters....more
**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
**spoiler alert** Really awesome read bridging the gap between computer science and daily life , focusing on the complexity of life and how we make de**spoiler alert** Really awesome read bridging the gap between computer science and daily life , focusing on the complexity of life and how we make decisions based on intuition or common sense which for the most part turn out to be the optimal ones .
The book also presents some amazing mathematical solutions to problems we encounter in daily life such as : - choosing a new secretary , buying a new condo : look then leap approach (37% rule) - choosing a parking lot , cashing out : optimal stopping - choosing a new restaurant ( multi armed robber / gittins index) - creating a travel plan : Lagrangian Relaxation of constraints - solving an intractable problem (like solving chemical composition dependencies or even placing relatives to tables at a wedding) , one that has so many variables it is impossible to compute in a reasonable time : applying a Monte Carlo simulation , sampling solutions and taking the best one
One of the most interesting parts was the one regarding Exponential Backoff? How do you deal with a [drug/alcohol..etc] addict friend or relative that needs your help (money/shelter) but distresses you constantly? You can't turn him down without feeling guilty but you can not constantly be there for him. After helping him every time you will let him now he can use your help the next time in a period two times longer than the previous one.Thus you apply an exponential backoff. Some countries have started applying this method in the prison system regarding probationary periods , jail time etc...
A really great and fun read that admiringly is accesible to anyone (not just computer science people)....more
The best thing about this book is that you get a unique occasion to see how do the people in charge of large corporations look like , how do they act The best thing about this book is that you get a unique occasion to see how do the people in charge of large corporations look like , how do they act , react and most importantly what do they really know about their business - most of the times a lot LESS then their grunts !
This compelling book takes us through the rollercoaster that Nokia has been through from 2008 to 2016.
From being the undisputed king of handsets , to getting smashed in just one year by apple and then by Android .From the bittersweet partnership with Microsoft to the war-like negotiations with Steve Ballmer for the Company's most precious division.
Last but not least , the abandonment of the handsets division and the leap of faith into the Network Infrastructure (Alcatel acqusition).
The best part : the Nokia boardmember-to become chairman - to become CEO is telling you the story just like a role playing game.
P.S When you are the Technology Manager and you don't know your OS takes 48h to compile for a phone , the same phone you are placing all your eggs in , you know you are in some deeep long term trouble....more
This book is like a big FU to most of today's interview questions , hands down. What does it matter if you used a factory or a singleton or you used quThis book is like a big FU to most of today's interview questions , hands down. What does it matter if you used a factory or a singleton or you used quick instead of a bubblesort when your system isn't handling timeouts , isn't limiting requests , its threads block indefinitely on hung SQL connections , or you don't maintain a steady state -aka- automatically clean the damn logs. Nygard provides real examples (own career) where a small mistake results in millions of lost revenue. He addresses all kinds of stability antipatterns and follows with a powerful framework on how to design systems that are resilient and fault tolerant , how to deploy to production , how to operate them so that you won't get called in the middle of the night.
The funny part is that , as i am writing this , i am responsible for a system that is about to go live in the near future. Not only has this book totally changed my priorities but it has also sent me back to the whiteboard envisioning faulty , disastrous scenarios and their corresponding solutions....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
**spoiler alert** In just a mere 260 pages Scott does a terrific job implementing a real life order processing system in a DDD way starting from requi**spoiler alert** In just a mere 260 pages Scott does a terrific job implementing a real life order processing system in a DDD way starting from requirements gathering , implementation and even further development , explaining along the way DDD concepts (domains, bounded contexts , adapters, side effects) as well as functional programming with F# (including functors , applicatives , monads ) .
While the code snippets and the explanations are great what makes this book shine are the drawings ! Never have i seen so many abstract concepts that are usually hard to grasp so intuitively depicted and explained as in this book !
Must read for anyone interested in DDD , functional programming , Fsharp and designing better and bug-free systems in general !...more
**spoiler alert** This book is the natural go-to after you are already pretty accustomed with Erlang basics. I have found it really comprehensive and **spoiler alert** This book is the natural go-to after you are already pretty accustomed with Erlang basics. I have found it really comprehensive and particularily enjoyed chapters treating more advanced topics like releases , logging , debugging , VM mechanics....more
Amazing resource for learning Erlang.Well written , modular , tackling all Erlang programming aspects from: basic syntax , bits , concurrency, data stAmazing resource for learning Erlang.Well written , modular , tackling all Erlang programming aspects from: basic syntax , bits , concurrency, data structures, behaviours to complex subjects such as Mnesia , Distributed Erlang , TCP , hell , even GUI , introp with C/Java .
The best chapter from my point of view was the erlang debugging tools. I have yet to see so much effort put in a chapter like in this book.Debugging is fundamental in any language but when running in a distributed , fault tolerant environment it becomes a MUST to quickly see the problem at hand.
I was a bit put off that the author did not include a chapter for web programming , at least some basic API design since it is the bread and butter for a web developer.
**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