As many of you know, I use the C# programming language a lot for my Software Development work. With that being said, I often use some third party libraries in order to speed up development time and perhaps add some new features. However, the libraries I have listed here are used in every one of my C# projects. If your favorite C# Library is not listed. Please leave a link to it in the comments section so I can try it out. Let’s get started.
I specialize in making web and mobile applications and being able to parse and create JSON data is extremely important to me. Json.Net is a really useful tool for parsing and creating JSON data in your applications. It requires no setup, just add it to your project using Nuget and your now your ready to start working with JSON Data. I recommend that you spend some time reading the documentation so you know how to use the library effectively. Especially when dealing with nested elements in JSON Data. There is also a very active community around this framework in case you get stuck or get confused on the functionality. I cant recommend this library enough.
If you haven’t noticed, I haven’t been blogging much lately. The main reason for this is because I was tired of running my blog on a slow cloud provider. Up until this past Friday, I migrated my blog to Digital Ocean from Microsoft Azure. The migration process was super simple and only took about an hour, to get things transferred to my new provider. Before the migration, I was consistently having performance issues with WordPress on Azure. For example, it took forever to publish a simple post, the page would consistently load for a while before I could start writing. Another issue was that updating plugins or other components of my website would cause WordPress to get stuck in Maintenance Mode. The only easy way to get everything working again was to use an FTP client and remove a certain file from the directory structure of my website. However, the main driver for the migration was the price per month to keep a relatively small site like this up all the time. The price was about $200 a month alone. Keep in mind, I also have various servers for the backends for various applications on Azure. After a while, keeping all this up was getting very expensive. I even asked Microsoft what my options were to improve performance and help on how to reduce my price. They had a few good suggestions, which I implemented but it still seemed slow. I had the option to upgrade the server running my blog to something more powerful. The recommended option was out of my price range.
Over the last couple of weeks, I have made great progress on two apps that I’m writing. Working on these two projects every week has been a personal goal of mine since I started this blog, and I’m excited to see what the future holds. However, this progress means that the development process starts to slow down and the testing phase begins. This past weekend, I spent most of my time getting ready to move my apps into testing mode. During this time, I developed some tips in order to help newer developers get ready for testing.
If your new to mobile application development, one topic you should learn early on, is the concept of threading. Threading is a computer science term that handles the order of execution of tasks on the CPU. Threads are usually handled by the operating system. However there might be some tasks that can only be carried out on specialized threads created by the OS. To put things in context, consider the following example. Lets say I create an iOS application that uses a REST API to fetch data about upcoming concerts using location data. When you launch this application, the app freezes, takes a long time to load, and you see a white screen for more than 3 seconds. This is a common example of an app thats not optimized for the use of threads. As a result, you might receive complaints from your users saying that the app is slow or they delete your application all together. After a while, you decide to make some changes.
Upon inspection of your code, you find that your REST call is causing this slow down inside the ViewDidLoad method. you have to remember that in this case your code is being executed line by line. This means when your REST call is carried out, the CPU must finish getting your data before displaying it on screen. After reading this, you may be asking why does this happen? This happens because by default your application business logic and UI are loaded on the same thread called the main thread. Quick operations like simple math and string manipulation are perfectly fine on the main thread, but time consuming tasks like REST calls are not the best option. So how do we fix this? The simplest thing we could do is move this time consuming task to what is called the Background Thread. The Background Thread is a thread designed for complex operations. In return you leave the Main Thread open for UI changes. Here is some example code on how to make this happen.
For those who know me personally you might be aware that I’m learning VB.Net for use at my day job. Up until a month ago, I was using my C# skills to create applications and API’s for my employer. However, this caused a problem and management told me I had to learn VB.Net ASAP. To be honest I had no problem with this because, I could probably find some good online resources that could teach me the language rather quickly, since I already knew the .Net Framework. However, things went down hill really fast. Most if not all the resources for learning VB.Net are either very out dated or very poor. With not having any luck, I decided to find a Microsoft Virtual Academy course on VB. However all the offerings Microsoft had were considered retired, and recommended that I learn C# instead or try this VB for Absolute Beginners course.
That course didn’t satisfy me. I didn’t need to learn how to use Visual Studio or how to use certain data structures. I knew all that from C#. Since VB and C# use the same .Net Framework and CLR. I can easily move my existing coding skills to the older language. I eventually found this course on Udemy. I took the course shortly before Christmas and found it to be very helpful. But still didn’t have the content I was looking for but, it seemed to teach what I wanted to know. Soon I began to practice my VB skills. I made a handful of small apps but nothing major. After feeling pretty good about myself, I decided to try some common CRUD actions using Entity Framework (EF), a popular ORM for .Net, and one of my favorite tools. I ran into the same issue with the initial VB learning. All example code was in C# not VB. I eventually figured it out but getting EF to work in VB is not straight forward and its very ugly with the syntax. For those that are curious here is a sample incase your wondering how it looks:
Comparing it to the C# syntax its very messy and verbose. In addition if your using Pogo classes in a MVC project You need to import them one at at time instead of importing the models namespace. Even though I’m sill learning VB its very clear that it is a afterthought at Microsoft and all development efforts are still focused on C#, as it should be. However, if your just starting out do not learn VB. You are more likely to see a C based language like C# rather than a language based on BASIC. Its only a matter of time before VB is retired. Please feel free to comment or reach out to me on Twitter with your thoughts.
If your reading this, then you stumbled on to my next post since writing my introductory post on New Years Day. If you have not read that yet, I strongly suggest you do that to learn more about why I’m blogging. Anyway, today’s post is all about some recent findings I discovered during the development process of the ParkLane iOS app. My use case is pretty simple and common for the platform. I have a login and sign up ViewControllers inside my app where the user can fill out some fields to create an account in our database or login into a existing one. However, I needed some kind of alert to pop up on the screen to tell a user if one of the following errors occurred:
Wrong Email and Password
As you can tell this presents a problem. I know Apple has something to solve this called a UIAlertView. Its pretty simple to use, it looks like this: let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message", delegate: self, cancelButtonTitle: "Ok", otherButtonTitles: nil)
// show alert on screen button2Alert.show()
I wasn’t worried to use this code because I’ve used it before, However Xcode presented me with this warning:
UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead
This left me puzzled, after doing some research this change occurred around the release of iOS 8 in 2014. After thinking about it some more, It must have been a change that I simply missed, and I take the blame for it. In a request to redeem myself I took out the old UIAlert code and replaced it with the newer UIAlertController.
After trying this new API, I have to say I like this better than the old UIAlertView. The newer framework seems like more work, but your getting more control over your alerts. Here is a quick code example to show you the difference.
If your familiar with how iOS views work the this seems pretty straight forward. I bet developers that don’t understand iOS or Swift can figure out what this code does. I also enjoy that the addAction method has a completion handler in order to execute some custom code when you tap a button on the alert.
Before I go, I realize that this first iOS post was pretty simple but do not worry. I have plenty of content coming up on more advance topics. So keep following my blog and be sure to follow me on Twitter to be alerted when new content is posted.