Jekyll2023-05-07T22:10:20+00:00https://iamzain.com/feed.xmlZain KhanHi, I'm Zain. I help companies build technology solutions to better serve their customers.Zain Khanhello@iamzain.comAPI Gateway2022-09-03T00:00:00+00:002022-09-03T00:00:00+00:00https://iamzain.com/blog/api-gateway<h2 id="what-is-an-api-gateway">What is an API Gateway?</h2>
<p>An API Gateway is a API management tool that sits between a client and a bunch of backend APIs. Its primary role is to act as a single entry point and standardized process for interactions between an organization’s apps, data and services and internal and external customers.</p>
<h2 id="advantages-of-an-api-gateway">Advantages of an API Gateway</h2>
<ul>
<li>A key benefit of an API gateway is the abstraction of the backend microservices. Clients just programme to the external API contract.</li>
<li>Decouples clients from backend. Backend engineers can change the backend microservices and even the architecture without needing the client to change code.</li>
<li>API Management</li>
<li>Security</li>
<li>High availability - If there are failures in the backend services, the API gateway can mask them by returning cached or default data.</li>
</ul>
<h2 id="what-functions-does-it-provide">What functions does it provide?</h2>
<ol>
<li>Authentication</li>
<li>Rate limiting</li>
<li>Statistics (can be used for monetisation)</li>
<li>API Composition</li>
<li>Request routing</li>
<li>Protocol translation</li>
<li>Custom endpoints based on client</li>
<li>Policies</li>
<li>Alerts</li>
<li>Service discovery</li>
<li>Stabilization and load balancing</li>
<li>Caching</li>
</ol>
<h2 id="disadvantages-of-api-gateway">Disadvantages of API gateway</h2>
<ul>
<li>Slower from a networking perspective as usage of an API Gateway means at least one extra network hop.</li>
<li>Extra layer of complexity to manage.</li>
<li>Single point of failure so you have to make the API Gateway HA.</li>
</ul>Zain Khanhello@iamzain.comWhat is an API Gateway? An API Gateway is a API management tool that sits between a client and a bunch of backend APIs. Its primary role is to act as a single entry point and standardized process for interactions between an organization’s apps, data and services and internal and external customers. Advantages of an API Gateway A key benefit of an API gateway is the abstraction of the backend microservices. Clients just programme to the external API contract. Decouples clients from backend. Backend engineers can change the backend microservices and even the architecture without needing the client to change code. API Management Security High availability - If there are failures in the backend services, the API gateway can mask them by returning cached or default data. What functions does it provide? Authentication Rate limiting Statistics (can be used for monetisation) API Composition Request routing Protocol translation Custom endpoints based on client Policies Alerts Service discovery Stabilization and load balancing Caching Disadvantages of API gateway Slower from a networking perspective as usage of an API Gateway means at least one extra network hop. Extra layer of complexity to manage. Single point of failure so you have to make the API Gateway HA.What is a CDN?2021-11-01T00:00:00+00:002021-11-01T00:00:00+00:00https://iamzain.com/blog/what-is-a-cdn<p>A content delivery network (CDN) is a bunch of servers distributed across the world which work together to provide fast delivery of internet content.</p>
<h2 id="why-use-a-cdn">Why use a CDN?</h2>
<h3 id="performance">Performance</h3>
<ul>
<li>Research from fastly shows 20% of visitors leave the website if the page load time is slower than 5 seconds.</li>
<li>CDNs help you combat the laws of physics. Even if you combat all latency, the max theoretical speed you can serve data is the speed of light. At the speed of light, it takes 200ms to serve content from London to Sydney. How can we serve content faster? Reduce the distance by having a local cache i.e. a CDN.</li>
<li>CDN is only good for static content right? Mostly yes but CDNs can be used to speed up serving of dynamic content. How? Let’s imagine out customers are 200ms away from origin. SYN + SYNACK + TLS HS + TLS HS + Request + Response will take 200 * 6 = 1.2s. Use a CDN and all those times can be cut down to 20ms (20*6=120ms) and then the CDN would need to forward the request to origin for the dynamic content (200+120=320ms). Public API calls can be cached!</li>
</ul>
<h3 id="security">Security</h3>
<ul>
<li>Layer 3/4 DDOS protection
<ul>
<li>UDP/ICMP/SYN</li>
</ul>
</li>
<li>Layer 7 DDOS protection
<ul>
<li>Inspect HTTP traffic</li>
<li>Block/Redirect</li>
</ul>
</li>
<li>Instant visibility in edge traffic</li>
<li>Edge firewall rules</li>
</ul>
<h3 id="availability">Availability</h3>
<ul>
<li>Unplanned spikes in traffic due to due to a social or political event, say a x10 increase in traffic. This can knockout a system as the system probably wasn’t designed to handle that kind of sudden spike. Even if you have auto-scaling enabled it would not be able to respond in the short time frame needed. Consider a CDN.</li>
<li>If your origin goes offline the CDN can keep serving whatever they had cached and the end user wouldn’t notice the outage.</li>
<li>CDN infrastructure is build more resilient. For example CDNs have may ISPs this enables them to route around problems on the internet. They can also choose the best path between the customer and the CDN and the CDN and the origin.</li>
</ul>
<h3 id="cost">Cost</h3>
<p>Most CDNs charge for their services, but the savings on monthly data transfers will typically outweigh the cost of using the CDN.</p>Zain Khanhello@iamzain.comA content delivery network (CDN) is a bunch of servers distributed across the world which work together to provide fast delivery of internet content. Why use a CDN? Performance Research from fastly shows 20% of visitors leave the website if the page load time is slower than 5 seconds. CDNs help you combat the laws of physics. Even if you combat all latency, the max theoretical speed you can serve data is the speed of light. At the speed of light, it takes 200ms to serve content from London to Sydney. How can we serve content faster? Reduce the distance by having a local cache i.e. a CDN. CDN is only good for static content right? Mostly yes but CDNs can be used to speed up serving of dynamic content. How? Let’s imagine out customers are 200ms away from origin. SYN + SYNACK + TLS HS + TLS HS + Request + Response will take 200 * 6 = 1.2s. Use a CDN and all those times can be cut down to 20ms (20*6=120ms) and then the CDN would need to forward the request to origin for the dynamic content (200+120=320ms). Public API calls can be cached! Security Layer 3/4 DDOS protection UDP/ICMP/SYN Layer 7 DDOS protection Inspect HTTP traffic Block/Redirect Instant visibility in edge traffic Edge firewall rules Availability Unplanned spikes in traffic due to due to a social or political event, say a x10 increase in traffic. This can knockout a system as the system probably wasn’t designed to handle that kind of sudden spike. Even if you have auto-scaling enabled it would not be able to respond in the short time frame needed. Consider a CDN. If your origin goes offline the CDN can keep serving whatever they had cached and the end user wouldn’t notice the outage. CDN infrastructure is build more resilient. For example CDNs have may ISPs this enables them to route around problems on the internet. They can also choose the best path between the customer and the CDN and the CDN and the origin. Cost Most CDNs charge for their services, but the savings on monthly data transfers will typically outweigh the cost of using the CDN.Load Balancing for Beginners2021-07-07T00:00:00+00:002021-07-07T00:00:00+00:00https://iamzain.com/blog/load-balancing-for-beginners<h2 id="what-is-load-balancing">What is Load Balancing?</h2>
<p>Let’s imagine we have a web application on a server (webserver) that’s working fine for 100 users. Users simply go to fabapp.com to access this hypothetical web application. This sort of setup has two possible problems:</p>
<ol>
<li>What would happen if the webserver blows up? Those users wouldn’t be able to use the application. In other words, we need resilience.</li>
<li>Say, 100 more users have decided they like the look of this web application and want to use it. The web server is going to struggle to deal with all these users. In other words, we need more capacity which can also help improve performance.</li>
</ol>
<p>The solution is to add another web server and when users visit fabapp.com we automatically want to send some users to the first web server and some users to the second web server without them ever really knowing anything has changed in the background. This is load balancing i.e. distribute incoming traffic to a group of backend servers.</p>
<p>We’ve talked about what we want to do i.e. load balance, and what effect that will have but we’ve not talked about how to do it. In this article, we will only cover the most basic kind of load balancing - DNS load balancing.</p>
<h2 id="dns-load-balancing">DNS Load Balancing</h2>
<p>No idea what DNS is? Click here for my Ultimate Guide to DNS. Basically, DNS is used to look up the IP address of a server from the web address; like a phonebook is used to find the phone number given the name of the person.</p>
<p>A DNS record can be associated with one or more IP addresses - this is how DNS load balancing can happen. fabapp.com’s DNS record would be configured to point to 2 servers. When a DNS request is made, by a users computer trying to access fabapp.com, DNS will return any one of the 2 IP addresses randomly. The users computer will then directly connect to the IP address it was provided. Effectively this will split the load between the two servers aka load balancing!</p>Zain Khanhello@iamzain.comWhat is Load Balancing? Let’s imagine we have a web application on a server (webserver) that’s working fine for 100 users. Users simply go to fabapp.com to access this hypothetical web application. This sort of setup has two possible problems: What would happen if the webserver blows up? Those users wouldn’t be able to use the application. In other words, we need resilience. Say, 100 more users have decided they like the look of this web application and want to use it. The web server is going to struggle to deal with all these users. In other words, we need more capacity which can also help improve performance. The solution is to add another web server and when users visit fabapp.com we automatically want to send some users to the first web server and some users to the second web server without them ever really knowing anything has changed in the background. This is load balancing i.e. distribute incoming traffic to a group of backend servers. We’ve talked about what we want to do i.e. load balance, and what effect that will have but we’ve not talked about how to do it. In this article, we will only cover the most basic kind of load balancing - DNS load balancing. DNS Load Balancing No idea what DNS is? Click here for my Ultimate Guide to DNS. Basically, DNS is used to look up the IP address of a server from the web address; like a phonebook is used to find the phone number given the name of the person. A DNS record can be associated with one or more IP addresses - this is how DNS load balancing can happen. fabapp.com’s DNS record would be configured to point to 2 servers. When a DNS request is made, by a users computer trying to access fabapp.com, DNS will return any one of the 2 IP addresses randomly. The users computer will then directly connect to the IP address it was provided. Effectively this will split the load between the two servers aka load balancing!Proxy Server Explained2020-07-15T00:00:00+00:002020-07-15T00:00:00+00:00https://iamzain.com/blog/proxy-server-explained<p>A proxy server is just a computer configured in a special way. Using a proxy is just like asking another computer(the proxy) to get the web site you wanted for you. That’s it. Simples.</p>
<h2 id="how-you-normally-get-a-web-page">How you normally get a web page</h2>
<ol>
<li>You type a web address in to your browser</li>
<li>Your computer (after a DNS lookup) goes and connects directly to the web server that has the web site</li>
</ol>
<h2 id="how-you-get-a-web-page-using-a-proxy">How you get a web page using a proxy</h2>
<p>Let’s assume you’ve already set your computer up to use a proxy.</p>
<ol>
<li>You type a web address into your browser</li>
<li>Your computer sends the request to the proxy</li>
<li>The proxy (after a DNS lookup) connects to the web site you wanted</li>
<li>Once the proxy has the web page it hands it to your computer.</li>
</ol>
<h2 id="why-use-a-proxy-server">Why use a proxy server?</h2>
<h3 id="control">Control</h3>
<p>Most work places want to block their employees from accessing certain websites. They do this by forcing all work computers to use a proxy. When you try to access something on you’re not allowed to, the proxy will return an error page explaining access has been blocked.</p>
<h3 id="security">Security</h3>
<p>Proxies can increase security by blocking access to known maliious sites thereby protecting users.</p>
<p>The proxy also acts as a shield. When all your internet traffic goes through a proxy your computer doesnt need to touch the internet. The only thing on the internet is your proxy server. If it gets hacked it’s not such a big deal, your personal machine is protected. Proxies are usually build so they can’t be hacked.</p>
<h3 id="privacy">Privacy</h3>
<p>If you work at the NY Times or MIT, you may not want people to know the databases you’re searching or the people you are talking with on Skype. So running requests through a proxy server shields end user identity by shielding the identity (IP address) of your computer.</p>
<h3 id="speed">Speed</h3>
<p>This is more relevant when you have lots of users such as a work place and have a company proxy setup locally. By using a proxy, the proxy can cache (save) pages that it’s already been asked to get. When another user wants the same web page the proxy can just serve that page quickly as it already has it saved locally rather than the users computer having to get the web page delviered to it over the web.</p>
<h3 id="bypass-censorship">Bypass censorship</h3>
<p>Countries like China block access to certain web sites. A user could configure their computer to use a proxy that doesnt block anything. To the Chinese Government it would look like you are just connecting to another computer somwhere on the internet. Please note the proxy must not be one the Chinese Government know about else they could just block your access to the proxy.</p>Zain Khanhello@iamzain.comA proxy server is just a computer configured in a special way. Using a proxy is just like asking another computer(the proxy) to get the web site you wanted for you. That’s it. Simples. How you normally get a web page You type a web address in to your browser Your computer (after a DNS lookup) goes and connects directly to the web server that has the web site How you get a web page using a proxy Let’s assume you’ve already set your computer up to use a proxy. You type a web address into your browser Your computer sends the request to the proxy The proxy (after a DNS lookup) connects to the web site you wanted Once the proxy has the web page it hands it to your computer. Why use a proxy server? Control Most work places want to block their employees from accessing certain websites. They do this by forcing all work computers to use a proxy. When you try to access something on you’re not allowed to, the proxy will return an error page explaining access has been blocked. Security Proxies can increase security by blocking access to known maliious sites thereby protecting users. The proxy also acts as a shield. When all your internet traffic goes through a proxy your computer doesnt need to touch the internet. The only thing on the internet is your proxy server. If it gets hacked it’s not such a big deal, your personal machine is protected. Proxies are usually build so they can’t be hacked. Privacy If you work at the NY Times or MIT, you may not want people to know the databases you’re searching or the people you are talking with on Skype. So running requests through a proxy server shields end user identity by shielding the identity (IP address) of your computer. Speed This is more relevant when you have lots of users such as a work place and have a company proxy setup locally. By using a proxy, the proxy can cache (save) pages that it’s already been asked to get. When another user wants the same web page the proxy can just serve that page quickly as it already has it saved locally rather than the users computer having to get the web page delviered to it over the web. Bypass censorship Countries like China block access to certain web sites. A user could configure their computer to use a proxy that doesnt block anything. To the Chinese Government it would look like you are just connecting to another computer somwhere on the internet. Please note the proxy must not be one the Chinese Government know about else they could just block your access to the proxy.What’s the difference between a program, an application and software?2019-05-07T00:00:00+00:002019-05-07T00:00:00+00:00https://iamzain.com/blog/whats-the-difference-between-a-program-and-an-application<h2 id="program">Program</h2>
<p>A computer program is a list of instructions that tell a computer what to do.</p>
<p>A computer program in computer readable form is called machine code. Machine code is binary, a bunch of ‘0’s and ‘1’s.</p>
<p>A computer program in human readable form is called source code. Source code is written in a Programming Language. A computer program cannot be run by simply giving the computer the source code. It won’t understand it. Source code needs to be converted into machine code. A Compiler takes source code and spits out machine code.</p>
<h2 id="application">Application</h2>
<p>The best way to describe what an application is by looking at the attributes and behavior of a program. A program isn’t usually something you see or even know exist. There are lots of programs running in the background of your PC or Mobile. Most of these programs have no element that you interact with. These programs simply go about their business in the background. Doing whatever task they have been written to do.</p>
<p>An application is one or more programs along with a human interface. A human interface is device or element that take input directly from a human. When we talk about application human interfaces we’re usually referring to the screens of the application. As soon a program has an element that a user can interact with it is an application.</p>
<h2 id="software">Software</h2>
<p>Software is a generic term for a program or application.</p>Zain Khanhello@iamzain.comProgram A computer program is a list of instructions that tell a computer what to do. A computer program in computer readable form is called machine code. Machine code is binary, a bunch of ‘0’s and ‘1’s. A computer program in human readable form is called source code. Source code is written in a Programming Language. A computer program cannot be run by simply giving the computer the source code. It won’t understand it. Source code needs to be converted into machine code. A Compiler takes source code and spits out machine code. Application The best way to describe what an application is by looking at the attributes and behavior of a program. A program isn’t usually something you see or even know exist. There are lots of programs running in the background of your PC or Mobile. Most of these programs have no element that you interact with. These programs simply go about their business in the background. Doing whatever task they have been written to do. An application is one or more programs along with a human interface. A human interface is device or element that take input directly from a human. When we talk about application human interfaces we’re usually referring to the screens of the application. As soon a program has an element that a user can interact with it is an application. Software Software is a generic term for a program or application.Oracle Database Architecture2018-07-01T00:00:00+00:002018-07-01T00:00:00+00:00https://iamzain.com/blog/oracle-database-architecture<p>As a designer we drop a blob onto a piece of graph paper and label it a database server. We never really fully understanding how it works and for the most part we never really need to. Will the article make you a database god? No. Will this article give you a good understanding of the different parts of an Oracle Database and what they do? Yes!</p>
<p>The thing we call an “Oracle Database” can be divided into two parts. The first is the database instance which lives in compute (processor) and memory (RAM). The second is actual database which lives in storage (disk) as files.</p>
<h2 id="oracle-database">Oracle Database</h2>
<p>Let’s ignore the Oracle Instance for now and look at the Oracle Database. The Oracle Database is comprised of files.</p>
<h3 id="files">Files</h3>
<p>These files provide permanent storage. The different types of Oracle Database files are listed below:</p>
<ol>
<li>Data Files – The files the actual data is stored in.</li>
<li>Redo Log Files – As changes are made to the Data Files these changes are stored in the Redo Log Files. For example; an entry in the Redo Log File will specify what has changed and what it was before. The Redo Log Files are written to in a circular fashion – meaning when all the Redo Log Files are filled, the Redo Logs will then be started to be overwritten.</li>
<li>Archive Log Files – Optional files that are simply copies of Redo Log Files. Why have copies? Remember Redo Log files are overwritten once they are filled up. Once the Redo Logs are filed up they are then copied to a different location (by the Archiver process) and stored as Archive Log Files. The Redo Log Files can then be overwritten. Archive Log Files are used to recover the database.</li>
<li>Control Files – These files tell the Oracle Instance things like the name of the database, where the data files, redo files etc are.</li>
</ol>
<h2 id="oracle-instance">Oracle Instance</h2>
<h3 id="memory">Memory</h3>
<p>The part of the Oracle Instance that sits in memory is called the System Global Area (SGA). The SGA has the following bits:</p>
<ol>
<li>Buffer Cache – Changes are never directly written to the Data Files. When manipulating data, that portion of the data (called Data Block) is copied into the Buffer Cache where it can then be accessed (read) or modified.</li>
<li>Shared Pool – This is quite a complicated structure and contains many bits. One of the main functions of this area is collecting, parsing, interpreting, and executing the SQL statements.</li>
<li>Redo Log Buffer – Whenever changes are made to data in the Buffer Cache data about the change is written to the Redo Log Buffer. Redo entries contain the information necessary to reconstruct, or redo, changes made to the database by INSERT, UPDATE, DELETE, CREATE, ALTER, or DROP operations. Redo entries are used for database recovery, if necessary.</li>
<li>Large Pool – An optional area of memory, used to relieve the burden place on the shared pool.</li>
<li>Java Pool – This is only required and used when the application using the database is going to use something called Java stored procedures.</li>
<li>Stream Pool – Reserved for something called Oracle Steam functions. We don’t need to know or care about these.</li>
</ol>
<h3 id="processes">Processes</h3>
<p>The Oracle Instance has many processes. Background processes help keep the Oracle Instance and Database functioning smoothly. Five of the main background processes are listed below:</p>
<ol>
<li>Database Writer (DBWn) – This process is in charge of actually writing changes from the Buffer Cache to the Data Files.</li>
<li>Log Writer (LGWR) – Writes the Redo Log Buffer to Redo Log Files on disk.</li>
<li>System Monitor (SMON) – Performs instance recovery, cleans up after dirty shutdowns</li>
<li>Process Monitor (PMON) – PMON is responsible for monitoring all Oracle processes. If any of the background processes fail, PMON will do process recovery.</li>
<li>Checkpoint (CKPT) – Regularly ensures any changes not yet wirtten to the Data Files are written then updates the Control Files to record it has just created a checkpoint.</li>
<li>Archiver – Copies the contents of a Redo Log File to another location, typically a disk file, when that log file becomes full.</li>
</ol>Zain Khanhello@iamzain.comAs a designer we drop a blob onto a piece of graph paper and label it a database server. We never really fully understanding how it works and for the most part we never really need to. Will the article make you a database god? No. Will this article give you a good understanding of the different parts of an Oracle Database and what they do? Yes! The thing we call an “Oracle Database” can be divided into two parts. The first is the database instance which lives in compute (processor) and memory (RAM). The second is actual database which lives in storage (disk) as files. Oracle Database Let’s ignore the Oracle Instance for now and look at the Oracle Database. The Oracle Database is comprised of files. Files These files provide permanent storage. The different types of Oracle Database files are listed below: Data Files – The files the actual data is stored in. Redo Log Files – As changes are made to the Data Files these changes are stored in the Redo Log Files. For example; an entry in the Redo Log File will specify what has changed and what it was before. The Redo Log Files are written to in a circular fashion – meaning when all the Redo Log Files are filled, the Redo Logs will then be started to be overwritten. Archive Log Files – Optional files that are simply copies of Redo Log Files. Why have copies? Remember Redo Log files are overwritten once they are filled up. Once the Redo Logs are filed up they are then copied to a different location (by the Archiver process) and stored as Archive Log Files. The Redo Log Files can then be overwritten. Archive Log Files are used to recover the database. Control Files – These files tell the Oracle Instance things like the name of the database, where the data files, redo files etc are. Oracle Instance Memory The part of the Oracle Instance that sits in memory is called the System Global Area (SGA). The SGA has the following bits: Buffer Cache – Changes are never directly written to the Data Files. When manipulating data, that portion of the data (called Data Block) is copied into the Buffer Cache where it can then be accessed (read) or modified. Shared Pool – This is quite a complicated structure and contains many bits. One of the main functions of this area is collecting, parsing, interpreting, and executing the SQL statements. Redo Log Buffer – Whenever changes are made to data in the Buffer Cache data about the change is written to the Redo Log Buffer. Redo entries contain the information necessary to reconstruct, or redo, changes made to the database by INSERT, UPDATE, DELETE, CREATE, ALTER, or DROP operations. Redo entries are used for database recovery, if necessary. Large Pool – An optional area of memory, used to relieve the burden place on the shared pool. Java Pool – This is only required and used when the application using the database is going to use something called Java stored procedures. Stream Pool – Reserved for something called Oracle Steam functions. We don’t need to know or care about these. Processes The Oracle Instance has many processes. Background processes help keep the Oracle Instance and Database functioning smoothly. Five of the main background processes are listed below: Database Writer (DBWn) – This process is in charge of actually writing changes from the Buffer Cache to the Data Files. Log Writer (LGWR) – Writes the Redo Log Buffer to Redo Log Files on disk. System Monitor (SMON) – Performs instance recovery, cleans up after dirty shutdowns Process Monitor (PMON) – PMON is responsible for monitoring all Oracle processes. If any of the background processes fail, PMON will do process recovery. Checkpoint (CKPT) – Regularly ensures any changes not yet wirtten to the Data Files are written then updates the Control Files to record it has just created a checkpoint. Archiver – Copies the contents of a Redo Log File to another location, typically a disk file, when that log file becomes full.What is Agile?2017-06-16T00:00:00+00:002017-06-16T00:00:00+00:00https://iamzain.com/blog/what-is-agile<p>Agile is another buzzword that’s been floating around in the technology industry and beyond for a few years now. It is thought to be some new magical way of doing things that delivers faster and cheaper. In this series of posts we take an in-depth look at what this is all about.</p>
<p>Agile is stems from the world of software development. Traditionally large projects would collect requirements for software upfront and thoroughly document them. These requirements included everything the piece of software intended to do i.e. all the features. For example a mobile banking app would have all the features desired documented and then, only then would development begin. Nothing would be released until all the features were implemented completely. The problem with this approach, especially in the world of technology, included project often being delivered late, features in the final version often not really being needed anymore and newer desired features missing.</p>
<p>Agile at is core is simply about getting a very very basic usable product that works shipped. Because it’s basic it can be delivered quicker. You can then review, take stock and think about what feature you want to deliver next based on customer feedback. For example under an agile approach a mobile banking application under an agile development methodology would simply be an application that allows the customer to securely login and check their balance. The next feature would be decided by customer feedback.</p>
<p>The core concept is small incremental improvements done in timeboxed manner rather than a big bang. You get something into the hands of the customer faster and they help shape the future direction of the product.</p>
<p>In this post we looked at the idea behind agile. In a future post we’ll look at how we do agile!</p>Zain Khanhello@iamzain.comAgile is another buzzword that’s been floating around in the technology industry and beyond for a few years now. It is thought to be some new magical way of doing things that delivers faster and cheaper. In this series of posts we take an in-depth look at what this is all about. Agile is stems from the world of software development. Traditionally large projects would collect requirements for software upfront and thoroughly document them. These requirements included everything the piece of software intended to do i.e. all the features. For example a mobile banking app would have all the features desired documented and then, only then would development begin. Nothing would be released until all the features were implemented completely. The problem with this approach, especially in the world of technology, included project often being delivered late, features in the final version often not really being needed anymore and newer desired features missing. Agile at is core is simply about getting a very very basic usable product that works shipped. Because it’s basic it can be delivered quicker. You can then review, take stock and think about what feature you want to deliver next based on customer feedback. For example under an agile approach a mobile banking application under an agile development methodology would simply be an application that allows the customer to securely login and check their balance. The next feature would be decided by customer feedback. The core concept is small incremental improvements done in timeboxed manner rather than a big bang. You get something into the hands of the customer faster and they help shape the future direction of the product. In this post we looked at the idea behind agile. In a future post we’ll look at how we do agile!What is Net Neutrality and why should you care?!2017-05-31T00:00:00+00:002017-05-31T00:00:00+00:00https://iamzain.com/blog/what-is-net-neutrality-and-why-should-you-care<p>When government and large corporations want us to ignore an issue that will benefit them and be to our detriment they make the issue as hard to understand as possible. For example, look at politics, often very important issues are being decided but by making politics difficult to understand and engage in, it leaves Government pretty much out on their own to do what they wish.</p>
<p>Net Neutrality is another one of these issues which is being made complex to ensure we don’t engage thus leaving large corporations to do as they please ultimately for their own monetary benefit. Net neutrality is the principal that the internet should treat all traffic equally by your internet service provider (ISP) and governments regulating the Internet. So your ISP should not slow down or block certain websites or services based on who pays them the most or to favour their own services.</p>
<p>So next time someone asks about your opinion on net neutrality, now you know. And hopefully your response will be “I agree with net neutrality and am in favour of it. I want an internet where all websites and services, and access to those websites and services are treated equally!”</p>Zain Khanhello@iamzain.comWhen government and large corporations want us to ignore an issue that will benefit them and be to our detriment they make the issue as hard to understand as possible. For example, look at politics, often very important issues are being decided but by making politics difficult to understand and engage in, it leaves Government pretty much out on their own to do what they wish. Net Neutrality is another one of these issues which is being made complex to ensure we don’t engage thus leaving large corporations to do as they please ultimately for their own monetary benefit. Net neutrality is the principal that the internet should treat all traffic equally by your internet service provider (ISP) and governments regulating the Internet. So your ISP should not slow down or block certain websites or services based on who pays them the most or to favour their own services. So next time someone asks about your opinion on net neutrality, now you know. And hopefully your response will be “I agree with net neutrality and am in favour of it. I want an internet where all websites and services, and access to those websites and services are treated equally!”API vs Web Service2017-04-14T00:00:00+00:002017-04-14T00:00:00+00:00https://iamzain.com/blog/api-vs-web-service<h2 id="what-is-an-api">What is an API?</h2>
<p>API stands for application programming interface. An API is a mechanism by which allow you to write code that allows interaction with another program or application.</p>
<p>For example Microsoft Word has an API (visual basic) that allows anyone to write a program to interact with Word.</p>
<p>An API can be in any programming language. To interact with that API your program or application needs to be the same language.</p>
<h2 id="web-service">Web Service</h2>
<p>A web service is a program written to perform a specific function or set of functions for another program over a network (i.e. internet).</p>
<p>For example if we were writing some Skiing application and needed weather data we could call the <a href="https://developer.yahoo.com/weather/">Yahoo Weather Web Service</a> that returns the data we need.</p>
<p>Advantage of a web service is that the way to interact with the web service it is always the same (a HTTP call) and the response is always in a format that any programming language can consume.</p>
<p>A web service is considered a special kind of API.</p>Zain Khanhello@iamzain.comWhat is an API? API stands for application programming interface. An API is a mechanism by which allow you to write code that allows interaction with another program or application. For example Microsoft Word has an API (visual basic) that allows anyone to write a program to interact with Word. An API can be in any programming language. To interact with that API your program or application needs to be the same language. Web Service A web service is a program written to perform a specific function or set of functions for another program over a network (i.e. internet). For example if we were writing some Skiing application and needed weather data we could call the Yahoo Weather Web Service that returns the data we need. Advantage of a web service is that the way to interact with the web service it is always the same (a HTTP call) and the response is always in a format that any programming language can consume. A web service is considered a special kind of API.SSL vs VPN2017-04-10T00:00:00+00:002017-04-10T00:00:00+00:00https://iamzain.com/blog/ssl-vs-vpn<p>What is the difference between SSL and a VPN? Why you would use a VPN when SSL is used everywhere now. Without getting into the finer details of how VPNs and SSL work, below I will provide a simple explanation of when you might want to use SSL and/or a VPN.</p>
<h2 id="ssl">SSL</h2>
<p>The little padlock in your browser and the web address being “https://…” indicate SSL is being used. SSL ensures the contents of any data passing to and from the website you are visiting, whilst it can be intercepted, cannot be deciphered. Basically someone could see you went to amazon.com but can’t see what page specifically or what your credit card details were when you bought an item.</p>
<h2 id="vpn">VPN</h2>
<p>VPN stands for Virtual Private Network. A VPN enables a user to connect to the internet through a VPN server – as a sort of middle man.</p>
<p>To hide both the content of the pages and what sites you visited from your internet service provider (ISP) and potentially any other intruders you will want to use a VPN.</p>
<p>Through use of a VPN, to the ISP, it seems as if you are simply connected to/communicating with the VPN server. The communication between you and the VPN server is encrypted by SSL anyway, so the intruder can’t open and read the data and find out what websites you’ve been using the VPN to connect to and what pages etc.</p>Zain Khanhello@iamzain.comWhat is the difference between SSL and a VPN? Why you would use a VPN when SSL is used everywhere now. Without getting into the finer details of how VPNs and SSL work, below I will provide a simple explanation of when you might want to use SSL and/or a VPN. SSL The little padlock in your browser and the web address being “https://…” indicate SSL is being used. SSL ensures the contents of any data passing to and from the website you are visiting, whilst it can be intercepted, cannot be deciphered. Basically someone could see you went to amazon.com but can’t see what page specifically or what your credit card details were when you bought an item. VPN VPN stands for Virtual Private Network. A VPN enables a user to connect to the internet through a VPN server – as a sort of middle man. To hide both the content of the pages and what sites you visited from your internet service provider (ISP) and potentially any other intruders you will want to use a VPN. Through use of a VPN, to the ISP, it seems as if you are simply connected to/communicating with the VPN server. The communication between you and the VPN server is encrypted by SSL anyway, so the intruder can’t open and read the data and find out what websites you’ve been using the VPN to connect to and what pages etc.