If you have ever gathered connection metrics using URLSessionTaskTransactionMetrics then you may have noticed that this year Apple has now exposed a few TLS properties to the public API. The first is negotiatedTLSCipherSuite and the next negotiatedTLSCipherSuite. The reason this is interesting is that these values seem to have been around since iOS 7, but now are being released in the Security framework in the new iOS 13 beta. These properties will be very useful for connection diagnostics
If you are like me you may be spending a good deal of development time debugging network connections trying to know more about where time is being spent in your connection life-cycle. If you are using URLSession or Apple's Network Framework in your iOS or macOS application then you may want to take a look at the connection metrics APIs available. One of those APIs is URLSessionTaskTransactionMetrics, and it is a metric gathering set of APIs built right into URLSession for gathering data like DNS time, TLS time, connection setup time, and much more. I have found the
In this micro tutorial I wanted to cover installing RVICTL after installing macOS 10.15 and Xcode 11. I installed Xcode 11 beta along with the command line tools and fired up the terminal thinking that RVICTL would be available from /usr/bin, but was surprised when I did not see it from the command line. I started to look all over my machine in the usual places but and was stumped. Finally, I found a solution and that is why I wanted to write this tutorial, to share with you that that sol
A good practice to keep in mind during application development is that you can never assume what kind of network conditions your users will be facing while using your application. Some users could be on Wi-Fi, some of 4G - LTE, but most likely a lot of your users with be in conditions similar to 3G or an EDGE network, which can be a lot slower than Wi-Fi or 4G. In these cases it is important to test your application to make sure that any assumptions you programmed into your logic during development do not provide a poor user experience in adverse network conditions.
If there is one thing that I have learned in my career it's that network connectivity is not a binary state. A network connection goes through many different transitions when setting up the connection, transmitting data, and closing down the connection. In most cases, a client side mobile or desktop application can simply send the network request and if the client application is offline the request will immediately fail and the application can update the user accordingly (
The landscape of mobile connectivity has become highly complex over the last 10 years. Our modern society has been built around the need to always be up and connected. And in most cases mobile connectivity works very seamlessly when driving, flying, transferring between cell towers, or even just going on a run - you stay connected.
One topic that I have seen come up a lot over the last couple of years is how to detect internet connectivity in an iOS or macOS application. This is a topic that really interests me so I thought I would take some time and write a tutorial on how I and Apple recommend that client applications determine network connectivity. To start, I thought I would provide some context on where this network connectivity model might be applicable. The main use case is in a traditional client to server communication setting where a client is sending either a GET or POST request to a server, and the serv
TCPdump is one of my favorite network packet analysis tools in existence today. In the past year I have enjoyed TCPdump so much that I have wanted to learn more about the project. So, I thought a good place to start would be to get involved contributing on GitHub. My contributions are not much, but they help me learn the ins and outs of the project and how to use some of the more advanced features as I come up in issues or pull requests. During my time thus far I have noticed that a lot o
As a long time mobile and server side engineer I have been involved in many different types of projects over the years. Some small, and some large, but all with one recurring trend; the mobile clients need to consume data from a server to perform a task. Sometimes this data being consumed is small, and other times the application needs to continuously poll or be notified of new data to keep the application up to date it real time.
Python just received a minor version update to Python 3.7 with many new performance enhancements, added features, and module improvements to the language. One of the existing Python modules in 3.7 that received some nice new enhancements is the ssl module.