Jekyll2018-07-31T17:00:35+02:00https://aleksanderpopko.tech/Aleksander PopkoMy thoughts on technologyMemory dump - July 20182018-07-31T16:50:00+02:002018-07-31T16:50:00+02:00https://aleksanderpopko.tech/memory-dump-july-2018<p><em>Here is a summary of the best news and articles I’ve read during
July 2018. The criteria are very simple - the selection is 100%
subjective.</em></p>
<h3 id="-apple">🍏 Apple</h3>
<p>WWDC 2018 is over. <a href="https://flawlessapp.io/wwdc18">The Flawless team have prepared a great summary for the software engineers.</a></p>
<p><a href="https://nshipster.com/return/">NSHipster is back!</a> My favourite blog for iOS/macOS developers is ressurected.🎉🎉🎉</p>
<p>Apple’s goals are not always consistent with the goals of developers. <a href="https://ashfurrow.com/blog/thinking-critically-about-apple/">Great blog post from Ash Furrow.</a></p>
<p>MacOS dark mode is one of the hottest topics from WWDC 2018. <a href="https://mackuba.eu/2018/07/04/dark-side-mac-1/">Kuba Suder wrote a detailed blog post</a> about this feature. <a href="https://mackuba.eu/2018/07/10/dark-side-mac-2/">Here is part two.</a></p>
<p><a href="https://www.macstories.net/tag/app-store-10/">App Store is 10 years old.</a> Happy birthday! 🎁</p>
<p><a href="https://9to5mac.com/2018/07/02/all-time-most-popular-ios-apps-games/">App Annie has published a report</a> about the most popular and highest paid games and applications from the App Store.</p>
<h3 id="-random-tech-stuff">👩‍💻 Random tech stuff</h3>
<p>Udacity’s mobile team is removing React Native from their apps. <a href="https://engineering.udacity.com/react-native-a-retrospective-from-the-mobile-engineering-team-at-udacity-89975d6a8102">Nate Ebel wrote a broad summary</a> explaining what stands behind this decision.</p>
<h3 id="-productivity">🛠 Productivity</h3>
<p>Open space is a terrible idea. <a href="https://m.signalvnoise.com/the-open-plan-office-is-a-terrible-horrible-no-good-very-bad-idea-42bd9cd294e3">DHH explains why.</a></p>
<p><a href="https://aleksanderpopko.tech/countdownbar-release/">CountdownBar is released.</a> 🚀 I developed this small app for myself and, after some time, decided to make it public. <a href="https://itunes.apple.com/app/countdownbar/id1413807534?mt=12">Available in the Mac App Store.</a></p>aleksanderpopkoHere is a summary of the best news and articles I’ve read during July 2018. The criteria are very simple - the selection is 100% subjective.CountdownBar - release 🚀2018-07-23T19:42:00+02:002018-07-23T19:42:00+02:00https://aleksanderpopko.tech/countdownbar-release<p><em>TL;DR: I made a pretty simple day-countdown app for myself, now I’ve decided to release it in the App Store.</em></p>
<p>The second quarter of 2018 was a crazy time for me. A hectic time at work, wedding preparations, and waiting for the honeymoon (the longest vacation I’ve had during the last two years). On the one hand, I was feeling crushed by too many deadlines, on the other - I was just counting down the days to pack a suitcase and go to Bali 🏝.</p>
<p>So, I looked through the day counters on the App Store but couldn’t find anything satisfactory. And that’s why I developed <a href="https://itunes.apple.com/app/countdownbar/id1413807534?mt=12">CountdownBar</a> – my own pretty simple and minimalistic menu bar app. After coming back from my holidays, I’m still using it so, I decided to make it public.</p>
<p><br />
<img src="https://aleksanderpopko.tech/assets/images/countdownbar.gif" alt="" />
<br /></p>
<p>Features:</p>
<ul>
<li>counts remaining days to a particular date</li>
<li>possibility to choose an event that is visible on the menu bar</li>
<li>possibility to add, remove, and edit your event</li>
<li>optional launch on login</li>
</ul>
<p>I made it 100% for myself, but as it is now public, I’m open to all suggestions and/or feature requests. I choose App Store as this the most secure form of distribution. I also decided it should be paid (0.99 USD). I don’t expect to make a fortune, but I believe software should be paid in general💰.</p>
<ul>
<li><a href="https://itunes.apple.com/pl/app/countdownbar/id1413807534?mt=12">View in Mac App Store</a>.</li>
<li><a href="https://countdownbar.carrd.co/">Go to website</a>.</li>
</ul>aleksanderpopkoTL;DR: I made a pretty simple day-countdown app for myself, now I’ve decided to release it in the App Store.Memory dump - May 20182018-06-02T10:31:00+02:002018-06-02T10:31:00+02:00https://aleksanderpopko.tech/memory-dump-may-2018<p><em>Here is a summary of the best news and articles I’ve read during
May 2018. The criteria are very simple - the selection is 100%
subjective.</em></p>
<h3 id="-ios">📱 iOS</h3>
<p><a href="https://medium.com/@hesham.salman/the-ios-testing-manifesto-e1bc821cc4c3">The iOS Testing Manifesto</a>. An extensive article on how to write unit tests for iOS apps.</p>
<h3 id="-ai">🤖 AI</h3>
<p>There was Google I/O and it was all about AI. The <a href="https://www.youtube.com/watch?v=D5VN56jQMWM">presentation</a> of <a href="https://ai.googleblog.com/2018/05/duplex-ai-system-for-natural-conversation.html">Google Duplex</a> was breathtaking, but there were also <a href="https://aleksanderpopko.tech/google-io-keynote-2018/">voices of criticism</a>. Not only was the <a href="https://venturebeat.com/2018/05/11/googles-use-of-ai-to-mimic-humans-is-unethical-and-bad-ux/">bad UX criticised</a>, <a href="https://gizmodo.com/google-employees-resign-in-protest-against-pentagon-con-1825729300">Google employees resigned in protest against a Pentagon contract providing AI for military drones</a>. What is more interesting, <a href="https://gizmodo.com/google-removes-nearly-all-mentions-of-dont-be-evil-from-1826153393">Google removed the “Don’t be evil” rule from its Code of Conduct</a>.</p>
<h3 id="-security">🔐 Security</h3>
<p><a href="https://dawidbalut.com/2018/05/06/here-is-what-we-should-teach-all-software-developers-about-security/">What we should teach all software developers about security</a>. Some interesting points on software development from the infoSec specialist.</p>
<h3 id="-random-tech-stuff">👩‍💻 Random tech stuff</h3>
<p><a href="https://medium.com/@rothgar/the-economics-of-writing-a-technical-book-689d0c12fe39">The economics of writing a technical book</a>. How much time does it take and how much money can you make?</p>
<p>What happens when you let engineers code instead of wasting time on meetings? <a href="https://medium.com/@Pinterest_Engineering/three-day-no-meeting-schedule-for-engineers-fca9f857a567">Three-day no-meeting schedule for engineers experiment</a> in Pinterest.</p>
<p>Computers are killing people, literally. <a href="https://www.theregister.co.uk/2018/05/02/computer_algorithm_blamed_for_450k_women_failing_to_receive_breast_screening_invite/">Up to 270 women in the UK could have died of cancer due to a software bug</a>. It is frightening, and it also shows how much can depend on the software’s quality.</p>
<p><a href="https://www.cultofmac.com/549437/facebook-terragraph-internet-service-qualcomm/">Facebook wants to become an internet service provider</a>. <a href="https://www.qualcomm.com/news/releases/2018/05/21/qualcomm-and-facebook-bring-high-speed-internet-connectivity-over-60ghz">Terragraph</a> is promised to be cheap, uncommonly fast, and probably it will track every user’s actions? No, thanks.</p>
<p><a href="https://medium.com/@preethikasireddy/why-im-leaving-silicon-valley-72919edb3297">Why I’m leaving Silicon Valley</a>? The tech-world is more than just a piece of land in California.</p>
<p>While <a href="https://www.bloomberg.com/view/articles/2018-01-23/amazon-s-pointless-obsession-with-cashiers">Amazon is making innovations for the sake of making innovations</a>, Google and Facebook are outdoing each other in tracking their users and collecting private data, <a href="https://www.bloomberg.com/view/articles/2018-05-02/i-m-sorry-i-criticized-you-apple-you-win?cmpId=flipboard">Apple has become a rock of common sense in the tech industry</a>.</p>
<h3 id="-blockchain">⛓ Blockchain</h3>
<p><br />
<img src="https://aleksanderpopko.tech/assets/images/blockchain_poland.jpg" alt="" /></p>aleksanderpopkoHere is a summary of the best news and articles I’ve read during May 2018. The criteria are very simple - the selection is 100% subjective.Google I/O 2018 - Keynote2018-05-10T20:10:00+02:002018-05-10T20:10:00+02:00https://aleksanderpopko.tech/google-io-keynote-2018<p>🤖 <em>I am totally impressed but I’m leaving.</em></p>
<p>It was the first <a href="https://www.youtube.com/watch?v=ogfYd705cRs">Google I/O Keynote</a>, which drew me completely - almost as much as the first season of <a href="https://www.imdb.com/title/tt2707408/">Narcos</a>. The whole event was all about AI and machine learning. That’s a given.</p>
<p>Calling the hairdresser and booking a table in a restaurant using software assistant was staggering.</p>
<iframe width="560" height="310" src="https://www.youtube.com/embed/D5VN56jQMWM" frameborder="0" allowfullscreen=""></iframe>
<p>On the one hand, I appreciate the possibilities that AI brings - especially when it comes to healthcare and predictive analysis.</p>
<p>On the other hand, I am terrified by the amount of data collected and the power of one giant company.</p>
<p>AI, machine learning, big data and user tracking are clear trends for the direction in which technology is going. The second, opposing trend is security and privacy protection.</p>
<p>I’m very impressed with Keynote, but I’m also terrified - it’s time to hop off the train. I don’t think I’ll give up Google Maps, but it’s a moment to finally turn Google Chrome into Firefox and <a href="https://www.torproject.org/">Tor</a>, swap Gmail for <a href="https://protonmail.com/">ProtonMail</a>, and Google’s search engine for <a href="https://duckduckgo.com/">DuckDuckGo</a>.</p>
<p>After all, best of luck Google! I hope you will not share the same pathetic fate as Facebook.</p>aleksanderpopko🤖 I am totally impressed but I’m leaving.Memory dump - April 20182018-05-04T16:10:00+02:002018-05-04T16:10:00+02:00https://aleksanderpopko.tech/memory-dump-april-2018<p><em>Here is a summary of the best news and articles I’ve read during
April 2018. The criteria are very simple - the selection is 100%
subjective.</em></p>
<h3 id="-smartphones">📱 Smartphones</h3>
<p>Smartphones are useful, but can also be very addictive. <a href="https://nomasters.io/posts/dumber-phone/">Making your smartphone dumber</a> should reduce external stimulus and distraction.</p>
<p><a href="https://www.blloc.com/">BLLOC</a> - minimalistic, simple smartphone with cool design.</p>
<p><a href="https://android.jlelse.eu/one-night-stand-with-ios-in-depth-comparison-from-android-developers-perspective-87ac82589195">iOS app development, seen through the eyes of an Android developer.</a> Some interesting insights into the differences and similarities between these two platforms.</p>
<h3 id="-swift">👩‍💻 Swift</h3>
<p><a href="http://blog.cocoafrog.de/2018/04/12/How-to-name-IBActions.html">How to name IBActions?</a> Popular <code class="highlighter-rouge">didTapButton</code> or <code class="highlighter-rouge">buttonTapped</code> is inherently wrong. Target-action is a command pattern, not a delegate pattern.</p>
<p><a href="https://medium.com/@slavapestov/behind-the-scenes-improvements-in-swift-4-1-269dd56e30c2">Behind-the scenes improvements in Swift 4.1.</a> Author focused on smaller, less visible improvements , which are still interesting.</p>
<p><a href="https://www.whatsnewinswift.com/">What’s new in Swift?</a> Great tool to compare different versions of the language.</p>
<h3 id="-bitcoin">₿ Bitcoin</h3>
<p><a href="https://www.recode.net/2018/4/24/17275202/bitcoin-scam-cryptocurrency-mining-pump-dump-fraud-ico-value">Is Bitcoin the greatest scam in history?</a> Strong arguments against cryptocurrency. I would like this article even more if it wasn’t written by PayPal’s CEO.</p>
<h3 id="️-blogging">✍️ Blogging</h3>
<p><a href="https://medium.freecodecamp.org/every-developer-should-have-a-blog-heres-why-and-how-to-stick-with-it-5fd55a247fbf">Why every developer should have a blog.</a> Reasons why it is worth it to keep a technical blog and how to do it.</p>
<h3 id="-recruitment">👔 Recruitment</h3>
<p><a href="https://work.qz.com/1254663/job-interviews-for-programmers-now-often-come-with-days-of-unpaid-homework/">Unpaid, time-consuming homework is a new trend in the tech-recruitment industry.</a> The only reasonable answer to such a phenomena is “No, thanks.”</p>
<p><a href="http://fuzzyblog.io/blog/jobhound/2018/04/24/ten-things-i-learned-from-a-job-hunt-for-a-senior-engineering-role.html">Job-hunting for a satisfying senior engineering role is not as easy as it might look.</a> Some stats:
Jobs applied for: 82
HR interview 25
Technical interview: 15
Onsite interview: 2
Job offers: 1</p>
<h3 id="-productivity">🏭 Productivity</h3>
<p><a href="http://www.dailymail.co.uk/sciencetech/article-5633271/Elon-Musk-reveals-six-productivity-tips-including-walking-bad-meetings.html">A leaked email to Tesla employees has revealed Musk’s productivity tips.</a> It’s not surprising that half of them are about meetings.</p>aleksanderpopkoHere is a summary of the best news and articles I’ve read during April 2018. The criteria are very simple - the selection is 100% subjective.Remotely2018-04-30T13:10:00+02:002018-04-30T13:10:00+02:00https://aleksanderpopko.tech/remotely<p><em>Not going to the office does not guarantee sanity.</em></p>
<h3 id="intro">Intro</h3>
<p>It has been three years since I have been working remotely. This means that the time in which I have been doing remote work is now equal to the time I spent working in an office. Three years is not an eternity, but it has allowed me to formulate a few insights about remote work.</p>
<h3 id="thoughts">Thoughts</h3>
<ul>
<li>
<p><strong>One person working remotely means the whole team should adopt the remote approach.</strong> A lot happens during spontaneous discussions near coffee machines in the office. It is the biggest challenge to create formal rules for natural communications and move on-site discussions to corresponding software tools. This is really difficult, especially if only a small part of the whole organization is working remotely.</p>
</li>
<li>
<p><strong>A major part of communication should be done using a task management system, code collaboration tools, and knowledge repositories.</strong> Messengers, e-mails, and video calls are all terrible solutions when it comes to explaining things remotely.</p>
</li>
<li>
<p><strong>Slack has many dark sides.</strong> In the beginning, I was totally in love with this tool. Now, I treat this as another distraction—the same as Facebook, Twitter, or Messenger. <a href="https://twitter.com/samuelhulick">Samuel Hulick</a>, in his <a href="https://ux.useronboard.com/slack-i-m-breaking-up-with-you-54600ace03ea">excellent article</a>, perfectly pointed out what is wrong with Slack. The problem is that I have not found anything better so far.</p>
</li>
<li>
<p><strong>Time differences can be a problem.</strong> While I am living in Poland, time differences are not an issue when I am working with people living in other parts of Europe. However, working with people living in the USA or Australia is much more difficult. A narrow window of real-time communication can block tasks and cause delays. The solution is implementing a formalized and structured communication system.</p>
</li>
<li>
<p><strong>Context is crucial.</strong> It is very easy to overlook the boundary between private life and professional life while working remotely. Working at home can destroy your productivity, because of the many distractions that can take place. And what is worse, working from home can destroy your private life, because it is much harder to stop thinking about work when your home is also your office. To keep your sanity in good condition, co-working places and cafes come to the rescue.</p>
</li>
<li>
<p><strong>Remote meetings are usually the same waste of time as real meetings.</strong> However, it is much easier to endure them and not pay attention to irrelevant things while not being seen as rude.</p>
</li>
</ul>
<h3 id="outro">Outro</h3>
<p>For me, the possibility of working remotely is the primary consideration when accepting or turning down a job offer. Remote work gives individuals a high degree of independence in the corporate-slave, capitalistic system. This freedom is more important than money, technology, company values, fancy perks, gaming rooms, or a gym in the corporate office. I do not want to make serious declarations, but I would probably have to be starving before I would be willing to go back to working full-time in an office.</p>aleksanderpopkoNot going to the office does not guarantee sanity.Memory dump - March 20182018-04-01T13:14:00+02:002018-04-01T13:14:00+02:00https://aleksanderpopko.tech/memory-dump-march-2018<p><em>Here is a summary of the best news and articles I’ve read during
March 2018. The criteria are very simple - the selection is 100%
subjective.</em></p>
<h3 id="-ios-development">📱 iOS Development</h3>
<p>iPhone SDK was released 10 years ago! 🎉🎉🎉 <a href="https://twitter.com/chockenberry">Craig Hockenberry</a> describes his <a href="https://blog.iconfactory.com/2018/03/a-lot-can-happen-in-a-decade/">reminiscing over those exciting times</a> when iPhone app development first began.</p>
<p><a href="https://developer.apple.com/wwdc/">WWDC 2018 is officially announced</a>! Apple’s Worldwide Developers Conference will be held from June 4–8. That will be the best time to make a stock of craft beer, stay at home for a week, and replace Netflix with <a href="https://developer.apple.com/videos/">https://developer.apple.com/videos/</a>.</p>
<p><a href="https://twitter.com/daveverwer">Dave Verwer</a>, author of <a href="https://iosdevweekly.com/">iOS Dev Weekly</a>, created <a href="https://iosdevdirectory.com/">iOS Dev Directory</a> - a great collection of blogs about software development for the Apple mobile platform.</p>
<p><a href="https://www.charlesproxy.com/ios/">Charles Proxy is available for iOS</a>. This well-known development tool for intercepting http and https requests and responses now has its iOS equivalent. Definitely worth the interest.</p>
<p><a href="https://developer.apple.com/ibm/">IBM Watson Services for Core ML</a>. A combination of IBM’s question-answering supercomputer and <a href="https://developer.apple.com/documentation/coreml">Apple’s machine learning framework</a> can take iOS apps to a completely new level.</p>
<h3 id="-software-development">👨‍💻 Software Development</h3>
<p><a href="https://techblog.bozho.net/gdpr-practical-guide-developers/">GDPR - a practical guide for developers</a>. An excellent article explaining how you should adjust software to new European data protection regulations.</p>
<p><a href="https://insights.stackoverflow.com/survey/2018">Stack Overflow Developer Survey 2018</a> is now published. A lot of interesting insights. Kotlin is better loved than Swift, while Objective-C is among 10 of the most dreaded languages.</p>
<h3 id="-swift">👩‍💻 Swift</h3>
<p><a href="https://www.swiftbysundell.com/posts/the-power-of-sets-in-swift">The power of sets in Swift</a>. <code class="highlighter-rouge">Set</code>, one of the basic collection data structures, is not as often used as <code class="highlighter-rouge">array</code>, but it does have some benefits.</p>
<p><a href="https://pspdfkit.com/blog/2018/first-class-swift-api-for-objective-c-frameworks/">First-class swift API for Objective-C frameworks</a>. How to improve Objective-C and Swift interoperability by putting in some extra effort.</p>
<h3 id="-security">🔐 Security</h3>
<p>NY Magazine published <a href="https://nymag.com/selectall/2018/03/marcus-hutchins-hacker.html">well-written article</a> describing what happened behind the scenes of the arrest of <a href="https://twitter.com/MalwareTechBlog">MalwareTech</a> - a malware researcher who saved the world from <a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack">WannaCry</a>.</p>
<p>Finally, <a href="https://blog.malwarebytes.com/security-world/2018/03/graykey-iphone-unlocker-poses-serious-security-concerns/">public information about GrayKey has appeared</a>. The inconspicuous little grey box that can unlock possibly any iPhone and seems to be a real security threat.</p>
<p>Calendar 2, a popular app available in the App Store <a href="https://arstechnica.com/information-technology/2018/03/theres-a-currency-miner-in-the-mac-app-store-and-apple-seems-ok-with-it/">mines cryptocurrency in the background</a>. Nice <a href="https://objective-see.com/blog/blog_0x2B.html">reverse analysis</a> by <a href="https://twitter.com/patrickwardle">Patrick Wardle</a>.</p>aleksanderpopkoHere is a summary of the best news and articles I’ve read during March 2018. The criteria are very simple - the selection is 100% subjective.macOS: system-wide notifications2018-03-30T16:18:00+02:002018-03-30T16:18:00+02:00https://aleksanderpopko.tech/macos-system-wide-notifications<p><em>A straightforward yet pretty useful inter-process communication utility.</em></p>
<h3 id="what-are-system-wide-notifications">What are system-wide notifications?</h3>
<p>Apple’s documentation says:</p>
<blockquote>
<p>These routines allow processes to exchange stateless notification events. Processes post notifications to a single system-wide notification server, which then distributes notifications to client processes that have registered to receive those notifications, including processes run by other users.</p>
</blockquote>
<p>In short, they give us the possibility to communicate between different processes. <a href="http://brettterpstra.com/2012/07/04/quick-tip-system-wide-notifications-with-notifyutil/">Brett Terpstra wrote a nice tutorial</a> about how to use system-wide notifications with Terminal. How can we use them in Objective-C programs?</p>
<h3 id="lets-code">Let’s code!</h3>
<p>Let’s start with creating new Objective-C command line tool in Xcode.
<br />
<img src="https://aleksanderpopko.tech/assets/images/notifications1.png" alt="1" />
<br />
<img src="https://aleksanderpopko.tech/assets/images/notifications2.png" alt="2" />
<br />
Next, we need to import <code class="highlighter-rouge">notify.h</code> into the <code class="highlighter-rouge">main.m</code> file.</p>
<figure class="highlight"><pre><code class="language-raw" data-lang="raw">#import "notify.h"</code></pre></figure>
<p>And finally, post notification.</p>
<noscript><pre>#import &lt;Foundation/Foundation.h&gt;
#import &quot;notify.h&quot;
int main(int argc, const char * argv[]) {
@autoreleasepool {
notify_post(&quot;com.aleksanderpopko.notify.first-notification&quot;);
}
return 0;
}
</pre></noscript>
<script src="https://gist.github.com/aleksanderpopko/d5e94df4f6f2e19a0ffe1731f8bec9fd.js"> </script>
<p><code class="highlighter-rouge">notify.h</code> is written in C, and that’s perfect because Objective-C is a superset of C.</p>
<p>To receive notification in a different process we need to register monitoring for this notification. Let’s open Terminal and type:</p>
<figure class="highlight"><pre><code class="language-raw" data-lang="raw">notifyutil -1 com.aleksanderpopko.notify.first-notification &amp;&amp; echo "notification received"</code></pre></figure>
<p><code class="highlighter-rouge">-1</code> means we are waiting for only one notification. After running our Objective-C command line program, we should receive the notification in Terminal.</p>
<figure class="highlight"><pre><code class="language-raw" data-lang="raw">notification received</code></pre></figure>
<p>Pretty cool. Now, let’s register a new notification using Objective-C.</p>
<noscript><pre>#import &lt;Foundation/Foundation.h&gt;
#import &quot;notify.h&quot;
int main(int argc, const char * argv[]) {
@autoreleasepool {
int notify_token;
notify_register_dispatch(&quot;com.aleksanderpopko.notify.second-notification&quot;,
&amp;notify_token, dispatch_get_main_queue(), ^(int token) {
NSLog(@&quot;notification received&quot;);
});
[[NSRunLoop currentRunLoop] run];
}
return 0;
}
</pre></noscript>
<script src="https://gist.github.com/aleksanderpopko/acbc1681df49c3bb376dd3ced4e83073.js"> </script>
<p>I believe the code is self-explanatory. We are using <code class="highlighter-rouge">[[NSRunLoop currentRunLoop] run]</code> to keep our program running. When a notification is received, the Xcode console will log our <code class="highlighter-rouge">notification received</code> information. To post the notification from Terminal just type:</p>
<figure class="highlight"><pre><code class="language-raw" data-lang="raw">notifyutil -p com.aleksanderpopko.notify.second-notification</code></pre></figure>
<p>That’s all for now folks. Thanks for reading!</p>aleksanderpopkoA straightforward yet pretty useful inter-process communication utility.Against third party dependencies2018-03-25T15:44:00+02:002018-03-25T15:44:00+02:00https://aleksanderpopko.tech/third-party-dependencies<p><em>It’s not the daily increase but daily decrease. Hack away at the unessential.</em><br />
Bruce Lee, <a href="https://www.goodreads.com/book/show/57858.Tao_of_Jeet_Kune_Do">Tao of Jeet Kune Do</a></p>
<h3 id="intro">Intro</h3>
<p>Consider the following scenario: a bunch of developers are working on short-term project from scratch. The client is in a rush, so they decide not to reinvent the wheel and use as many external dependencies as humanly possible. Pace of development is ridiculous. After a few weeks there are many closed tickets in <a href="https://www.atlassian.com/software/jira">Jira</a>. Nice. Everybody is happy.</p>
<p>After a few months, there are very many third-party dependencies and very little code the developers can fully control.</p>
<p>And after a few years there is a project that’s horribly hard to maintain. Some of dependencies are no longer supported. The language version has changed and the client needs to pay for forks maintenance. Oh, and in the meantime, there was a little security issue in one of those seventeen external frameworks…</p>
<h3 id="three-questions">Three questions</h3>
<p>Third party open source libraries are great. They are (usually) polished up to the limits of what’s possible. Using them is (usually) a pleasure. They were (usually) developed by people much smarter than I, whose work I highly admire. <strong><em>Chapeau bas</em> for developers who spend their own time on making life easier for other developers.</strong> However, using them always brings in some risk - and that could be a problem.</p>
<ul>
<li>
<p>What happens if the library is no longer supported? Are you ready for bearing the costs of maintaining the fork? Or maybe a migration to another solution and huge refactoring will be cheaper?</p>
</li>
<li>
<p>What happens if there is a security flaw? It’s not an unrealistic scenario - it’s enough to recall <a href="https://gist.github.com/AlamofireSoftwareFoundation/f784f18f949b95ab733a">the case of the popular AFNetworking</a>. Adding third party code always brings in the risk of <a href="https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5">increasing potential undetected vulnerabilities</a>.</p>
</li>
<li>
<p>What happens if your requirements change after a few months? Your project is changing and the third-party frameworks are changing. At some point, the overlapping paths might diverge significantly. You may need features that the already integrated third party does not offer or ones provided for in an unacceptable way. What will you do then?</p>
</li>
</ul>
<h3 id="summary">Summary</h3>
<p><strong>I’m not against using third party libraries, I’m against losing control of the code and taking unnecessary risks.</strong> Before adding another third-party dependency to your project, consider if it is really necessary. Think what can happen if it stops being supported. What the cost of migration to another solution or fork maintenance could be. Don’t get me wrong - third party code is not the root of all evil. It is useful, it helps to deliver things faster and to increase overall productivity. It’s all about balancing the risk with the pay-off. If you decide to use a third-party dependency, protect yourself with appropriate design and a reasonable layer of abstraction.</p>
<p>Be like the <a href="https://dailystoic.com/what-is-stoicism-a-definition-3-stoic-exercises-to-get-you-started/">ancient stoics</a> - always keep the worst possible scenario in mind.</p>aleksanderpopkoIt’s not the daily increase but daily decrease. Hack away at the unessential. Bruce Lee, Tao of Jeet Kune DoMemory dump - February 20182018-03-02T16:11:00+01:002018-03-02T16:11:00+01:00https://aleksanderpopko.tech/memory-dump-february-2018<p><em>Here is a summary of the best news and articles I’ve read during
February 2018. The criteria are very simple - the selection is 100%
subjective.</em></p>
<h3 id="-ios-development">📱 iOS development</h3>
<p><a href="https://medium.com/flutter-io/announcing-flutter-beta-1-build-beautiful-native-apps-dc142aea74c0">The first beta of Flutter is now released.</a> It’s Google’s mobile UI framework that enables creating native interfaces for both iOS and Android with one codebase. I’m not a fan of cross-platform solutions, but this one looks interesting.</p>
<p><a href="https://medium.com/flawless-app-stories/ios-remote-push-notifications-in-a-nutshell-d05f5ccac252">iOS remote push notifications in a nutshell</a> - a nice tutorial explaining what are and how to use remote push notifications.</p>
<p>The most popular way of <a href="https://stackoverflow.com/questions/4754392/uiview-with-rounded-corners-and-drop-shadow">rounding layers corners</a> in iOS apps heavily taxes the performance. <a href="http://texturegroup.org/docs/corner-rounding.html">This tutorial</a> shows you how to do this better.</p>
<h3 id="-security--privacy">🔐 Security &amp; Privacy</h3>
<p><a href="https://business.f-secure.com/infographic-threat-landscape-snapshot">F-Secure published a report showing sources and destinations of global cyber attacks in the second half of 2017.</a> Nice to know who hacks who. The main source of attacks is Russia and the main destination - United States.</p>
<p>Recently, the trend of more difficult access to jailbreaks has become more visible. Meanwhile, <a href="https://github.com/Coalfire-Research/iOS-11.1.2-15B202-Jailbreak">a jailbreak source code for iOS 11</a> has appeared on GitHub along with a <a href="https://github.com/Coalfire-Research/iOS-11.1.2-15B202-Jailbreak/blob/master/iOS_jailbreak_writeup.pdf">complete manual</a>.</p>
<p>The last few months have not been kind to Apple when it comes to security. After problems with <a href="https://www.macrumors.com/2017/11/28/macos-high-sierra-bug-admin-access/">macOS High Sierra admin privileges without a password</a>, we’ve got another fail - <a href="https://www.macrumors.com/2018/02/07/iphone-source-code-github-leak/">iPhone iBoot source code leaked on GitHub</a>.</p>
<p><a href="https://www.smashingmagazine.com/2018/02/gdpr-for-web-developers/">Smashing magazine released a nice introduction to the General Data Protection Regulations for software developers.</a> The law, which will become effective in May across the European Union, will seriously affect how we manage user data in software products.</p>
<h3 id="-culture">🎭 Culture</h3>
<p><a href="https://www.reuters.com/article/us-filmfestival-berlin-unsane/soderberghs-thriller-shot-on-iphone-premieres-in-berlin-idUSKCN1G52PR">Steven Soderbergh’s new film, Unsane, was entirely filmed using the iPhone</a>. Soderbergh says that in the process he noticed many positives and it will be difficult for him to return to the traditional way of making films.</p>
<h3 id="-words-of-wisdom">📚 Words of wisdom</h3>
<p><br />
<img src="https://aleksanderpopko.tech/assets/images/malwaretech.png" alt="https://twitter.com/MalwareTechBlog/status/961710965602500608" /></p>aleksanderpopkoHere is a summary of the best news and articles I’ve read during February 2018. The criteria are very simple - the selection is 100% subjective.