A protocol is an interface that defines a set of properties and methods which are necessary for a particular piece of functionality. The protocol can then be adopted by a class or structure to provide the actual implementation of that functionality. In this way, a protocol is a form of encapsulation, which allows you to interact with the interface without concern for the particular implementation type, which may be injected at runtime. This makes protocols ideal for delegation, which is a design pattern wherein… [continue]
Another year has passed. We’ve covered a lot of new ground over the past year on our journey of life together here in the E-g family. We’ve seen some new breathtaking views, and had some new thrilling life experiences. We’ve endured deep personal losses together that none of us are ever truly prepared for. We have also been pleasantly surprised by life more times than we can count… And yet with all of that “new,” we find ourselves in familiar… [continue]
We have an informal saying around here: Do Right and Risk the Consequences. One of our E-gineers had that as a bumper sticker awhile back, and it just seems to apply pretty universally. We all have countless opportunities to do a little something for someone else – something completely selfless and sacrificial. It seems so often we let those opportunities slip by – for a myriad of reasons, for sure. Add to that: with our abundance of technological connectedness, we’ve… [continue]
Is your career in a STEM Field? Have you ever been the only female on your team at work? Did you graduate with a STEM degree, yet the percentage of women in the graduating class was less than 20%? The answers are all yes for me. Last week I participated as a chaperone for sixth-grade girls at Ignite Your Superpower (IYS). IYS, sponsored by Women & Hi Tech, provided middle-school girls a whole day to discover more about Science, Technology,… [continue]
Almost a year ago Google announced a new policy that has big implications for the Android ecosystem: in order to continue publishing to the Play Store, apps must target a recent version of the SDK. Newer SDKs of course bring fancy new APIs, but they also cause some breaking changes in how your app functions. For now, the required version will be Oreo (SDK 26). Looking ahead, Google has stated that when a new target SDK is released, it will… [continue]
Adulthood. Coming of age. Voting. High school graduation. These are all things that greet us here in the US when we turn 18. So it seems E-g has finally come of age! How do we celebrate our 18th anniversary? Just like we do the rest of life here at E-g – like a family. We gathered at one of our beautiful local parks, swung open the gates, and said, “Have fun!” Honestly, we needed little instruction after that!
Being recognized among the Best Places to Work in Indiana – a hard-working state filled with so many excellent companies – is an incredible honor. But being named the #1 place to work, in a year in which we moved from the Small Companies up to the Medium category, is downright indescribable. As we have grown from a folding table in a garage almost 20 years ago into 80+ people and around 20,000 square feet of office space today, the… [continue]
Retroactive modeling is the practice of using existing types to represent new concepts, without modifying those types. This technique is important for reusing existing structures, while maintaining compatibility with the current usage. Swift supports retroactive modeling through the use of extensions. Extensions enable you to add new functionality to existing types, without the need to have access to the original source code. Swift extensions are similar to categories in Objective-C, and can be used to extend a class, struct, enum,… [continue]