iOS communication patterns can be very confusing to the aspiring iOS developer. What is the difference between target/action, notifications, blocks, and callbacks? Find out by reading this excellent article linked below!
Scary problems in the Bitcoin community. Will it collapse?
I found this excellent writeup to help bend your mind around going from a strict OOP mindset to POP and the use of value types. This is Apple’s emphasis in Swift as it reduces the potential for nasty bugs introduced by over-reliance on mutable, multi-owner reference types. He puts together a concise, real world example that’s easy to understand.
I found an excellent article on the use of value types to help reduce the complexity of reference types. In the process, it does an excellent job at explaining the differences between the two in a more meaningful way than many other articles I have found.
You can read about it here.
To better understand the internals (in a very general way) of what goes on behind these types, take a look at this article explaining what happens under the hood in .net. This also gives an insight into the performance implications.
In researching mobile strategy, I came across this writeup about the impact of the emerging mobile workforce on corporations. It has some very good points that IT departments and businesses should consider.
As an end user, the largest challenge I have found has been the restrictive and reactionary IT policies of the organization I am contributing to. Security is a mess and many solutions require you to accept a significant invasion of privacy if you want to use organizational software to complete work on your personal mobile device. This is an issue for workers who want to get things done on the go without resorting to giving up privacy or carrying around yet another device that is owned by the company. End users want to get their work done on their own devices without being tied to a physical location. Allowing workers to increase their productivity is essential for business to maintain and gain competitive advantage in the marketplace. Having employees who want to be empowered to contribute more is a blessing, one that should certainly take a higher priority than maintaining existing IT practices. IT should be an enabler, not a disciplinarian.
In this vein, organizations must also prod themselves to support and enable virtual workspaces. In an increasingly global workforce, virtual collaboration is becoming increasingly vital. It is no longer a nice option, it is a necessity. The traditional physical limitations are being torn down and business must acknowledge, embrace, and then exploit this to their advantage. Global resources are being leveraged to increase productivity through 24/7 development cycles, the exploitation of economic differentials, and the contribution of increasingly diverse ideas and thoughts into the organizational culture. The world is changing and organizations must adapt or they will be left behind.
In the course of trying to find these answers for myself, I ran across a very good writeup comparing the various frameworks. Head on over to DeveloperEconomics to read more and get a better perspective on where things stand today.
Sometimes you need to delete any cached client SSL certificates from Safari. For instance, you may be testing different certificates with different levels of access on a site you are developing. Or, you may have selected the wrong certificate to logon a secured site like AKO or other DOD sites.
The problem with Safari is that it does not give you an obvious way to do this. However, it’s simple once you understand how they are stored.
To delete your client side SSL certificate, just open Keychain access and search for the website in question. You will see the URL under the Name column. Simply delete the entry and Safari will prompt you again for the certificate the next time you visit it.
I am consistently amazed with OS X because I am always learning new tricks to make interacting with the OS easier. A big part of this are the many keyboard shortcuts available for window management. Here are a few that I use fairly often:
⌘M – Minimize the current window.
Now, to select a window and bring it to the forefront again you do:
⌘TAB – Cycle through windows (similar to Alt-Tab on Windows)
The only problem with this is that if you had previously minimized one of those windows before, it will not show up when you release. To get around this problem, do the following:
⌘TAB and press ⌥ when the minimized window you want is displayed and it will open up when you release. If you have more than one window minimized for that application, this won’t work. Instead, use the arrow keys to select which window you want to show.
Other useful commands:
⌘Q – Quit the application
⌘H – Hide the application
If you want to go nuts, you can simply open up Preferences, then Keyboard, then click on the Shortcuts tab. Once there, select App Shortcuts and click + then enter any application menu item’s name exactly as it appears and assign a shortcut. You will also find many other shortcut capabilities in this tab. For instance, you can assign a shortcut key combination to any available system service.
OS X is truly amazing. The flexibility of the system is incredible. The more you dig in, the better it gets.