Hussein Nasser Podcast

Hussein Nasser Podcast

Avatar
By Hussein Nasser
Welcome to this podcast with your host Hussein Nasser. If you like GIS and software engineering you’ve came to the right place. All Opinions are my own.
More places to listen

More places to listen

Episode 105 - Relational Database ACID
  ACID ACID are four properties of relational database, they Atomocity, consistency, isolation and durability, and I think any one working with a relational database like postgres, mysql, sqlserver oracle, should understand these properties. In this video we will go through the four properties and explain why each is critical to make a relational database we will also talk about why some people are moving to  NOSQL database Atomicity  All or none. if a failure happened during transaction, db failure, or one of the queries failed.  Example Isolation Concurrency, is transaction isolated from other inflight transactions? if a transaction is in flight does it see changes from other inflight transactions? Does is it see any changes? Does it only see committed changes. Does leading to inconsistent results.  Problems arising from isolation (read phenomenons)  dirty reads Non repeatable reads Phantom reads  Isolation levels Read uncommitted Read committed  Repeatable read  Serializable  Durability When I commit a transaction does my changes stay durable after the database restarts/crashes etc.  See if your data still there.  Consistency Consistency from referential integrity keys  Does the number of likes on a picture = the number of rows that the picture got on another table? If a delete a picture does all the likes of that pictures go away on the other table. Consistency in reads  If I committed something does everybody see it immediately or are they going to get an old value? Consistency in concurrency Is the view of a transaction in flight consistent? Are other inflight transactions making changes to the database affects that transaction view? Jump Codes 2:00 What is a Transaction? 4:30 Atomicity  7:00 Isolation * 9:30 Isolation - Read phenomena * 11:40 Dirty Reads 14:40 Non-repeatable Read 17:00 Phantom read 18:53 Isolation Levels*2 19:20 Read uncommitted 19:55 Read committed 21:05 Non-repeatable Read 23:40 Serializability  25:00 Isolation Levels vs Read phenomena Table 27:45 Consistency  28:30 Consistency in Data 33:50 Consistency in Reads 35:00 Eventual Consistency  40:30 Durability  Cards 27:40 Exclusive lock vs shared lock
44:56
August 21, 2019
Episode 104 - REST API - Representation and State transfer
  REST stands for Representational state transfer its is an architecture that became very popular in build web APIs. It was the dissertation of Roy Fielding. In this video we discuss what makes an API RESTFUL, the REST APIs constrains, ill the show you an example of a RESTFUL api in github.  Representation and State transfer  Representational  The resource is a representation or meta data, but the actual backend could be something else and stored differently. An  Example, could be a user resource could be represented as a JSON object but it is stored on the backend as relation DBMS tables such as postgres.  State transfer The application server is stateless, and when we want communicate we transfer the current state of with each request. Thus the state transfer.   Example, lets say you are uploading a 5MB file in 5 chunks each is 1 MB in size and assemble it on the backend. The REST api end point takes the content along with a upload sequence, then persist it on a storage backend such as S3. Each chunk request could hit a completely different stateless server and the transfer will work fine since we are transferring the state (upload sequence) with every request. The client maintains the state in this case.  Rest constraints Client/server architecture Is there separation of concern? Can you upgrade your server without upgrading client? Can you upgrade the server without upgrading the client?  Statelessness Is your api stateless? Can you restart your backend server and clients of your api resume working normally without failing? Can you add a non sticky load balancer and transfer the load between the servers without the client breaking? Cachablity  Can resources that can be cached be cached with your api? And is there a way to identify stale resources?  Layered systems Can I insert gateways and proxies and firewalls silently without this architecture breaking? Load balancers  Uniform interface Resource identification (uri)  Resource Representation (json)  HATEOAS Hypermedia as an engine to application state Initial link can link to the rest ( github)  Github  Emojis 
25:45
August 7, 2019
Episode 103 - What is an HTTP Proxy? (Transparent, HTTP and Service Mesh Proxy examples)
A proxy is a software that intercepts traffic and forward it to the destination on behave of the client. This extra layer provide several advantages such as caching, load balancing, content filtering and much more. Some implementations of proxy can be used by governments to spy on its citizens. We made a video about proxy vs reverse proxy check it out if you want to learn more about the difference. In this video we will explain the different types of HTTP proxies and the benefits and use cases of using each coming up.  Transparent proxy (gateway)  HTTP insecure proxy Service Mesh Proxy Transparent proxy It is mostly used by the ISPs, clients don’t know they are connected to transparent proxy. The way it works is it looks at TCP/IP layer 4/3 and forward it to the destination, it might do some content filtering based on the IP address or the port so it blocks certain sites. But thats pretty much it. transparent proxy cannot know which pages are you viewing or your what youtube videos are you watching. It can block you from watching youtube all together but it cannot block you from watching lets say a specific youtube channel that is critical of the government ISP is located at.  Transparent proxy doesn’t change the content.  HTTP Proxy (insecure)  This kind of proxy is used alot, especially in service meshes like linkerd. This kind of proxy have to be configured in the client to use it. Each request will always be targeted to the proxy IP address / port. So when want to make a GET request to husseinnasser.com, and you have a proxy configured, when you look at the TCP packet for that request the destination IP and port is those of the proxy. The proxy looks at the GET request and specifically the HOST header and establishes another TCP connection to the actual destination on husseinnasser.com. So this kind of proxy maintains two tcp connections. Client to proxy and proxy to destination. The proxy have access to the content, it can block the website. It can know what exact page you are viewing. It knows everything because HTTP is insecure. Assuming youtube uses just HTTP, if you have a proxy setup it can block a specific channel or even video from being viewed. 1:05 proxy vs reverse proxy https://www.youtube.com/watch?v=ozhe__GdWC8 2:50 TLS https://www.youtube.com/watch?v=AlE5X1NlHgg Kazakhstan government is now intercepting all HTTPS traffic https://www.zdnet.com/article/kazakhstan-government-is-now-intercepting-all-https-traffic/
15:47
August 1, 2019
Episode 102 - The Evolution of HTTP (HTTP 1.0, 1.1, HTTP/2, HTTP/3)
  HTTP is a protocol for transferring web pages, text, media, binary files and much more. It stands for hyper text transfer protocol and It is what the Internet pretty much runs on. In this video we will learn how HTTP works, how it is secured with HTTPS, will also show how to spin up an Http web server, and we will also go through the evolution of HTTP starting from HTTP 1.0 to HTTP 1.1 to HTTP/2 and eventually HTTP/3 which is still experimental.    HTTP anatomy  Request (browser, web app)  URL Method type Headers Body Response (web server)  Status code Headers Body  HTTP 1.0 over tcp Application Layer 7 new connection with each request.  HTTP 1.1 over tcp Persisted connection  HTTP/2 over tcp Compression Multiplexing Server Push SPDY Mostly secure by default Negotiates protocol during TLS (NPN/ALPN) HTTP/2 over QUIC ( HTTP/3)  Replaces TCP with QUIC (udp with congestion control) 
47:32
July 15, 2019
Episode 101 - NAT
NAT network address translation is a process of mapping an IP address or IP port pair to another IP address or IP: port. You might be wondering what a software engineer like me doing making a video on a low level networking concept? I have good reasons for that. NAT was originally designed to solve the ipv4 limited IP addresses, but since been used for port forwarding and layer 4 load balancing through the virtual ip address such as Haproxy thats why I decided to make a video about NAT from a software engineer view. In this video we will explain how NAT works and we will explain its applications. 
21:36
July 4, 2019
Episode 100 - TCP Tunneling
Tunneling protocol Tcp tunneling Tunneling is the process of encapsulating content from a protocol A into another protocol B, usually because protocol A is blocked or unavailable. In this video we will explain how TCP tunneling works, the applications of TCP tunnels and the pros and cons. Coming up! * TCP Tunneling * Applications * Pros and Cons TCP Tunneling Here is how TCP Tunneling works. Lets say your goal is to access a website that your ISP proxy blocks www.server2.com this is hosted on server2 on port 80. Lets say there is another Server1 that you have access to and Server1 have direct access to Server2. So if you can make Server1 make the request on your behave to Server2 and somehow deliver the results back to you, you just created a tunnel between You and Server1. Here is how it actually works. You create a legit tcp connection over a known protocol such as SSH between you and Server1. You then create a tcp packet that is intended for Sever2 so you tag it with Server2:80. Then you package that packet into another TCP packet intended for Server1! Huh ! Server1:22. You then forward the packet over, your ISP police will see that there is a packet intended to Server1 on port 22. Proxy approves and forwards it over not knowing that you are smuggling content in that packet. Also the proxy cant even look in the content because its encrypted with RSA. Server1 unpacks the package, decrypt and discover that its an other tcp packet. Here is where the shady stuff happen. Server1 now looks and see that the smuggled package is intended for Server2:80, created a connection and delivers the package it, it changes the source ip to its self and keeps track somehow of that. Once it receives the package it knows that this package has to go back to tunnel. The client now have access to the blocked site! What does this look like guys? Yes you guessed it its a VPN. It’s literally like smuggling content inside a package 📦 that looks legitimate. Server1 and Server2 can be the same server There are many types of tunneling Local port forwarding: Remote connection, Socks Proxy: forward pretty much anything (VPN) Reverse Tunneling : Expose local web server publically Applications VPN Securing an insecure connection Anonymity Bypass firewall SOCKS 4 proxy redirect all your traffic regardless of the port to an internal proxy instead which tunnels it. Dynamic port forwarding Pros Secure connection Access blocked services Anonymity Expose internal traffic Cons TCP meltdown (TCP over TCP) Slow retransmission Stateful Local port forwarding Just one app gets forwarded when the local port is requested Socks All apps goes through the proxy Http tunneling TCP VS UDP 1:00 11:00 OSI model 15:40 private vs public ip 18:35 proxy vs reverse proxy 24:30 TLS 11:20 local 16:20 reverse 20:40 socks
30:45
June 29, 2019
Episode 99 - TLS
  TLS which stands for transport layer security is a protocol for securing communication between client and server. Specifically for HTTPS. Thats what the S is stands for.  In this video, we will learnq how insecure vanilla HTTP works, HTTPS, then we will learn how HTTPS is possible via the transport layer security and finally we will talk about the improvements in 1.3 that was published August 2018.  Vanilla HTTP HTTPS  TLS 1.2 handshake TLS 1.3 enhancements Vanilla HTTP  Before we discuss TLS, HTTPS or anything else lets go through how HTTP request work. You can type in the browser www.husseinnasser.com , the OSI magic kicks in, client figures out the IP address of husseinnasser.com by calling the DNS which uses UDP. Then HTTP application layer makes a GET / request passes in the IP address and port 80 (default for insecure http). This creates an underlying TCP connection. GET / string among other stuff into the packet and send it over. TCP does its thing server receives GET / calls the appropriate process at the backend which could be just return index.html sets content type text/html and sends back big response for client. All of this obviously is plain text no encryption any kind and if you watched the OSI video we made you can tell that people can sniff/snoop packets and get packets they aren’t supposed to get HTTPS Works by negotiating a symmetric key so they can both secure messages. Watch the video we did on encryption. Before we jump to GET request there must be a handshake 🤝 that must occur between the client and server. The tricky part is exchanging that key. Same thing as above except port is 443 instead of 80. Remember once we lose the TCP connection we will have to renegotiate the key. But beauty of this is HTTP is stateless so it remains working just fine.  Tls handshake 🤝  The original TLS handshake involves 4 roundtrips. A client hello which the client includes which encryption algorithms it supports (Both symmteric and asymmetric). The server receives the request then replies back with the server certificate which includes the server public key and also the encryptions that they will change to. The client receives the server hello, generates the premaster key, encrypts it with the server’s public key then send it over. The Server decrypts the message, gets the premaster generates the symmetric key finally tells the client that we are good to go.  Tls 1.3  TLS 1.3 involves much shorter and much secure communication using only deffie hellman as key exchange and just two round trips. 
25:13
June 23, 2019
Episode 98 - Encryption
Encryption is the process of scrambling data to protect personal files, secure communication, hide identities and much more.  In this video we will learn about the different type of encryptions we will talk about symmetric encryption, asymmetrical encryption, where they are used for and the pros and cons of each one.  Symmetric encryption Asymmetrical encrypt  Pros and cons of sym va asym  Symmetric encryption  Might as well just call it classic encryption I would argue and i think this is the first encryption known to us. I have some thing I dont want anyone to see I use a lock key to lock it. Only I can open it unless I have a lock.  The same key you use to encrypt is the same key to Decrypt.  Examples Examples of popular symmetric-key algorithms include  AES Twofish Serpent  DES Twofish, Serpent, AES (Rijndael), Blowfish  CAST5, Kuznyechik, RC4, DES, 3DES, Skipjack, Safer+/++ (Bluetooth), and IDEA  Asymmetrical encryptions  We had symmetric encryptions for a long time, then internet came and networking and we needed to encrypt messages going back and forth. We said cool lets use AES. Then we said wait a second.. the other computer doesnt really have my key so we need to encrypt it..  Also called Public key encryption  1977  Rivest–Shamir–Adleman (RSA)  Diffie–Hellman key exchange protocol DSS (Digital Signature Standard), which incorporates the Digital Signature Algorithm ElGamal Various elliptic curve techniques Various password-authenticated key agreement techniques Paillier cryptosystem RSA encryption algorithm (PKCS#1) Cramer–Shoup cryptosystem YAK authenticated key agreement protocol
22:38
June 16, 2019
Episode 97 - Bandwidth
  Bandwidth explained from software engineer point of view Bandwidth is measured by how many bits a device is allowed to send/receive in a second. It ranges from your internal network starting from network card all the way to your ISP Internet speed. In this video we will discuss the definition of bandwidth upload vs download speed, the different usage patterns for normal web browsing, streaming, gaming, media production and cloud web servers etc and finally we will show an example of the whole thing. When your ISP gives you 80Mbs download/1Mbs upload bandwidth, this means 80 mega bits download which means your router (and all your devices) can receive (download) a total of 80 mega bits in a second at a time, and it can send (upload) 1 mega bit in a second. With your ISP can you pick and choose your plan that fits your usage. Usage patterns Web Browsing Most people download far more than they upload. So the download bandwidth matter more than upload bandwidth. For simple web browsing the download incoming traffic is slightly larger than the outgoing one. You make a GET request to pull index.html, you get back the html content. Yeah there are some images but still not much of incoming.  Streaming Think about it when you watch a movie in Netflix you make a small request usually in few hundred bytes. But the data you receive (download) is huge. So streaming is constant large incoming data. While still outgoing traffic is minimum. Gaming The bandwidth for gamers is really interesting specially who play online and it really depends on the game. a game might use the server authoritative model, where all the online players send their inputs and receive the final game state changes from the server. In that case the there is a constant upload, still minor but the download bandwidth is larger since state is usually bigger. Games can also use the lock state model or the client authoritative model, where all the clients send their inputs the server and the server just send back all the input from all players back to everyone so everyone calculate the game state locally. So in this efficient model, both the upload and download is quite small and its good for countries with low bandwidth.  Some games require cloud saving which means upload speed is recommended.  In general latency is much better in gaming. Media production  Youtuber and you make 5 videos a day so you need to upload alot of data to the youtube server. So upload speed really matter, and download also matter because you will also consume alot. Web servers Netflix (which is hosted in amazon) they upload data far more than they download. So their upload bandwidth is more than their download bandwidth. All those movies and tv shows pushed to consumers. Example Assume you have bandwidth of 80mb/s download speed (which is 10 Mega bytes per second) and 1mb/s upload (which is 125 KB per second). You are connected to a web server which has 80Gb/s upload and 80Gb/s download bandwidth, which is 10Gigabyte per second. Lets say you want to download a 60GB file or movie (no streaming). It will take the server 6 seconds to upload that file however it will take you 1.7 hours to download it. Your ISP That is not entirely true though for TCP, which implement congestion control. UDP does not implement congestion control. 
24:39
June 16, 2019
Episode 96 - Denial of Service
  Denial of Service attacks Dos attacks (denial of service) are type of attack on a server to prevent users from consuming a particular service, usually this is an HTTP web server. This could happen by either saturating the bandwidth of the pipe going to the server or by bringing the server down to its knees so it stops taking requests all together. In this video we will learn about 3 different types of DOS attacks and explain each one by example.  Bandwidth based DOS 2:15 Dos Sending Huge amount of data to a server with lower bandwidth from a client with higher bandwidth which ends up saturating the server pipe and queue up future requests, new requests will have to wait or perhaps denied service. Example, the attacker have 100mb/s bandwidth (upload) the server has 10Mb/s download. If the attacker starts sending 100 mb worth of data to the server, it will take it 1 second to leave the pipe. However, The server can only download 10 mb each second for processing because thats its bandwidth, so it needs 10 seconds to completely download that 100mb and process. In this 10 seconds the server is fully busy serving just 1 client. Other requests will not be able to even reach the server, they might get queued and they may never be executed. Thus denied service. It is important to know that the server must have an end point that actually accept such large data. Like upload file with no limit. Another example, is UDP where there is no connection.  Ddos this previous scenario is less likely since servers usually has much more bandwidth than a single computer. A common attack is to do a DOS in distributed manner. Assume a server with 1 Gb and client with 10 mb/s no matter how much data the client can send it can only send 10mb per second, and the server can go through them real quick. Example, the client sends 1GB, it will leave the client’s pipe into 100 (10mb) means the client will take 100 seconds just to upload all the data because it can only sends 10 mb each seconds. And the server is processing it so fast it each second and it will still have enough bandwidth to process other requests(1000-10). But imagine 100 users with 10 mb connection each, all coordinate to send 1 Gb worth of data to the server at the same time (critical that its in the same time) 100x10 each second they can send 1 Gb in total to the server, the server can only process 1 GB per second so the server will not be able to process any other requests because its bandwidth is saturated processing this 1 GB from different place. Make it 200 users and you just clogged the pipe.    Max connections based DOS 10:13 Another type of denial of service attack is by somehow force the server to reach its max connections. The web server usually sets a maximum number of tcp connections so that it doesn’t run out of memory. an attacker can perform a DOS attack to force the server to reach its max connection. once it does, it wont accept any more connections thus deny service of future requests. However it is not easy, web servers have good preventive measures to minimize unnecessary tcp connections. So you cannot just establish a connection and ghost the server. This isn’t your ex boyfriend. Server has good timeouts for connections that are idle, terminated or potentially harmful. However one possible attack is to establish a connection but send the data slowly so when the server tries to timeout it immediately reset the timeout and keep the connection alive! Assuming the max tcp connection is 200, Run your script 200 times and you just created 200 connections to the server so no new connection can connect.    Vulnerability based DOS 16:30 
22:44
June 16, 2019
Episode 95 - TCP vs UDP
 TCP and UDP are communication protocols that allows us to send and receive data in a network. We have both for a reason since each has its advantages and disadvantages. In this video we will talk about two protocols, pros and cons of each one and will write tcp and udp server with nodejs showing you these in ACTION. coming up Code!  https://github.com/hnasr/javascript_playground/tree/master/tcp Jump Codes 🏷  tcp pros cons(4:12) Tcp demo (19:00) Udp pros cons (24:25) Udp demo (31:25) Summary (35:40) Explain TCP  Pros:  acknolwedgment,  garenteed delivery,  connection based congestion control ordered packets  Cons Larger packets More bandwidth since more headers.  Slower (because of retransmission)  stateful once connection is lost its lost, cannot resume it.   TCP Example (Code) telnet 127.0.0.1 8080 Explain UDP Pros Statless,  Less bandwidth  smaller packets Faster to transmit  Cons no ack,  no garenteed delivery,  no congestion control no ordered packets  UDP client echo "foo" | nc -w1 -u 127.0.0.1 41234 2:24 osi model tag  14:20 stateful. S stateless video 
40:29
June 2, 2019
Episode 94 - When to use GET vs POST?
  Get and POST are the most popular http methods used on the web. Each carries its own differences and properties. It can confusing to get to choose when to use POST over GET. In this podcast we will explain the differences, use cases and the benefits of using GET and POST. 
22:26
May 26, 2019
Episode 93 - Microservices
  Microservices (Explained by Example) Microservices technology is a new pattern of software engineering that has been popularized recently. In this video we will explain what microservices are, their pros and cons by example.  A lot of companies have moved in the early 2010 such as twitter and netflex to the microservices architecture.  Microservices technology is a pattern where you can break down big application into smaller services and what previously is a function call is now a network call GET or POST through HTTP. In order to explain what microservices are, we need to explain how a traditional classical application looks like. Here is an example .. Instagram   View Picture, list comments, likes and Picture and Location.  Picture Likes Comments Picture API (Thumbnails)  Likes API  Comments API Most popular comments Pros: Polyglot architecture  Easy scaling for microservices that needs scaling.  Better Team management, each microservice is a team Easier to innovate certain areas. Each microservice can pick their own database  Scale busy services instead of entire system  Cons: Very complicated to implement, network call, service discovery  Very Difficult to debug Hard to find where the fault is  Network calls fails adds complexity. 5:00 6:50 proxy vs reverse 
17:15
March 16, 2019
Episode 92 - Attribute Rules
Attribute Rules are scripts that can be authored and placed in the geodatabase to ensure data integrity lets discuss them. 
09:17
March 16, 2019
Episode 91 - Public IP vs. Private IP Address
In this episode we will talk about the difference between public ip and private ip address and casually talk about routers, modems, LAN,  WAN and port forwarding. 
15:12
March 10, 2019
Esri Dev Summit 2019
Join me in the upcoming Esri dev summit! Ill be presenting attribute rules and the utility network.
02:57
February 26, 2019
Episode 90 - You will be Judged
It is a long weekend with the president day on Monday. Which means it is another good opportunity to create more art. Whether that is a new ArcGIS pro Add-in or a new map, a painting, a new piece of poetry or music. This also means more chances to get discovered, which means more chances to get criticized. I get criticized all the time now that I have bigger exposure and this is our topic for this podcast coming up, 
21:23
February 16, 2019
Episode 89 - Push vs Pull Notifications
This is originally a video that I converted into a podcast I think it is still useful  https://www.youtube.com/watch?v=8D1NAezC-Dk Notifications have become part of our daily life. We receive them almost every minute on our phones, tablets, and computers. As software engineers, it is good to understand how notifications work, and what different type of notifications there are (push and pull notifications), the advantages and disadvantages of each.    In this video I'll explain how the push notification and pull notification works and the stateful vs stateless nature of each and how it affects the architecture decision of our application that we are building.    Online diagram tool used in this video:  Http://www.gliffy.com   Become a better software engineer by joining IGeometry checkout the other software engineering content on this channel   -Hussein
15:59
February 14, 2019
Episode 88 - What was wrong with SOAP Protocol?
Soap (Simple Object Access Protocol) has been a popular messaging protocol in the early 2000s. It uses XML as a format with well defined schema, and your choice of stransport protocol. Despite it still being used people have been moving towards #REST architecture and more so #gRPC recently. In this episode we discuss why people moved from #SOAP and what are the advantages and disadvantages of SOAP.   Stay Awesome! Hussein Nasser
11:54
February 12, 2019
Episode 87 - Q&A - When to use Shape File vs Geodatabase?
In this episode we answer a question from Anthony. How do you know when to focus on building a geodatabase (let's say SQL server database) rather than just let the data sit in the shapefile? I would say if you are planning to have multiple users accessing and editing the data, also if your data grew too large shape files might not be scalable to read. Also if you are planning to use the capabilities of Geodatabase such as domains, subtypes, attribute rules, versioning, archiving etc not to mention sharing as well. if you wont plan to use any of the above then shape file is a good choice. If you are planning to just maintain a shape file data of 10k or 100k features and you edit it yourself locally it works! 
10:26
February 9, 2019
Episode 86 - Recycling in ArcGIS Server
When you publish a service you can specify how many processes (min / max) your service can use. As requests are being served memory is allocated, state is changed, some processes could go corrupt Recycling is the process destroying and re-spawning processes that are running to maintain a good memory footprint.  Here is a good read on recycling http://enterprise.arcgis.com/en/server/latest/publish-services/windows/tuning-and-configuring-services.htm Enjoy Hussein
11:29
February 5, 2019
Episode 85 - No Excuses
 I don’t have the equipments. There are people doing that already. And my personal favorite, I don’t know enough.  Excuses are always there, In this podcast I talk about my personal story of how I got started. You don't need fancy equipments to share your skills and knowledge. In this podcast we discuss how with just a screen sharing app (Quicktime) and this microphone I was able to grow my youtube software engineering channel to 2000 subs and more than 1 million watch hours.  
41:41
February 2, 2019
Episode 84 - Layer vs Data Source
A podcast about the difference between a layer and its data source. Enjoy!
10:04
January 31, 2019
Episode 83 - Q&A: Programming for GIS
Vikrant asked a question on Linked:  Dear Hussein, I want to learn programming for GIS. Is python useful? I am not very good in programming. Kindly guide. And thanks for the posts.. Programming for GIS really depends on what you are trying to do and how do you want to advance your career. In this podcast we will discuss four kind of areas where you can programming for GIS. GIS Admin Programming GIS Desktop Programming GIS Web Programming  GIS Server Programming Enjoy
26:57
January 27, 2019
Episode 82 - Cross Origin Resource Sharing (CORS)
If you ever go a website and there some images you liked to reference in your page or blog. You would copy the link, and put in your blog.  Only to find out that the image looks broken?  You copy the link again and paste it in URL and it opens fine?  This is an effect of CORS or cross origin resource sharing.  https://husseinnasser.com/courses
14:06
January 19, 2019
Episode 81 - ArcGIS Server Talk - SOE vs SOI
 ArcGIS Server is a technology that allows you to pull your heavy work load on the backend and isolate the clients from complexity of the database by exposing HTTP services instead of low level TCP database. You can also extend the server capability by writing your own extensions.  In this episode ArcGIS Server talk we will talk about two ways you can extend your ArcGIS server, Server Object Extensions and Server Object Interceptors. Server Object Extension  Extends the MapServer to allow you to write your own logic that cannot be easily done by built - in Feature Server or Map server. Or it is more performant to do it.   Users create new excavation I want to auto-calculate the price of the excavation based on the soil type, whether there are trees, rocks.  Server Object Interceptors  You don’t write new thing you instead intercept existing calls to query and applyEdits to inject your own logic to pre or post processing. Lets say every-time any application tries to write to the service, you want to verify that the edit is permissible. Include water marks to all images that are downloaded. Learn more about SOE vs SOI here http://enterprise.arcgis.com/en/server/latest/publish-services/linux/about-extending-services.htm
17:32
January 6, 2019
Episode 80 - MIME Sniffing
Any content served through HTTP “should” include meta data about its type. This is so the browser/client knows what to do with the content it receives. For example, if the content type header is an image the browser will preview it, if it is HTML it will render the markup and execute any javascript code. Content type however is optional and web masters sometimes don’t set it, which leave the browsers wondering about the content type it is consuming. So browsers had to implement parsing and “sniffing” techniques to detect the type of content when a content type header was not served. However, this caused security problems and attacks that we explain in this video! So to prevent sniffing, web servers can return X-Content-Type-Options: nosniff which opts out browsers from sniffing the content. Media type: https://en.wikipedia.org/wiki/Media_type#Common_examples Cheers! Hussein Nasser
11:16
January 4, 2019
2018 was a great year
Thank you so much guys for a great year! I love you. -Hussein 2018 was a great year:    Created, edited and posted 120 software engineering youtube videos with over 1.1 Million impressions   Published 75 podcasts with over 8k plays    Self Published a new GIS book   Published two programming online courses  #hustle
01:43
December 31, 2018
Episode 79 - Availability vs Scalability
This is the final episode of 2018. We will discuss the difference between Availability vs Scalability in software services. Availability What does it mean for my software to be available?  software, service, application is designed in way so it can be available to consumers despite situation  Will your service be available if Host Failure Maintenance  Upgrading Security updates Available doesn’t necessarily mean performant. Scalability What does it mean for my software to be scalable?  The ability for the software to handle the increase of workload or data growth Assume photo sharing app, retrieving 1 photo with details. If in normal conditions you service can serve 100 requests per minute, will doubling resources double the output?u If the volume of data increases will your query still perform? A software is scalable when it is designed in a way so that adding more resources will handle more users  
20:16
December 31, 2018
Episode 78 - Geodatabase Talk - Subtypes
In this episode we discuss the concept of subtypes in the geodatabase, subtype layers and much more!
15:00
December 27, 2018
Episode 77 - Authentication vs Authorization
In this episode we discuss the difference between authentication and authorization.
08:07
December 22, 2018
Episode 76 - Database Locks
Hussein's Courses 📐⟶ https://www.husseinnasser.com/courses Hussein's Books 📒⟶ https://www.husseinnasser.com/books In this episode of #softwaretalk I'm in beautiful San Francisco for the weekend. Our topic today is database locks. Stay Awesome! Hussein
06:11
December 16, 2018
Episode 75 - Arcade - The ArcGIS Scripting Language
In this episode we discuss the ArcGIS scripting language Arcade. New to GIS? Checkout my books and courses here https://husseinnasser.com/books
07:30
December 13, 2018
Episode 74 - Short vs Long Geodatabase Transactions
We discuss the difference between short and long transactions in the geodatabase
06:29
December 9, 2018
Episode 73 - Consistency
We discuss consistency in this episode
04:49
December 7, 2018
Episode 72 - The Evolution of the Feature Service
In this episode I talk about how the feature service came to be. From local shape files through the enterprise geodatabase to the beautiful HTTP protocol services. Https://husseinnasser.com
17:02
December 6, 2018
Episode 71 - Best Programming Language for 2019 (Rant)
Hussein's Courses 📐⟶ https://www.husseinnasser.com/courses Hussein's Books 📒⟶ https://www.husseinnasser.com/books I don’t usually do rants. f you are new software developer, pick a language and write software. There is no best programming language. Each programming language has its own of pros and cons. Stay Awesome -Hussein
08:01
December 5, 2018
Episode 70 - What is Back-end Development ?
In this episode I explain the backend development, its history, how it came into existence and where it is going. I also share with you my latest online course Python on the Backend. http://www.husseinnasser.com/courses
08:26
November 26, 2018
Episode 69 - The Beauty of HTTP
We discuss the HTTP protocol and explain its elegance and how it is powering the microservices architecture.
06:04
November 24, 2018
Happy Thanksgiving!
Happy Thanksgiving!
00:36
November 22, 2018
Episode 68 - Geodatabase Talk - ObjectID
Hussein's Courses 📐⟶ www.husseinnasser.com/courses Hussein's Books 📒⟶ www.husseinnasser.com/books ObjectId (among others) is a system field that is added to a geodatabase table. In this episode we discuss best practices in coding against this field. Checkout my new book (learn gis programming with ArcGIS online and Javascript 4.9 API) ! www.husseinnasser.com
11:32
November 19, 2018
Episode 67 - Pull, Push and the Long- Poll
In this episode we discuss the difference between the HTTP client pull, server push and the long poll also known as #HTTP ASYNCHRONOUS polling.
10:02
November 16, 2018
Episode 66 - YouTube Audio and Video Streaming in the mobile app
As a software engineer, I like to reverse engineer applications and see how it was made. This episode we discuss how YouTube handles audio vs video streaming. When you minimize the app,
06:25
November 16, 2018
Episode 65 - ArcGIS Server Talk - 6080
Port 6080 is interesting, we talk little bit about it in this episode.
08:42
November 14, 2018
Episode 64 - ArcGIS Server Talk - When to use Sync vs async gp service?
If you go to the geoprocessing service in Manager you might have noticed that there is an option to run asynchronously. In this episode we explain when you might want to do this!
07:29
November 12, 2018
Episode 63 - Geodatabase Talk - SDE Intercepts
Sde intercept Any operation performed on ArcGIS ends up eventually to the geodatabase as a set of one or more queries. A “zoom-in” or pan operation translates to multiple queries to the underlying geodatabase. SDE intercepts always you to intercept and take a look at those queries to diagnose slow operations in your enterprise geodatabase. It also helps pinpoint where the bottle neck is and how can you optimize your app or geodatabase. https://support.esri.com/en/technical-article/000010355
12:08
November 11, 2018
Episode 62 - Load Balancer vs Reverse Proxy
Most of the time a Load balancer is a reverse proxy but a reverse proxy is not necessary a load balancer. Reverse proxy takes a request from client and forward it to “a server” doesn’t care of the server is overloaded or down or not just forwards it. Load balancer stores state about each server behind it, how overloaded each server is, and what server is down, and smartly forward request to a server to balance the load across all the group. So a load balancer is a special case of a reverse proxy but smarter!
09:59
November 5, 2018
Episode 61 - ArcGIS Server Talk - Max SOC Heap Size
We discuss the max heap size property on the arcgis server admin. Enjoy
17:31
October 30, 2018
Episode 60 - ArcGIS Server Talk - Database Schema Lock
In this episode of arcgis server talk we discuss the database schema lock option in manager. Advantages and disadvantages of having your service acquire a lock.
07:50
October 29, 2018
Episode 59 - Geodatabase Talk - Split
We discuss how split work, the split policy on the domain and the split editing model.
11:45
October 28, 2018
Episode 58 - The Art of Software Troubleshooting
In this episode of #softwaretalk we discuss the art of software troubleshooting. We can become better software engineers by aiming to excel at our craft. Not just find a bug, but track its cause. Not just find a bad performing workflow in the app but find out what causes the performance bottleneck. Do the due diligence. Enjoy this episode guys www.husseinnasser.com
13:08
October 20, 2018
Episode 57 - ArcGIS Server Talk - ApplyEdits
In this episode, we talk about applyEdits method on the feature service REST API. Enjoy Grab my Administering ArcGIS for Server book and learn more about Installing and configuring ArcGIS for Server to publish, optimize, and secure GIS services. http://husseinnasser.com/books
09:59
October 19, 2018
Episode 56 - Geodatabase Talk - Undo edits through services
In this episode we discuss how using the new ArcGIS Server version management service we can undo edits even after the service goes down!
08:56
October 15, 2018
Episode 55 - When to Fix the bugs?
In software development, introducing a new feature or functionality always introduces bugs specially in a large software. In this episode we discuss should we fix all the bugs that get introduced from a new feature or install the feature and worry about the bugs later? #agile
05:57
October 13, 2018
Episode 54 - Stateful PHP Service
Throw back me using PHP and apache to build a stateful service.
08:03
October 8, 2018
Episode 53 - 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. Cheers Hussein
12:41
October 7, 2018
Episode 52 - Geodatabase Talk - Archiving
Archiving is used to store or keep track of state of rows even after they are edited in older state. In this episode we discuss how can you do archiving in the geodatabase.
07:33
October 6, 2018
Episode 52 - ArcGIS Server Talk - Logging
In this episode of ArcGIS Server Talk we discuss logging.
11:04
October 5, 2018
Episode 51 - Geodatabase Talk - DDL vs DML
In this episode we explain the difference between ddl and dml, with respect to the geodatabase
11:48
October 5, 2018
Episode 50 - Geodatabase Talk - SDE
The communication between the client and the enterprise geodatabase is done through the spatial database engine. We explain that layer in this episode.
10:09
October 3, 2018
Episode 49 - User Experience vs API - What Comes First?
Any modern software or application that we build must have a backend API (Application Programming Interface) whether design in C++ IMPL Interfaces Or HTTP REST Architecture, and a Front End User Experience to consume this API which could range from a mobile app to a voice device. This is an open discussion, when you as a software engineer want to design a new application, what do you start first? Front-End User Experience? Or the Back-end API? We discuss the pros and cons of both. I enjoyed making this episode! Enjoy guys Hussein Nasser
16:03
September 30, 2018
Episode 48 - ArcGIS Server - Asynchronous Geoprocessing Service
We explain how the asynchronous geoprocessing service works in ArcGIS. We also briefly explain the difference between synchronous vs asynchronous request. Enjoy !
05:30
September 29, 2018
Episode 47 - How to become a Better Software Engineer? (Rant)
There is no secret, no magic potion, no pill or book or a “new” programming language that will make you a better software engineer. To be a better software engineer you have to write more software. Write silly software, write fart software, write stupid software, write bad performant software. Write enough software to give the edge to be better than other software engineers and software developers.
15:22
September 28, 2018
Episode 45 - Geodatabase Talk - Domains
Today’s topic is geodatabase domains.
10:45
September 27, 2018
Episode 44 - 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?
12:30
September 17, 2018
Episode 43 - Never underestimate a coding task
In this episode of software engineering by example we discuss how software engineers should be empathetic and never underestimate and brush a problem as simple. We have to give it some thoughts and think it all the way through.
08:58
September 15, 2018
Episode 42 - Geodatabase Talk - Stateful DB Connection
This episode I explain what is a stateful connection and how that compare to traditional vs the new branch versioning model. We also explain Pros and cons of the stateful connection (with a DMV example :) )
12:52
September 7, 2018
Episode 41 - Geodatabase Talk - High Isolation
We explain the difference between Isolation and High Isolation from a geodatabase point of view.
08:42
September 4, 2018
Episode 40 - Geodatabase Talk - Registration types
We discuss briefly the 5 registration types in the enterprise geodatabase. Unversioned, unversioned with archiving, versioned, versioned with archiving and branched versioned.
12:14
August 23, 2018
Episode 39 - Geodatabase Talk - Versioning
We discuss the concept of versioning (high isolation) in the geodatabase.
08:04
August 14, 2018
Episode 38 - Geodatabase Talk - Workspaces
We discuss the geodatabase connection which is called a workspace,
04:22
August 6, 2018
Episode 37 - Geodatabase Talk - Tables
We discuss the table artifact in the geodatabase.
11:42
August 3, 2018
Episode 36 - Geodatabase Talk
This is a new series that discusses the Esri geodatabase technology!
14:32
August 1, 2018
Episode 35 - ArcGIS Server Talk - Pooling
Discussing Connection Pooling in ArcGIS Server
11:12
July 6, 2018
Episode 34 - ArcGIS Server Talk - Process isolation
Process isolation
11:32
July 4, 2018
Episode 33 - ArcGIS Server Talk - Site Clusters
Server site cluster discussion
06:34
June 26, 2018
Episode 32 - ArcGIS Server Talk - Server Site
Discussion about server site, port 6080,6443, configuration store and creating and joining existing site
15:10
June 24, 2018
Episode 31 - Arcgis Server Talk
Discussing arcgis server technology part 1
07:21
June 15, 2018
Episode 30 - Disk
Discussion on Persisted storage in the disk while taking a walk in Bahrain 🇧🇭 . Enjoy.
06:38
March 4, 2018
Episode 29 - Who is Hussein Nasser?
In this podcast I talk about my story. Where did I come from? What did I study? What jobs did I have? Why did I start my blog and Youtube Channel? How did I write my books? Why did I move to the United States? and much more.. Stay Awesome guys and Enjoy the podcast. Hussein
29:16
March 4, 2018
Episode 28 - What is GIS?
Discussion on GIS geographic information system my career since 2005. Enjoy
04:28
February 8, 2018
Episode 27 - Why Coding is Hard?
We discuss we some people are intermediated by programming or find it hard to learn. Spoiler alert it is our fault as educators.
05:19
February 8, 2018
Episode 26 - Caching
Caching explained simply.
05:04
February 7, 2018
Episode 25 - Cash in on your passion
This episode is pulled from my vlog right after I finished Gary vee book Crush it. Today I finished @garyvee book Crush it (Cash in on Your Passion). I read alot of books but dont necessary review them in my SM. However this book is different, though written 9 years ago and some technologies are dead but that in itself shows this guy jumps on bleeding edge technologies like there is no tomorrow which I love. Never mind, that book actually inspired me to twist Gary’s ideas in the software engineering realm. And that is the topic of the vlog, you are passionate about 8 bit video game development? Build a community around it. You really genuinely love the assembly language? Build software with assembly and make videos and show your love, you will be surprised how many engineers share your interest. Cant wait for Gary’s new book Crushing it! - I would really like to thank my YouTube mentor @robertoblake for introducing me to such passionate person.
08:01
February 6, 2018
Episode 24 - Bleeding Edge Technologies
New technologies appear every day. We ask the question should software engineers learn new emerging technologies as soon as they come in? We answer yes and We bring in badass Gary vee as a successful example of someone who tackle any new social media app.
05:13
February 1, 2018
Episode 23 - Why JSON is so Popular?
We discuss how JSON became popular. It isn’t some fashion trend, its convenience. We also discuss how XML was invented as an interchange format.
04:43
January 31, 2018
Episode 22 - Latency
Discussion of latency across the entire software stack. Enjoy
05:15
January 29, 2018
Episode 21 - RDBMS
We discuss relational databases. Their properties and scalability.
12:30
January 26, 2018
Episode 20 - Cool feature in git
I discovered git submodules today. I talk about how I found them and how they helped my code reusability.
04:13
January 24, 2018
Episode 19 - Python as a Web Server
We answer the question can Python runs on the backend and serve REST end points
04:48
January 24, 2018
Episode 18 - Memory Leaks
We discuss memory leaks. What are they? How they happen? How dangerous can they be?
05:14
January 24, 2018
Episode 17 - UX ... then REST
We discuss how an engineer can save tremendous design and architecture efforts at the backend building the REST services by actually starting with the user experience. As usual with an example. Cheers y’all
04:59
January 23, 2018
Episode 16 - TheDragon fights Engineers too
We talk about how the we are meant to create beautiful art and how the resistance (the dragon) is stopping us from putting that work out there.
04:59
January 23, 2018
Episode 15 - I Wrote Bad Front-End Code
While building an Alien Invasion javascript game I wrote some bad code that froze my chrome. I discuss the unscalable piece of code and go through how I discovered it and how to fix it.
07:15
January 19, 2018
Episode 14 - Learn Software By Doing
With new technologies it becomes overwhelming for engineers to learn. We discuss one of the best ways to learn the new technologies by doing projects using them. Step out of your comfort zone and build apps using those tech!
05:48
January 19, 2018
Episode 13 - Do Developers Make Lousy UX?
In this episode we discuss why lot of people think Developers make unusable and lousy user experiences and interfaces. We take examples of Windows vs Mac and a throw back from a blog post I wrote 10 years ago. Enjoy
09:33
January 18, 2018
Episode 12 - Stateless vs Stateful
We discuss stateless and stateful client / server architecture using instagram as an example.
09:59
January 16, 2018
Episode 11 - Persistence
We discuss how persistence at the client side. We bring Siri, Whatsapp and Twitter s examples of dealing with persistence of draft, lost and unsent messages .
12:42
January 13, 2018
Episode 10 - Scalable Software
We discuss software scaling in three tiers. The front end, the backend and the middle. We take instagram as an example for all three tiers.
14:31
January 12, 2018
Episode 09 - Advice to new Software Engineers
This podcast is for software engineers that just started their career and facing pressure from outside world to divert their path. Keep doing what you love.
09:59
January 8, 2018
Episode 08 - UX and Software Architecture
Does the user experience derive the software architecture or vise versa? Can user experience help determine what backend database you end up using? We discuss both styles of engineering and talk about pros and cons. Enjoy
11:27
January 5, 2018
Episode 02 - Stuck at your job?
In this episode we discuss how can you make a change to your career. I also talk about my experience a little. Enjoy
09:59
January 2, 2018
Episode 01 - Sync vs aSync
We discuss two programming styles both have their advantages and disadvantages. Enjoy
14:59
December 29, 2017
IGeometry Podcast - Intro
First podcast - intro - welcome to IG podcast
04:10
December 29, 2017
Make your own podcast for free with Anchor!