Saturday, March 30, 2019

Sidecar pattern in Service Mesh (Explained by Example)

Sidecar Pattern is an architecture where two or more processes living in the same host can communicate with other via the loopback (localhost) essentially enabling interprocess communication. It is the foundation architecture on which service meshes such ad LinkerD and Envoy is built on.

 In this video, we will explain, how we do things the classical way and how the sidecar pattern works, the pros and cons. Sidecar pattern also enabled the service mesh such as linkerd and istio that make microservices even better.  

While sidecar pattern popularized in the containerized environment you can use it in the non-containerized environment as well. 

* Decoupling thick libraries and references,. 
* Applications can evolve independently. 
* Polyglot - Each sidecar application can be written in its own language

* Latency 
* Complexity 

Stay Awesome!

Saturday, January 12, 2019

To compute on the edge or on the cloud, that is the question.

It’s interesting. When I got my first computer in 1995, I was so excited to buy PC magazine and get a CD with a bunch of video games demo and trial software etc. what all the software had in common back then is they run completely independent from a server. Plug, install and Play. That comes with a limitation; Storage and compute. Developers have constrained to PC machines with limited resources and writing compute-heavy software was difficult because PCs can’t run them.

Slowly, software started to take a different shape when client-server architecture emerged. You will install the “client” piece software on your PC and the rest of the software lives on a server somewhere. This made developers offload the compute and storage to the server making the client code much “thinner”. This also allowed vendors to mass produce affordable client end-user hardware (laptops, pc, phones) since the compute required to run client software is minimum. This pattern is still dominant especially with the emergence of the cloud ☁️.

In this day, client hardware is so much more powerful it is a waste to not utilize. That is why developers started to run compute jobs on the “edge” (another word for the client) to avoid the latency of sending a job to the cloud and wait for the result. This also served to be beneficial in case the edge network is intermittent.

Will we eventually move back to running everything on the client? Will sending jobs to the Cloud becomes more expensive than executing it locally?

It's interesting.

Sunday, November 25, 2018

My New 2018 Video Course - Python on the Backend

Click to check out the course 50% of for the holidays!

Do you know Python and want to talk it to the next level? How about writing a website in Python, or an API so your fellow developers can consume in JSON over simple HTTP. With the boom of microservices and API, developers who are used to working with Python writing scripts can now take their knowledge to the backend. This course will teach you the basic of web servers, how to setup the Python Web server and write interesting cool applications on the backend.

What are the requirements?

Able to understand basic programming principles

What am I going to get from this course? 

Build cool web applications and APIs for other clients to consume Developers will be able to serve a basic website with python Turn your python script into a web API

What is the target audience? 

Beginners python developers who are interested in building HTTP web APIs in python

Check out the course 50% off for the Holiday's

Sunday, November 18, 2018

My New Book for 2018 just published - Learn GIS Web Programming with ArcGIS Javascript API 4.9 and ArcGIS Online

GIS Programming kindle book
click on the image to purchase the ebook on Amazon

In late 2012 I got an email from a book publisher author with a proposal to author a book. They have found me through my blog and linked a blog post I wrote back in 2009 on ArcGIS Server technology. I accepted their offer and wrote the book and 3 others that followed.

This makes me question, why did I write that original blog post? I didn’t know that one day a publisher will google that technology and find my post and make me an offer to write a book. I can’t remember why exactly I wrote that post but I knew that I was having fun doing it. Sharing my experience with the world through this writing always felt good to me.

In August 2017 I started a new series called Getting Started with ArcGIS Javascript API 4.x on YouTube. That series became really popular. The interaction on that series inspired me to write this book to discuss things I might have missed in that video series and to distill all my findings, knowledge into a book. So if you are new to the YouTube channel consider subscribing to check out more content over there

Today, I decided to re-live the experience of writing a book. However, no publisher is backing up this book. This book is written from the heart, full of joy, from me to you. It is a brain dump of what I think will be a very beneficial work for you guys.

As of the time of writing this preface, I did not pick a title of this book. And I’m feeling good about this. I know the topic and I can imagine how the book will look like. However, I feel that picking a title will force my thoughts through a narrow path and thus limit the potential of what this book could be. Obviously, if you are reading this that means I have already picked a title.

This book is about building web maps using Javascript technology. I picked Javascript because it is a resilient light-weight technology that can run on both the server and the client, mobile, IOT and supercomputer machines. 

Traditional technology books discuss tools. “This is how to load a web map in a browser”. “This is how to query the rest endpoint”. “This is how to render a 3d map”. You get a catalog of tools and what they do. There is nothing wrong with this format. In fact, it is a good reference. However, you don’t get any context when reading such books to take action and build something. It is like learning what is a hammer, nail and screwdriver does but these tools are useless if no one shows you how to build a table using these tools.

I like to write my books by example, where I build an app and in the process explain the various tools I’m planning to use to build this app. Personally, I feel this is a better way of learning as it gives context.

I hope you enjoy this book.

What are we building in this book ?
We will be building a web mapping application from scratch. For tourists, we are building an app that helps users locate landmarks. The app shows the landmarks in a map such as libraries, cafes, restaurants schools and much more. It has a search capability to search for landmarks where they will be highlighted on the map. It also shows the nearby landmarks within specific miles from current location. So you can answer interesting questions such as show me all libraries within 100 feet of this coffee shop or are there any liquor stores within a mile from this school? I will be providing you with the sample data which I created myself, this data is not real it is just sample. All we need is to write the application. The app will run on both mobile and desktop.

Don’t worry if this seems like a lot. We will break down those functionalities into different chapters and slowly walk through each.

Who this book is written for?
Anyone interested in learning how to build a web mapping application. Basic programming knowledge is recommended but not required. I will explain all that is required as we go through the book.

System Requirements
I designed this book in a way so you don’t require a special or license to get started. I will be using a mac in this book but will include instructions for Windows and Linux. We will use ArcGIS Online free account to host our landmark data and ArcGIS Javascript API 4.x to write the web application. I will provide that data in GeoJSON format so we can upload it to ArcGIS Online.

Software Requirements
All you need on your machine is a text editor to write code and a web server to serve the static files. I will be using Node JS as a web server and Visual Studio Code as the text editor. We will take care of the download and installation of those two in chapter 1.

Saturday, November 3, 2018

What is State Transfer in REST architecture really mean?

Understanding State Transfer in REST 

One of the most critical properties of the REST Architecture (Representational State Transfer) is the protocol is stateless and the state gets transferred between the client and the server. I personally always found this to be confusing until I really learned architecture by actually using it. In this video, I will explain the state transfer in REST by example. 

In a stateful architecture, the client makes a request to the server and the server “remembers” the client. The next request from the client will be retrieved from the state stored locally in the server. The pros of this are the server will pick up where they left off with each request, so request throughput is higher in stateful architecture. Another advantage of the client can send less data through the wire too. The cons of this architecture are if the server is down, the request cannot be fulfilled and the client is forced to disconnect and reconnect again to another server anyway and go through the entire process.

However, REST is a stateless architecture where every request is responsible to “bring” as much information about the client as possible for the server to reconstruct the state from scratch. This means that no matter what server the client hit, the request will always be fulfilled so you get higher availability. This is where the state transfer in REST came from. Disadvantages of this architecture is the client now sends more information through the wire, thus your application consumes more bandwidth as a result, this is less of an issue with the introduction of protocol buffers and HTTP2. Another disadvantage is the throughput goes down since each request has to wait for the state to “replay” and get constructed. 

Hope you guys enjoy the video
Check out the other content of this channel

For more software engineering videos click this link

Hussein Nasser

Thursday, October 25, 2018

Announcing my Podcast


If you are interested in GIS and Software Engineering, you will enjoy my podcast. Check it out! 

Saturday, October 6, 2018

Product Architect vs Solutions Architect

In this episode of #softwaretalk, we discuss the differences between the software product architect and a solutions architect. We start by defining the difference between a software product and a solution. Then we discuss the responsibilities of product architect vs solution architect.

If you are interested to be a solution or product architect or engineer you came to the right place.


Friday, October 5, 2018

Reverse Engineering Twitter

This is our reverse engineering series where we pick a mainstream app and try to understand how the developers built it, how the APIs are designed on the backend and how the front-end user experience is designed for performance, efficiency and business decisions. We can become better software engineers by learning how the likes of Google, Facebook, and Twitter are building APIs and user experiences. Obviously, I might make a mistake here and there but that is part of the fun! In this episode, we try to reverse engineer the Twitter feed. We discuss how the IOS Twitter App is doing efficient thumbnail caching and insane client queuing of tweets, likes and retweets actions. Enjoy!


Thursday, October 4, 2018

#Geodatabase Talk - Episode 9 - SDE (Spatial Database Engine)

The #geodatabase is a technology developed by #Esri that abstracts the underlying storage medium into another layer. By doing that you get interesting functionalities like domains, feature classes, tables, feature datasets across multiple databases from file based to enterprise RDBMS like Oracle, PostgreSQL, SQLServer DB2 etc. The communication between the client and the enterprise geodatabase is done through the spatial database engine. We explain that layer in this episode.

Boost your GIS knowledge by grabbing my books ——————————————————————— - [x] Learning ArcGIS Geodatabase - [x] Administering ArcGIS for Server - [x] ArcGIS By Example - [x] Building Web Applications with ArcGIS Watch my top GIS videos ———————————— - [x] Support IGeometry on paypal: - [x] Full ArcGIS Javascript API Series Playlist - [x] Full Multi-User Geodatabase Playlist - [x] Full ArcGIS Pro 2.x Playlist - [x] Full ArcGIS By Example (C#) [Phonatech] Playlist - [x] Full ArcGIS Server Playlist

Monday, October 1, 2018

Is Coding Easy?

Welcome to the first episode of software engineering talk. This series we pick a topic and casually talk about it. In today’s episode, we try to answer the question is Coding easy?

Intro: 0:00
Easy vs. Simple 3:20
Building a profile page example: 3:55
Database Level challenges: 6:00
Database Indexes: 8:00
Be Empathic of all software actors: 10:20

Hussein Nasser