<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lantean</title><link>https://www.lantean.co/</link><description>Recent content on Lantean</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 08 May 2026 18:37:27 +0000</lastBuildDate><atom:link href="https://www.lantean.co/index.xml" rel="self" type="application/rss+xml"/><item><title>I Disappear</title><link>https://www.lantean.co/posts/i-disappear/</link><pubDate>Fri, 08 May 2026 18:37:27 +0000</pubDate><guid>https://www.lantean.co/posts/i-disappear/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/F5H_AknnHLc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description></item><item><title>Moving to Hugo</title><link>https://www.lantean.co/posts/moving-to-hugo/</link><pubDate>Sun, 03 May 2026 02:27:27 +0000</pubDate><guid>https://www.lantean.co/posts/moving-to-hugo/</guid><description>&lt;p&gt;After ~12 years of running on WordPress, self hosted on AWS, I&amp;rsquo;ve decided it was time to shuffle things around, a little bit.
Because sometimes there is no need for a CDN, ACID DB and a &lt;strong&gt;ton of code&lt;/strong&gt; , when all you need is to host plain html.&lt;/p&gt;
&lt;p&gt;And, of course, as a side effect&amp;hellip; my blog is as snappy as it gets. Literally zero overhead.&lt;/p&gt;
&lt;p&gt;This one goes to those who thrive on simplicity! 🤘&lt;/p&gt;</description></item><item><title>Tenerife</title><link>https://www.lantean.co/posts/tenerife/</link><pubDate>Sun, 19 Apr 2026 08:04:09 +0000</pubDate><guid>https://www.lantean.co/posts/tenerife/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2026/04/img_0452.jpg" class="wp-image-2923"/&gt;&lt;/figure&gt;
&lt;p&gt;There’s this climatic phenomenon called &lt;a href="https://en.wikipedia.org/wiki/Calima_(Saharan_sand)"&gt;Calima&lt;/a&gt;, where winds from Sahara bring over dust particles into the atmosphere.&lt;/p&gt;
&lt;p&gt;This affects the Canary Islands, and the sky remains dusty for days.&lt;/p&gt;
&lt;p&gt;Unpredictable, not good for your health, but manageable.&lt;/p&gt;
&lt;p&gt;Nonetheless, Tenerife is a good spot for a meetup 🥃&lt;/p&gt;</description></item><item><title>Superpowers</title><link>https://www.lantean.co/posts/superpowers/</link><pubDate>Wed, 08 Apr 2026 21:12:02 +0000</pubDate><guid>https://www.lantean.co/posts/superpowers/</guid><description>&lt;p&gt;I've been avoiding this Claude plugin, as ... it's just a bunch of text files, and I didn't even consider it'd be useful.&lt;/p&gt;
&lt;p&gt;Well, I was wrong.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/obra/superpowers"&gt;https://github.com/obra/superpowers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How is it helping me?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;/add-dir&lt;/code&gt; lets you tell Claude it&amp;rsquo;s okay to access multiple folders (think of sub-components)&lt;/li&gt;
&lt;li&gt;It automatically spawns single purpose agents, which helps with the context collapse problem&lt;/li&gt;
&lt;li&gt;And it really guides you thru brainstorming, making a plan (and saving it to disk), executing, and committing in slices&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Scary good stuff eh! 🤔&lt;/p&gt;</description></item><item><title>It’s Flat!</title><link>https://www.lantean.co/posts/its-flat/</link><pubDate>Sun, 28 Dec 2025 22:29:45 +0000</pubDate><guid>https://www.lantean.co/posts/its-flat/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2025/12/img_9934-1.jpg" class="wp-image-2903"/&gt;&lt;/figure&gt;</description></item><item><title>iTerm2 Settings</title><link>https://www.lantean.co/posts/iterm2-settings/</link><pubDate>Mon, 01 Sep 2025 10:03:38 +0000</pubDate><guid>https://www.lantean.co/posts/iterm2-settings/</guid><description>&lt;p&gt;I've been using &lt;a href="https://iterm2.com"&gt;iTerm2&lt;/a&gt; for few years, and everytime I need to setup a new install... I find myself looking up how to properly set it up.&lt;/p&gt;
&lt;p&gt;So... about time to write this post! My settings would be...&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Settings &amp;gt; Appearance &amp;gt; General &amp;gt; Theme&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Set to &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Settings &amp;gt; Profiles &amp;gt; Default&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Colors&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Defaults: &lt;strong&gt;Background&lt;/strong&gt; to pitch black&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Window&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Transparency set to 20%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keys &amp;gt; General&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Left Option key: Esc +&lt;/li&gt;
&lt;li&gt;This enables Option + Backspace to delete words&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keys&lt;/strong&gt; &amp;gt; &lt;strong&gt;Key Bindings&lt;/strong&gt;: New Shortcut for &lt;strong&gt;Option&lt;/strong&gt; ←
&lt;ul&gt;
&lt;li&gt;Send Escape Sequence&lt;/li&gt;
&lt;li&gt;Esc+ b&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keys&lt;/strong&gt; &amp;gt; &lt;strong&gt;Key Bindings&lt;/strong&gt;: New Shortcut for &lt;strong&gt;Option&lt;/strong&gt; →
&lt;ul&gt;
&lt;li&gt;Send Escape Sequence&lt;/li&gt;
&lt;li&gt;Esc+ f&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Settings &amp;gt; Advanced &amp;gt; Session&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Disable Session Restoration&lt;/li&gt;
&lt;li&gt;Disable When restoring a session (&amp;hellip;) draw a banner saying Session Contents Restored&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Settings &amp;gt; Advanced&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Disable &lt;code&gt;Restore window contents at startup&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Looks somehow like this:&lt;/p&gt;</description></item><item><title>Thank you, A8C!!</title><link>https://www.lantean.co/posts/thank-you-a8c/</link><pubDate>Fri, 22 Aug 2025 19:15:24 +0000</pubDate><guid>https://www.lantean.co/posts/thank-you-a8c/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2025/08/IMG_0023-1-scaled.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2025/08/IMG_0023-1-scaled.jpg" alt="" class="wp-image-2880"/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;🫡&lt;/p&gt;</description></item><item><title>Induction</title><link>https://www.lantean.co/posts/induction/</link><pubDate>Tue, 12 Aug 2025 23:13:20 +0000</pubDate><guid>https://www.lantean.co/posts/induction/</guid><description>&lt;div class="wp-block-cover has-custom-content-position is-position-top-left" style="min-height:219px"&gt;&lt;img class="wp-block-cover__image-background wp-image-2866" alt="" src="https://www.lantean.co/wp-content/uploads/2025/08/image-1.png" data-object-fit="cover"/&gt;&lt;span aria-hidden="true" class="wp-block-cover__background has-background-dim"&gt;&lt;/span&gt;&lt;div class="wp-block-cover__inner-container"&gt;&lt;p class="has-text-align-center has-large-font-size"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p class="has-text-align-left"&gt;You'll conform to the identity we give you, eat where we tell you, live where we tell you.&lt;/p&gt;
&lt;p&gt;From now on, you'll have no identifying marks of any kind. You will not stand out in any way. Your entire image is crafted to leave no lasting memory with anyone you encounter.&lt;/p&gt;
&lt;p&gt;You're a rumor, recognizable only as deja vu, and dismissed just as quickly.&lt;/p&gt;</description></item><item><title>Italian WWDC!</title><link>https://www.lantean.co/posts/italian-wwdc/</link><pubDate>Tue, 17 Jun 2025 05:34:34 +0000</pubDate><guid>https://www.lantean.co/posts/italian-wwdc/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2025/06/img_8829.jpg" alt="" class="wp-image-2849"/&gt;&lt;/figure&gt;</description></item><item><title>Fixing my Apple Studio Display</title><link>https://www.lantean.co/posts/fixing-my-apple-studio-display/</link><pubDate>Tue, 08 Apr 2025 10:30:40 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-my-apple-studio-display/</guid><description>&lt;p&gt;Almost two months ago, my Apple Studio Display started malfunctioning. It worsened up to the point it became unusable.&lt;/p&gt;
&lt;p&gt;At first, it started loosing video signal intermittently (you'd hear the "unplugged" macOS sound). I've noticed that if I hooked up my MacBook Pro directly to wall power, I could get around this.&lt;/p&gt;
&lt;p&gt;Unfortunately, over few weeks, it stopped working altogether, without further notice.&lt;/p&gt;
&lt;p&gt;Since I live in Mars, there's no official Apple Store here, and the premium resellers mentioned it'd take months to get the spare parts (and the cost would be the same as a new display), I've decided to fix it myself.&lt;/p&gt;</description></item><item><title>Imminent!</title><link>https://www.lantean.co/posts/imminent/</link><pubDate>Wed, 06 Nov 2024 16:22:44 +0000</pubDate><guid>https://www.lantean.co/posts/imminent/</guid><description>&lt;figure class="wp-block-image size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2024/11/IMG_7282.jpeg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2024/11/IMG_7282.jpeg" alt="" class="wp-image-2811"/&gt;&lt;/a&gt;&lt;/figure&gt;</description></item><item><title>Slash!!</title><link>https://www.lantean.co/posts/slash/</link><pubDate>Sat, 10 Feb 2024 19:23:18 +0000</pubDate><guid>https://www.lantean.co/posts/slash/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2024/02/img_5546.jpg" class="wp-image-2804"/&gt;&lt;/figure&gt;</description></item><item><title>Stressful Day</title><link>https://www.lantean.co/posts/stressful-day/</link><pubDate>Wed, 16 Aug 2023 15:03:09 +0000</pubDate><guid>https://www.lantean.co/posts/stressful-day/</guid><description>&lt;figure class="wp-block-image size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2023/08/IMG_4561.jpeg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2023/08/IMG_4561.jpeg" alt="" class="wp-image-2795"/&gt;&lt;/a&gt;&lt;/figure&gt;</description></item><item><title>Mallorca 🏝️</title><link>https://www.lantean.co/posts/mallorca-%f0%9f%8f%9d%ef%b8%8f/</link><pubDate>Mon, 03 Jul 2023 15:52:22 +0000</pubDate><guid>https://www.lantean.co/posts/mallorca-%f0%9f%8f%9d%ef%b8%8f/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2023/07/img_4248.jpg" class="wp-image-2791"/&gt;&lt;/figure&gt;</description></item><item><title>v60 @ Liverpool</title><link>https://www.lantean.co/posts/v60-liverpool/</link><pubDate>Wed, 21 Jun 2023 16:39:03 +0000</pubDate><guid>https://www.lantean.co/posts/v60-liverpool/</guid><description>&lt;figure class="wp-block-image size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2023/06/IMG_3778.jpeg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2023/06/IMG_3778.jpeg" alt="" class="wp-image-2789"/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>Stonehenge!</title><link>https://www.lantean.co/posts/stonehenge-%f0%9f%96%96/</link><pubDate>Mon, 19 Jun 2023 18:51:20 +0000</pubDate><guid>https://www.lantean.co/posts/stonehenge-%f0%9f%96%96/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2023/06/img_4008.jpg" alt="" class="wp-image-2782"/&gt;&lt;/figure&gt;
&lt;p&gt;What nobody tells you about Stonehenge is that there’s a freeway about 200 meters away. The cars are SO CLOSE!&lt;/p&gt;
&lt;p&gt;Last but not least.. there’s a fence surrounding the stones. You cannot approach any closer than 100m, give or take.&lt;/p&gt;
&lt;p&gt;Reminds me a bit of my expectations toward seeing the Mona Lisa. There were just SO MANY people, it was like being in a Metallica concert, trying to reach the first row.&lt;/p&gt;</description></item><item><title>Never, Ever Do This!</title><link>https://www.lantean.co/posts/never-ever-do-this/</link><pubDate>Fri, 24 Mar 2023 10:00:26 +0000</pubDate><guid>https://www.lantean.co/posts/never-ever-do-this/</guid><description>&lt;p&gt;I do realize it's an old article... but... still, brutally eye opening. Also... is this &lt;strong&gt;why Netscape fell? wooooooooow&lt;/strong&gt;&lt;/p&gt;
&lt;figure class="wp-block-embed is-type-wp-embed is-provider-joel-on-software wp-block-embed-joel-on-software"&gt;&lt;div class="wp-block-embed__wrapper"&gt;
&lt;p&gt;&lt;a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/"&gt;https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/figure&gt;</description></item><item><title>Dino</title><link>https://www.lantean.co/posts/dino/</link><pubDate>Sat, 24 Dec 2022 12:37:48 +0000</pubDate><guid>https://www.lantean.co/posts/dino/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2022/12/img_2687.jpg" class="wp-image-2768"/&gt;&lt;/figure&gt;</description></item><item><title>Farewell, MINI 🖖</title><link>https://www.lantean.co/posts/farewell-mini-%f0%9f%96%96/</link><pubDate>Fri, 14 Oct 2022 00:39:07 +0000</pubDate><guid>https://www.lantean.co/posts/farewell-mini-%f0%9f%96%96/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2022/10/628b6bbe-b2fe-4743-8d9e-e625aa765ef0.jpg" class="wp-image-2765"/&gt;&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>Barcelona =)</title><link>https://www.lantean.co/posts/barcelona/</link><pubDate>Mon, 29 Aug 2022 12:31:45 +0000</pubDate><guid>https://www.lantean.co/posts/barcelona/</guid><description>&lt;figure class="wp-block-image size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2022/08/IMG_7158.jpeg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2022/08/IMG_7158.jpeg" alt="" class="wp-image-2763"/&gt;&lt;/a&gt;&lt;/figure&gt;</description></item><item><title>Run!</title><link>https://www.lantean.co/posts/run/</link><pubDate>Wed, 09 Mar 2022 23:11:14 +0000</pubDate><guid>https://www.lantean.co/posts/run/</guid><description>&lt;figure class="wp-block-image size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2022/03/Run.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2022/03/Run.jpg" alt="" class="wp-image-2748"/&gt;&lt;/a&gt;&lt;/figure&gt;</description></item><item><title>Farewell, Productivity :|</title><link>https://www.lantean.co/posts/farewell-productivity/</link><pubDate>Thu, 17 Feb 2022 19:53:18 +0000</pubDate><guid>https://www.lantean.co/posts/farewell-productivity/</guid><description>&lt;div class="wp-block-cover aligncenter has-custom-content-position is-position-top-center"&gt;&lt;span aria-hidden="true" class="wp-block-cover__gradient-background has-background-dim"&gt;&lt;/span&gt;&lt;img class="wp-block-cover__image-background wp-image-2714" alt="" src="https://www.lantean.co/wp-content/uploads/2022/02/Quake.jpeg" data-object-fit="cover"/&gt;&lt;div class="wp-block-cover__inner-container"&gt;&lt;p class="has-large-font-size"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="https://playclassic.games/games/first-person-shooter-dos-games-online/play-quake-online/play/"&gt;Quake&lt;/a&gt;, &lt;a href="https://playclassic.games/games/first-person-shooter-dos-games-online/play-doom-online/"&gt;Doom&lt;/a&gt;, &lt;a href="https://playclassic.games/games/first-person-shooter-dos-games-online/play-catacomb-abyss-online/"&gt;Catacomb&lt;/a&gt;, &lt;a href="https://playclassic.games/games/action-adventure-dos-games-online/play-grand-theft-auto-online/play/"&gt;GTA&lt;/a&gt;. Right there, in your browser.&lt;/p&gt;
&lt;p&gt;Oh. Did anyone say &lt;a href="https://archive.org/details/softwarelibrary_msdos_games?&amp;amp;sort=-week&amp;amp;page=2"&gt;Prince of Persia&lt;/a&gt;?&lt;/p&gt;</description></item><item><title>Farewell, Gmail</title><link>https://www.lantean.co/posts/farewell-gmail/</link><pubDate>Wed, 16 Feb 2022 23:12:32 +0000</pubDate><guid>https://www.lantean.co/posts/farewell-gmail/</guid><description>&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2022/02/img_4334.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2022/02/img_4334.jpg" alt="" class="wp-image-2700"/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I started using Gmail around 2004, when it was invite only. I remember the UX being insanely fast (it was hard to believe it was &lt;em&gt;just&lt;/em&gt; a web app!).&lt;/p&gt;
&lt;p&gt;At some point in that decade, Google introduced Apps, free to everyone. It allowed you to use Gmail along with your custom domain. (Wow!)&lt;/p&gt;
&lt;p&gt;At the time, I was a student, and loved everything Google. So immediately jumped in.&lt;/p&gt;
&lt;p&gt;Years passed by, things happened...&lt;/p&gt;</description></item><item><title>Don’t Look Up!</title><link>https://www.lantean.co/posts/dont-look-up/</link><pubDate>Fri, 24 Dec 2021 15:12:19 +0000</pubDate><guid>https://www.lantean.co/posts/dont-look-up/</guid><description>&lt;blockquote class="wp-block-quote"&gt;&lt;p&gt;I want to die peacefully like my grandfather,&lt;/p&gt;&lt;p&gt;not screaming in terror like his passengers.&lt;/p&gt;&lt;cite&gt;Jack Handey&lt;/cite&gt;&lt;/blockquote&gt;</description></item><item><title>Under / Overestimation</title><link>https://www.lantean.co/posts/under-overestimation/</link><pubDate>Wed, 27 Oct 2021 00:09:50 +0000</pubDate><guid>https://www.lantean.co/posts/under-overestimation/</guid><description>&lt;blockquote class="wp-block-quote"&gt;&lt;p&gt;“We always overestimate the change that will occur in the next two years and underestimate the change that will occur in the next ten. Don’t let yourself be lulled into inaction.”&lt;/p&gt;&lt;cite&gt;Bill Gates Axiome&lt;/cite&gt;&lt;/blockquote&gt;</description></item><item><title>La boqueria</title><link>https://www.lantean.co/posts/la-boqueria/</link><pubDate>Sun, 12 Sep 2021 12:04:03 +0000</pubDate><guid>https://www.lantean.co/posts/la-boqueria/</guid><description>&lt;figure class="wp-block-image size-full"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2021/09/Boqueria.jpeg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2021/09/Boqueria.jpeg" alt="" class="wp-image-2669"/&gt;&lt;/a&gt;&lt;/figure&gt;</description></item><item><title>Smile =)</title><link>https://www.lantean.co/posts/smile/</link><pubDate>Fri, 30 Jul 2021 18:40:08 +0000</pubDate><guid>https://www.lantean.co/posts/smile/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2021/07/IMG_6689.jpeg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2021/07/IMG_6689.jpeg" alt="" class="wp-image-2652"/&gt;&lt;/a&gt;&lt;/figure&gt;</description></item><item><title>Manifesto</title><link>https://www.lantean.co/posts/manifesto/</link><pubDate>Mon, 26 Jul 2021 09:41:31 +0000</pubDate><guid>https://www.lantean.co/posts/manifesto/</guid><description>&lt;p&gt;I've been thinking about &lt;a href="http://phrack.org/issues/7/3.html"&gt;this text lately&lt;/a&gt;. This one goes to a friend, who happens to love the Hackers movie 🤟 &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This is our world now... the world of the electron and the &lt;span style="color:#66d9ef"&gt;switch&lt;/span&gt;, the
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;beauty of the baud. We make use of a service already existing without paying
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; what could be dirt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;cheap &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; it wasn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t run by profiteering gluttons, and
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;you call us criminals. We explore... and you call us criminals. We seek
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;after knowledge... and you call us criminals. We exist without skin color,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;without nationality, without religious bias... and you call us criminals.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You build &lt;span style="color:#66d9ef"&gt;atomic&lt;/span&gt; bombs, you wage wars, you murder, cheat, and lie to us
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;and try to make us believe it&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; our own good, yet we&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;re the criminals.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Yes, I am a criminal. My crime is that of curiosity. My crime is
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;that of judging people by what they say and think, not what they look like.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;My crime is that of outsmarting you, something that you will never forgive me
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; I am a hacker, and this is my manifesto. You may stop this individual,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;but you can&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t stop us all... after all, we&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;re all alike.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;+++&lt;/span&gt;The Mentor&lt;span style="color:#f92672"&gt;+++&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fixing "MACHINE CHECK ERROR"</title><link>https://www.lantean.co/posts/fixing-machine-check-error/</link><pubDate>Thu, 06 May 2021 00:58:21 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-machine-check-error/</guid><description>&lt;p&gt;If you're running &lt;strong&gt;Windows 10&lt;/strong&gt; on a &lt;strong&gt;Macbook Pro 2013 (Early)&lt;/strong&gt;, and constantly stumble upon an awesome &lt;strong&gt;Machine Check Error&lt;/strong&gt; screen whenever you reboot, you shoooould try:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the device manager&lt;/li&gt;
&lt;li&gt;Locate you GeForce GT 650M&lt;/li&gt;
&lt;li&gt;Uninstall the 2017 Driver&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;Let Windows install the system&amp;rsquo;s driver&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For the record, this is the driver you'd want:&lt;/p&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-large is-resized"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2021/05/Driver.png"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2021/05/Driver.png" alt="" class="wp-image-2640" width="377" height="429"/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>Manual Symbolication</title><link>https://www.lantean.co/posts/manual-symbolication/</link><pubDate>Fri, 22 Jan 2021 20:23:51 +0000</pubDate><guid>https://www.lantean.co/posts/manual-symbolication/</guid><description>&lt;p&gt;I keep loosing this snippet, over an over, apparelty.&lt;/p&gt;
&lt;p&gt;If you ever need to symbolicate (manually) a memory address, you'll just need the dSYM file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xcrun atos &lt;span style="color:#f92672"&gt;-&lt;/span&gt;l LOAD_ADDRESS SYMBOL_ADDRESS &lt;span style="color:#f92672"&gt;-&lt;/span&gt;o dSYMs&lt;span style="color:#f92672"&gt;/&lt;/span&gt;APP&lt;span style="color:#f92672"&gt;-&lt;/span&gt;NAME.dSYM&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Contents&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Resources&lt;span style="color:#f92672"&gt;/&lt;/span&gt;DWARF&lt;span style="color:#f92672"&gt;/&lt;/span&gt;APP&lt;span style="color:#f92672"&gt;-&lt;/span&gt;NAME&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;🔥🔥🔥&lt;/p&gt;</description></item><item><title>NSPredicate: Filter multiple entity kinds</title><link>https://www.lantean.co/posts/nspredicate-filter-multiple-entity-kinds/</link><pubDate>Wed, 26 Aug 2020 15:53:44 +0000</pubDate><guid>https://www.lantean.co/posts/nspredicate-filter-multiple-entity-kinds/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;let predicate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; NSCompoundPredicate(orPredicateWithSubpredicates: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSCompoundPredicate(andPredicateWithSubpredicates: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSPredicate(format: &lt;span style="color:#e6db74"&gt;&amp;#34;entity = %@&amp;#34;&lt;/span&gt;, Note.entity()),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSPredicate(format: &lt;span style="color:#e6db74"&gt;&amp;#34;content CONTAINS[cd] %@&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSCompoundPredicate(andPredicateWithSubpredicates: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSPredicate(format: &lt;span style="color:#e6db74"&gt;&amp;#34;entity = %@&amp;#34;&lt;/span&gt;, Tag.entity()),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSPredicate(format: &lt;span style="color:#e6db74"&gt;&amp;#34;name CONTAINS[c] %@&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;tag&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, this yields another problem: there is no API to limit the number of entities to fetch "per group".&lt;/p&gt;
&lt;p&gt;If you do need this feature, you're probably better of with multiple NSFetchRequest(s).&lt;/p&gt;</description></item><item><title>Fixing Macbook Brightness Keys in Windows 10</title><link>https://www.lantean.co/posts/fixing-macbook-brightness-keys-in-windows-10/</link><pubDate>Mon, 17 Aug 2020 14:43:27 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-macbook-brightness-keys-in-windows-10/</guid><description>&lt;p&gt;Scenario: You've installed Bootcamp on your mac (shame on you), &lt;strong&gt;AND&lt;/strong&gt; updated AMD's graphic cards, to deal with stability issues.&lt;/p&gt;
&lt;p&gt;If, for some reason, your MacBook's special keys (Brightness, Volume, etc) stop working:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot into your macOS partition&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;BootCamp Assistant&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click over &lt;strong&gt;Action &amp;gt; Download Windows Support Software&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Save the package to a flashdrive&lt;/li&gt;
&lt;li&gt;Boot back into Windows&lt;/li&gt;
&lt;li&gt;Run &lt;strong&gt;BootCamp &amp;gt; Drivers &amp;gt; Apple &amp;gt; AppleKeyboardInstaller64&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;Think closely, why, in the name of Satan, you&amp;rsquo;d need Windows&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>Embedding NSTokenField inside NSScrollView</title><link>https://www.lantean.co/posts/embedding-nstokenfield-inside-nsscrollview/</link><pubDate>Tue, 16 Jun 2020 15:59:12 +0000</pubDate><guid>https://www.lantean.co/posts/embedding-nstokenfield-inside-nsscrollview/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2020/06/Constraints.png" alt="" class="wp-image-2562"/&gt;&lt;/figure&gt;
&lt;p&gt;In order to get &lt;strong&gt;NSTokenField&lt;/strong&gt; (or &lt;strong&gt;NSTextField&lt;/strong&gt;) play well with a ScrollView, you should:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pin the fixed edges (in my case: Top / Bottom / Left)&lt;/li&gt;
&lt;li&gt;Leave alone the edges that can grow (again, in my case: Right)&lt;/li&gt;
&lt;li&gt;Set a placeholder Intrinsic Size, to keep IB happy&lt;/li&gt;
&lt;li&gt;Override &lt;strong&gt;intrinsicContentSize&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pinning the TokenField to every single edge simply causes the container view to assume the actual TokenField&amp;rsquo;s size (and thus, kills the scrolling behavior).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Automattic/simplenote-macos/pull/558/files"&gt;Sample code available here!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>Fixing "application is damaged, can’t be used to install macOS" Error</title><link>https://www.lantean.co/posts/fixing-application-is-damaged-cant-be-used-to-install-macos-error/</link><pubDate>Fri, 13 Mar 2020 15:08:02 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-application-is-damaged-cant-be-used-to-install-macos-error/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2020/03/Screen-Shot-2020-03-13-at-3.02.48-PM.png" alt="" class="wp-image-2537"/&gt;&lt;/figure&gt;
&lt;p&gt;This error, thrown while trying to install an old macOS version (probably in a VM!) is caused by an expired certificate.&lt;/p&gt;
&lt;p&gt;Good news is: this can be fixed, by deleting a file within the installer itself:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Right click on the &lt;strong&gt;Installer XXX.dmg&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click over &lt;strong&gt;Show Package Contents&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Contents &amp;gt; Shared Support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Nuke &lt;strong&gt;InstallInfo.plist&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🔥&lt;/p&gt;</description></item><item><title>First Postcard (Ever!!)</title><link>https://www.lantean.co/posts/first-postcard-ever/</link><pubDate>Fri, 13 Mar 2020 01:51:24 +0000</pubDate><guid>https://www.lantean.co/posts/first-postcard-ever/</guid><description>&lt;p&gt;In roughly 35 years (wow I’m a bit old!!) I never ever got a postcard. Up until today!!&lt;/p&gt;
&lt;p&gt;Thank you Thuy, this is an &lt;strong&gt;AMAZING&lt;/strong&gt; gift. Will live on my desk from now on! ❤️&lt;/p&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2020/03/img_4540.jpg" alt="" class="wp-image-2532"/&gt;&lt;/figure&gt;</description></item><item><title>Enlightenment</title><link>https://www.lantean.co/posts/enlightenment/</link><pubDate>Sat, 22 Feb 2020 23:04:32 +0000</pubDate><guid>https://www.lantean.co/posts/enlightenment/</guid><description>&lt;figure class="wp-block-image size-large"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2020/02/img_4425.jpg" alt="" class="wp-image-2526"/&gt;&lt;/figure&gt;</description></item><item><title>Never.</title><link>https://www.lantean.co/posts/never/</link><pubDate>Tue, 26 Nov 2019 10:20:36 +0000</pubDate><guid>https://www.lantean.co/posts/never/</guid><description>&lt;figure class="wp-block-image"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2019/11/IMG_3974-1.jpeg" alt="" class="wp-image-2502"/&gt;&lt;/figure&gt;</description></item><item><title>Baby Birds!</title><link>https://www.lantean.co/posts/baby-birds/</link><pubDate>Sun, 27 Oct 2019 12:48:17 +0000</pubDate><guid>https://www.lantean.co/posts/baby-birds/</guid><description>&lt;figure class="wp-block-image"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2019/10/cb9c7fb9-9b71-444c-8243-1360f0452706-1.jpg" alt="" class="wp-image-2491"/&gt;&lt;/figure&gt;</description></item><item><title>Coffee I Need</title><link>https://www.lantean.co/posts/coffee-i-need/</link><pubDate>Mon, 14 Oct 2019 11:33:11 +0000</pubDate><guid>https://www.lantean.co/posts/coffee-i-need/</guid><description>&lt;figure class="wp-block-image"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2019/10/71252190_10156289907852455_7211981746252808192_o.jpg" alt="" class="wp-image-2487"/&gt;&lt;/figure&gt;</description></item><item><title>You just....</title><link>https://www.lantean.co/posts/you-just/</link><pubDate>Thu, 27 Jun 2019 22:18:09 +0000</pubDate><guid>https://www.lantean.co/posts/you-just/</guid><description>&lt;figure class="wp-block-image"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2019/06/e678c547-d7ab-45d5-8d3e-4603c80d881a.jpg" alt="" class="wp-image-2448"/&gt;&lt;/figure&gt;</description></item><item><title>CEO for a minute</title><link>https://www.lantean.co/posts/ceo-for-a-minute/</link><pubDate>Wed, 17 Apr 2019 01:27:28 +0000</pubDate><guid>https://www.lantean.co/posts/ceo-for-a-minute/</guid><description>&lt;p&gt;These days, let&amp;rsquo;s just say that I miss my friends.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re reading this, yeah, I&amp;rsquo;m taking about you!&lt;/p&gt;
&lt;img src="https://www.lantean.co/wp-content/uploads/2019/04/image_577167934622952.jpg" class="size-full" width="2250" height="2250"&gt;</description></item><item><title>500</title><link>https://www.lantean.co/posts/500-2/</link><pubDate>Sun, 24 Mar 2019 12:26:13 +0000</pubDate><guid>https://www.lantean.co/posts/500-2/</guid><description>&lt;p&gt;This happened yesterday. &lt;strong&gt;On&lt;/strong&gt; &lt;strong&gt;the freeway&lt;/strong&gt;. Definitely a close one&lt;img src="https://www.lantean.co/wp-content/uploads/2019/03/65cc33b6-81d6-44a0-9a83-fc7222d614d5.jpg" class="size-full wp-image-2417" width="3840" height="2160"&gt;&lt;/p&gt;</description></item><item><title>Switching t2.micro &gt; t3.micro</title><link>https://www.lantean.co/posts/switching-t2-micro-t3-micro/</link><pubDate>Tue, 26 Feb 2019 23:08:17 +0000</pubDate><guid>https://www.lantean.co/posts/switching-t2-micro-t3-micro/</guid><description>&lt;p&gt;Okay… incoming boring post, so that i don't go insane searching for this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A. Verify you've got ena support:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[ec2&lt;span style="color:#f92672"&gt;-&lt;/span&gt;user &lt;span style="color:#f92672"&gt;~&lt;/span&gt;]&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; modinfo ena
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;filename: &lt;span style="color:#f92672"&gt;/&lt;/span&gt;lib&lt;span style="color:#f92672"&gt;/&lt;/span&gt;modules&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4.14.33&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;59.37&lt;/span&gt;.amzn2.x86_64&lt;span style="color:#f92672"&gt;/&lt;/span&gt;kernel&lt;span style="color:#f92672"&gt;/&lt;/span&gt;drivers&lt;span style="color:#f92672"&gt;/&lt;/span&gt;amazon&lt;span style="color:#f92672"&gt;/&lt;/span&gt;net&lt;span style="color:#f92672"&gt;/&lt;/span&gt;ena&lt;span style="color:#f92672"&gt;/&lt;/span&gt;ena.ko
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;version: &lt;span style="color:#ae81ff"&gt;1.5.0&lt;/span&gt;g
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(...)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;B. Install &lt;/strong&gt;&lt;a href="https://aws.amazon.com/cli/"&gt;&lt;strong&gt;AWS CLI&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C. Figure out your instance ID:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; aws ec2 describe&lt;span style="color:#f92672"&gt;-&lt;/span&gt;instances&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;C. Verify the current status of EnaSupport:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; aws ec2 describe&lt;span style="color:#f92672"&gt;-&lt;/span&gt;instances &lt;span style="color:#f92672"&gt;--&lt;/span&gt;instance&lt;span style="color:#f92672"&gt;-&lt;/span&gt;ids INSTANCE_ID &lt;span style="color:#f92672"&gt;--&lt;/span&gt;query &lt;span style="color:#e6db74"&gt;&amp;#34;Reservations[].Instances[].EnaSupport&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;D. At this point you should probably stop the instance!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;E. Enable ENA&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; aws ec2 modify&lt;span style="color:#f92672"&gt;-&lt;/span&gt;instance&lt;span style="color:#f92672"&gt;-&lt;/span&gt;attribute &lt;span style="color:#f92672"&gt;--&lt;/span&gt;instance&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;id&lt;/span&gt; INSTANCE_ID &lt;span style="color:#f92672"&gt;--&lt;/span&gt;ena&lt;span style="color:#f92672"&gt;-&lt;/span&gt;support&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;F. Verify it all went well:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Fixing my KitchenAid Fridge!</title><link>https://www.lantean.co/posts/fixing-my-kitchenaid-fridge/</link><pubDate>Wed, 23 Jan 2019 12:57:59 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-my-kitchenaid-fridge/</guid><description>&lt;p&gt;This post is&amp;hellip; pretty much, a note for my future self. I own a KitchenAid fridge (late 2006: &lt;strong&gt;KBLC36FMS&lt;/strong&gt;), and thing is, it started constantly beeping.&lt;/p&gt;
&lt;p&gt;Nope. It&amp;rsquo;s not the door&amp;rsquo;s sensor. It&amp;rsquo;s not the water filter either. Odds are: the compressor is unable to start.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Diagnose Mode&lt;/h3&gt;
&lt;p&gt;Push for 3 seconds both, the &lt;strong&gt;Reset Filter Percent&lt;/strong&gt; and &lt;strong&gt;Power&lt;/strong&gt;, and the fridge will get into diagnose mode.&lt;/p&gt;
&lt;p&gt;There are two numeric displays in the fridge, and&amp;hellip; this handy table will help you read the status of each one of the components.&lt;/p&gt;</description></item><item><title>Brotherhood</title><link>https://www.lantean.co/posts/brotherhood/</link><pubDate>Sun, 13 Jan 2019 14:44:48 +0000</pubDate><guid>https://www.lantean.co/posts/brotherhood/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2019/01/img_1782-1.jpg" class="size-full" width="4032" height="3024"&gt;</description></item><item><title>Raw. Untamed Power</title><link>https://www.lantean.co/posts/raw-untamed-power/</link><pubDate>Thu, 13 Dec 2018 23:13:35 +0000</pubDate><guid>https://www.lantean.co/posts/raw-untamed-power/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2018/12/img_1596.jpg" class="size-full wp-image-2323" width="3662" height="2744"&gt;</description></item><item><title>Just Like Lightning!</title><link>https://www.lantean.co/posts/just-like-lightning/</link><pubDate>Thu, 11 Oct 2018 00:40:41 +0000</pubDate><guid>https://www.lantean.co/posts/just-like-lightning/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2018/10/IMG_1202.jpeg" alt="" width="4032" height="3024" class="aligncenter size-full wp-image-2305" /&gt;</description></item><item><title>iOS Simulator Logs</title><link>https://www.lantean.co/posts/ios-simulator-logs/</link><pubDate>Sat, 19 May 2018 14:51:23 +0000</pubDate><guid>https://www.lantean.co/posts/ios-simulator-logs/</guid><description>&lt;p&gt;Leaving this link here&amp;hellip; because&amp;hellip; i kinda always forget the path!&lt;/p&gt;
&lt;blockquote&gt;~/Library/Logs/CoreSimulator/&lt;/blockquote&gt;</description></item><item><title>NginX: Self Signed SSL</title><link>https://www.lantean.co/posts/nginx-self-signed-ssl/</link><pubDate>Fri, 18 May 2018 10:24:10 +0000</pubDate><guid>https://www.lantean.co/posts/nginx-self-signed-ssl/</guid><description>&lt;blockquote&gt;sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfsigned.key -out selfsigned.crt&lt;/blockquote&gt;</description></item><item><title>Detaching subdirectory into it's own GIT repository</title><link>https://www.lantean.co/posts/detaching-subdirectory-into-its-own-git-repository/</link><pubDate>Fri, 18 May 2018 09:50:36 +0000</pubDate><guid>https://www.lantean.co/posts/detaching-subdirectory-into-its-own-git-repository/</guid><description>&lt;ol&gt;
&lt;li&gt;Move folder to it&amp;rsquo;s own branch&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;git subtree split -P name-of-folder -b name-of-new-branch&lt;/blockquote&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Initialize the new Repository&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;git checkout new-repository-url
&lt;p&gt;git pull path-to-big-repository name-of-new-branch&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s it, pretty much!&lt;/p&gt;</description></item><item><title>Real Life PORG!!</title><link>https://www.lantean.co/posts/real-life-porg/</link><pubDate>Sun, 25 Mar 2018 08:57:01 +0000</pubDate><guid>https://www.lantean.co/posts/real-life-porg/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2018/03/image_543671784152924.jpg" height="3000" class="size-full" width="2250" &gt;</description></item><item><title>Stabby.Today</title><link>https://www.lantean.co/posts/stabby-today/</link><pubDate>Mon, 12 Mar 2018 14:43:32 +0000</pubDate><guid>https://www.lantean.co/posts/stabby-today/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2018/03/Rick.gif" alt="" width="498" height="278" class="aligncenter size-full wp-image-2265" /&gt;</description></item><item><title>Swift: Type Casting in For Loop</title><link>https://www.lantean.co/posts/swift-type-casting-in-for-loop/</link><pubDate>Wed, 27 Dec 2017 11:55:30 +0000</pubDate><guid>https://www.lantean.co/posts/swift-type-casting-in-for-loop/</guid><description>&lt;p&gt;Okay. I need to jot this down somewhere, because i find myself googling this snippet, at least once a month.
It&amp;rsquo;s not complex, but for some reason, it&amp;rsquo;s constantly slipping off my mind!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;case&lt;/span&gt; let children as ElementNode &lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; rootNode.children { }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Burning Kali in macOS High Sierra!</title><link>https://www.lantean.co/posts/burning-kali-in-macos-high-sierra/</link><pubDate>Tue, 21 Nov 2017 22:05:27 +0000</pubDate><guid>https://www.lantean.co/posts/burning-kali-in-macos-high-sierra/</guid><description>&lt;p&gt;To my future self: this is how you can &amp;lsquo;burn&amp;rsquo; an ISO file into a flashdrive, so that it&amp;rsquo;s bootable!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hdiutil convert &lt;span style="color:#f92672"&gt;-&lt;/span&gt;format UDRW &lt;span style="color:#f92672"&gt;-&lt;/span&gt;o destination.img kali&lt;span style="color:#f92672"&gt;-&lt;/span&gt;linux&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2017.2&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;amd64.iso 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diskutil list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diskutil partitionDisk &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;disk2 &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Free Space&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;unused&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;100%&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dd &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;destination.img.dmg of&lt;span style="color:#f92672"&gt;=/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;disk2 bs&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;m
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diskutil eject &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;disk2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>macOS: Format as FAT32</title><link>https://www.lantean.co/posts/macos-format-as-fat32/</link><pubDate>Sun, 15 Oct 2017 19:18:32 +0000</pubDate><guid>https://www.lantean.co/posts/macos-format-as-fat32/</guid><description>&lt;p&gt;&lt;strong&gt;Find the device path:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diskutil list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Format as FAT32:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo diskutil eraseDisk FAT32 NAME MBRFormat &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;disk2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Thanks Apple, for having FAT32 as an option in the Disk Utility app. It&amp;rsquo;s so much nicer than having to remember a CLI command.&amp;lt;/sarcasm&amp;gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Moobile @A8C</title><link>https://www.lantean.co/posts/moobile-a8c/</link><pubDate>Thu, 21 Sep 2017 23:55:54 +0000</pubDate><guid>https://www.lantean.co/posts/moobile-a8c/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2017/09/IMG_20170912_190406-ANIMATION.gif" alt="" width="850" height="638" class="aligncenter size-full wp-image-2210" /&gt;</description></item><item><title>Disabling Num Lock on startup (or why Windows makes me sick)</title><link>https://www.lantean.co/posts/disabling-num-lock-on-startup-or-why-windows-makes-me-sick/</link><pubDate>Thu, 04 May 2017 10:25:35 +0000</pubDate><guid>https://www.lantean.co/posts/disabling-num-lock-on-startup-or-why-windows-makes-me-sick/</guid><description>&lt;ul&gt;
&lt;li&gt;Launch Regedit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HKEY_USERS\Default\Control Panel\Keyboard&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;InitialKeyboardIndicators&lt;/strong&gt; to Zero&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, next time you boot&amp;hellip; your beautiful small keyboard won&amp;rsquo;t have Num Lock enabled by default, AND you should be able to enter your password without further issues.&lt;/p&gt;</description></item><item><title>Raspbian + NFS</title><link>https://www.lantean.co/posts/raspbian-nfs/</link><pubDate>Thu, 20 Apr 2017 10:07:45 +0000</pubDate><guid>https://www.lantean.co/posts/raspbian-nfs/</guid><description>&lt;p&gt;&lt;strong&gt;Install:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get install nfs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;kernel&lt;span style="color:#f92672"&gt;-&lt;/span&gt;server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano &lt;span style="color:#f92672"&gt;/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;exports&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once there, let's add:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;mnt&lt;span style="color:#f92672"&gt;/&lt;/span&gt;flash &lt;span style="color:#f92672"&gt;*&lt;/span&gt;(rw,sync)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dont' forget to run &lt;strong&gt;exportfs&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Add New Services:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here's the deal: rpcbind must run before nfs-server. But due to a bug... that's not the case. What happens if the sequence is not that?... simple! NFS is inaccessible.&lt;/p&gt;
&lt;p&gt;In order to fix this, let's do the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#f92672"&gt;&amp;gt;/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;systemd&lt;span style="color:#f92672"&gt;/&lt;/span&gt;system&lt;span style="color:#f92672"&gt;/&lt;/span&gt;nfs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;common.service &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;EOF 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Unit]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Description&lt;span style="color:#f92672"&gt;=&lt;/span&gt;NFS Common daemons 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wants&lt;span style="color:#f92672"&gt;=&lt;/span&gt;remote&lt;span style="color:#f92672"&gt;-&lt;/span&gt;fs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;pre.target 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DefaultDependencies&lt;span style="color:#f92672"&gt;=&lt;/span&gt;no 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Service] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type&lt;span style="color:#f92672"&gt;=&lt;/span&gt;oneshot 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RemainAfterExit&lt;span style="color:#f92672"&gt;=&lt;/span&gt;yes 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ExecStart&lt;span style="color:#f92672"&gt;=/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;init.d&lt;span style="color:#f92672"&gt;/&lt;/span&gt;nfs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;common start 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ExecStop&lt;span style="color:#f92672"&gt;=/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;init.d&lt;span style="color:#f92672"&gt;/&lt;/span&gt;nfs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;common stop 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Install] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WantedBy&lt;span style="color:#f92672"&gt;=&lt;/span&gt;sysinit.target 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#f92672"&gt;&amp;gt;/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;systemd&lt;span style="color:#f92672"&gt;/&lt;/span&gt;system&lt;span style="color:#f92672"&gt;/&lt;/span&gt;rpcbind.service &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;EOF 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Unit] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Description&lt;span style="color:#f92672"&gt;=&lt;/span&gt;RPC bind portmap service 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;After&lt;span style="color:#f92672"&gt;=&lt;/span&gt;systemd&lt;span style="color:#f92672"&gt;-&lt;/span&gt;tmpfiles&lt;span style="color:#f92672"&gt;-&lt;/span&gt;setup.service 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wants&lt;span style="color:#f92672"&gt;=&lt;/span&gt;remote&lt;span style="color:#f92672"&gt;-&lt;/span&gt;fs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;pre.target 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Before&lt;span style="color:#f92672"&gt;=&lt;/span&gt;remote&lt;span style="color:#f92672"&gt;-&lt;/span&gt;fs&lt;span style="color:#f92672"&gt;-&lt;/span&gt;pre.target 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DefaultDependencies&lt;span style="color:#f92672"&gt;=&lt;/span&gt;no 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Service]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ExecStart&lt;span style="color:#f92672"&gt;=/&lt;/span&gt;sbin&lt;span style="color:#f92672"&gt;/&lt;/span&gt;rpcbind &lt;span style="color:#f92672"&gt;-&lt;/span&gt;f &lt;span style="color:#f92672"&gt;-&lt;/span&gt;w 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;KillMode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;process 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Restart&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on&lt;span style="color:#f92672"&gt;-&lt;/span&gt;failure 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Install]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WantedBy&lt;span style="color:#f92672"&gt;=&lt;/span&gt;sysinit.target 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Alias&lt;span style="color:#f92672"&gt;=&lt;/span&gt;portmap 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://unix.stackexchange.com/questions/263331/debian-jessie-start-rpcbind-and-nfs-common-at-boot-with-systemd"&gt;Source Here!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Raspbian + Transmission: Fixing "Connection refused on port 9091"</title><link>https://www.lantean.co/posts/raspbian-transmission-fixing-connection-refused-on-port-9091/</link><pubDate>Thu, 20 Apr 2017 10:02:30 +0000</pubDate><guid>https://www.lantean.co/posts/raspbian-transmission-fixing-connection-refused-on-port-9091/</guid><description>&lt;p&gt;I&amp;rsquo;ve just managed to solve a quite annoying glitch. After booting Raspbian, Transmission was immediately unable to connect to transmission-daemon on port 9091.&lt;/p&gt;
&lt;p&gt;After much digging, i&amp;rsquo;ve found out that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restarting the service just makes things work&lt;/li&gt;
&lt;li&gt;I was getting a bunch of error messages in /var/log/daemon.log (re: bind)&lt;/li&gt;
&lt;li&gt;Several posts in few forums suggested that the service was being initialized before the network adapter was actually ready.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Long story short:&lt;/p&gt;</description></item><item><title>Raspbian + Flash Drive + fstab</title><link>https://www.lantean.co/posts/raspbian-flash-drive-fstab/</link><pubDate>Wed, 19 Apr 2017 18:53:27 +0000</pubDate><guid>https://www.lantean.co/posts/raspbian-flash-drive-fstab/</guid><description>&lt;p&gt;First off, you need to figure out the path of your flash drive:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fdisk &lt;span style="color:#f92672"&gt;-&lt;/span&gt;l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then... edit &lt;b&gt;/etc/fstab&lt;/b&gt; as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;sda1 &lt;span style="color:#f92672"&gt;/&lt;/span&gt;mnt&lt;span style="color:#f92672"&gt;/&lt;/span&gt;flash vfat rw,user,umask&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0002&lt;/span&gt;,uid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1001&lt;/span&gt;,gid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;121&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that umask is... the "inverted" regular file mask. This represents 665 (because we're evil). As per &lt;b&gt;uid + gid&lt;/b&gt;, you can figure it out by means of this command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;id&lt;/span&gt; username&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The best filesystem to use, if you need to maintain compatibility between the Flash Drive you'll use with your Raspberry, and macOS, is probably ExFat. Now, problem is: Linux doesn't really support ExFat by default.&lt;/p&gt;</description></item><item><title>Raspberry + Samba</title><link>https://www.lantean.co/posts/raspberry-samba/</link><pubDate>Mon, 17 Apr 2017 09:00:32 +0000</pubDate><guid>https://www.lantean.co/posts/raspberry-samba/</guid><description>&lt;p&gt;&lt;strong&gt;Installing Samba:&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get install samba samba&lt;span style="color:#f92672"&gt;-&lt;/span&gt;common&lt;span style="color:#f92672"&gt;-&lt;/span&gt;bin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once there, edit &lt;strong&gt;/etc/samba/smb.conf&lt;/strong&gt; as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;workgroup &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [your_workgroup_name]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[SHARE&lt;span style="color:#f92672"&gt;-&lt;/span&gt;NAME]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;comment&lt;span style="color:#f92672"&gt;=&lt;/span&gt;Samba Share
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;path&lt;span style="color:#f92672"&gt;=/&lt;/span&gt;PATH&lt;span style="color:#f92672"&gt;/&lt;/span&gt;TO&lt;span style="color:#f92672"&gt;/&lt;/span&gt;YOUR&lt;span style="color:#f92672"&gt;/&lt;/span&gt;SHARE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;browseable&lt;span style="color:#f92672"&gt;=&lt;/span&gt;Yes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;writeable&lt;span style="color:#f92672"&gt;=&lt;/span&gt;Yes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;only guest&lt;span style="color:#f92672"&gt;=&lt;/span&gt;no
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;create mask&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0777&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;directory mask&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0777&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;public&lt;span style="color:#f92672"&gt;=&lt;/span&gt;no&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;At last, setup the Samba password:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;smbpasswd &lt;span style="color:#f92672"&gt;-&lt;/span&gt;a YOUR_USERNAME&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Awesome Colored MOTD!</title><link>https://www.lantean.co/posts/motd/</link><pubDate>Sat, 15 Apr 2017 20:15:39 +0000</pubDate><guid>https://www.lantean.co/posts/motd/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get install toilet figlet lolcat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;toilet &lt;span style="color:#f92672"&gt;-&lt;/span&gt;F metal Lantean Box &lt;span style="color:#f92672"&gt;-&lt;/span&gt;w &lt;span style="color:#ae81ff"&gt;200&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;f shadow &lt;span style="color:#f92672"&gt;|&lt;/span&gt; lolcat&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Raspberry + Transmission</title><link>https://www.lantean.co/posts/raspberry-transmission/</link><pubDate>Fri, 14 Apr 2017 15:49:41 +0000</pubDate><guid>https://www.lantean.co/posts/raspberry-transmission/</guid><description>&lt;p&gt;Let's begin with the basics. We'll need to upgrade the system to the latest, and update the apt-get database. Once ready, we'll proceed with the transmission's daemon + cli binaries, as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt&lt;span style="color:#f92672"&gt;-&lt;/span&gt;get install transmission&lt;span style="color:#f92672"&gt;-&lt;/span&gt;cli transmission&lt;span style="color:#f92672"&gt;-&lt;/span&gt;common transmission&lt;span style="color:#f92672"&gt;-&lt;/span&gt;daemon transmission&lt;span style="color:#f92672"&gt;-&lt;/span&gt;remote&lt;span style="color:#f92672"&gt;-&lt;/span&gt;cli&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Authentication:&lt;/strong&gt;&lt;br&gt;By default, transmission requires you to setup username / password. Since our goal is *not* to expose Transmission to the open internet (and we'll only use it via SSH), we'll simply neutralize any kind of authentication:&lt;/p&gt;</description></item><item><title>Raspbian: Disabling Graphic Mode</title><link>https://www.lantean.co/posts/raspbian-disabling-graphic-mode/</link><pubDate>Fri, 14 Apr 2017 15:25:55 +0000</pubDate><guid>https://www.lantean.co/posts/raspbian-disabling-graphic-mode/</guid><description>&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; because i'm setting up my Raspberry as a private server, and i really don't need the XWindow overhead!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How:&lt;/strong&gt; As follows!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl get&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify that the output is: &lt;strong&gt;graphical.target&lt;/strong&gt;.&lt;br&gt;Now... type the following!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl set&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;default&lt;/span&gt; multi&lt;span style="color:#f92672"&gt;-&lt;/span&gt;user.target&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://raspberrypi.stackexchange.com/questions/31439/trying-to-turn-off-x11-in-jessie"&gt;Ref. Here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simpler way? just run &lt;strong&gt;raspi-config&lt;/strong&gt; and change the setting right there!&lt;/p&gt;</description></item><item><title>Spotify: Multiuser Issues</title><link>https://www.lantean.co/posts/spotify-multiuser-issues/</link><pubDate>Wed, 12 Apr 2017 19:30:53 +0000</pubDate><guid>https://www.lantean.co/posts/spotify-multiuser-issues/</guid><description>&lt;p&gt;I've recently hit an annoying issue: if you share your mac with, say, your brother... you'll figure out that Spotify will only work in one of the two accounts.&lt;/p&gt;
&lt;p&gt;It doesn't really matter if you actually have two seats or not. It won't run at all.&lt;/p&gt;
&lt;p&gt;Solution?. As ever... bash and...&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd &lt;span style="color:#f92672"&gt;/&lt;/span&gt;Applications
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chmod &lt;span style="color:#f92672"&gt;-&lt;/span&gt;R &lt;span style="color:#ae81ff"&gt;755&lt;/span&gt; Spotify.app&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description></item><item><title>Twilio, the Cloud... and Me!</title><link>https://www.lantean.co/posts/twilio-the-cloud-and-me/</link><pubDate>Wed, 12 Apr 2017 16:59:30 +0000</pubDate><guid>https://www.lantean.co/posts/twilio-the-cloud-and-me/</guid><description>&lt;p&gt;Today, we'll briefly detail how to setup a Twilio VoIP number in a way that it'll allow us to:&lt;/p&gt;
&lt;p&gt;- Receive SMS's via Email&lt;br&gt;- Send SMS's via CLI&lt;br&gt;- Receive Voice Calls via Landline, and if nobody picks up, fallback to Softphone&lt;br&gt;- Make Voice Calls via Softphone&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before we begin, you'll need to:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1. Signup!&lt;br&gt;2. Register a Number!&lt;br&gt;3. Create a &lt;strong&gt;SIP Domain&lt;/strong&gt;&lt;br&gt;4. Add a User under the SIP Domains &amp;gt; Credential Lists&lt;br&gt;5. Setup this &lt;a href="https://support.twilio.com/hc/en-us/articles/223181788-Forwarding-SMS-messages-to-your-email-inbox"&gt;"SMS to Email" PHP script"&lt;/a&gt;, in your favorite EC2 box&lt;/p&gt;</description></item><item><title>Let's Encrypt + Amazon AMI</title><link>https://www.lantean.co/posts/lets-encrypt-amazon-ami/</link><pubDate>Thu, 06 Apr 2017 15:05:46 +0000</pubDate><guid>https://www.lantean.co/posts/lets-encrypt-amazon-ami/</guid><description>&lt;p&gt;&lt;strong&gt;Download certbot&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; wget https:&lt;span style="color:#75715e"&gt;//dl.eff.org/certbot-auto
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; chmod a&lt;span style="color:#f92672"&gt;+&lt;/span&gt;x certbot&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Generate Certificates&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo .&lt;span style="color:#f92672"&gt;/&lt;/span&gt;certbot&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt; &lt;span style="color:#f92672"&gt;--&lt;/span&gt;debug &lt;span style="color:#f92672"&gt;-&lt;/span&gt;v &lt;span style="color:#f92672"&gt;--&lt;/span&gt;server https:&lt;span style="color:#f92672"&gt;//&lt;/span&gt;acme&lt;span style="color:#f92672"&gt;-&lt;/span&gt;v01.api.letsencrypt.org&lt;span style="color:#f92672"&gt;/&lt;/span&gt;directory certonly &lt;span style="color:#f92672"&gt;-&lt;/span&gt;d YOUR_WEBSITE_HERE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Auto Renew Script:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo crontab &lt;span style="color:#f92672"&gt;-&lt;/span&gt;e
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;13&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt;home&lt;span style="color:#f92672"&gt;/&lt;/span&gt;ec2&lt;span style="color:#f92672"&gt;-&lt;/span&gt;user&lt;span style="color:#f92672"&gt;/&lt;/span&gt;certbot&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt; renew&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://nouveauframework.org/blog/installing-letsencrypts-free-ssl-amazon-linux/"&gt;Source Here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>LLDB + Xcode 8 Kung Fu</title><link>https://www.lantean.co/posts/lldb-xcode-8-kung-fu/</link><pubDate>Tue, 14 Mar 2017 10:34:54 +0000</pubDate><guid>https://www.lantean.co/posts/lldb-xcode-8-kung-fu/</guid><description>&lt;p&gt;&lt;strong&gt;Printing Arrays&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parray number pointer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;poarray number pointer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Reading Method Parameters&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;register&lt;/span&gt; read &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;arg1 &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;arg2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;memory read &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;arg1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Printing Objects in Swift&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;expr &lt;span style="color:#f92672"&gt;-&lt;/span&gt;O &lt;span style="color:#f92672"&gt;--&lt;/span&gt;language objc &lt;span style="color:#f92672"&gt;--&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x1003183e0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Disassembling the current frame&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;disassemble &lt;span style="color:#f92672"&gt;--&lt;/span&gt;frame&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Module Image&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;image list ModuleName&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>UIStackView inside UISScrollView</title><link>https://www.lantean.co/posts/uistackview-inside-uisscrollview/</link><pubDate>Thu, 09 Mar 2017 16:40:48 +0000</pubDate><guid>https://www.lantean.co/posts/uistackview-inside-uisscrollview/</guid><description>&lt;ol&gt;
&lt;li&gt;Disable tAMIC&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scrollView.translatesAutoresizingMaskIntoConstraints &lt;span style="color:#f92672"&gt;=&lt;/span&gt; false
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;stackView.translatesAutoresizingMaskIntoConstraints &lt;span style="color:#f92672"&gt;=&lt;/span&gt; false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Pin the ScrollView&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSLayoutConstraint.activate([
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scrollView.leadingAnchor.constraint(equalTo: leadingAnchor),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scrollView.trailingAnchor.constraint(equalTo: trailingAnchor),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scrollView.topAnchor.constraint(equalTo: topAnchor),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scrollView.bottomAnchor.constraint(equalTo: bottomAnchor)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;Pin the StackView to the ScrollView corners. Include minimum width + padding:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;let padding &lt;span style="color:#f92672"&gt;=&lt;/span&gt; CGFloat(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSLayoutConstraint.activate([
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stackView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor, constant: padding),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stackView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor, constant: &lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stackView.topAnchor.constraint(equalTo: scrollView.topAnchor),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stackView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stackView.heightAnchor.constraint(equalTo: scrollView.heightAnchor),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stackView.widthAnchor.constraint(greaterThanOrEqualTo: scrollView.widthAnchor, constant: &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; padding)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fixing Xcode 8's Code Completion</title><link>https://www.lantean.co/posts/fixing-xcode-8s-code-completion/</link><pubDate>Mon, 23 Jan 2017 17:32:41 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-xcode-8s-code-completion/</guid><description>&lt;ul&gt;
&lt;li&gt;Open Preferences &amp;gt; Text Editing&lt;/li&gt;
&lt;li&gt;Uncheck Enable Type-Over Completions&lt;/li&gt;
&lt;li&gt;Be Happy!&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Evilness!</title><link>https://www.lantean.co/posts/evilness/</link><pubDate>Fri, 20 Jan 2017 15:14:04 +0000</pubDate><guid>https://www.lantean.co/posts/evilness/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2017/01/img_0744-2.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2017/01/img_0744-2.jpg" alt="" width="3024" height="4032" class="alignnone size-full wp-image-2010"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Cupertino rules the world. Clearly.</title><link>https://www.lantean.co/posts/cupertino-rules-the-world-clearly/</link><pubDate>Tue, 17 Jan 2017 06:14:12 +0000</pubDate><guid>https://www.lantean.co/posts/cupertino-rules-the-world-clearly/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2017/01/img_0181.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2017/01/img_0181.jpg" alt="" width="3024" height="4032" class="alignnone size-full wp-image-2007"&gt;&lt;/a&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2017/01/img_0471.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2017/01/img_0471.jpg" alt="" width="3024" height="4032" class="alignnone size-full wp-image-2008"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Could this be the result of... an alien intervention.?</title><link>https://www.lantean.co/posts/could-this-be-the-result-of-an-alien-intervention/</link><pubDate>Tue, 17 Jan 2017 06:09:55 +0000</pubDate><guid>https://www.lantean.co/posts/could-this-be-the-result-of-an-alien-intervention/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2017/01/img_0568.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2017/01/img_0568.jpg" alt="" width="3024" height="4032" class="alignnone size-full wp-image-2005"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>GIT over Socks5: Or how to get around Paris's Mall SSL filters</title><link>https://www.lantean.co/posts/git-over-socks5-or-how-to-get-around-pariss-mall-ssl-filters/</link><pubDate>Wed, 11 Jan 2017 14:22:15 +0000</pubDate><guid>https://www.lantean.co/posts/git-over-socks5-or-how-to-get-around-pariss-mall-ssl-filters/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config &lt;span style="color:#f92672"&gt;--&lt;/span&gt;global &lt;span style="color:#f92672"&gt;--&lt;/span&gt;get socks.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config &lt;span style="color:#f92672"&gt;--&lt;/span&gt;global &lt;span style="color:#f92672"&gt;--&lt;/span&gt;unset socks.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config &lt;span style="color:#f92672"&gt;--&lt;/span&gt;global socks.proxy socks5:&lt;span style="color:#f92672"&gt;//&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;127.0.0.1&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;9050&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Dude... where's my GPU?</title><link>https://www.lantean.co/posts/dude-wheres-my-gpu/</link><pubDate>Tue, 06 Dec 2016 17:43:03 +0000</pubDate><guid>https://www.lantean.co/posts/dude-wheres-my-gpu/</guid><description>&lt;p&gt;macOS Sierra. As stable as ever.&lt;/p&gt;
&lt;p&gt;Thank you, Cupertino. Love ya!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;***&lt;/span&gt; Panic Report &lt;span style="color:#f92672"&gt;***&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;panic(cpu &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; caller &lt;span style="color:#ae81ff"&gt;0xffffff7f9375ebce&lt;/span&gt;)&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;GPU Panic: [&amp;lt;None&amp;gt;] 4 0 20 0 0 8 6 3 : UH eAWAVAUATSHl(: GPU is not found. PCI config access fails!!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;n&lt;span style="color:#e6db74"&gt;&amp;#34;@/Library/Caches/com.apple.xbs/Sources/AppleGraphicsControl/AppleGraphicsControl-3.13.74/src/AppleMuxControl/kext/GPUPanic.cpp:127&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Until the Beginning and End...</title><link>https://www.lantean.co/posts/until-the-beginning-and-end/</link><pubDate>Tue, 29 Nov 2016 16:14:46 +0000</pubDate><guid>https://www.lantean.co/posts/until-the-beginning-and-end/</guid><description>&lt;p&gt;&amp;hellip; blur into something called&amp;hellip; Until we Meet Again (&amp;hellip;)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=QIVUl-b2Stk"&gt;https://www.youtube.com/watch?v=QIVUl-b2Stk&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Profiling: Swift Compile Time</title><link>https://www.lantean.co/posts/profiling-swift-compile-time/</link><pubDate>Thu, 06 Oct 2016 19:04:00 +0000</pubDate><guid>https://www.lantean.co/posts/profiling-swift-compile-time/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xcodebuild &lt;span style="color:#f92672"&gt;-&lt;/span&gt;scheme TARGET clean build OTHER_SWIFT_FLAGS&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;-Xfrontend -debug-time-function-bodies&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt; grep .[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;]ms &lt;span style="color:#f92672"&gt;|&lt;/span&gt; grep &lt;span style="color:#f92672"&gt;-&lt;/span&gt;v &lt;span style="color:#f92672"&gt;^&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;]ms &lt;span style="color:#f92672"&gt;|&lt;/span&gt; sort &lt;span style="color:#f92672"&gt;-&lt;/span&gt;nr &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; culprits.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://irace.me/swift-profiling"&gt;Reference Here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Xcode 8: Disabling Networking Logs</title><link>https://www.lantean.co/posts/xcode-8-disabling-networking-logs/</link><pubDate>Sat, 17 Sep 2016 18:27:25 +0000</pubDate><guid>https://www.lantean.co/posts/xcode-8-disabling-networking-logs/</guid><description>&lt;p&gt;Xcode 8 seems to be printing, for whatever reason, lots and lots of extra debug information.
We can shut it down by means of an environment variable:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OS_ACTIVITY_MODE &lt;span style="color:#f92672"&gt;=&lt;/span&gt; disable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/37800790/hide-strange-unwanted-xcode-8-logs/39461256#39461256"&gt;Reference Here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Removing SSL Private Key Passwords</title><link>https://www.lantean.co/posts/removing-ssl-private-key-passwords/</link><pubDate>Fri, 09 Sep 2016 10:16:09 +0000</pubDate><guid>https://www.lantean.co/posts/removing-ssl-private-key-passwords/</guid><description>&lt;p&gt;Yes. Again! For future self reference:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;openssl rsa &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; encrypted.key &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;out&lt;/span&gt; unencrypted.key&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>UITextView + Intrinsic Content Size</title><link>https://www.lantean.co/posts/uitextview-intrinsic-content-size/</link><pubDate>Mon, 29 Aug 2016 11:19:14 +0000</pubDate><guid>https://www.lantean.co/posts/uitextview-intrinsic-content-size/</guid><description>&lt;p&gt;Note to future self: the trick to get intrinsicContentSize to properly work, in UITextView instances, is to simply disable scrolling in the UITextView instance.&lt;/p&gt;
&lt;p&gt;That way&amp;hellip; the intrinsic size will be properly calculated.&lt;/p&gt;</description></item><item><title>Kali Bootable FlashDrive + Mac</title><link>https://www.lantean.co/posts/kali-bootable-flashdrive-mac/</link><pubDate>Thu, 28 Jul 2016 11:44:05 +0000</pubDate><guid>https://www.lantean.co/posts/kali-bootable-flashdrive-mac/</guid><description>&lt;p&gt;Long story short&amp;hellip; this is how i managed to get a bootable Kali flash drive:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure the Flash Drive is partitioned with the &lt;strong&gt;Master Boot Record&lt;/strong&gt; DiskUtility Option.&lt;/li&gt;
&lt;li&gt;Kali&amp;rsquo;s &lt;strong&gt;dd&lt;/strong&gt;command didn&amp;rsquo;t do the trick for me. Instead, i&amp;rsquo;ve used &lt;a href="https://github.com/SevenBits/Mac-Linux-USB-Loader/"&gt;this tool.&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="quoteText"&gt;The quieter you become, the more you can hear...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Using Xcode 7.x with an iOS 10 Device</title><link>https://www.lantean.co/posts/using-xcode-7-x-with-an-ios-10-device/</link><pubDate>Thu, 16 Jun 2016 16:17:45 +0000</pubDate><guid>https://www.lantean.co/posts/using-xcode-7-x-with-an-ios-10-device/</guid><description>&lt;p&gt;Trick of the month&amp;hellip;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade your device to iOS 10&lt;/li&gt;
&lt;li&gt;Install Xcode 8 (Beta)&lt;/li&gt;
&lt;li&gt;Hook up your device and launch Xcode. It&amp;rsquo;ll download debugging symbols.&lt;/li&gt;
&lt;li&gt;Run this command in bash:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln &lt;span style="color:#f92672"&gt;-&lt;/span&gt;s &lt;span style="color:#f92672"&gt;/&lt;/span&gt;Applications&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Xcode&lt;span style="color:#f92672"&gt;-&lt;/span&gt;beta.app&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Contents&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Developer&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Platforms&lt;span style="color:#f92672"&gt;/&lt;/span&gt;iPhoneOS.platform&lt;span style="color:#f92672"&gt;/&lt;/span&gt;DeviceSupport&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10.0&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;14&lt;/span&gt;A5261u) &lt;span style="color:#f92672"&gt;/&lt;/span&gt;Applications&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Xcode.app&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Contents&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Developer&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Platforms&lt;span style="color:#f92672"&gt;/&lt;/span&gt;iPhoneOS.platform&lt;span style="color:#f92672"&gt;/&lt;/span&gt;DeviceSupport&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10.0&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;14&lt;/span&gt;A5261u)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now you can use your iOS 10 device with Xcode 7. Phew&lt;/p&gt;</description></item><item><title>WWDC 2016</title><link>https://www.lantean.co/posts/wwdc-2016/</link><pubDate>Wed, 15 Jun 2016 16:17:36 +0000</pubDate><guid>https://www.lantean.co/posts/wwdc-2016/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2016/06/img_4899.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2016/06/img_4899.jpg" alt="" width="3024" height="4032" class="alignnone size-full wp-image-1951"&gt;&lt;/a&gt;
This was a &lt;b&gt;VERY&lt;/b&gt; unusual WWDC. One of my best friends was actually one of the Apple engineers that imparted sessions.&lt;/p&gt;
&lt;p&gt;There is no way things could be more awesome&amp;hellip; Right?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve got nearly 45 sessions in my download queue, which will definitely take a while to go through. So far, I&amp;rsquo;ve got few highlights:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The new Foundation is immutability friendly.&lt;/li&gt;
&lt;li&gt;Xcode got violently powerful with memory graphs.&lt;/li&gt;
&lt;li&gt;There is no way a single human could absorb everything that was published.&lt;/li&gt;
&lt;li&gt;Same as above.&lt;/li&gt;
&lt;li&gt;Apple Filesystem has copy on write capabilities, which will make my life easier.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Removing Cocoapods Integration</title><link>https://www.lantean.co/posts/removing-cocoapods-integration/</link><pubDate>Wed, 11 May 2016 10:47:54 +0000</pubDate><guid>https://www.lantean.co/posts/removing-cocoapods-integration/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently stumbled upon a huge Cocoapods annoyance. By recently i mean: 5 minutes ago. And by annoyance i mean: i&amp;rsquo;ve been struggling with this for an hour.&lt;/p&gt;
&lt;p&gt;After switching over to CocoaPods 1.0, i began getting the following error:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ld: library not found &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;lPods&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Luckily, my friend Aaron shared this dark knowledge:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo gem install cocoapods&lt;span style="color:#f92672"&gt;-&lt;/span&gt;deintegrate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod deintegrate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Thanks Aaron. Seriously. Thank you.&lt;/p&gt;</description></item><item><title>#Respect Linus</title><link>https://www.lantean.co/posts/respect-linus/</link><pubDate>Mon, 02 May 2016 23:46:08 +0000</pubDate><guid>https://www.lantean.co/posts/respect-linus/</guid><description>&lt;iframe src="https://embed-ssl.ted.com/talks/linus_torvalds_the_mind_behind_linux.html" width="854" height="480" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;</description></item><item><title>Evil Engineering</title><link>https://www.lantean.co/posts/evil-engineering/</link><pubDate>Mon, 08 Feb 2016 09:10:49 +0000</pubDate><guid>https://www.lantean.co/posts/evil-engineering/</guid><description>&lt;img src="https://www.lantean.co/wp-content/uploads/2016/02/IMG_4030.jpg" alt="IMG_4030" width="1024" height="512" class="aligncenter size-full wp-image-1904" /&gt;</description></item><item><title>IPTables: Blocking your favorite Brute Force Attacker</title><link>https://www.lantean.co/posts/iptables-blocking-your-favorite-brute-force-attacker/</link><pubDate>Thu, 21 Jan 2016 12:08:45 +0000</pubDate><guid>https://www.lantean.co/posts/iptables-blocking-your-favorite-brute-force-attacker/</guid><description>&lt;p&gt;If you happen to detect a bruteforce attack on your self-hosted WP instance, this would be the IPTables syntax to block it:&lt;/p&gt;
&lt;blockquote&gt;iptables -A INPUT -s 119.81.130.34 -j DROP&lt;/blockquote&gt;
&lt;p&gt;Whenever you miss the attacker, and you&amp;rsquo;re ready to unblock, you may just type:&lt;/p&gt;
&lt;blockquote&gt;iptables -D INPUT -s 119.81.130.34 -j DROP&lt;/blockquote&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;</description></item><item><title>ARC: weakSelf Caveats</title><link>https://www.lantean.co/posts/arc-weakself-caveats/</link><pubDate>Mon, 16 Nov 2015 12:13:40 +0000</pubDate><guid>https://www.lantean.co/posts/arc-weakself-caveats/</guid><description>&lt;p&gt;Here&amp;rsquo;s an interesting ARC scenario. Consider the following snippet:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;__weak&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;__typeof&lt;/span&gt;(self) weakSelf &lt;span style="color:#f92672"&gt;=&lt;/span&gt; self;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;int64_t delay &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (int64_t)(&lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; NSEC_PER_SEC);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), &lt;span style="color:#f92672"&gt;^&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [weakSelf doSomething];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Whenever the block gets executed&amp;hellip; &lt;em&gt;weakSelf&lt;/em&gt; might have a valid reference, or not. Right?.
Now, what happens with the following snippet?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;__weak&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;__typeof&lt;/span&gt;(self) weakSelf &lt;span style="color:#f92672"&gt;=&lt;/span&gt; self;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;int64_t delay &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (int64_t)(&lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; NSEC_PER_SEC);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), &lt;span style="color:#f92672"&gt;^&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [weakSelf doSomething];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [weakSelf doSomethingElse];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is where it gets interesting!. There&amp;rsquo;s a possibility that &lt;em&gt;doSomething&lt;/em&gt; might get executed, while &lt;em&gt;doSomethingElse&lt;/em&gt; might not.&lt;/p&gt;</description></item><item><title>Network Link Conditioner</title><link>https://www.lantean.co/posts/network-link-conditioner/</link><pubDate>Sat, 14 Nov 2015 15:11:43 +0000</pubDate><guid>https://www.lantean.co/posts/network-link-conditioner/</guid><description>&lt;p&gt;We&amp;rsquo;ve all known, for quite some time, about the existance of the NLC tool: it&amp;rsquo;s used during iOS App Testing, under bad network conditions.&lt;/p&gt;
&lt;p&gt;However&amp;hellip; i&amp;rsquo;ve (recently.. cough&amp;hellip; cough&amp;hellip;) realized that this tool can &lt;em&gt;also&lt;/em&gt; help you cap OS X bandwith.
This is specially useful when downloading the latest Xcode, and you don&amp;rsquo;t wanna kill the entire connection, just with that.&lt;/p&gt;
&lt;p&gt;You can find the Network Link Conditioner in &lt;a href="https://developer.apple.com/downloads/index.action?q=Hardware%20IO%20Tools"&gt;Apple&amp;rsquo;s Developers Portal&lt;/a&gt;, inside the &lt;strong&gt;Hardware IO Tools for Xcode&lt;/strong&gt; package.&lt;/p&gt;</description></item><item><title>VMWare Fusion: Shrinking OSX Image</title><link>https://www.lantean.co/posts/vmware-fusion-shrinking-osx-image/</link><pubDate>Wed, 29 Jul 2015 19:40:18 +0000</pubDate><guid>https://www.lantean.co/posts/vmware-fusion-shrinking-osx-image/</guid><description>&lt;p&gt;If you&amp;rsquo;re using VMWare Fusion for OSX, and you&amp;rsquo;ve got few images of older OSX releases, odds are you might have over-alloc&amp;rsquo;ed the disk space&amp;hellip; you can never know how much it&amp;rsquo;s really gonna be required!&lt;/p&gt;
&lt;p&gt;Steps to fix this are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Launch the OSX image that requires shrinking&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Disk Utility&lt;/strong&gt; App&lt;/li&gt;
&lt;li&gt;Pick the Disk, click over the &lt;strong&gt;Partition&lt;/strong&gt; tab, and reduce the partition&amp;rsquo;s size, as much as possible&lt;/li&gt;
&lt;li&gt;Shutdown the Virtual Machine&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once ready, you&amp;rsquo;ll need to locate the VMDK file of your image: it can be found inside the &lt;strong&gt;Image.vmwarevm&lt;/strong&gt; bundle.&lt;/p&gt;</description></item><item><title>Swift: Unit Testing</title><link>https://www.lantean.co/posts/swift-unit-testing/</link><pubDate>Fri, 24 Jul 2015 16:50:49 +0000</pubDate><guid>https://www.lantean.co/posts/swift-unit-testing/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently stumbled upon severe issues, while trying to write a Unit Test, in Swift, that would access Swift Code that belongs to the main app.&lt;/p&gt;
&lt;p&gt;Contrary to what &lt;del datetime="2015-07-24T19:47:54+00:00"&gt;almost&lt;/del&gt; everyone mentions, you should &lt;strong&gt;not import&lt;/strong&gt; the Main App&amp;rsquo;s files into the Testing target.&lt;/p&gt;
&lt;p&gt;Instead, this is what you should do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable &lt;strong&gt;Defines Module&lt;/strong&gt; in the main target.&lt;/li&gt;
&lt;li&gt;Add an &lt;strong&gt;import&lt;/strong&gt; at the top of the Unit Test, to make the main project visible.&lt;/li&gt;
&lt;li&gt;Make sure that the classes to be tested are set to &lt;strong&gt;public&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.andrewcbancroft.com/2014/12/29/getting-started-unit-testing-swift/"&gt;Reference Here!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Fixing Violent OSX GPU Crashes</title><link>https://www.lantean.co/posts/fixing-violent-osx-gpu-crashes/</link><pubDate>Wed, 17 Jun 2015 11:33:21 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-violent-osx-gpu-crashes/</guid><description>&lt;p&gt;I&amp;rsquo;ve been experiencing, for months and months, quite violent OSX crashes, attributed to the GPU.&lt;/p&gt;
&lt;p&gt;My awesome friend Dennis suggested me to try disabling Integrated &amp;lt;&amp;gt; Discrete GPU switching. And guess what? i&amp;rsquo;ve been crash free for almost two weeks.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m just documenting right here what has to be done, for future reference. Just uncheck this Energy Preference.
I&amp;rsquo;ve been told that the exact string for the checkmark might look different across the latest Yosemite releases, but the setting should still be lurking there:&lt;/p&gt;</description></item><item><title>The truth... is out there!</title><link>https://www.lantean.co/posts/the-truth-is-out-there/</link><pubDate>Tue, 24 Mar 2015 21:42:18 +0000</pubDate><guid>https://www.lantean.co/posts/the-truth-is-out-there/</guid><description>&lt;p&gt;&lt;a href="https://twitter.com/GillianA/status/580418104011972609"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2015/03/x-files.png" alt="x-files" width="1192" height="800" class="aligncenter size-full wp-image-1850" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best news i&amp;rsquo;ve read&amp;hellip; in quite some time!&lt;/p&gt;</description></item><item><title>San Francisco Muebles: A Website from the 90's!</title><link>https://www.lantean.co/posts/san-francisco-muebles-a-website-from-the-90s/</link><pubDate>Thu, 19 Mar 2015 21:56:15 +0000</pubDate><guid>https://www.lantean.co/posts/san-francisco-muebles-a-website-from-the-90s/</guid><description>&lt;p&gt;Several years ago (1999 to be precise!), i&amp;rsquo;ve started a simple website for my father&amp;rsquo;s business: &lt;a href="http://www.sfoficina.com.ar" title="San Francisco Muebles"&gt;San Francisco Muebles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is how it used to look like (thanks god for &lt;a href="http://web.archive.org"&gt;web.archive.org&lt;/a&gt;!)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sfoficina.com.ar"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2015/03/san-francisco-muebles.png" alt="san-francisco-muebles" width="1552" height="1112" class="aligncenter size-full wp-image-1830" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Back then, iframes, simple javascript, fancy flash buttons&amp;hellip; and some plain html was, pretty much, the gold standard for a personal (OR business) website.&lt;/p&gt;
&lt;p&gt;Over the years, my dad&amp;rsquo;s website has evolved into many different incarnations: i&amp;rsquo;ve adopted Plain-PHP, Code Igniter, and jQuery to handle fancy transitions.&lt;/p&gt;</description></item><item><title>Stark, you're a Genius!</title><link>https://www.lantean.co/posts/stark-youre-a-genius/</link><pubDate>Fri, 13 Mar 2015 19:21:02 +0000</pubDate><guid>https://www.lantean.co/posts/stark-youre-a-genius/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/oEx5lmbCKtY"&gt;https://youtu.be/oEx5lmbCKtY&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Removing local git branches that aren't in the remote repository</title><link>https://www.lantean.co/posts/removing-local-git-branches-that-arent-in-the-remote-repository/</link><pubDate>Thu, 12 Mar 2015 10:48:38 +0000</pubDate><guid>https://www.lantean.co/posts/removing-local-git-branches-that-arent-in-the-remote-repository/</guid><description>&lt;p&gt;New trick of the day. If you wanna cleanup your local git branches that were already merged, you could use this bash alias:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;alias git_cleanup&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;git branch &lt;span style="color:#f92672"&gt;--&lt;/span&gt;merged develop &lt;span style="color:#f92672"&gt;|&lt;/span&gt; grep &lt;span style="color:#f92672"&gt;-&lt;/span&gt;Ev &lt;span style="color:#e6db74"&gt;&amp;#34;(master|release|hotfix|develop)&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt; xargs git branch &lt;span style="color:#f92672"&gt;-&lt;/span&gt;d&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Props to Nick + Maxime!&lt;/p&gt;</description></item><item><title>Orchestrated Objective Reduction</title><link>https://www.lantean.co/posts/orchestrated-objective-reduction/</link><pubDate>Fri, 06 Feb 2015 22:23:51 +0000</pubDate><guid>https://www.lantean.co/posts/orchestrated-objective-reduction/</guid><description>&lt;p&gt;This &lt;strong&gt;is old news&lt;/strong&gt;, actually. I came across an article posted on January 2014, that talks about a theory&amp;hellip; i had just no idea existed, and it blew my mind.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s called Orch-OR: the idea? you cannot model consciousness with just a huge neural network. There&amp;rsquo;s an orchestrated quantum effect that affects synapse.&lt;/p&gt;
&lt;p&gt;This theory was proposed by Roger Penrose in the early 90&amp;rsquo;s, and&amp;hellip; cool thing is that, precisely, quantum vibrations inside brain neurons have been proved to exist.&lt;/p&gt;</description></item><item><title>Fish Shell</title><link>https://www.lantean.co/posts/fish-shell/</link><pubDate>Fri, 02 Jan 2015 11:01:29 +0000</pubDate><guid>https://www.lantean.co/posts/fish-shell/</guid><description>&lt;p&gt;Installing Fish:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install fish&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Displaying the branch name in the prompt:&lt;/p&gt;
&lt;p&gt;Place the following script here: &lt;strong&gt;~/.config/fish/config.fish&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set fish_git_dirty_color red
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set fish_git_not_dirty_color green
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function parse_git_branch
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; set &lt;span style="color:#f92672"&gt;-&lt;/span&gt;l branch (git branch &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;null &lt;span style="color:#f92672"&gt;|&lt;/span&gt; grep &lt;span style="color:#f92672"&gt;-&lt;/span&gt;e &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;\&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt; sed &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s&lt;span style="color:#f92672"&gt;/^&lt;/span&gt;..&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;(.&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;)&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; set &lt;span style="color:#f92672"&gt;-&lt;/span&gt;l git_diff (git diff)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; test &lt;span style="color:#f92672"&gt;-&lt;/span&gt;n &lt;span style="color:#e6db74"&gt;&amp;#34;$git_diff&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo (set_color &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;fish_git_dirty_color)&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;branch(set_color normal)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo (set_color &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;fish_git_not_dirty_color)&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;branch(set_color normal)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function fish_prompt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; test &lt;span style="color:#f92672"&gt;-&lt;/span&gt;d .git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printf &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s@&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s &lt;span style="color:#f92672"&gt;%&lt;/span&gt;s&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s:&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; (whoami) (hostname&lt;span style="color:#f92672"&gt;|&lt;/span&gt;cut &lt;span style="color:#f92672"&gt;-&lt;/span&gt;d . &lt;span style="color:#f92672"&gt;-&lt;/span&gt;f &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) (set_color &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;fish_color_cwd) (prompt_pwd) (set_color normal) (parse_git_branch)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printf &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s@&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s &lt;span style="color:#f92672"&gt;%&lt;/span&gt;s&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s&lt;span style="color:#f92672"&gt;%&lt;/span&gt;s&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; (whoami) (hostname&lt;span style="color:#f92672"&gt;|&lt;/span&gt;cut &lt;span style="color:#f92672"&gt;-&lt;/span&gt;d . &lt;span style="color:#f92672"&gt;-&lt;/span&gt;f &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) (set_color &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;fish_color_cwd) (prompt_pwd) (set_color normal)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://zogovic.com/post/37906589287/showing-git-branch-in-fish-shell-prompt" rel="nofollow"&gt;Reference here&lt;/a&gt; (Thanks for sharing the snippet!)&lt;/p&gt;</description></item><item><title>Debugging Autolayout</title><link>https://www.lantean.co/posts/debugging-autolayout/</link><pubDate>Thu, 11 Dec 2014 12:06:37 +0000</pubDate><guid>https://www.lantean.co/posts/debugging-autolayout/</guid><description>&lt;p&gt;If you need to debug the constraints that produced any view layout, just hit LLVM, and type:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;po [[UIWindow keyWindow] _autolayoutTrace]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will help you get the Autolayout Trace. Pick up the troublesome view, find its memory address, and then try:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;po [&lt;span style="color:#ae81ff"&gt;0x12341234&lt;/span&gt; constraintsAffectingLayoutForAxis:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that you should replace &lt;strong&gt;0x12341234&lt;/strong&gt; with the memory address of the view you&amp;rsquo;d like to debug. AxisX = 0, while AxisY = 1.&lt;/p&gt;
&lt;p&gt;Props to &lt;a href="https://blog.safaribooksonline.com/2012/10/31/tip-ambiguous-auto-layouts-in-ios-6/"&gt;this extremely useful post&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>iOS 8 Autosizing Cells</title><link>https://www.lantean.co/posts/ios-8-autosizing-cells/</link><pubDate>Thu, 11 Dec 2014 09:42:44 +0000</pubDate><guid>https://www.lantean.co/posts/ios-8-autosizing-cells/</guid><description>&lt;p&gt;The latest iOS release (8.0 at the time this was written!) added a new cool feature: autosizing cells. Meaning that we don&amp;rsquo;t really need to implement &lt;strong&gt;tableView:heightForRowAtIndexPath:&lt;/strong&gt; anymore.&lt;/p&gt;
&lt;p&gt;How can we enable this?. Super simple, just add the following snippet:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self.tableView.estimatedRowHeight &lt;span style="color:#f92672"&gt;=&lt;/span&gt; SomeConstant;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self.tableView.rowHeight &lt;span style="color:#f92672"&gt;=&lt;/span&gt; UITableViewAutomaticDimension;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, here&amp;rsquo;s the deal. iOS 7 still requires &lt;strong&gt;tableView:heightForRowAtIndexPath:&lt;/strong&gt; to be implemented. And if you do implement it, iOS 8 will disregard the Automatic Dimension settings.&lt;/p&gt;
&lt;p&gt;Solution?.. import &lt;strong&gt;objc/runtime.h&lt;/strong&gt;, and place this hack in your UITableView&amp;rsquo;s delegate:&lt;/p&gt;</description></item><item><title>Fixing: StatusBar covering your UIViewController's view</title><link>https://www.lantean.co/posts/fixing-statusbar-covering-your-uiviewcontrollers-view/</link><pubDate>Fri, 31 Oct 2014 18:52:48 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-statusbar-covering-your-uiviewcontrollers-view/</guid><description>&lt;p&gt;Ever since iOS 7, if you&amp;rsquo;re not using a UINavigationController instance, you&amp;rsquo;ll need to perform a very simple step, in order to prevent iOS&amp;rsquo;s StatusBar from covering your view:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Press Control, click over the &amp;ldquo;Top Layout Guide&amp;rdquo;, and drag it upon the troublesome view.&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;ll get a small popup. Please, click on &amp;ldquo;Vertical Spacing&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Edit the new constraint, and update the Constant value, as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://developer.apple.com/library/ios/qa/qa1797/_index.html"&gt;Reference here!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>May the Force...</title><link>https://www.lantean.co/posts/may-the-force/</link><pubDate>Sat, 25 Oct 2014 10:56:18 +0000</pubDate><guid>https://www.lantean.co/posts/may-the-force/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/10/IMG_0539.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/10/IMG_0539.jpg" alt="IMG_0539" width="1958" height="2611" class="aligncenter size-full wp-image-1783" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>CoreData HeavyWeight Migration Issues</title><link>https://www.lantean.co/posts/coredata-heavyweight-migration-gotchas/</link><pubDate>Sat, 25 Oct 2014 10:45:36 +0000</pubDate><guid>https://www.lantean.co/posts/coredata-heavyweight-migration-gotchas/</guid><description>&lt;p&gt;We recently hit a pretty severe bug. In one of our apps, users began experiencing token issues after an upgrade.&lt;/p&gt;
&lt;p&gt;Bottomline?&amp;hellip; the last upgrade had a Heavyweight migration. So far so good, but what happened?. Turns out that the &lt;strong&gt;URIRepresentation&lt;/strong&gt; that can be used to map a &lt;strong&gt;NSManagedObjectID&lt;/strong&gt;, is and is not reliable. Everything is okay, until you perform a heavyweight migration!.&lt;/p&gt;
&lt;p&gt;Heavyweight migrations might swizzle your NSManagedObjectID&amp;rsquo;s. Fix?, create your own &lt;strong&gt;primaryKeys&lt;/strong&gt;. &lt;strong&gt;NSUUID&lt;/strong&gt; helper class is the easiest way to accomplish that.&lt;/p&gt;</description></item><item><title>TextKit + iOS Clipping Bug</title><link>https://www.lantean.co/posts/textkit-ios-clipping-bug/</link><pubDate>Fri, 15 Aug 2014 01:06:15 +0000</pubDate><guid>https://www.lantean.co/posts/textkit-ios-clipping-bug/</guid><description>&lt;p&gt;I&amp;rsquo;ve just spent several hours hunting an iOS 8 specific bug. After inserting several new lines into a UITextView (with custom TextKit stack), the newly-added text would not appear.&lt;/p&gt;
&lt;p&gt;This is the way our NSTextContainer instance was being initialized&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@implementation&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;MyTextView&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;instancetype&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;init&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; SPInteractiveTextStorage &lt;span style="color:#f92672"&gt;*&lt;/span&gt;textStorage &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[MyInteractiveTextStorage alloc] init];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLayoutManager &lt;span style="color:#f92672"&gt;*&lt;/span&gt;layoutManager &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[NSLayoutManager alloc] init];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSTextContainer &lt;span style="color:#f92672"&gt;*&lt;/span&gt;container &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[NSTextContainer alloc] initWithSize:CGSizeMake(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, CGFLOAT_MAX)];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; container.widthTracksTextView &lt;span style="color:#f92672"&gt;=&lt;/span&gt; YES;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; container.heightTracksTextView &lt;span style="color:#f92672"&gt;=&lt;/span&gt; YES;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [layoutManager addTextContainer:container];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [textStorage addLayoutManager:layoutManager];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [super initWithFrame:CGRectZero textContainer:container];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;//&lt;/span&gt; ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, the interesting part is, specifically, &lt;strong&gt;heightTracksTextView = YES&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Debugging UIKit Usage on BG Threads</title><link>https://www.lantean.co/posts/debugging-uikit-usage-on-bg-threads/</link><pubDate>Thu, 10 Jul 2014 17:08:38 +0000</pubDate><guid>https://www.lantean.co/posts/debugging-uikit-usage-on-bg-threads/</guid><description>&lt;p&gt;Based on &lt;a href="http://www.cocoanetics.com/2013/02/uiview-background-queue-debugging/"&gt;this awesome cocoanetics post&lt;/a&gt;, and updated to work &lt;a href="https://github.com/rentzsch/jrswizzle"&gt;with JRSwizzle&lt;/a&gt;, you might find the UIView+Debug category very handy, specially when debugging die hard bugs.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#import &amp;#34;JRSwizzle.h&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@interface&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;UIView&lt;/span&gt; (Debug)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@implementation&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;UIView&lt;/span&gt; (Debug)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;methodCalledNotFromMainQueue:&lt;/span&gt;(NSString &lt;span style="color:#f92672"&gt;*&lt;/span&gt;)methodName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;-[%@ %@] being called on background queue. Break on -[UIView methodCalledNotFromMainQueue:] to find out where&amp;#34;&lt;/span&gt;, NSStringFromClass([self &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt;]), methodName);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;_setNeedsLayout_MainQueueCheck&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;[NSThread isMainThread])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self methodCalledNotFromMainQueue:NSStringFromSelector(_cmd)];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// not really an endless loop, this calls the original
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self _setNeedsLayout_MainQueueCheck];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;_setNeedsDisplay_MainQueueCheck&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;[NSThread isMainThread])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self methodCalledNotFromMainQueue:NSStringFromSelector(_cmd)];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// not really an endless loop, this calls the original
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self _setNeedsDisplay_MainQueueCheck];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;_setNeedsDisplayInRect_MainQueueCheck:&lt;/span&gt;(CGRect)rect
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;[NSThread isMainThread])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self methodCalledNotFromMainQueue:NSStringFromSelector(_cmd)];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// not really an endless loop, this calls the original
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self _setNeedsDisplayInRect_MainQueueCheck:rect];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+ (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;toggleViewMainQueueChecking&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSError &lt;span style="color:#f92672"&gt;*&lt;/span&gt;error &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nil;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [UIView jr_swizzleMethod:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(setNeedsLayout)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; withMethod:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(_setNeedsLayout_MainQueueCheck)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; error:&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;error];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [UIView jr_swizzleMethod:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(setNeedsDisplay)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; withMethod:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(_setNeedsDisplay_MainQueueCheck)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; error:&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;error];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [UIView jr_swizzleMethod:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(setNeedsDisplayInRect:)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; withMethod:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(_setNeedsDisplayInRect_MainQueueCheck:)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; error:&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;error];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Loading SecCertificateRef from PEM String</title><link>https://www.lantean.co/posts/loading-seccertificateref-from-pem-string/</link><pubDate>Mon, 07 Jul 2014 17:05:49 +0000</pubDate><guid>https://www.lantean.co/posts/loading-seccertificateref-from-pem-string/</guid><description>&lt;p&gt;In order to load a PEM certificate, you&amp;rsquo;d probably wanna grab the PEM itself from your backend, right?.&lt;/p&gt;
&lt;p&gt;You can do so, by means of this command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;openssl s_client &lt;span style="color:#f92672"&gt;-&lt;/span&gt;showcerts &lt;span style="color:#f92672"&gt;-&lt;/span&gt;host host.com &lt;span style="color:#f92672"&gt;-&lt;/span&gt;port &lt;span style="color:#ae81ff"&gt;443&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once you&amp;rsquo;ve got the certificate, you should &lt;strong&gt;get rid of the Begin/End Certificate substrings&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cocoa Snippet itself is quite easy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSData &lt;span style="color:#f92672"&gt;*&lt;/span&gt;rawCertificate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[NSData alloc] initWithBase64Encoding:PlaintextCertificateString];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SecCertificateRef parsedCertificate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; SecCertificateCreateWithData(NULL, (&lt;span style="color:#66d9ef"&gt;__bridge&lt;/span&gt; CFDataRef)rawCertificate);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it. Don&amp;rsquo;t forget about checking expiration dates. Unfortunately, Apple&amp;rsquo;s API to do so is private, and i personally refuse to build OpenSSL into my app, just to check that.&lt;/p&gt;</description></item><item><title>Pushing a new CocoaPods Version with Trunk</title><link>https://www.lantean.co/posts/pushing-a-new-cocoapods-version-with-trunk/</link><pubDate>Mon, 30 Jun 2014 12:15:04 +0000</pubDate><guid>https://www.lantean.co/posts/pushing-a-new-cocoapods-version-with-trunk/</guid><description>&lt;p&gt;CocoaPods is a useful dependency management tool for OSX and iOS. They&amp;rsquo;ve recently introduced some changes, to ease the process of publishing new versions of your Framework.&lt;/p&gt;
&lt;p&gt;Just in case you&amp;rsquo;re lost, just like me, these are the commands required to push a new release:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod trunk &lt;span style="color:#66d9ef"&gt;register&lt;/span&gt; EMAIL@HERE.COM &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;Your Name&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;--&lt;/span&gt;description&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;MBP &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod trunk me
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod trunk push FrameworkName.podspec.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that after hitting &lt;strong&gt;trunk register&lt;/strong&gt;, you&amp;rsquo;ll get an email to confirm your identity.&lt;/p&gt;</description></item><item><title>Codesign Check</title><link>https://www.lantean.co/posts/codesign-check/</link><pubDate>Thu, 26 Jun 2014 10:38:28 +0000</pubDate><guid>https://www.lantean.co/posts/codesign-check/</guid><description>&lt;p&gt;Keychain access for iOS apps is tied up to the provisioning profile you use to sign the binary. So, what happens if you release a new build, signed using a different provisioning profile?.&lt;/p&gt;
&lt;p&gt;Yes! your guess is accurate!. You loose access to anything you&amp;rsquo;ve stored in the keychain, resulting in (probably) deauthentication.&lt;/p&gt;
&lt;p&gt;There is a command that allows you to verify the &amp;ldquo;Keychain Access Group&amp;rdquo; for a given executable. By means of this, you&amp;rsquo;ll be able to verify if your new release will have the same access than your previous build (assuming you also have that binary!).&lt;/p&gt;</description></item><item><title>Git toggled folders as submodules!?</title><link>https://www.lantean.co/posts/git-toggled-folders-as-submodules/</link><pubDate>Mon, 23 Jun 2014 22:08:29 +0000</pubDate><guid>https://www.lantean.co/posts/git-toggled-folders-as-submodules/</guid><description>&lt;p&gt;Few days ago, i had to struggle with a strange scenario in which git began tracking a folder, as if it was a submodule.&lt;/p&gt;
&lt;p&gt;Now, what&amp;rsquo;s strange with that?: &lt;strong&gt;i didn&amp;rsquo;t set any submodules&lt;/strong&gt;!. My .gitmodule file was empty (in fact, i didn&amp;rsquo;t even have that file).&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="http://stackoverflow.com/questions/4185365/no-submodule-mapping-found-in-gitmodule-for-a-path-thats-not-a-submodule"&gt;this stackflow question&lt;/a&gt;, i ended up figuring out this solution:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git ls&lt;span style="color:#f92672"&gt;-&lt;/span&gt;files &lt;span style="color:#f92672"&gt;--&lt;/span&gt;stage &lt;span style="color:#f92672"&gt;|&lt;/span&gt; grep &lt;span style="color:#ae81ff"&gt;160000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git rm &lt;span style="color:#f92672"&gt;--&lt;/span&gt;cached [Paths retrieved from the command above]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hopefully, this will help another lost soul!&lt;/p&gt;</description></item><item><title>Pure.Awesomeness.</title><link>https://www.lantean.co/posts/pure-awesomeness/</link><pubDate>Mon, 07 Apr 2014 23:03:07 +0000</pubDate><guid>https://www.lantean.co/posts/pure-awesomeness/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/04/WWDC-2014.png"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/04/WWDC-2014.png" alt="WWDC 2014" width="1230" height="708" class="aligncenter size-full wp-image-1603" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Shrinking EBS Volume</title><link>https://www.lantean.co/posts/shrinking-ebs-volume/</link><pubDate>Thu, 06 Mar 2014 10:06:17 +0000</pubDate><guid>https://www.lantean.co/posts/shrinking-ebs-volume/</guid><description>&lt;p&gt;It took me a while to shrink my EBS volume, but &lt;a href="http://wiki.jokeru.ro/shrink-amazon-ebs-root-volume"&gt;this post&lt;/a&gt; helped quite a lot.
For further reference, this are the exact steps i&amp;rsquo;ve performed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Created a snapshot of the EBS volume, for backup reasons.&lt;/li&gt;
&lt;li&gt;Added a new volume, based on the snapshot.&lt;/li&gt;
&lt;li&gt;Added another volume with the desired size.&lt;/li&gt;
&lt;li&gt;Attached both, the Normal and Shrunken volumes.&lt;/li&gt;
&lt;li&gt;Check the big volume, and resize it:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;e2fsck &lt;span style="color:#f92672"&gt;-&lt;/span&gt;f &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;bigvolume
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;resize2fs &lt;span style="color:#f92672"&gt;-&lt;/span&gt;M &lt;span style="color:#f92672"&gt;-&lt;/span&gt;p &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;bigvolume
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;```&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt; Note that &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;resize2fs&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; will say something like:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;Resizing the filesystem on /dev/xvdg to 1035624 (4k) blocks.
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#a6e22e"&gt;Let&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s calculate how many &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;MB blocks we&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;ll need:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;x = 1035624 * 4 / 1024 / 16 = 253
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#a6e22e"&gt;Proceed&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;copy&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;ing blocks to the small volume:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;dd bs=16M if=/dev/bigvolume of=/dev/smallvolume count=253
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#a6e22e"&gt;Resize&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; Check the small volume:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;resize2fs -p /dev/smallvolume
e2fsck -f /dev/smallvolume
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#a6e22e"&gt;Stop&lt;/span&gt; the instance.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt; Detach the &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; volumes: Root, Big and Small.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt; Attach the &lt;span style="color:#f92672"&gt;*&lt;/span&gt;Small&lt;span style="color:#f92672"&gt;*&lt;/span&gt; volume at the same location as the previous root volume was. In my &lt;span style="color:#66d9ef"&gt;case&lt;/span&gt;, &lt;span style="color:#f92672"&gt;/&lt;/span&gt;dev&lt;span style="color:#f92672"&gt;/&lt;/span&gt;sda1.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#f92672"&gt;**&lt;/span&gt;Ready&lt;span style="color:#f92672"&gt;!**&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Nuke GIT Repository History</title><link>https://www.lantean.co/posts/nuke-git-repository-history/</link><pubDate>Thu, 13 Feb 2014 09:16:48 +0000</pubDate><guid>https://www.lantean.co/posts/nuke-git-repository-history/</guid><description>&lt;p&gt;Suppose you&amp;rsquo;ve just commited a private API key that should not be public. Or maybe you just wanna restart your repository, because you&amp;rsquo;ve just finished major surgery and wanna start fresh.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to delete all GIT history, you&amp;rsquo;d need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Remove all history&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm &lt;span style="color:#f92672"&gt;-&lt;/span&gt;rf .git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Reconstruct the Git repo with only the current content&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit &lt;span style="color:#f92672"&gt;-&lt;/span&gt;m &lt;span style="color:#e6db74"&gt;&amp;#34;Initial commit&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;Push to GitHub.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git remote add origin &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;github&lt;span style="color:#f92672"&gt;-&lt;/span&gt;uri&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push &lt;span style="color:#f92672"&gt;-&lt;/span&gt;u &lt;span style="color:#f92672"&gt;--&lt;/span&gt;force origin master&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/9683279/how-do-i-remove-all-version-history-for-a-git-github-repository"&gt;Source here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Repairing CocoaPods Broken Repository</title><link>https://www.lantean.co/posts/repairing-cocoapods-broken-repository/</link><pubDate>Tue, 04 Feb 2014 16:02:32 +0000</pubDate><guid>https://www.lantean.co/posts/repairing-cocoapods-broken-repository/</guid><description>&lt;p&gt;It seems that CocoaPods fellows had an &lt;a href="http://blog.cocoapods.org/Repairing-Our-Broken-Specs-Repository/"&gt;issue with libgit&lt;/a&gt;, and their public repository broke down.&lt;/p&gt;
&lt;p&gt;In order to fix it, you&amp;rsquo;ll need to&amp;hellip;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod repo remove master
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fixing '"A newer version of this app is already installed on this computer" Alert</title><link>https://www.lantean.co/posts/fixing-a-newer-version-of-this-app-is-already-installed-on-this-computer-alert/</link><pubDate>Tue, 04 Feb 2014 10:23:39 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-a-newer-version-of-this-app-is-already-installed-on-this-computer-alert/</guid><description>&lt;p&gt;I&amp;rsquo;ve just got a nice alert, while trying to install a Mac App from the AppStore, saying the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;A newer version of this app is already installed on this computer.&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Solutions?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nuke the app&amp;rsquo;s Xcode build folder.
&lt;code&gt;Location: ~/Library/Developer/Xcode/DerivedData/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Execute the following command:
&lt;code&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you should be good to go!&lt;/p&gt;</description></item><item><title>Resistance is Futile</title><link>https://www.lantean.co/posts/resistance-is-futile/</link><pubDate>Tue, 28 Jan 2014 16:52:51 +0000</pubDate><guid>https://www.lantean.co/posts/resistance-is-futile/</guid><description>&lt;p&gt;You will be assimilated!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/01/1797412_749370801750600_640010642_n.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/1797412_749370801750600_640010642_n.jpg" alt="Resistance is Futile" width="538" height="400" class="aligncenter size-full wp-image-1547" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sparkle in Sandbox Mode</title><link>https://www.lantean.co/posts/sparkle-in-sandbox-mode/</link><pubDate>Mon, 27 Jan 2014 22:48:24 +0000</pubDate><guid>https://www.lantean.co/posts/sparkle-in-sandbox-mode/</guid><description>&lt;p&gt;If you're trying to distribute updates for your OSX app, outside the AppStore, still, with the AppSandbox enabled, you've come to the right place.&lt;/p&gt;
&lt;p&gt;In the official Sparkle repository, you can find &lt;a href="https://github.com/wbyoung/Sparkle"&gt;this pull request&lt;/a&gt;. Since it hasn't been updated in a while, and the settings were fixed for OSX Lion, i've just forked the pull request, and pushed a couple fixes &lt;a href="https://github.com/jleandroperez/Sparkle"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Allright, so, how should you proceed?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repository!&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;Build Phases&lt;/strong&gt; of your target and&amp;hellip;
&lt;ol&gt;
&lt;li&gt;Add &lt;strong&gt;Sparkle.framework&lt;/strong&gt; as a dependency&lt;/li&gt;
&lt;li&gt;Link &lt;strong&gt;Sparkle.framework&lt;/strong&gt; library&lt;/li&gt;
&lt;li&gt;Copy &lt;strong&gt;Sparkle.framework&lt;/strong&gt; to &amp;lsquo;Frameworks&amp;rsquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;ve done things right, your &amp;lsquo;Build Phases&amp;rsquo; tab should look something like this:
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/Screen-Shot-2014-01-27-at-10.31.09-PM.png" alt="OSX Sparkle Sandboxed"&gt;&lt;/p&gt;</description></item><item><title>More Hawaiian Awesomeness</title><link>https://www.lantean.co/posts/more-hawaiian-awesomeness/</link><pubDate>Mon, 27 Jan 2014 14:43:36 +0000</pubDate><guid>https://www.lantean.co/posts/more-hawaiian-awesomeness/</guid><description>&lt;p&gt;Just wanted to share a couple more pictures of Oahu!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0403.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0403.jpg" alt="IMG_0403" width="1632" height="1224" class="aligncenter size-full wp-image-1518" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0357.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0357.jpg" alt="IMG_0357" width="1632" height="1224" class="aligncenter size-full wp-image-1516" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0374.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0374.jpg" alt="IMG_0374" width="1632" height="1224" class="aligncenter size-full wp-image-1517" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hawaiian Awesomeness</title><link>https://www.lantean.co/posts/hawaiian-awesomeness/</link><pubDate>Sat, 25 Jan 2014 18:51:24 +0000</pubDate><guid>https://www.lantean.co/posts/hawaiian-awesomeness/</guid><description>&lt;p&gt;I&amp;rsquo;ve been lucky enough to spend a couple days with several friend in Oahu island. Let me just say this: Hawaii is awesome.&lt;/p&gt;
&lt;p&gt;During january, when it&amp;rsquo;s supposed to be winter, the water temperature is perfect pitch. Wifi is great, and the food is super tasty, not sure why, yet.&lt;/p&gt;
&lt;p&gt;Next time&amp;hellip; Maui maybe?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0396.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0396.jpg" alt="IMG_0396" width="1632" height="1224" class="aligncenter size-full wp-image-1510" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0394.jpg"&gt;&lt;img src="https://www.lantean.co/wp-content/uploads/2014/01/IMG_0394.jpg" alt="IMG_0394" width="1632" height="1224" class="aligncenter size-full wp-image-1512" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>If i practice enough...</title><link>https://www.lantean.co/posts/if-i-practice-enough/</link><pubDate>Tue, 27 Aug 2013 00:19:19 +0000</pubDate><guid>https://www.lantean.co/posts/if-i-practice-enough/</guid><description>&lt;p&gt;It is a well known fact&amp;hellip; if you wanna master a craft, you need to spend at least 10k hours practicing. Guitars aint no different&amp;hellip; with practice comes mastery. With time&amp;hellip; you don&amp;rsquo;t need to look where your fingers are. You just know it. You feel the position of your fingers in the fretboard.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s rock and roll, in its purest essence&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/08/play-guitars.jpg"&gt;&lt;img class="aligncenter size-full wp-image-1481" alt="Guitars" src="https://www.lantean.co/wp-content/uploads/2013/08/play-guitars.jpg" width="1280" height="940" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Star Trek : Into Darkness</title><link>https://www.lantean.co/posts/star-trek-into-darkness-2/</link><pubDate>Mon, 26 Aug 2013 22:38:06 +0000</pubDate><guid>https://www.lantean.co/posts/star-trek-into-darkness-2/</guid><description>&lt;p&gt;If you were looking for a new wallpaper, you&amp;rsquo;ve come to the right place. As you may know, several scenes of the new Star Trek &amp;ldquo;Into Darkness&amp;rdquo; movie were shot in the NIF&amp;hellip; &lt;a href="https://lasers.llnl.gov/"&gt;(National Ignition Facility)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The movie itself plays a twist over the original Star Trek Series, since&amp;hellip; in the previous movie, we&amp;rsquo;ve seen an alteration in the flow of events, which led to a way different outcome.&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t gone to the cinema yet, i suggest you check it out. Seriously speaking!&lt;/p&gt;</description></item><item><title>Generating a Mac Iconset</title><link>https://www.lantean.co/posts/generating-a-mac-iconset/</link><pubDate>Wed, 24 Jul 2013 21:06:24 +0000</pubDate><guid>https://www.lantean.co/posts/generating-a-mac-iconset/</guid><description>&lt;p&gt;You&amp;rsquo;ll need to create PNG assets with the following sizes and filenames:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_16x16.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_16x16&lt;span style="color:#ae81ff"&gt;@2&lt;/span&gt;x.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_32x32.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_32x32&lt;span style="color:#ae81ff"&gt;@2&lt;/span&gt;x.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_128x128.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_128x128&lt;span style="color:#ae81ff"&gt;@2&lt;/span&gt;x.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_256x256.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_256x256&lt;span style="color:#ae81ff"&gt;@2&lt;/span&gt;x.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_512x512.png
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;icon_512x512&lt;span style="color:#ae81ff"&gt;@2&lt;/span&gt;x.png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All of those assets should go into a folder named &amp;lsquo;Icon.iconset&amp;rsquo;.
Afterwards, just fire Terminal and type the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;iconutil &lt;span style="color:#f92672"&gt;-&lt;/span&gt;c icns&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If all went well, you should have a .icns file right there!.&lt;/p&gt;
&lt;p&gt;Reference: &lt;a href="https://developer.apple.com/library/mac/#documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html"&gt;Apple&amp;rsquo;s Guidelines&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>GIT Modules</title><link>https://www.lantean.co/posts/git-modules/</link><pubDate>Wed, 17 Jul 2013 22:49:26 +0000</pubDate><guid>https://www.lantean.co/posts/git-modules/</guid><description>&lt;p&gt;Equivalent to SVN Externals, GIT offers a nice feature called &amp;ldquo;Modules&amp;rdquo;. Long short story, you get to link an external project, inside your own project.
What do you make out of this?. Well, suppose you&amp;rsquo;re using a 3rd party library. You can update everything with just a command line pull. No need to download and merge, by hand.&lt;/p&gt;
&lt;p&gt;Sounds nice, right?. It&amp;rsquo;s done this way:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd MyApp
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git submodule add git:&lt;span style="color:#f92672"&gt;//&lt;/span&gt;github.com&lt;span style="color:#f92672"&gt;/&lt;/span&gt;some&lt;span style="color:#f92672"&gt;-&lt;/span&gt;framework&lt;span style="color:#f92672"&gt;/&lt;/span&gt;some&lt;span style="color:#f92672"&gt;-&lt;/span&gt;framework.git Frameworks&lt;span style="color:#f92672"&gt;/&lt;/span&gt;SomeFramework&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Afterwards, we need to recursively update the submodules. Which will, in turn, clone the &amp;lsquo;some-framework&amp;rsquo; repository:&lt;/p&gt;</description></item><item><title>Removing "@2x" substring from files</title><link>https://www.lantean.co/posts/removing-2x-substring-from-files/</link><pubDate>Wed, 03 Jul 2013 15:17:54 +0000</pubDate><guid>https://www.lantean.co/posts/removing-2x-substring-from-files/</guid><description>&lt;p&gt;If you&amp;rsquo;re reading this, probably&amp;hellip; it&amp;rsquo;s because the Art Designers of your team just sent you a bunch of SD assets, with the @2x substring&amp;hellip; and you don&amp;rsquo;t wanna spend the next 30 minutes cleaning that up&amp;hellip; right?&lt;/p&gt;
&lt;p&gt;If that&amp;rsquo;s the case, you&amp;rsquo;ve come to the right place. Fire Terminal, open the containing folder, and type the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find . &lt;span style="color:#f92672"&gt;-&lt;/span&gt;type f &lt;span style="color:#f92672"&gt;-&lt;/span&gt;name &lt;span style="color:#e6db74"&gt;&amp;#34;*@2x*&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;exec sh &lt;span style="color:#f92672"&gt;-&lt;/span&gt;c &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;echo mv &lt;span style="color:#e6db74"&gt;&amp;#34;$0&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;${0/@2x/}&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39; &amp;#39;&lt;/span&gt;{}&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;strong&gt;
Note:&lt;/strong&gt; you might have just noticed that this will actually echo the replacement. That's for safety. Validate the output, and proceed removing the 'echo' command call.</description></item><item><title>Waiting until two async blocks are executed (Version #2)</title><link>https://www.lantean.co/posts/waiting-until-two-async-blocks-are-executed-version-2/</link><pubDate>Wed, 26 Jun 2013 15:58:10 +0000</pubDate><guid>https://www.lantean.co/posts/waiting-until-two-async-blocks-are-executed-version-2/</guid><description>&lt;p&gt;This is a nice variant to &lt;a href="https://www.lantean.co/waiting-until-two-async-blocks-are-executed/"&gt;this&lt;/a&gt; other post. It gives you&amp;hellip; way too much flexibility!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_t group &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dispatch_group_create();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_enter(group);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;), &lt;span style="color:#f92672"&gt;^&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block1&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [NSThread sleepForTimeInterval:&lt;span style="color:#ae81ff"&gt;5.0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dispatch_group_leave(group);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block1 End&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_enter(group);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;), &lt;span style="color:#f92672"&gt;^&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block2&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [NSThread sleepForTimeInterval:&lt;span style="color:#ae81ff"&gt;8.0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dispatch_group_leave(group);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block2 End&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_notify(group, dispatch_get_main_queue(), &lt;span style="color:#f92672"&gt;^&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Group Notify Block3 :: %d&amp;#34;&lt;/span&gt;, [NSThread isMainThread]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fixing Codesign Issues with Helper Apps</title><link>https://www.lantean.co/posts/fixing-codesign-issues-with-helper-apps/</link><pubDate>Wed, 19 Jun 2013 13:15:40 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-codesign-issues-with-helper-apps/</guid><description>&lt;p&gt;I&amp;rsquo;ve been getting &amp;ldquo;Invalid binary&amp;rdquo; errors, while trying to upload a binary to the AppStore. The solution can be found in stackoverflow, i&amp;rsquo;m just pasting it here, for future reference&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Re-Codesign the Helper app from terminal:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;codesign &lt;span style="color:#f92672"&gt;-&lt;/span&gt;f &lt;span style="color:#f92672"&gt;-&lt;/span&gt;s &lt;span style="color:#e6db74"&gt;&amp;#34;3rd Party mac Developer Application:&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;i &lt;span style="color:#e6db74"&gt;&amp;#34;com.bundle.YOUR.HELPER&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;--&lt;/span&gt;entitlements path&lt;span style="color:#f92672"&gt;/&lt;/span&gt;to&lt;span style="color:#f92672"&gt;/&lt;/span&gt;helper&lt;span style="color:#f92672"&gt;/&lt;/span&gt;entitlements YOUR&lt;span style="color:#f92672"&gt;-&lt;/span&gt;HELPER.app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2.   Remove provisioning profile from Helper app, adding a &amp;ldquo;Run script&amp;rdquo; into the &amp;ldquo;Build Phases&amp;rdquo;:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm &lt;span style="color:#e6db74"&gt;&amp;#34;${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Library/LoginItems/YOUR-HELPER.app/Contents/embedded.provisionprofile&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After this, i managed to upload the binary!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Route53 Failover Mechanism!</title><link>https://www.lantean.co/posts/route53-failover-mechanism/</link><pubDate>Mon, 27 May 2013 20:49:18 +0000</pubDate><guid>https://www.lantean.co/posts/route53-failover-mechanism/</guid><description>&lt;p&gt;Situation: you run your own website on an Amazon EC2 instance. Something happens: maybe the box runs out of resources (ddos, high traffic, you pick one!).
All of the sudden, your website is offline. Downtime means that Google will push it down in the ranking. So what do we do?.&lt;/p&gt;
&lt;p&gt;Well, AWS Route53 has a new, and super cool mechanism, that allows you to set Health Checks. If the website doesn&amp;rsquo;t pass it, the DNS record will switch to a failover entry.&lt;/p&gt;</description></item><item><title>OSX: Fixing SSH hangs!</title><link>https://www.lantean.co/posts/osx-fixing-ssh-hangs/</link><pubDate>Thu, 23 May 2013 00:41:46 +0000</pubDate><guid>https://www.lantean.co/posts/osx-fixing-ssh-hangs/</guid><description>&lt;p&gt;This glitch is pretty annoying. You&amp;rsquo;re following a log, while connected to a server (through ssh), and after a while, your ssh connection hangs.
The solution?.&lt;/p&gt;
&lt;p&gt;Fire up Terminal, and type the following: nano ~/.ssh/config&lt;/p&gt;
&lt;p&gt;Once there, fill up the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ServerAliveInterval &lt;span style="color:#ae81ff"&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ServerAliveCountMax &lt;span style="color:#ae81ff"&gt;120&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That should keep your connection alive for the next 10 hours, without further issues.&lt;/p&gt;</description></item><item><title>Waiting until two async blocks are executed</title><link>https://www.lantean.co/posts/waiting-until-two-async-blocks-are-executed/</link><pubDate>Tue, 09 Apr 2013 22:42:33 +0000</pubDate><guid>https://www.lantean.co/posts/waiting-until-two-async-blocks-are-executed/</guid><description>&lt;p&gt;The following snippet of code.. which is super interesting, is based on &lt;a href="http://stackoverflow.com/questions/11909629/waiting-until-two-async-blocks-are-executed-before-starting-another-block"&gt;this&lt;/a&gt; post. This allows to dispatch a block, on Main Thread, once two async operations are completed.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_t group &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dispatch_group_create();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;), &lt;span style="color:#f92672"&gt;^&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block1&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [NSThread sleepForTimeInterval:&lt;span style="color:#ae81ff"&gt;5.0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block1 End&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;), &lt;span style="color:#f92672"&gt;^&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block2&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [NSThread sleepForTimeInterval:&lt;span style="color:#ae81ff"&gt;8.0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block2 End&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_group_notify(group, dispatch_get_main_queue(), &lt;span style="color:#f92672"&gt;^&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Block3 :: %d&amp;#34;&lt;/span&gt;, [NSThread isMainThread]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dispatch_release(group);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fixing High I/O usage on Amazon EBS</title><link>https://www.lantean.co/posts/fixing-high-io-usage-on-amazon-ebs/</link><pubDate>Mon, 01 Apr 2013 23:48:42 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-high-io-usage-on-amazon-ebs/</guid><description>&lt;p&gt;This humble wordpress blog is running on an AWS micro instance. We&amp;rsquo;ve got somewhere around 1k visitors each month, which is pretty awesome. But&amp;hellip; to my surprise, the whole system is using over 14 million I/O operations.&lt;/p&gt;
&lt;p&gt;I suspected there was something wrong with this&amp;hellip; so i proceeded to do a small research.
By means of the application &amp;lsquo;iotop&amp;rsquo;, i managed to spot the I/O hog: apache!.&lt;/p&gt;
&lt;p&gt;Specifically, i ran iotop with the following parameters:&lt;/p&gt;</description></item><item><title>Installing a Webserver on AWS EC2</title><link>https://www.lantean.co/posts/webserver-on-ec2/</link><pubDate>Mon, 01 Apr 2013 23:31:17 +0000</pubDate><guid>https://www.lantean.co/posts/webserver-on-ec2/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently lantean.co to AWS EC2. Amazon offers a free EC2 instance for a year&amp;hellip;. so i decided to give it a shot.&lt;/p&gt;
&lt;p&gt;The main reason i had to migrate to a self managed hosting is simple. Shared Hostings don&amp;rsquo;t allow you to fine tune several settings, such as the PHP Memory, and you might event not be able to login using ssh. What did i need to do?. It&amp;rsquo;s simple&amp;hellip; let&amp;rsquo;s see&amp;hellip;&lt;/p&gt;</description></item><item><title>Fixing SVN hangs on OSX</title><link>https://www.lantean.co/posts/fixing-svn-hangs-on-osx/</link><pubDate>Tue, 19 Mar 2013 21:02:23 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-svn-hangs-on-osx/</guid><description>&lt;p&gt;I&amp;rsquo;m writing this, right here, so i know where to pick it up next time i get the same issue. Thanks to Jonathan, who wrote &lt;a href="http://focusritedevelopmentteam.wordpress.com/2012/08/08/fixing-svn-hangs-on-os-x-an-exercise-in-troubleshooting/"&gt;this&lt;/a&gt; awesome post, and saved me quite a lot of time.&lt;/p&gt;
&lt;p&gt;Long short story, it seems there is a buggy library on OSX, that produces broken SSL connections to hang for quite some time. Workaround?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo port install neon&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That should upgrade the faulty library, and fix this annoying issue.&lt;/pre&gt;&lt;/p&gt;</description></item><item><title>SSH SFTP Updater : "Private key incorrect for user"</title><link>https://www.lantean.co/posts/ssh-sftp-updater-private-key-incorrect-for-user/</link><pubDate>Mon, 11 Mar 2013 00:18:33 +0000</pubDate><guid>https://www.lantean.co/posts/ssh-sftp-updater-private-key-incorrect-for-user/</guid><description>&lt;p&gt;If you&amp;rsquo;re using &lt;a href="http://wordpress.org/extend/plugins/ssh-sftp-updater-support/"&gt;Wordpress SSH SFTP&lt;/a&gt; Updater plugin, and you got the error &amp;ldquo;Private Key is Incorrect for use&amp;rdquo;&amp;hellip; even when the keys are correct, check the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano &lt;span style="color:#f92672"&gt;/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;ssh&lt;span style="color:#f92672"&gt;/&lt;/span&gt;sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If there is a &amp;ldquo;ForceCommand internal-sftp&amp;rdquo; directive, somewhere, in sshd&amp;rsquo;s config, try disabling it. That was what was causing me issues:&lt;/p&gt;
&lt;p&gt;I had an sftp-only user, and the WP plugin doesn&amp;rsquo;t support that!.&lt;/pre&gt;&lt;/p&gt;</description></item><item><title>The Beginning is Near</title><link>https://www.lantean.co/posts/the-beginning-is-near/</link><pubDate>Tue, 05 Mar 2013 23:48:48 +0000</pubDate><guid>https://www.lantean.co/posts/the-beginning-is-near/</guid><description>&lt;p&gt;I just wanted to share this awesome picture&amp;hellip; there isn&amp;rsquo;t much to add to it!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/03/beginning-is-near.jpg"&gt;&lt;img class="aligncenter size-full wp-image-1250" alt="beginning-is-near" src="https://www.lantean.co/wp-content/uploads/2013/03/beginning-is-near.jpg" width="784" height="960" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Dropping a MongoDB Database</title><link>https://www.lantean.co/posts/dropping-a-mongodb-database/</link><pubDate>Tue, 05 Mar 2013 23:35:27 +0000</pubDate><guid>https://www.lantean.co/posts/dropping-a-mongodb-database/</guid><description>&lt;p&gt;I&amp;rsquo;m writing this down, riiight here, because i just got bored of searching this in google everytime i need to run an experiment.
If you need to drop a mongo database, just fire the mongo shell and type:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use mydb;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;db.dropDatabase();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it!&lt;/p&gt;</description></item><item><title>Install Lynx on Max OSX</title><link>https://www.lantean.co/posts/install-lynx-on-max-osx/</link><pubDate>Thu, 28 Feb 2013 12:05:33 +0000</pubDate><guid>https://www.lantean.co/posts/install-lynx-on-max-osx/</guid><description>&lt;p&gt;This task is pretty straightforward. At least if you already&amp;rsquo;ve got MacPorts installed.
(If you don&amp;rsquo;t have macports, please, head on to &lt;a title="MacPorts" href="http://www.macports.org/"&gt;this&lt;/a&gt; website and get it, it&amp;rsquo;s extremely useful to geeky users).&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s proceed.!. Open a Terminal window, and type the following command&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo port install lynx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;d be all. To test Lynx, type the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lynx www.lantean.co&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If everything went fine, you should see something like this:
&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/lynx-mac.png"&gt;&lt;img class="aligncenter size-full wp-image-1217" alt="Lynx Mac" src="https://www.lantean.co/wp-content/uploads/2013/02/lynx-mac.png" width="516" height="353" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;/p&gt;</description></item><item><title>Warp Drive is Possible!</title><link>https://www.lantean.co/posts/warp-drive-is-possible/</link><pubDate>Fri, 22 Feb 2013 22:52:51 +0000</pubDate><guid>https://www.lantean.co/posts/warp-drive-is-possible/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/warp-drive-real.jpg"&gt;&lt;img class="aligncenter size-full wp-image-1183" title="Warp Drive" alt="Warp Drive" src="https://www.lantean.co/wp-content/uploads/2013/02/warp-drive-real.jpg" width="580" height="377" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Not long ago i&amp;rsquo;ve read Michio Kaku&amp;rsquo;s book, &lt;a title="Science of the Impossible" href="http://www.amazon.com/Physics-Impossible-Scientific-Exploration-Teleportation/dp/0307278824"&gt;Science of the Impossible&lt;/a&gt;. If you have enough spare time to pick up a new book, i&amp;rsquo;d like to recommend it.&lt;/p&gt;
&lt;p&gt;Michio suggests, in his book, that building a Warp Drive might become a reality in the next 100 years. But what are the grounds on that saying?.&lt;/p&gt;
&lt;h4&gt;Alcubierre Warp Drive&lt;/h4&gt;
&lt;p&gt;Proposed by physicist Miguel Alcubierre, the Alcubierre&amp;rsquo;s Drive is a solution to Einstein&amp;rsquo;s Relativistic equations. For it to work, we need matter with negative mass&amp;hellip; which, as of today, hasn&amp;rsquo;t been discovered yet.&lt;/p&gt;</description></item><item><title>Google Chromebook Pixel</title><link>https://www.lantean.co/posts/google-chromebook-pixel/</link><pubDate>Fri, 22 Feb 2013 11:05:25 +0000</pubDate><guid>https://www.lantean.co/posts/google-chromebook-pixel/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/google-chromebook-pixel.png"&gt;&lt;img class="aligncenter size-full wp-image-1171" title="Google Chromebook Pixel" alt="Google Chromebook Pixel" src="https://www.lantean.co/wp-content/uploads/2013/02/google-chromebook-pixel.png" width="552" height="299" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Google has just announced they&amp;rsquo;d be releasing a new iteration of their chromebooks. They&amp;rsquo;d call it &amp;lsquo;Pixel&amp;rsquo;, because they want the pixels, literally, to disappear.&lt;/p&gt;
&lt;p&gt;It has a 12.85 inches screen, with a stunning resolution of 2560x1700. That&amp;rsquo;s beyond Mac Retina&amp;hellip; well, just a little bit. Furthermore, it has a touchscreen built with Gorilla Glass display.&lt;/p&gt;
&lt;p&gt;Hardware?. Intel i3 running at 1.8ghz, 8gb of ram, and 32gb of flash storage. Not much, but you need to consider that this notebook has been built to work in the cloud&amp;hellip; so you wouldn&amp;rsquo;t be storing, locally, documents.&lt;/p&gt;</description></item><item><title>Apple Got Hacked!?</title><link>https://www.lantean.co/posts/apple-got-hacked/</link><pubDate>Wed, 20 Feb 2013 11:16:39 +0000</pubDate><guid>https://www.lantean.co/posts/apple-got-hacked/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/apple-hacked.jpg"&gt;&lt;img class="size-thumbnail wp-image-1165 alignleft" alt="apple-hacked" src="https://www.lantean.co/wp-content/uploads/2013/02/apple-hacked.jpg" width="150" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In a recent press release, Apple announced that a small group of computers in their network got hacked. You might be wondering&amp;hellip; how in the hell this happened?.&lt;/p&gt;
&lt;p&gt;The answer is pretty simple. Java Virtual Machine has been found to ve &lt;strong&gt;very&lt;/strong&gt; insecure. Several zero-day exploits have been uncovered, and long short story, if you&amp;rsquo;ve got Java VM installed in your machine, i suggest you disable it. As soon as possible!.&lt;/p&gt;</description></item><item><title>Howto Uninstall Flash Player from a Mac</title><link>https://www.lantean.co/posts/howto-uninstall-flash-player-from-a-mac/</link><pubDate>Mon, 18 Feb 2013 09:26:28 +0000</pubDate><guid>https://www.lantean.co/posts/howto-uninstall-flash-player-from-a-mac/</guid><description>&lt;p&gt;If you&amp;rsquo;re reading this post, you&amp;rsquo;re probably aware of the dangers of Flash Player. And you&amp;rsquo;ve read, most probably, about the last couple of viruses / penetrations to Facebook and Google.&lt;/p&gt;
&lt;p&gt;Steve Jobs hated Adobe Flash&amp;hellip;  personally, i say he had a very good reason. If wasn&amp;rsquo;t, probably, just because Adobe refused (at first) to publish its suite for Mac. He knew that it was troublesome&amp;hellip; so&amp;hellip; let&amp;rsquo;s proceed removing that junk from our system!.&lt;/p&gt;</description></item><item><title>Human Brain Project: Real Artificial Intelligence</title><link>https://www.lantean.co/posts/human-brain-project-real-artificial-intelligence/</link><pubDate>Wed, 13 Feb 2013 19:46:30 +0000</pubDate><guid>https://www.lantean.co/posts/human-brain-project-real-artificial-intelligence/</guid><description>&lt;p&gt;Artificial Intelligence has become a part of our lifes. Almost everyone has a smartphone capable of running simple AI&amp;hellip; Siri became a commodity. But the limitations are not easily dismissed&amp;hellip; the current state of the art is far beyond what you might believe.&lt;/p&gt;
&lt;p&gt;Self awareness is a no-go.. specially when we don&amp;rsquo;t even fully understand where consciousness emerges. Is it a side effect of the multi-dimensional neuron network?. Or is it something else?.
Well, luckily, i&amp;rsquo;m not the only one thinking about these questions. The European Union announced that they will invest 1200 million dollars over the next ten years, in order to build a model of the human brain.&lt;/p&gt;</description></item><item><title>Mac NTFS support</title><link>https://www.lantean.co/posts/mac-ntfs-support/</link><pubDate>Mon, 11 Feb 2013 21:19:00 +0000</pubDate><guid>https://www.lantean.co/posts/mac-ntfs-support/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/mac-ntfs.png"&gt;&lt;img class="size-full wp-image-868" title="Mac NTFS support" alt="Mac NTFS support" src="https://www.lantean.co/wp-content/uploads/2013/02/mac-ntfs.png" width="193" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ahhhhh&amp;hellip; you need to mount a friend&amp;rsquo;s pendrive&amp;hellip; or you have an external HD with a Windows partition, and you&amp;rsquo;ve just realized you need to add your Mac NTFS support?.&lt;/p&gt;
&lt;p&gt;You came to the right place!. Yes, there are a couple paid options&amp;hellip; like &lt;a href="http://www.tuxera.com/products/tuxera-ntfs-for-mac/" rel="nofollow"&gt;tuxera&lt;/a&gt; and &lt;a href="http://www.paragon-software.com/home/ntfs-mac/" rel="nofollow"&gt;paragon&lt;/a&gt;. Both of them are good options, but they cost a couple dollars. And&amp;hellip; we just wanna read a couple files&amp;hellip; we&amp;rsquo;re not gonna be living with NTFS the whole time, right?.&lt;/p&gt;</description></item><item><title>Dropbox Two Step Authentication</title><link>https://www.lantean.co/posts/dropbox-two-step-authentication/</link><pubDate>Sat, 09 Feb 2013 10:44:53 +0000</pubDate><guid>https://www.lantean.co/posts/dropbox-two-step-authentication/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/two-step-authentication.jpg"&gt;&lt;img class="alignleft size-thumbnail wp-image-860" title="Dropbox Two Step Authentication" alt="Dropbox Two Step Authentication" src="https://www.lantean.co/wp-content/uploads/2013/02/two-step-authentication.jpg" width="150" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have you ever heard about keyloggers?. Just in case you haven&amp;rsquo;t&amp;hellip; keyloggers are a super simple piece of technology. They are software applications that can be installed in almost every PC / Mac, and they simply save every keystroke.&lt;/p&gt;
&lt;p&gt;They&amp;rsquo;re invisible to the user. So&amp;hellip; they just know everything you type. Including passwords. Keyloggers generate a logfile, which can be (in some cases) sent via email to the guy who is spying on you&amp;hellip; and in other cases, they just generate a textfile somewhere in the system&amp;hellip; which will eventually be downloaded, and your whole security exposed.&lt;/p&gt;</description></item><item><title>Star Trek: Into Darkness</title><link>https://www.lantean.co/posts/star-trek-into-darkness/</link><pubDate>Fri, 08 Feb 2013 18:11:38 +0000</pubDate><guid>https://www.lantean.co/posts/star-trek-into-darkness/</guid><description>&lt;p style="text-align: left;"&gt;I've gotta say this. I'm a big fan of J.J.Abrams director. He managed to develop a fresh sci-fy style, which looks really attractive. If you compare science fictions movies from the past 10 years, with the latest Star Trek: Into Darkness movie... you'd be impressed.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/star-trek-into-darkness1.png"&gt;&lt;img class="aligncenter size-full wp-image-1093" title="Star Trek: Into Darkness" alt="Star Trek: Into Darkness" src="https://www.lantean.co/wp-content/uploads/2013/02/star-trek-into-darkness1.png" width="628" height="400" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What i like the most of the new movies is the way they&amp;rsquo;ve recreated the whole Trek technology. I&amp;rsquo;m not into hi tech visual effects&amp;hellip; but the technology that&amp;rsquo;s shown into the movie could deceit even guys with PhD&amp;rsquo;s&amp;hellip; the transporter looks super real!.&lt;/p&gt;</description></item><item><title>New iPhone Jailbreak Released</title><link>https://www.lantean.co/posts/iphone-jailbreak/</link><pubDate>Wed, 06 Feb 2013 21:52:30 +0000</pubDate><guid>https://www.lantean.co/posts/iphone-jailbreak/</guid><description>&lt;p style="text-align: left;"&gt;It's been a while since the last iPhone jailbreak was made public. But all evil comes to an end, sooner rather than later. A couple days ago, a hacking group named evad3rs, published a brand new Jailbreak tool for iOS 6.x.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s claimed to be able to jailbreak any iOS device: iPod / iPad / iPhone / iPad Mini. I&amp;rsquo;ve tested it myself on two devices: iPhone 4s and iPhone 5. The results were impressive. They managed to combine at least 3 different exploits to make things work.&lt;/p&gt;</description></item><item><title>Checking the UUID of a DSYM file</title><link>https://www.lantean.co/posts/checking-the-uuid-of-a-dsym-file/</link><pubDate>Tue, 05 Feb 2013 12:43:35 +0000</pubDate><guid>https://www.lantean.co/posts/checking-the-uuid-of-a-dsym-file/</guid><description>&lt;p&gt;So&amp;hellip; you&amp;rsquo;ve got a crashlog, and you don&amp;rsquo;t know if a given DSYM actually matches with the original executable?. Well, there is a super easy way to verify this. Simply type the following, in your console:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dwarfdump &lt;span style="color:#f92672"&gt;-&lt;/span&gt;u Project.app.dSYM&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Contents&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Resources&lt;span style="color:#f92672"&gt;/&lt;/span&gt;DWARF&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Project&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ideally, mdfind should help you locate the matching DWARF. But sometimes&amp;hellip; symbolication requires extra debugging.&lt;/p&gt;</description></item><item><title>Crashing a Mac Easily</title><link>https://www.lantean.co/posts/easily-crashing-a-mac/</link><pubDate>Sat, 02 Feb 2013 17:53:43 +0000</pubDate><guid>https://www.lantean.co/posts/easily-crashing-a-mac/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/crashing-a-mac1.png"&gt;&lt;img class="size-full wp-image-840 aligncenter" alt="crashing-a-mac" src="https://www.lantean.co/wp-content/uploads/2013/02/crashing-a-mac1.png" width="431" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;So... you thought that OSX was the most stable OS ever developed... right?. Guess what... you can crash it super easily. Just try the following...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open any OSX app. For instance, Safari.&lt;/li&gt;
&lt;li&gt;Type in the location bar the following string:  File:///&lt;/li&gt;
&lt;li&gt;See the crash onscreen?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s been reported in OpenRadar, and astonishingly, it&amp;rsquo;s only affecting the latest incarnation of OSX, Mountain Lion. You can crash Chrome, Safari&amp;hellip; and probably, any app you&amp;rsquo;ve got installed.&lt;/p&gt;</description></item><item><title>Extending CodeIgniter Parser to support Objects</title><link>https://www.lantean.co/posts/extending-codeigniter-parser-to-support-objects/</link><pubDate>Fri, 01 Feb 2013 19:46:30 +0000</pubDate><guid>https://www.lantean.co/posts/extending-codeigniter-parser-to-support-objects/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/02/code-igniter.png"&gt;&lt;img class="alignleft size-thumbnail wp-image-799" style="margin-left: 10px; margin-right: 10px;" title="CodeIgniter" alt="CodeIgniter" src="https://www.lantean.co/wp-content/uploads/2013/02/code-igniter.png" width="150" height="150" /&gt;&lt;/a&gt;I really like codeIgniter, since it&amp;rsquo;s super lightweight, and its learning curve is super small. You can get to build a whole website within just a couple days, even with database support.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve written myself a e-commerce website in just two weeks, without having previous knowledge on the technology. Now, let&amp;rsquo;s get to business.&lt;/p&gt;
&lt;p&gt;What happens when you&amp;rsquo;re writing a view (php based), and you need to display a variable?. Well, you&amp;rsquo;ve got, essentially, two options. To begin with, you can simply invoke the php &amp;rsquo;echo&amp;rsquo; routine, by doing something like this:&lt;/p&gt;</description></item><item><title>Xcode 4.6 Released!</title><link>https://www.lantean.co/posts/xcode-4-6-released/</link><pubDate>Tue, 29 Jan 2013 20:47:08 +0000</pubDate><guid>https://www.lantean.co/posts/xcode-4-6-released/</guid><description>&lt;p&gt;Head your browsers to &lt;a title="Apple Development Center" href="http://developer.apple.com"&gt;Apple&amp;rsquo;s Development Center&lt;/a&gt;. Apple has just released Xcode 4.6, with iOS 6.1 support (Release!).&lt;/p&gt;
&lt;p&gt;So far it has proven to be sooooo much stable. The previous release was a nightmare, specially during summertime. (Those of you who run Xcode on macbooks understand me&amp;hellip; the entire machine turns into an iron!).&lt;/p&gt;
&lt;p&gt;However, i&amp;rsquo;ve been reading quite a lot of reports, from many different sources, pointing out that although 4.6 &lt;em&gt;freezes less&lt;/em&gt;, it still has a couple of severe bugs, that will lower your productivity.&lt;/p&gt;</description></item><item><title>Disabling Jetpack Stats</title><link>https://www.lantean.co/posts/disabling-jetpack-stats/</link><pubDate>Tue, 29 Jan 2013 20:41:55 +0000</pubDate><guid>https://www.lantean.co/posts/disabling-jetpack-stats/</guid><description>&lt;p&gt;So&amp;hellip; you just connected Jetpack to wordpress.com, and you can&amp;rsquo;t figure out how to disable the stats module&amp;hellip; right?.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s fairly easy. Firt, head to the admin, an click &amp;lsquo;Jetpack&amp;rsquo; on the left menu. Then, click the &lt;strong&gt;&amp;lsquo;Learn More&amp;rsquo; &lt;/strong&gt;button in the &lt;strong&gt;&amp;lsquo;Wordpress Stats&amp;rsquo;&lt;/strong&gt; section. You should be seeing the following:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/deactivate-jetpack-stats.png"&gt;&lt;img class="aligncenter size-full wp-image-784" alt="deactivate-jetpack-stats" src="https://www.lantean.co/wp-content/uploads/2013/01/deactivate-jetpack-stats.png" width="488" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice the &amp;lsquo;Deactivate&amp;rsquo; button that appeared, right by the &amp;lsquo;Learn More&amp;rsquo; button?. Click it.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s it&amp;hellip; Wordpress Stats should be disabled by now!&lt;/p&gt;</description></item><item><title>We got a new domain!</title><link>https://www.lantean.co/posts/we-got-a-new-domain/</link><pubDate>Tue, 29 Jan 2013 13:55:44 +0000</pubDate><guid>https://www.lantean.co/posts/we-got-a-new-domain/</guid><description>&lt;p&gt;Well, as you might have noticed, we&amp;rsquo;ve got a brand new domain: lantean.co. This is sort of an experiment to me, to see if rankings can actually improve by leaving behind the .com.ar domain. (Since this site is written, essentially, in english, and .com.ar is geotargetted for Argentina).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/updating-domain-name.png"&gt;&lt;img class="aligncenter" alt="updating-domain-name" src="https://www.lantean.co/wp-content/uploads/2013/01/updating-domain-name.png" width="303" height="111" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What was done in order to attempt to prevent drops in rankings?.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;301 redirects from the old domain. How?. the .htaccess looks like this:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RewriteCond &lt;span style="color:#f92672"&gt;%&lt;/span&gt;{HTTP_HOST} &lt;span style="color:#f92672"&gt;!^&lt;/span&gt;www.lantean.co&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; [NC]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RewriteRule &lt;span style="color:#f92672"&gt;^&lt;/span&gt;(.&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; [R&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;301&lt;/span&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve indicated Google Webmaster Tools that the website has been moved. &lt;a href="http://support.google.com/webmasters/bin/answer.py?hl=en&amp;amp;answer=83105" title="Google Webmaster Tools"&gt;Here&lt;/a&gt; are the details.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve crossed my fingers!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Stay tuned for updates!&lt;/p&gt;</description></item><item><title>Fixing 'Could Not Read from Device' Xcode Error</title><link>https://www.lantean.co/posts/fixing-could-not-read-from-device-xcode-error/</link><pubDate>Mon, 28 Jan 2013 15:04:51 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-could-not-read-from-device-xcode-error/</guid><description>&lt;p&gt;Did you just get this error while trying to run your app in Xcode?&amp;hellip;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/could-not-read-from-device.png"&gt;&lt;img class="aligncenter size-full wp-image-775" title="Could not read from device" alt="Could not read from device" src="https://www.lantean.co/wp-content/uploads/2013/01/could-not-read-from-device.png" width="411" height="126" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The fix is fairly simple. Simply launch iTunes, make sure the device is plugged in, and synchronize. The error should be gone by now.&lt;/p&gt;
&lt;p&gt;Told you, it was a quick fix!&lt;/p&gt;</description></item><item><title>Knowing Memory Usage in iOS</title><link>https://www.lantean.co/posts/knowing-memory-usage-in-ios/</link><pubDate>Mon, 28 Jan 2013 14:55:41 +0000</pubDate><guid>https://www.lantean.co/posts/knowing-memory-usage-in-ios/</guid><description>&lt;p&gt;This task is quite straightforward. First, import the following headers:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#import &amp;lt;mach/mach.h&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#import &amp;lt;mach/mach_host.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now what?. Simple&amp;hellip; use this method:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-(&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;printMemoryUsage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mach_port_t host_port;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mach_msg_type_number_t host_size;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vm_size_t pagesize;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; host_port &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mach_host_self();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; host_size &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(vm_statistics_data_t) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(integer_t);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; host_page_size(host_port, &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;pagesize);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vm_statistics_data_t vm_stat;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;vm_stat, &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;host_size) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; KERN_SUCCESS)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;Failed to fetch vm statistics&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Stats in bytes */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; natural_t mem_used &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (vm_stat.active_count &lt;span style="color:#f92672"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vm_stat.inactive_count &lt;span style="color:#f92672"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vm_stat.wire_count) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; pagesize;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; natural_t mem_free &lt;span style="color:#f92672"&gt;=&lt;/span&gt; vm_stat.free_count &lt;span style="color:#f92672"&gt;*&lt;/span&gt; pagesize;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; natural_t mem_total &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mem_used &lt;span style="color:#f92672"&gt;+&lt;/span&gt; mem_free;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;used: %u free: %u total: %u&amp;#34;&lt;/span&gt;, mem_used, mem_free, mem_total);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Credits: This is a snippet taken &lt;a href="http://stackoverflow.com/questions/5012886/knowing-available-ram-on-an-ios-device"&gt;from&lt;/a&gt; this Stackoverflow question.&lt;/p&gt;</description></item><item><title>Intel to stop making Motherboards!?!?!?</title><link>https://www.lantean.co/posts/intel-to-stop-making-motherboards/</link><pubDate>Sun, 27 Jan 2013 11:43:53 +0000</pubDate><guid>https://www.lantean.co/posts/intel-to-stop-making-motherboards/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/intel1.png"&gt;&lt;img class="size-full wp-image-767 alignnone" alt="intel" src="https://www.lantean.co/wp-content/uploads/2013/01/intel1.png" width="600" height="212" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Intel hardware has been always regarded as the &amp;lsquo;most stable&amp;rsquo; piece of electronics you could buy. After all, they&amp;rsquo;re the ones building Intel Microprocessors, so they really know what they&amp;rsquo;re doing.&lt;/p&gt;
&lt;p&gt;As everyone knows, iPads have been dooming PC&amp;rsquo;s sales for the last couple years, since their introduction in 2010. Early this week, Intel announced that by 2016 they&amp;rsquo;ll stop building their own branded motherboards.&lt;/p&gt;
&lt;p&gt;So, it seems, desktop PCs already have its days numbered. Will tablet-pcs be able to fully replace them?. Of course not. We, developers, need processing power that far exceeds the capacity of ARM chips.&lt;/p&gt;</description></item><item><title>Free iPhone MAME Emulator</title><link>https://www.lantean.co/posts/free-iphone-mame-emulator/</link><pubDate>Sun, 27 Jan 2013 11:35:22 +0000</pubDate><guid>https://www.lantean.co/posts/free-iphone-mame-emulator/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/iPhone-mame.png"&gt;&lt;img class="aligncenter size-medium wp-image-763" title="iPhone mame" alt="iPhone mame" src="https://www.lantean.co/wp-content/uploads/2013/01/iPhone-mame.png" width="300" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From time to time, Apple&amp;rsquo;s Review Team, for whatever reason, allows Apps that clearly violate the AppStore guidelines.&lt;/p&gt;
&lt;p&gt;This time, &lt;a title="iPhone Mame Emulator" href="https://itunes.apple.com/us/app/gridlee/id595117070?mt=8&amp;amp;ign-mpt=uo%3D4"&gt;Gridlee&lt;/a&gt; managed to got in. It&amp;rsquo;s free, and it&amp;rsquo;s somewhere around 85 megabytes. You can expect it to be removed sooner rather than later&amp;hellip; so my recommendation would be&amp;hellip; go and get it!.&lt;/p&gt;
&lt;p&gt;You can install any ROMs you might have already downloaded. Playing Choplifter on an iPad Retina isn&amp;rsquo;t hi-tech, but i&amp;rsquo;ve always said, old school games are the best. You don&amp;rsquo;t need complex 3d algorithms, shadows, or near-perfect water effects to have fun.&lt;/p&gt;</description></item><item><title>New iPhone Jailbreak!</title><link>https://www.lantean.co/posts/new-iphone-jailbreak/</link><pubDate>Sun, 27 Jan 2013 11:26:43 +0000</pubDate><guid>https://www.lantean.co/posts/new-iphone-jailbreak/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/iphone-jailbreak.jpg"&gt;&lt;img class="aligncenter size-full wp-image-760" alt="iphone-jailbreak" src="https://www.lantean.co/wp-content/uploads/2013/01/iphone-jailbreak.jpg" width="600" height="512" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Today, a new iPhone Jailbreak solution, has been announced to be already on its way. iOS 6.0 and 6.1 beta 4 have been both jailbroken, and the team is waiting for iOS 6.1 final release to launch the goodies!.&lt;/p&gt;
&lt;p&gt;If you have a previous iOS version, and you still wanna jailbreak your device, you should head to &lt;a href="http://www.jailbreakmatrix.com/" rel="nofollow"&gt;this&lt;/a&gt; site. They have a nice archive of every JB solution that got released.&lt;/p&gt;</description></item><item><title>Install mongoDB on a Mac!</title><link>https://www.lantean.co/posts/install-mongodb-on-a-mac/</link><pubDate>Sat, 26 Jan 2013 11:13:11 +0000</pubDate><guid>https://www.lantean.co/posts/install-mongodb-on-a-mac/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/mongo-db.png"&gt;&lt;img class="size-full wp-image-756 aligncenter" title="mongoDB on a Mac" alt="mongoDB on a Mac" src="https://www.lantean.co/wp-content/uploads/2013/01/mongo-db.png" width="221" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MongoDB is a NoSQL database, free of charge. The beauty of mongo relies on its schema-less design&amp;hellip; you can add and remove fields, without doing &amp;lsquo;alter table&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;Your information gets stored in JSON, which is  seriously interesting, specially if you work with iOS / Android Apps, and the communications layer works in json.&lt;/p&gt;
&lt;p&gt;So.. fire up a browser, and head to &lt;a href="http://www.mongodb.org/downloads"&gt;this urls&lt;/a&gt;. Assuming you&amp;rsquo;re running OSX (like me!), you&amp;rsquo;d need the mac binary, which is about 60 megabytes.&lt;/p&gt;</description></item><item><title>Top 5 iPhone Games</title><link>https://www.lantean.co/posts/top-5-iphone-games/</link><pubDate>Fri, 25 Jan 2013 21:58:23 +0000</pubDate><guid>https://www.lantean.co/posts/top-5-iphone-games/</guid><description>&lt;p&gt;Do you usually spend time waiting for a bus&amp;hellip; without anything to do?. And how about when there is nothing on TV? what do you do?. Or&amp;hellip; say&amp;hellip; you&amp;rsquo;ve just finished that book you&amp;rsquo;ve been reading for months, and you have no clue what to do with your spare time!.&lt;/p&gt;
&lt;p&gt;If you answer &amp;lsquo;yes&amp;rsquo; to any of the above questions, then this short list of Top 5 iPhone Games is just for you!.&lt;/p&gt;</description></item><item><title>Do Macs need Antivirus?. Yeah, they do!</title><link>https://www.lantean.co/posts/antivirus-for-mac/</link><pubDate>Wed, 23 Jan 2013 23:53:26 +0000</pubDate><guid>https://www.lantean.co/posts/antivirus-for-mac/</guid><description>&lt;p&gt;&lt;img class="alignleft size-medium wp-image-681" style="margin-left: 5px; margin-right: 5px;" alt="MacbookPro" src="https://www.lantean.co/wp-content/uploads/2013/01/MacbookPro.jpg" width="149" height="110" /&gt;So&amp;hellip; you own an iMac.. maybe a Macbook Pro, or maybe you&amp;rsquo;re one of the lucky owners of a Mac Pro. You&amp;rsquo;ve been watching ads for the last ten years&amp;hellip; you bought it all, and you feel safe just because it&amp;rsquo;s not a windows&amp;hellip; right?.&lt;/p&gt;
&lt;p&gt;Well&amp;hellip; things are not the way they were a couple years ago. As Apple gained more and more marketshare, virus developers turned their eyes on our belived OSX system. Since Java virtual machine has been found to be buggy&amp;hellip; several viruses that affected Mac have been caught in the wild.&lt;/p&gt;</description></item><item><title>Bruteforcing Http Auth on OSX</title><link>https://www.lantean.co/posts/bruteforcing-http-auth-on-osx/</link><pubDate>Tue, 22 Jan 2013 23:46:02 +0000</pubDate><guid>https://www.lantean.co/posts/bruteforcing-http-auth-on-osx/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2013/01/password-cracking.jpg"&gt;&lt;img class="alignleft size-thumbnail wp-image-690" style="margin: 10px;" title="Bruteforcing" alt="password-cracking" src="https://www.lantean.co/wp-content/uploads/2013/01/password-cracking.jpg" width="150" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Suppose you forgot the password of your router. What can you do?&amp;hellip;. should you just reset the device?.
Nahhhh&amp;hellip;. that&amp;rsquo;s boring. That&amp;rsquo;s why we&amp;rsquo;re gonna try to bruteforce http basic authentication.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re assuming that you run some incarnation of OSX, and you have &lt;a title="Mac Ports" href="http://www.macports.org/" rel="nofollow"&gt;Mac Ports&lt;/a&gt; installed. Right?.
We&amp;rsquo;ll need to download hydra&amp;hellip; a bruteforce tool&amp;hellip; so&amp;hellip; fire up a terminal, and type the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo port install hydra&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So far so good. Now, we&amp;rsquo;re gonna need to create our own password list. In order to do so, we&amp;rsquo;ll rely on crunch. It&amp;rsquo;s a nice shell tool, that builds on OSX as well. Download it &lt;a title="Crunch" href="http://sourceforge.net/projects/crunch-wordlist/files/" rel="nofollow"&gt;here&lt;/a&gt; first. If you get any troubles building it, try typing:&lt;/p&gt;</description></item><item><title>Running airmon-ng in mountain lion!</title><link>https://www.lantean.co/posts/running-airmon-ng-in-mountain-lion/</link><pubDate>Mon, 21 Jan 2013 22:54:11 +0000</pubDate><guid>https://www.lantean.co/posts/running-airmon-ng-in-mountain-lion/</guid><description>&lt;p&gt;&lt;a href="http://www.aircrack-ng.org/" rel="nofollow"&gt;&lt;img class="size-full wp-image-694 alignleft" style="margin: 10px;" alt="aircrack-ng" src="https://www.lantean.co/wp-content/uploads/2013/01/aircrack-ng.jpg" width="226" height="110" /&gt;&lt;/a&gt;For those of you who have no clue what is all of this about, Aircrack-ng is a command line tool that allows you to bruteforce WEP and WPA wi-fi password protections.&lt;/p&gt;
&lt;p&gt;WEP being the easiest protection to break, and WPA the hardest. The difference?. WEP can be broken in&amp;hellip; two days, give or take (probably less than that), while WPA could take months&amp;hellip; without results!. Personally, everytime i needed to break a WEP protection, i had to boot a linux system. If you&amp;rsquo;re like me, and you&amp;rsquo;d rather staying in OSX, this is juuuuust for you.&lt;/p&gt;</description></item><item><title>Optimizing TwentyEleven for Adsense</title><link>https://www.lantean.co/posts/optimizing-twentyeleven-for-adsense/</link><pubDate>Mon, 21 Jan 2013 20:20:34 +0000</pubDate><guid>https://www.lantean.co/posts/optimizing-twentyeleven-for-adsense/</guid><description>&lt;p&gt;Well&amp;hellip; this one is pretty descriptive. You simply need to edit the file &amp;lsquo;style.css&amp;rsquo;, and update the following code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.one&lt;span style="color:#f92672"&gt;-&lt;/span&gt;column &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt;page {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	max&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width: &lt;span style="color:#ae81ff"&gt;960&lt;/span&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* 	max-width: 690px; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You&amp;rsquo;re also probably gonna need to set the Default Layout to &amp;lsquo;One Column&amp;rsquo;, and remove the right side widgets.&lt;/p&gt;
&lt;p&gt;That way, Adsense&amp;rsquo;s best size (728x90) will fit riiight above or below every post. Which makes it look nice, i dare to say!.&lt;/p&gt;</description></item><item><title>Make your Website load Faster!</title><link>https://www.lantean.co/posts/make-your-website-load-faster/</link><pubDate>Mon, 21 Jan 2013 11:34:06 +0000</pubDate><guid>https://www.lantean.co/posts/make-your-website-load-faster/</guid><description>&lt;p&gt;I had to optimize a website, a couple days ago. My goal was to lower the time required to load the website. So&amp;hellip; i spent quite some time doing a quick research&amp;hellip; and found this &lt;a title="ImageOptim" href="http://imageoptim.com/" rel="nofollow"&gt;awesome tool&lt;/a&gt;, which by the way is free!.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/make-your-website-load-faster/screen-shot-2013-01-21-at-11-08-54-am/" rel="attachment wp-att-584"&gt;&lt;img class="size-full wp-image-584 aligncenter" alt="Screen Shot 2013-01-21 at 11.08.54 AM" src="https://www.lantean.co/wp-content/uploads/2013/01/Screen-Shot-2013-01-21-at-11.08.54-AM.png" width="413" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s called ImageOptim. You simply drag &amp;amp; drop the assets you&amp;rsquo;d like to compress, and the guy will do the rest. I&amp;rsquo;ve been able to compress most of the images i&amp;rsquo;ve got, to 50% of their original size.&lt;/p&gt;</description></item><item><title>App Review: Reeder</title><link>https://www.lantean.co/posts/app-review-reeder/</link><pubDate>Mon, 21 Jan 2013 10:18:23 +0000</pubDate><guid>https://www.lantean.co/posts/app-review-reeder/</guid><description>&lt;p&gt;I&amp;rsquo;ve tried several RSS Readers for Mac. Many of them are free&amp;hellip; such as Google Reader, or &lt;a title="App Review: Cappuccino" href="https://www.lantean.co/app-review-capuccino/"&gt;Capuccino&lt;/a&gt;. But a couple weeks ago i sumbled upon &lt;a href="http://reederapp.com/" rel="nofollow"&gt;Reeder&lt;/a&gt;. I dare to say&amp;hellip; it&amp;rsquo;s the best RSS Reader you&amp;rsquo;ll be able to find, anywhere else.&lt;/p&gt;
&lt;p&gt;Why is that?. Well, the UI is pretty awesome&amp;hellip; take a look:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/app-review-reeder/reeder/" rel="attachment wp-att-580"&gt;&lt;img class="alignnone size-full wp-image-580" alt="reeder" src="https://www.lantean.co/wp-content/uploads/2013/01/reeder.png" width="1173" height="619" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reeder has several UI styles. Personally, i use the layout portraited above. You get your feed list on the left&amp;hellip; the posts in the middle, and the actual post on the right.&lt;/p&gt;</description></item><item><title>Adding Adsense to your blog</title><link>https://www.lantean.co/posts/adding-adsense-to-your-blog/</link><pubDate>Mon, 21 Jan 2013 10:06:02 +0000</pubDate><guid>https://www.lantean.co/posts/adding-adsense-to-your-blog/</guid><description>&lt;p&gt;This is probably trivial to everyone around, but i&amp;rsquo;d like to share it anyways.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Signup for an account here: adsense.google.com&lt;/li&gt;
&lt;li&gt;Wait till you get the first &amp;lsquo;Site in Review&amp;rsquo; mail.&lt;/li&gt;
&lt;li&gt;Once you got access to the Adsense main page, hit &amp;lsquo;My Ads&amp;rsquo;, and create a brand new ad.&lt;/li&gt;
&lt;li&gt;Copy the source code for the ad!.&lt;/li&gt;
&lt;li&gt;Install the required plugin&amp;hellip;
&lt;ol&gt;
&lt;li&gt;If you&amp;rsquo;re using Wordpress, i suggest you try this plugin: http://wordpress.org/extend/plugins/quick-adsense/&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re using Blogger, just hit the settings, it&amp;rsquo;s already integrated.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Setup QuickAdsense (or Blogger). If you dare, you can always simply inject the ad-code yourself.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No matter what, please, remember the adsense guidelines. It&amp;rsquo;s pretty simple&amp;hellip; don&amp;rsquo;t click your own ads, and.. don&amp;rsquo;t steal content!. That includes youtube music videos, and piracy.&lt;/p&gt;</description></item><item><title>Setting OSX Firmware Password</title><link>https://www.lantean.co/posts/setting-osx-firmware-password/</link><pubDate>Fri, 18 Jan 2013 15:14:13 +0000</pubDate><guid>https://www.lantean.co/posts/setting-osx-firmware-password/</guid><description>&lt;p&gt;OSX is a strong and secure system. Until you realize there is a feature called &amp;lsquo;single user login&amp;rsquo;&amp;hellip; which virtually grants you ROOT access, provided that you have physical access to the target machine.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot the system.&lt;/li&gt;
&lt;li&gt;Press CMD + S.&lt;/li&gt;
&lt;li&gt;You should get a bash shell, with ROOT permissions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That sucks, pretty much. There is just no single password screen. If you have the machine, you can access its files. How do we prevent this????.&lt;/p&gt;</description></item><item><title>Using NSLocalizedString with a dictionary stored inside a bundle</title><link>https://www.lantean.co/posts/using-nslocalizedstring-with-a-dictionary-stored-inside-a-bundle/</link><pubDate>Wed, 16 Jan 2013 20:29:52 +0000</pubDate><guid>https://www.lantean.co/posts/using-nslocalizedstring-with-a-dictionary-stored-inside-a-bundle/</guid><description>&lt;p&gt;We&amp;rsquo;ve seen before &lt;a title="Making an iOS Assets Bundle" href="https://www.lantean.co/making-an-ios-assets-bundle/"&gt;how to create an iOS Assets bundle&lt;/a&gt;. Today, we&amp;rsquo;ll try to localize a string, using a dictionary stored in a bundle. In order to do so&amp;hellip; we&amp;rsquo;ll rely on the following helper method:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@interface&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;LABundles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+ (NSBundle&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;someResourcesLocalizationBundle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@implementation&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;LABundles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+ (NSBundle&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;someResourcesLocalizationBundle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; NSBundle&lt;span style="color:#f92672"&gt;*&lt;/span&gt; someResourcesLocalizationBundle &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nil;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ( someResourcesLocalizationBundle &lt;span style="color:#f92672"&gt;==&lt;/span&gt; nil )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#75715e"&gt;// This double check increases efficiency. Don&amp;#39;t you get bored of asking the same thing twice?.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;@synchronized&lt;/span&gt;(self)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ( someResourcesLocalizationBundle &lt;span style="color:#f92672"&gt;==&lt;/span&gt; nil )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#75715e"&gt;// Figure out the current language.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 		NSUserDefaults&lt;span style="color:#f92672"&gt;*&lt;/span&gt; defs &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSUserDefaults standardUserDefaults];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSArray&lt;span style="color:#f92672"&gt;*&lt;/span&gt; languages &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [defs objectForKey:&lt;span style="color:#e6db74"&gt;@&amp;#34;AppleLanguages&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSString&lt;span style="color:#f92672"&gt;*&lt;/span&gt; currentLanguage &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [languages objectAtIndex:&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#75715e"&gt;// Map the current language&amp;#39;s folder within the bundle
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSBundle&lt;span style="color:#f92672"&gt;*&lt;/span&gt; bundle &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSBundle someResourcesBundle];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSString&lt;span style="color:#f92672"&gt;*&lt;/span&gt; path &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [bundle pathForResource:currentLanguage ofType:&lt;span style="color:#e6db74"&gt;@&amp;#34;lproj&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#75715e"&gt;// Okay, let&amp;#39;s go with the default bundle
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ( path &lt;span style="color:#f92672"&gt;==&lt;/span&gt; nil )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; someResourcesLocalizationBundle &lt;span style="color:#f92672"&gt;=&lt;/span&gt; bundle;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#75715e"&gt;// Bingo!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; someResourcesLocalizationBundle &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSBundle bundleWithPath:path];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [someResourcesLocalizationBundle &lt;span style="color:#66d9ef"&gt;retain&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; someResourcesLocalizationBundle;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; 
What&amp;rsquo;s that all about?. Well&amp;hellip; it turns out that order to resolve localized strings, first of all we need to figure out what&amp;rsquo;s the device&amp;rsquo;s language.&lt;/p&gt;</description></item><item><title>Loading UIImages from files stored inside a bundle</title><link>https://www.lantean.co/posts/loading-uiimages-from-files-stored-inside-a-bundle/</link><pubDate>Wed, 16 Jan 2013 20:28:45 +0000</pubDate><guid>https://www.lantean.co/posts/loading-uiimages-from-files-stored-inside-a-bundle/</guid><description>&lt;p&gt;We&amp;rsquo;ve learnt before &lt;a title="Making an iOS Assets Bundle" href="https://www.lantean.co/making-an-ios-assets-bundle/"&gt;how to make an iOS Assets Bundle&lt;/a&gt;. In this mini post&amp;hellip; we&amp;rsquo;ll learn how to learn images, stored in bundles. Okay.. this one is super simple:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;UIImage&lt;span style="color:#f92672"&gt;*&lt;/span&gt; twitterBtnImage &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [UIImage imageNamed:&lt;span style="color:#e6db74"&gt;@&amp;#34;SomeResources.bundle/twitter-button.png&amp;#34;&lt;/span&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Of course, you need to have the &amp;lsquo;SomeResources&amp;rsquo; bundle in your project. That&amp;rsquo;s it!&lt;/p&gt;</description></item><item><title>Loading NIBs stored inside a bundle</title><link>https://www.lantean.co/posts/loading-nibs-stored-inside-a-bundle/</link><pubDate>Wed, 16 Jan 2013 20:27:07 +0000</pubDate><guid>https://www.lantean.co/posts/loading-nibs-stored-inside-a-bundle/</guid><description>&lt;p&gt;When does it make sense to store your NIBs inside a bundle?. As we&amp;rsquo;ve discussed &lt;a title="Making an iOS Assets Bundle" href="https://www.lantean.co/making-an-ios-assets-bundle/"&gt;before&lt;/a&gt;&amp;hellip; this becomes handy when you&amp;rsquo;re distributing a framework which has some custom NIB files.&lt;/p&gt;
&lt;p&gt;But wait&amp;hellip;. how do you tell a UIViewController to load its nib file from a bundle?. Short answer&amp;hellip; we&amp;rsquo;ll rely on UIViewController&amp;rsquo;s &amp;lsquo;initWithNibName: bundle:&amp;rsquo; constructor.&lt;/p&gt;
&lt;p&gt;Before doing that&amp;hellip; we need to take care about a small detail, which is, how to load a NSBundle object (to pass on as the &amp;lsquo;bundle&amp;rsquo; parameter).&lt;/p&gt;</description></item><item><title>Making an iOS Assets Bundle</title><link>https://www.lantean.co/posts/making-an-ios-assets-bundle/</link><pubDate>Wed, 16 Jan 2013 20:16:41 +0000</pubDate><guid>https://www.lantean.co/posts/making-an-ios-assets-bundle/</guid><description>&lt;p&gt;An iOS Bundle is just a folder which contains resources. Roughly speaking,  it allows you to store any resource you might need: images, nibs, or localized string files.&lt;/p&gt;
&lt;p&gt;Why would you create an application bundle?. What&amp;rsquo;s that good for?.&lt;/p&gt;
&lt;p&gt;Suppose you have a framework of your own. And&amp;hellip; suppose that your framework has several UIViewController which require custom images. OR, suppose that you need to load different images dynamically, within your framework&amp;rsquo;s code.&lt;/p&gt;</description></item><item><title>Showing current folder in Terminal's Title</title><link>https://www.lantean.co/posts/showing-current-folder-in-terminals-title/</link><pubDate>Wed, 16 Jan 2013 19:55:07 +0000</pubDate><guid>https://www.lantean.co/posts/showing-current-folder-in-terminals-title/</guid><description>&lt;p&gt;This is a nice trick i&amp;rsquo;ve learnt not long ago. Nice, and useful. If you run OSX, and you&amp;rsquo;d like Terminal to display the current folder, in its title&amp;hellip; to looks something like this:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/showing-current-folder-in-terminals-title/terminaltitle/" rel="attachment wp-att-532"&gt;&lt;img class="size-full wp-image-532 aligncenter" alt="TerminalTitle" src="https://www.lantean.co/wp-content/uploads/2013/01/TerminalTitle.jpg" width="581" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All you need to do is to edit the .profile in your home directory, and type the following line:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export PROMPT_COMMAND&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;echo &lt;span style="color:#f92672"&gt;-&lt;/span&gt;ne &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\033&lt;/span&gt;&lt;span style="color:#e6db74"&gt;]0;[${PWD/$HOME/~}]&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\007&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nice, right?&lt;/p&gt;</description></item><item><title>Manually Symbolicating iOS Crashlogs</title><link>https://www.lantean.co/posts/manually-symbolicating-ios-crashlogs/</link><pubDate>Wed, 16 Jan 2013 19:39:23 +0000</pubDate><guid>https://www.lantean.co/posts/manually-symbolicating-ios-crashlogs/</guid><description>&lt;p&gt;I&amp;rsquo;ve been facing this problem for as long as i&amp;rsquo;ve been developing iOS apps. What&amp;rsquo;s the deal with crashlogs????&amp;hellip;..&lt;/p&gt;
&lt;p&gt;Apple allows you to download crashlogs through iTunesConnect. What are crashlogs you may say. Well, crashlogs are simply text files that allows us to debug crashes. You get to see the Stack Dump at the moment of the crash, as well as the architecture, and loaded libraries.&lt;/p&gt;
&lt;p&gt;What is symbolication??&amp;hellip; well, the crashes you download in iTunesConnect aren&amp;rsquo;t useful, unless you&amp;rsquo;ve got the dSYM file matching that crashlog. If you do, you&amp;rsquo;ll be able to symbolicate it. That means that&amp;hellip; instead of seeing memory addresses in the stack dump, you&amp;rsquo;ll get to see method and class names.&lt;/p&gt;</description></item><item><title>Adding support for iPhone 5 screens</title><link>https://www.lantean.co/posts/adding-support-for-iphone-5-screens/</link><pubDate>Wed, 16 Jan 2013 18:18:20 +0000</pubDate><guid>https://www.lantean.co/posts/adding-support-for-iphone-5-screens/</guid><description>&lt;p&gt;Not long ago, i had to extend an app to support iPhone 5. Yes&amp;hellip; iOS has autolayout functionality, that should aid the development of UIView&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;But how about assets?. How do you load assets specially crafted for 568px height screens?. Furthermore.. how do you patch classes that inherit from UITableViewCell, to return dynamic height, according to the device?.&lt;/p&gt;
&lt;p&gt;Simple!. By means of a super short UIScreen extension. The header should look like this&amp;hellip;:&lt;/p&gt;</description></item><item><title>Calculating NSData's MD5</title><link>https://www.lantean.co/posts/calculating-nsdatas-md5/</link><pubDate>Wed, 16 Jan 2013 14:26:21 +0000</pubDate><guid>https://www.lantean.co/posts/calculating-nsdatas-md5/</guid><description>&lt;p&gt;Suppose that you need to calculate a NSData&amp;rsquo;s MD5 signature.. for whatever reason. Say&amp;hellip; you need to check the backend&amp;rsquo;s signature.&lt;/p&gt;
&lt;p&gt;Well&amp;hellip; simply add a NSData extension, with the following method:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (NSString&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;md5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; result[&lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CC_MD5( self.bytes, self.length, result ); &lt;span style="color:#75715e"&gt;// This is the md5 call
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; [NSString stringWithFormat:&lt;span style="color:#e6db74"&gt;@&amp;#34;%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;], 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result[&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result[&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;11&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result[&lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;13&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;14&lt;/span&gt;], result[&lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Again, please, don&amp;rsquo;t you forget the imports!&lt;/p&gt;</description></item><item><title>Encrypting and Decrypting NSData with AES256</title><link>https://www.lantean.co/posts/encrypting-and-decrypting-nsdata-with-aes256/</link><pubDate>Wed, 16 Jan 2013 14:24:09 +0000</pubDate><guid>https://www.lantean.co/posts/encrypting-and-decrypting-nsdata-with-aes256/</guid><description>&lt;p&gt;Today we&amp;rsquo;re gonna encrypt information, stored in a NSData object, using AES-256 algorithm. As you may already know, AES-256 is a symmetric encryption schema. Which means that you need to share, somehow, the key you&amp;rsquo;re gonna use (in order to decrypt the data).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve encapsulated a couple helper methods, as a NSData extension, for the sake of simplicity. I&amp;rsquo;ve based myself on &lt;a href="http://stackoverflow.com/questions/6527761/aes-with-commoncrypto-uses-too-much-memory-objective-c" rel="nofollow"&gt;this&lt;/a&gt;. Let&amp;rsquo;s see&amp;hellip;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (NSData&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;aes256EncryptWithKey:&lt;/span&gt;(NSString&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// &amp;#39;key&amp;#39; should be 32 bytes for AES256, will be null-padded otherwise
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; keyPtr[kCCKeySizeAES256 &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bzero( keyPtr, &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;( keyPtr ) );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// fetch key data
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [key getCString:keyPtr maxLength:&lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;( keyPtr ) encoding:NSUTF8StringEncoding];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSUInteger dataLength &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [self length];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// See the doc: For block ciphers, the output size will always be less than or equal to the input size plus the size of one block.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// That&amp;#39;s why we need to add the size of one block here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; size_t bufferSize &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dataLength &lt;span style="color:#f92672"&gt;+&lt;/span&gt; kCCBlockSizeAES128;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;buffer &lt;span style="color:#f92672"&gt;=&lt;/span&gt; malloc( bufferSize );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; size_t numBytesEncrypted &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CCCryptorStatus cryptStatus &lt;span style="color:#f92672"&gt;=&lt;/span&gt; CCCrypt( kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; keyPtr, kCCKeySizeAES256,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NULL &lt;span style="color:#75715e"&gt;/* initialization vector (optional) */&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [self bytes], dataLength, &lt;span style="color:#75715e"&gt;/* input */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; buffer, bufferSize, &lt;span style="color:#75715e"&gt;/* output */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;numBytesEncrypted );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;( cryptStatus &lt;span style="color:#f92672"&gt;==&lt;/span&gt; kCCSuccess )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// The returned NSData takes ownership of the buffer and will free it on deallocation
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; free( buffer );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; nil;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now&amp;hellip; the decrypt routine&amp;hellip;&lt;/p&gt;</description></item><item><title>Encode your email in base64, and confuse spammers!</title><link>https://www.lantean.co/posts/encode-your-email-in-base64-and-confuse-spammers/</link><pubDate>Thu, 10 Jan 2013 00:36:18 +0000</pubDate><guid>https://www.lantean.co/posts/encode-your-email-in-base64-and-confuse-spammers/</guid><description>&lt;p&gt;How many of you run a website? come on! raise your hands!. Most of you should know, at this point, that publishing your email (in raw) is a pretty bad idea. Spammers, scammers, and whatsoever will target you, almost for sure.&lt;/p&gt;
&lt;p&gt;So what can you do?. Well.. you can try encoding your email in base64!. Which means that&amp;hellip; the browser will understand your email, it&amp;rsquo;ll get printed&amp;hellip; but any automated spider-bot will fail to search &amp;lsquo;@gmail&amp;rsquo;&amp;hellip; at least without consuming quite a lot of CPU power.&lt;/p&gt;</description></item><item><title>Fixing ñ characters in code-igniter</title><link>https://www.lantean.co/posts/fixing-n-characters-in-code-igniter/</link><pubDate>Wed, 09 Jan 2013 18:36:48 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-n-characters-in-code-igniter/</guid><description>&lt;p&gt;It seems this is one of the oldest issues of PHP develoment, right?. I&amp;rsquo;ve developed a PHP website, based on codeigniter framework (and a mysql database), and i ran into a lot of problems with the ñ, not showing up well in google.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what i&amp;rsquo;ve done to fix this problem:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Set the database collation / columns to utf8_general_ci (by means of phpmyadmin).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In codeigniter&amp;rsquo;s &amp;lsquo;config.php&amp;rsquo; file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;config[&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;charset&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;UTF&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In codeigniter&amp;rsquo;s &amp;lsquo;database.php&amp;rsquo;:&lt;/p&gt;</description></item><item><title>Fixing 'SAFE MODE Restriction in effect. The script whose uid is is not allowed to access /tmp' error in WordPress</title><link>https://www.lantean.co/posts/fixing-safe-mode-restriction-in-effect-the-script-whose-uid-is-is-not-allowed-to-access-tmp-error-in-wordpress/</link><pubDate>Wed, 09 Jan 2013 15:14:37 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-safe-mode-restriction-in-effect-the-script-whose-uid-is-is-not-allowed-to-access-tmp-error-in-wordpress/</guid><description>&lt;p&gt;Long short story. If you wanna update, say, a plugin, or a theme.. using wordpress, and you get the following error:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SAFE MODE Restriction &lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; effect. The script whose uid is is not allowed to access &lt;span style="color:#f92672"&gt;/&lt;/span&gt;tmp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I&amp;rsquo;ve got news for you!. It&amp;rsquo;s caused by the php_safe_mode flag. If you&amp;rsquo;re on a shared hosting, and you cannot change that flag (or maybe you just don&amp;rsquo;t want to)&amp;hellip; here&amp;rsquo;s what you need to do:&lt;/p&gt;</description></item><item><title>Fixing WebKitLocalStorageDatabasePathPreferenceKey crash</title><link>https://www.lantean.co/posts/fixing-webkitlocalstoragedatabasepathpreferencekey-crash/</link><pubDate>Mon, 07 Jan 2013 15:46:53 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-webkitlocalstoragedatabasepathpreferencekey-crash/</guid><description>&lt;p&gt;I&amp;rsquo;ve been getting a lot of crashes with the following signature:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Exception Type: SIGABRT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Exception Codes: &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; at &lt;span style="color:#ae81ff"&gt;0x351be32c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Crashed Thread: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Application Specific Information:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;***&lt;/span&gt; Terminating app due to uncaught exception &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;NSInvalidArgumentException&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;, reason: &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;[__NSCFDictionary setObject:forKey:]&lt;span style="color:#f92672"&gt;:&lt;/span&gt; attempt to insert nil value (key: WebKitLocalStorageDatabasePathPreferenceKey)&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What is this?. It&amp;rsquo;s pretty well explained &lt;a href="http://www.mail-archive.com/callback-dev@incubator.apache.org/msg03468.html" rel="nofollow"&gt;here&lt;/a&gt;.
My workaround?. Quite simple. Call this method as soon as your app launches:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-(&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;fixWebkitCrash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSUserDefaults&lt;span style="color:#f92672"&gt;*&lt;/span&gt; defaults &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSUserDefaults standardUserDefaults];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSString&lt;span style="color:#f92672"&gt;*&lt;/span&gt; webkitPath &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [defaults objectForKey:&lt;span style="color:#e6db74"&gt;@&amp;#34;WebKitLocalStorageDatabasePathPreferenceKey&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSString&lt;span style="color:#f92672"&gt;*&lt;/span&gt; bundlePath &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;([webkitPath containsString:bundlePath] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; NO)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [defaults removeObjectForKey:&lt;span style="color:#e6db74"&gt;@&amp;#34;WebKitLocalStorageDatabasePathPreferenceKey&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [defaults synchronize];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hopefully, this will save you a couple hours!.&lt;/p&gt;</description></item><item><title>Fixing 'Show in Finder'</title><link>https://www.lantean.co/posts/fixing-show-in-finder/</link><pubDate>Mon, 31 Dec 2012 18:06:50 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-show-in-finder/</guid><description>&lt;p&gt;I&amp;rsquo;ve been dealing with an annoying glitch in OSX 10.8.2. For some reason, &amp;lsquo;show in finder&amp;rsquo; breaks down&amp;hellip; on its own.&lt;/p&gt;
&lt;p&gt;The workaround is&amp;hellip;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo killall &lt;span style="color:#f92672"&gt;-&lt;/span&gt;KILL appleeventsd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s just hope a real fix shows up, sooner rather than later.&lt;/p&gt;</description></item><item><title>Adding .NFO preview support to OSX</title><link>https://www.lantean.co/posts/adding-nfo-preview-support-to-osx/</link><pubDate>Fri, 21 Dec 2012 14:18:07 +0000</pubDate><guid>https://www.lantean.co/posts/adding-nfo-preview-support-to-osx/</guid><description>&lt;p&gt;&lt;a href="https://github.com/delynn/QuickLook" rel="nofollow"&gt;This&lt;/a&gt; is a nice thing&amp;hellip; you just need to do the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; cd &lt;span style="color:#f92672"&gt;~/&lt;/span&gt;Library
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; git clone git:&lt;span style="color:#f92672"&gt;//&lt;/span&gt;github.com&lt;span style="color:#f92672"&gt;/&lt;/span&gt;delynn&lt;span style="color:#f92672"&gt;/&lt;/span&gt;QuickLook.git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fixing "iTunes was unable to load dataclass” Error</title><link>https://www.lantean.co/posts/fixing-itunes-was-unable-to-load-dataclass-error/</link><pubDate>Tue, 04 Dec 2012 13:34:15 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-itunes-was-unable-to-load-dataclass-error/</guid><description>&lt;p&gt;I&amp;rsquo;ve been dealing with the &amp;ldquo;iTunes was unable to load dataclass&amp;rdquo; for several hours.
I&amp;rsquo;ve uninstalled iTunes, Xcode, deleted the Mobile Device Support&amp;hellip; reinstalled everything, booted the system, and nothing seemed to work.&lt;/p&gt;
&lt;p&gt;After searching for quite some time, i&amp;rsquo;ve found &lt;a href="http://ktula.com/2009/03/20/how-to-fix-itunes-was-unable-to-load-dataclass-error/" rel="nofollow"&gt;this&lt;/a&gt; post. Long short story, if you delete this framework:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;System&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Library&lt;span style="color:#f92672"&gt;/&lt;/span&gt;PrivateFrameworks&lt;span style="color:#f92672"&gt;/&lt;/span&gt;MobileDevice.framework&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip;and right afterwards you relaunch Xcode (which will, as a result, reinstall such framework)&amp;hellip; you should be able to get rid of this&amp;hellip; annoooooooooying problem.&lt;/p&gt;</description></item><item><title>UITableView Pull to Refresh</title><link>https://www.lantean.co/posts/uitableview-pull-to-refresh/</link><pubDate>Sat, 24 Nov 2012 12:02:00 +0000</pubDate><guid>https://www.lantean.co/posts/uitableview-pull-to-refresh/</guid><description>&lt;p&gt;I know, i know. Apple&amp;rsquo;s iOS 6 introduces a new component (which is already available in the sdk)&amp;hellip; that allows you to refresh a table whenever the user pulls it.&lt;/p&gt;
&lt;p&gt;However&amp;hellip; not everyone is targetting iOS 6 +&amp;hellip; at least not yet. So, i&amp;rsquo;d like to share a link with you. Sam Vermette, a fellow with a couple public github repositories, did an excellent job writing an UIScrollView extension. It&amp;rsquo;s super easy to setup&amp;hellip; clean, and most of all, self contained.&lt;/p&gt;</description></item><item><title>Unlock Hidden Wallpapers in MountainLion</title><link>https://www.lantean.co/posts/unlock-hidden-wallpapers-in-mountainlion/</link><pubDate>Mon, 10 Sep 2012 22:08:53 +0000</pubDate><guid>https://www.lantean.co/posts/unlock-hidden-wallpapers-in-mountainlion/</guid><description>&lt;p&gt;Long time no see!. It must been a month, at least, since my last post. I&amp;rsquo;ve come across &lt;a title="Hidden Wallpapers" href="http://cultofmac.com.feedsportal.com/c/33797/f/606249/s/23455088/l/0L0Scultofmac0N0C1895320Cheres0Ehow0Eto0Eunlock0E430Eamazing0Ewallpapers0Ehidden0Ein0Eos0Ex0Emountain0Elion0C/story01.htm" rel="nofollow"&gt;this&lt;/a&gt; article&amp;hellip; and thought it would be a good idea to store this somewhere, so i don&amp;rsquo;t loose track.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s simple. Just open this folder:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/System/Library/Frameworks/ScreenSaver.Framework/Versions/A/Resources/Default Collections/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll find about 147 MB of high definition wallpapers, that are already bundled in your Mac, and nobody told you. They&amp;rsquo;re retina-sized (3200x3000), so if you&amp;rsquo;re using a Macbook Pro with Retina Display.. it will definitely look awesome.&lt;/p&gt;</description></item><item><title>Resetting the Push Notifications Permissions Alert on iOS</title><link>https://www.lantean.co/posts/resetting-the-push-notifications-permissions-alert-on-ios/</link><pubDate>Mon, 27 Aug 2012 19:11:45 +0000</pubDate><guid>https://www.lantean.co/posts/resetting-the-push-notifications-permissions-alert-on-ios/</guid><description>&lt;p&gt;I&amp;rsquo;m just pasting this from &lt;a href="http://developer.apple.com/library/ios/#technotes/tn2265/_index.html"&gt;Apple&amp;rsquo;s Technical note&lt;/a&gt;&amp;hellip; it&amp;rsquo;s soooo useful, yet, everytime i need to debug this, i spend at least 15 minutes with google&amp;hellip;!.&lt;/p&gt;
&lt;blockquote&gt;The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.&lt;br/&gt;
&lt;p&gt;If you want to simulate a first-time run of your app, you can leave the app uninstalled for a day. You can achieve the latter without actually waiting a day by setting the system clock forward a day or more, turning the device off completely, then turning the device back on.&lt;/blockquote&gt;&lt;/p&gt;</description></item><item><title>Fixing 'Text in UITextField moves up after editing' glitch</title><link>https://www.lantean.co/posts/458/</link><pubDate>Mon, 25 Jun 2012 17:44:36 +0000</pubDate><guid>https://www.lantean.co/posts/458/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently come across this glitch in iOS: &lt;a href="http://stackoverflow.com/questions/9674566/text-in-uitextfield-moves-up-after-editing-center-while-editing" rel="nofollow"&gt;Text in UITextField moves up after editing (center while editing).&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Long short story&amp;hellip; when you end editing a textField, if you&amp;rsquo;re using a custom font, the text might move up. (If you get this glitch). Well, it turns out that this is a font specific problem&amp;hellip; it&amp;rsquo;s not in your code.&lt;/p&gt;
&lt;p&gt;So&amp;hellip; how will we solve it?. TTX!. In &lt;a href="https://www.lantean.co/osx-renaming-fonts-for-free/"&gt;this&lt;/a&gt; previous post we explained how to make TTX work in your 64 bit mac. So we&amp;rsquo;ll begin from there.&lt;/p&gt;</description></item><item><title>resignFirstResponder, the easy way!</title><link>https://www.lantean.co/posts/resigningfirstresponder-easy-way/</link><pubDate>Tue, 19 Jun 2012 17:08:05 +0000</pubDate><guid>https://www.lantean.co/posts/resigningfirstresponder-easy-way/</guid><description>&lt;p&gt;If you have an UIControl in edit mode&amp;hellip; but you have no idea which one is it&amp;hellip; and you need to resignFirstResponder, there is an easy way to do this. No, you don&amp;rsquo;t need to hook to notifications. And you don&amp;rsquo;t need to find the firstResponder. This can be solved with just one call.&lt;/p&gt;
&lt;p&gt;What you need to do is&amp;hellip;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[_tableView endEditing:YES]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that you could have anything else rather than a _tableView.
Easy. Right?&lt;/p&gt;</description></item><item><title>CoreAnimation: Bounce animation... like the Camera button</title><link>https://www.lantean.co/posts/coreanimation-bounce-animation-like-camera-button/</link><pubDate>Thu, 14 Jun 2012 20:11:52 +0000</pubDate><guid>https://www.lantean.co/posts/coreanimation-bounce-animation-like-camera-button/</guid><description>&lt;p&gt;Have you seen the animation in which the lockscreen bounces&amp;hellip; if you tap over the camera button?. Guess what!. That can be done, quite easily, with Core Animation.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll implement this as an extension to UIView. So.. add a file named &amp;lsquo;UIView+CoreAnimation.h/m&amp;rsquo;, and paste the following code:&lt;/p&gt;
&lt;p&gt;REF: Thanks to the &lt;a href="http://www.cocoanetics.com/2012/06/lets-bounce"&gt;Cocoanetics&lt;/a&gt; author for sharing this. I&amp;rsquo;ve tweaked his code just a little bit.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#import &amp;lt;QuartzCore/QuartzCore.h&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+ (CAKeyframeAnimation&lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;dockBounceAnimationWithViewHeight:&lt;/span&gt;(CGFloat)viewHeight
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	NSUInteger &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kNumFactors &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	CGFloat &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kFactorsPerSec &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;30.0f&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	CGFloat &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kFactorsMaxValue &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;128.0f&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	CGFloat factors[kNumFactors] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;60&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;83&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;114&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;124&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;128&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;128&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;124&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;114&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;83&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;60&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;28&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;28&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	NSMutableArray&lt;span style="color:#f92672"&gt;*&lt;/span&gt; transforms &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSMutableArray array];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;(NSUInteger i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; kNumFactors; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		CGFloat positionOffset &lt;span style="color:#f92672"&gt;=&lt;/span&gt; factors[i] &lt;span style="color:#f92672"&gt;/&lt;/span&gt; kFactorsMaxValue &lt;span style="color:#f92672"&gt;*&lt;/span&gt; viewHeight;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		CATransform3D transform &lt;span style="color:#f92672"&gt;=&lt;/span&gt; CATransform3DMakeTranslation(&lt;span style="color:#ae81ff"&gt;0.0f&lt;/span&gt;, &lt;span style="color:#f92672"&gt;-&lt;/span&gt;positionOffset, &lt;span style="color:#ae81ff"&gt;0.0f&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		[transforms addObject:[NSValue valueWithCATransform3D:transform]];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	CAKeyframeAnimation&lt;span style="color:#f92672"&gt;*&lt;/span&gt; animation &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [CAKeyframeAnimation animationWithKeyPath:&lt;span style="color:#e6db74"&gt;@&amp;#34;transform&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	animation.repeatCount &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	animation.duration &lt;span style="color:#f92672"&gt;=&lt;/span&gt; kNumFactors &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1.0f&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;kFactorsPerSec;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	animation.fillMode &lt;span style="color:#f92672"&gt;=&lt;/span&gt; kCAFillModeForwards;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	animation.values &lt;span style="color:#f92672"&gt;=&lt;/span&gt; transforms;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	animation.removedOnCompletion &lt;span style="color:#f92672"&gt;=&lt;/span&gt; YES; &lt;span style="color:#75715e"&gt;// final stage is equal to starting stage
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	animation.autoreverses &lt;span style="color:#f92672"&gt;=&lt;/span&gt; NO;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; animation;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;jump&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	CGFloat midHeight &lt;span style="color:#f92672"&gt;=&lt;/span&gt; self.frame.size.height &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0.5f&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	CAKeyframeAnimation&lt;span style="color:#f92672"&gt;*&lt;/span&gt; animation &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[self &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt;] dockBounceAnimationWithViewHeight:midHeight];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	[self.layer addAnimation:animation forKey:&lt;span style="color:#e6db74"&gt;@&amp;#34;bouncing&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>UITextField Vertically Centered</title><link>https://www.lantean.co/posts/uitextfield-vertically-centered/</link><pubDate>Thu, 14 Jun 2012 11:42:38 +0000</pubDate><guid>https://www.lantean.co/posts/uitextfield-vertically-centered/</guid><description>&lt;p&gt;What if you wanna vertically center the text in a UITextField?&amp;hellip; This is an easy trick..!!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[textField setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>OSX Lion: Refresh Launchpad Contents</title><link>https://www.lantean.co/posts/osx-lion-refresh-launchpad-contents/</link><pubDate>Wed, 13 Jun 2012 23:57:43 +0000</pubDate><guid>https://www.lantean.co/posts/osx-lion-refresh-launchpad-contents/</guid><description>&lt;p&gt;I recently came across a problem. The contents of the launchpad, somehow, got corrupt. I was seeing files that shouldn&amp;rsquo;t be there. So&amp;hellip; how did i fix it?&lt;/p&gt;
&lt;p&gt;Open this folder:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;~/&lt;/span&gt;Library&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Application Support&lt;span style="color:#f92672"&gt;/&lt;/span&gt;Dock&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(CMD + Shift + G&amp;hellip; and paste that!). Once you&amp;rsquo;re right there&amp;hellip; you&amp;rsquo;ll need to delete delete the &amp;ldquo;.db&amp;rdquo; file. Last step&amp;hellip; relaunch the dock!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;killall Dock&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it!&lt;/p&gt;</description></item><item><title>CoreGraphics: Drawing Dashed Lines</title><link>https://www.lantean.co/posts/coregraphics-drawing-dashed-lines/</link><pubDate>Wed, 13 Jun 2012 22:31:08 +0000</pubDate><guid>https://www.lantean.co/posts/coregraphics-drawing-dashed-lines/</guid><description>&lt;p&gt;Suppose you wanna draw a dashed line all around a control. What should we do?. Well&amp;hellip; simple. We need to invoke some CoreGraphics dark magic&amp;hellip; it&amp;rsquo;s pretty self explanatory. The catch to it is that it&amp;rsquo;ll draw a dashed line. Play with it..!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; CGFloat &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kDashedBorderWidth &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;2.0f&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; CGFloat &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kDashedPhase &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;0.0f&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; CGFloat &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kDashedLinesLength[] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {&lt;span style="color:#ae81ff"&gt;4.0f&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2.0f&lt;/span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; size_t &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; kDashedCount &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;2.0f&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- (&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;drawRect:&lt;/span&gt;(CGRect)rect
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [super drawRect:rect];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGContextRef context &lt;span style="color:#f92672"&gt;=&lt;/span&gt; UIGraphicsGetCurrentContext();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGContextSetLineWidth(context, kDashedBorderWidth);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGContextSetLineDash(context, kDashedPhase, kDashedLinesLength, kDashedCount) ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGContextAddRect(context, rect);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGContextStrokePath(context);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Old School Mac</title><link>https://www.lantean.co/posts/old-school-mac/</link><pubDate>Thu, 07 Jun 2012 15:17:48 +0000</pubDate><guid>https://www.lantean.co/posts/old-school-mac/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/06/apple_old-skool.jpg"&gt;&lt;img class="alignleft size-thumbnail wp-image-422" title="apple_old-skool" alt="" src="https://www.lantean.co/wp-content/uploads/2012/06/apple_old-skool.jpg" width="150" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So&amp;hellip; we&amp;rsquo;re stuck in 2012. While technology moves forward in a fast pace, the human aspect of our society gets worse as well. If you think about it &amp;hellip; it&amp;rsquo;s wicked. We have all of this cool tech, yet, people die of hunger all over the world.&lt;/p&gt;
&lt;p&gt;Not too long ago&amp;hellip; everyone thought that tech would change the world. Say.. back in 1984.&lt;/p&gt;
&lt;p&gt;Guess what!. If you miss that epoch&amp;hellip; and don&amp;rsquo;t feel ashamed about it, you can skin your OSX to make it look as the ooooold Mac System. It&amp;rsquo;s pretty cool, and you can &lt;a href="http://www.benvessey.com/mac.html" rel="nofollow"&gt;get it for free right here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Current Selector's Name</title><link>https://www.lantean.co/posts/current-selectors-name/</link><pubDate>Mon, 04 Jun 2012 16:07:11 +0000</pubDate><guid>https://www.lantean.co/posts/current-selectors-name/</guid><description>&lt;p&gt;So&amp;hellip; suppose you wanna log the name of the &amp;lsquo;current&amp;rsquo; method. You could hardcode the method name, right there&amp;hellip; virtually everywhere&amp;hellip; or you can do this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSLog(&lt;span style="color:#e6db74"&gt;@&amp;#34;[ %@ ] did something&amp;#34;&lt;/span&gt;, NSStringFromSelector(_cmd));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s simple. Yet, its something i didn&amp;rsquo;t know&amp;hellip; three days ago!.&lt;/p&gt;</description></item><item><title>Coda 2 for OSX</title><link>https://www.lantean.co/posts/coda-2-for-osx/</link><pubDate>Sat, 26 May 2012 12:52:25 +0000</pubDate><guid>https://www.lantean.co/posts/coda-2-for-osx/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/05/Screen-Shot-2012-05-26-at-12.47.55-PM.png"&gt;&lt;img class="alignleft size-thumbnail wp-image-410" title="Screen Shot 2012-05-26 at 12.47.55 PM" src="https://www.lantean.co/wp-content/uploads/2012/05/Screen-Shot-2012-05-26-at-12.47.55-PM.png" alt="" width="150" height="150" /&gt;&lt;/a&gt;Time has come to write few lines about Panic&amp;rsquo;s fellows. This week they have released an awesome tool named &amp;lsquo;&lt;a href="https://panic.com/coda/" rel="nofollow"&gt;Coda&lt;/a&gt;&amp;rsquo;. For those who never heard about it, it&amp;rsquo;s an html editor. I&amp;rsquo;ve tested TextWrangler, TextMate, BBEditor, Sublime, just to name few. But this one has everything already in there.&lt;/p&gt;
&lt;p&gt;It has svn / git integration, and it&amp;rsquo;ll also allow you to upload your new websites to Amazon S3, or any webhosting you might be using.&lt;/p&gt;</description></item><item><title>Bruteforcing WEP Keys</title><link>https://www.lantean.co/posts/cracking-wep-keys/</link><pubDate>Sat, 26 May 2012 12:35:41 +0000</pubDate><guid>https://www.lantean.co/posts/cracking-wep-keys/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/05/Screen-Shot-2012-05-26-at-12.23.36-PM.png"&gt;&lt;img class="alignleft size-thumbnail wp-image-403" title="Screen Shot 2012-05-26 at 12.23.36 PM" alt="" src="https://www.lantean.co/wp-content/uploads/2012/05/Screen-Shot-2012-05-26-at-12.23.36-PM.png" width="150" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Today&amp;hellip; we&amp;rsquo;ll take a look at WEP key-breaking. We&amp;rsquo;ll use a linux live-cd distribution called &lt;a href="http://www.backtrack-linux.org/downloads/" rel="nofollow"&gt;backtrack&lt;/a&gt;. It&amp;rsquo;s a linux distribution bundled with a load of hacking / cracking tools. It&amp;rsquo;s free, and it&amp;rsquo;s pretty cool.&lt;/p&gt;
&lt;p&gt;So&amp;hellip; first step&amp;hellip; download and burn it!.
I&amp;rsquo;ll assume you know how to boot it and launch a bash terminal. Let&amp;rsquo;s begin from there.
We&amp;rsquo;re gonna use two command-line tools: airodump-ng and aircrack-ng. So&amp;hellip; let&amp;rsquo;s open a terminal, and type the following commands:&lt;/p&gt;</description></item><item><title>Santana goes Shapeshifter</title><link>https://www.lantean.co/posts/santana-goes-shapeshifter/</link><pubDate>Sat, 19 May 2012 11:55:03 +0000</pubDate><guid>https://www.lantean.co/posts/santana-goes-shapeshifter/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/05/shapeShifter.jpg"&gt;&lt;img class="size-medium wp-image-399 aligncenter" title="shapeShifter" alt="" src="https://www.lantean.co/wp-content/uploads/2012/05/shapeShifter.jpg" width="300" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;
&lt;p&gt;I&amp;rsquo;m not really sure how this works. It&amp;rsquo;s as if a lot of musicians wanted to put out, all together, new records. It&amp;rsquo;s pretty cool to find out that there are new albums of your favorite artists&amp;hellip; yeah!.&lt;/p&gt;
I&amp;rsquo;ve been listening to Santana&amp;rsquo;s latest album, Shapeshifter. As a friend of mine always says, he&amp;rsquo;s been playing the same notes for the last 30 years, or so. But anyways, he&amp;rsquo;s great at doing it. So i really recommend you check it out..!&lt;/p&gt;</description></item><item><title>Twitter iOS SDK</title><link>https://www.lantean.co/posts/twitter-ios-sdk/</link><pubDate>Sat, 19 May 2012 11:49:08 +0000</pubDate><guid>https://www.lantean.co/posts/twitter-ios-sdk/</guid><description>&lt;p&gt;I recently had to integrate one of my apps with Twitter. Let me say you something. I HATE TWITTER guys. Why?. Because everything is soooo complicated. Although there is a direct integration between Twitter and iOS 5, they have made it really hard for developers.&lt;/p&gt;
&lt;p&gt;Why?. If you need to post tweets, backend side, you need to ask for &amp;lsquo;&lt;a href="https://dev.twitter.com/docs/ios/using-reverse-auth" rel="nofollow"&gt;Reverse Auth&lt;/a&gt;&amp;rsquo; permissions.. and it&amp;rsquo;s not something that can be done automatically. They have to personally approve this.&lt;/p&gt;</description></item><item><title>OSX 10.8 Mountain Lion System Requirements</title><link>https://www.lantean.co/posts/osx-10-8-mountain-lion-system-requirements/</link><pubDate>Sat, 19 May 2012 11:37:09 +0000</pubDate><guid>https://www.lantean.co/posts/osx-10-8-mountain-lion-system-requirements/</guid><description>&lt;p&gt;Since the Preview 4 has just been released, and we&amp;rsquo;re getting close to the final release, i thought it would be a good idea to check out what are the system requirements for Mountain Lion.&lt;/p&gt;
&lt;p&gt;Well, let me say you something. They&amp;rsquo;re tight. Yeah. Most of you are probably gonna need to buy new hardware, if you still wanna run this big cat. Mountain Lion needs..:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;64-Bit Intel Core 2 Duo processor or better required&lt;/li&gt;
&lt;li&gt;Ability to boot into OS X 64-bit kernel&lt;/li&gt;
&lt;li&gt;Advanced GPU chipset required&lt;/li&gt;
&lt;li&gt;Internet connection required to download and install OS X 10.8&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;Long short story, the following hardware will be able to run 10.8:&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;MacBook Pro – 13″ from mid 2009 or later, 15″ from late 2007 and newer, 17″ from late 2007 and newer&lt;/li&gt;
&lt;li&gt;MacBook Air – late 2008 and newer&lt;/li&gt;
&lt;li&gt;iMac – models from mid 2007 and newer&lt;/li&gt;
&lt;li&gt;MacBook – 13″ aluminum from 2008, 13″ from 2009 and newer&lt;/li&gt;
&lt;li&gt;Mac Mini – early 2009 and newer&lt;/li&gt;
&lt;li&gt;Mac Pro – early 2008 models and newer&lt;/li&gt;
&lt;li&gt;XServe – early 2009 models and newer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anything else is &amp;lsquo;deprecated&amp;rsquo;. So&amp;hellip; where are you standing? do you need to spend money&amp;hellip; or not?. (Excuses, excuses&amp;hellip; i wanna buy a new Mac Retina!).&lt;/p&gt;</description></item><item><title>Make OSX Speak anything!</title><link>https://www.lantean.co/posts/make-osx-speak-anything/</link><pubDate>Sat, 19 May 2012 11:30:27 +0000</pubDate><guid>https://www.lantean.co/posts/make-osx-speak-anything/</guid><description>&lt;p&gt;This is a nice trick, which can be used in any console script. There is a command named &amp;lsquo;say&amp;rsquo;, which is the one that does all of the magic. You can use it this way:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo lantean &lt;span style="color:#f92672"&gt;|&lt;/span&gt; say&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What&amp;rsquo;s interesting about this is that you have different voice tone variations. To get a full list, you can do this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lantean&lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt; say &lt;span style="color:#f92672"&gt;-&lt;/span&gt;v &lt;span style="color:#f92672"&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Agnes en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Isn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t it nice to have a computer that will talk to you&lt;span style="color:#f92672"&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Albert en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; I have a frog &lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; my throat. No, I mean a real frog&lt;span style="color:#f92672"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Alex en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Most people recognize me by my voice.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bad News en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; The light you see at the end of the tunnel is the headlamp of a fast approaching train.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bahh en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Do not pull the wool over my eyes.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bells en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Time flies when you are having fun.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Boing en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Spring has sprung, fall has fell, winter&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s here and it&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s colder than usual.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bruce en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; I sure like being inside this fancy computer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bubbles en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Pull the plug&lt;span style="color:#f92672"&gt;!&lt;/span&gt; I&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;m drowning&lt;span style="color:#f92672"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cellos en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Doo da doo da dum dee dee doodly doo dum dum dum doo da doo da doo da doo da doo da doo da doo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Deranged en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; I need to go on a really &lt;span style="color:#66d9ef"&gt;long&lt;/span&gt; vacation.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fred en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; I sure like being inside this fancy computer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Good News en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Congratulations you just won the sweepstakes and you don&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t have to pay income tax again.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hysterical en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Please stop tickling me&lt;span style="color:#f92672"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Junior en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; My favorite food is pizza.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kathy en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Isn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t it nice to have a computer that will talk to you&lt;span style="color:#f92672"&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Pipe Organ en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; We must rejoice &lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; this morbid voice.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Princess en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; When I grow up I&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;m going to be a scientist.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ralph en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; The sum of the squares of the legs of a right triangle is equal to the square of the hypotenuse.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trinoids en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; We cannot communicate with these carbon units.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Vicki en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Isn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t it nice to have a computer that will talk to you&lt;span style="color:#f92672"&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Victoria en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Isn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t it nice to have a computer that will talk to you&lt;span style="color:#f92672"&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Whisper en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; Pssssst, hey you, Yeah you, Who &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; ya think I&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;m talking to, the mouse&lt;span style="color:#f92672"&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Zarvox en_US &lt;span style="color:#960050;background-color:#1e0010"&gt;#&lt;/span&gt; That looks like a peaceful planet.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So far, so good. Now, if you actually wanna use one of those voices, you need to specify the -v parameter, just like this:&lt;/p&gt;</description></item><item><title>OSX 10.7.4 released</title><link>https://www.lantean.co/posts/osx-10-7-4-released/</link><pubDate>Sat, 12 May 2012 13:54:00 +0000</pubDate><guid>https://www.lantean.co/posts/osx-10-7-4-released/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/05/Screen-Shot-2012-05-12-at-1.49.47-PM.png"&gt;&lt;img class="alignleft size-full wp-image-385" title="Screen Shot 2012-05-12 at 1.49.47 PM" src="https://www.lantean.co/wp-content/uploads/2012/05/Screen-Shot-2012-05-12-at-1.49.47-PM.png" alt="" width="130" height="126" /&gt;&lt;/a&gt;Indeed, we got another OSX update. This time, 10.7.4&amp;hellip;. which should fix several vulnerabilities out there. It&amp;rsquo;s over 700 MB, so it&amp;rsquo;ll take some time to get downloaded.&lt;/p&gt;
&lt;p&gt;If you didn&amp;rsquo;t already update your mac, it&amp;rsquo;s time you hit the Software Update button in the Apple menu. I really recommend you do it right away&amp;hellip; those Flashback viruses have been giving lots of headache&amp;rsquo;s.&lt;/p&gt;</description></item><item><title>iPhone 5 with an in-house Maps App?</title><link>https://www.lantean.co/posts/iphone-5-with-an-in-house-maps-app/</link><pubDate>Sat, 12 May 2012 13:12:59 +0000</pubDate><guid>https://www.lantean.co/posts/iphone-5-with-an-in-house-maps-app/</guid><description>&lt;p&gt;I&amp;rsquo;ve been reading all over the net an interesting roumor. The next iPhone, AKA &amp;lsquo;iPhone 5&amp;rsquo;, may be released with a new iteration of our beloved OS&amp;hellip; iOS 6. But&amp;hellip; what goodie could it introduce?.&lt;/p&gt;
&lt;p&gt;Well&amp;hellip; the biggest idea around, and i&amp;rsquo;m posting it because i think there is a big chance it&amp;rsquo;s actually accurate, would be an in-house Maps app. Why i think this?. Because the current Maps App relies heavily on Google. In fact, it wouldn&amp;rsquo;t do anything useful if it wasn&amp;rsquo;t for Google.&lt;/p&gt;</description></item><item><title>Thundercats 2011</title><link>https://www.lantean.co/posts/thundercats-2011/</link><pubDate>Sat, 12 May 2012 12:47:08 +0000</pubDate><guid>https://www.lantean.co/posts/thundercats-2011/</guid><description>&lt;p&gt;This has very little to do with iOS. But i love it anyways.. so here we go!. When i was &amp;hellip; less than 4 years old, i was a big fan of the Thundercats. Back then, i had a copy of the Sword of Omens. Never managed to get a glimpse of the real one&amp;hellip; wherever it is!.&lt;/p&gt;
&lt;p&gt;Last year, Cartoon Network fellows published a reboot of the Thundercats. It&amp;rsquo;s called &amp;lsquo;Thundercats 2011&amp;rsquo;. So far, i just love it. The story is a bit different&amp;hellip; either way, this re-imagined version is pretty cool.&lt;/p&gt;</description></item><item><title>Fixing Bootstrap Errors</title><link>https://www.lantean.co/posts/fixing-bootstrap-errors/</link><pubDate>Wed, 09 May 2012 23:40:38 +0000</pubDate><guid>https://www.lantean.co/posts/fixing-bootstrap-errors/</guid><description>&lt;p&gt;I&amp;rsquo;ve been having this error&amp;hellip; A LOT&amp;hellip;:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Couldn&amp;rsquo;t register com.yourcompany.yourapp with the bootstrap server. Error: unknown error code. This generally means that another instance of this process was already running or is hung in the debugger.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The bad side of this is that.. ps aux will not show anything useful. Thankfully, Mike Ash has solved this&amp;hellip; i&amp;rsquo;m pasting below his script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;launchctl list&lt;span style="color:#f92672"&gt;|&lt;/span&gt;grep UIKitApplication&lt;span style="color:#f92672"&gt;|&lt;/span&gt;awk &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;{print &lt;span style="color:#960050;background-color:#1e0010"&gt;$&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;}&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;|&lt;/span&gt;xargs launchctl remove&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Source: &lt;a href="http://www.mikeash.com/pyblog/solving-simulator-bootstrap-errors.html" target="_blank"&gt;Mike Ash Blog&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Removing subviews that match any given criteria!</title><link>https://www.lantean.co/posts/removing-subview-of-a-given-kind/</link><pubDate>Wed, 09 May 2012 22:50:27 +0000</pubDate><guid>https://www.lantean.co/posts/removing-subview-of-a-given-kind/</guid><description>&lt;p&gt;So&amp;hellip; suppose that you have a container view. And for some reason, you need to remove the subviews that match any given criteria.&lt;/p&gt;
&lt;p&gt;The straightforward solution would be to write a foreach loop, by hand, and remove the target subviews with a method call. Guess what!. There is a kung fu solution to this..!!. Check this out:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSPredicate&lt;span style="color:#f92672"&gt;*&lt;/span&gt; predicate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSPredicate predicateWithFormat:&lt;span style="color:#e6db74"&gt;@&amp;#34;self isKindOfClass: %@&amp;#34;&lt;/span&gt;, [SomeView &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt;]];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSArray&lt;span style="color:#f92672"&gt;*&lt;/span&gt; viewsToRemove &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[self subviews] filteredArrayUsingPredicate:predicate];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[viewsToRemove makeObjectsPerformSelector:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(removeFromSuperview)];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Less code is better. Always.&lt;/p&gt;</description></item><item><title>Detecting taps in any UIView subclass</title><link>https://www.lantean.co/posts/detecting-taps-in-any-uiview-subclass/</link><pubDate>Wed, 09 May 2012 22:46:55 +0000</pubDate><guid>https://www.lantean.co/posts/detecting-taps-in-any-uiview-subclass/</guid><description>&lt;p&gt;This one is a quick and easy trick. How do you detect taps in any UIView?.
Simple. You need to use the UITapGestureRecognizer class&amp;hellip; this way:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Alloc the gesture recognizer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;UITapGestureRecognizer&lt;span style="color:#f92672"&gt;*&lt;/span&gt; tapGestureRecognizer &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[UITapGestureRecognizer alloc] initWithTarget:self action:&lt;span style="color:#66d9ef"&gt;@selector&lt;/span&gt;(viewTapped)];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[tapGestureRecognizer setNumberOfTapsRequired:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[anyRandomView addGestureRecognizer:tapGestureRecognizer];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[anyRandomView setUserInteractionEnabled:YES];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[tapGestureRecognizer &lt;span style="color:#66d9ef"&gt;release&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tapGestureRecognizer &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nil;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>UILabel with Stroke!</title><link>https://www.lantean.co/posts/uilabel-with-stroke/</link><pubDate>Fri, 04 May 2012 20:40:29 +0000</pubDate><guid>https://www.lantean.co/posts/uilabel-with-stroke/</guid><description>&lt;p&gt;Time to invoke some&amp;hellip; dark magic. For some reason, UILabel doesn&amp;rsquo;t support stroke. So, if you&amp;rsquo;re&amp;hellip; by chance&amp;hellip; working on a videogame, or a simple iOS app, and you actually need to render an UILabel with a stroke, in a given color, you have come to the right place.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s begin with the header file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@interface&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;LAStrokeLabel&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;UILabel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NSUInteger _strokeWidth;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;    UIColor&lt;span style="color:#f92672"&gt;*&lt;/span&gt; _strokeColor;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@property&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;nonatomic&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;assign&lt;/span&gt;) NSUInteger strokeWidth;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@property&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;nonatomic&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;retain&lt;/span&gt;) UIColor&lt;span style="color:#f92672"&gt;*&lt;/span&gt; strokeColor;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So far so good&amp;hellip; right?. Nothing weird. Just a simple UILabel subclass, with two extra properties.&lt;/p&gt;</description></item><item><title>Display a modal UIViewController when a UITabBarItem is pressed</title><link>https://www.lantean.co/posts/display-a-modal-uiviewcontroller-when-a-uitabbaritem-is-pressed/</link><pubDate>Thu, 03 May 2012 17:54:13 +0000</pubDate><guid>https://www.lantean.co/posts/display-a-modal-uiviewcontroller-when-a-uitabbaritem-is-pressed/</guid><description>&lt;p&gt;Suppose the following scenario. You need to display a modal UIViewController whenever the user presses a specific button in a UITabBar.&lt;/p&gt;
&lt;p&gt;The trick is pretty simple. First, add an empty UIViewController, wich will serve as placeholder for the &amp;lsquo;modal tab&amp;rsquo;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;UIViewController&lt;span style="color:#f92672"&gt;*&lt;/span&gt; someViewController    &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[UIViewController alloc] init];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[someViewController setTitle:NSLocalizedString(&lt;span style="color:#e6db74"&gt;@&amp;#34;Modal Tab&amp;#34;&lt;/span&gt;, nil)];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[someViewController.tabBarItem setImage:[UIImage imageNamed:&lt;span style="color:#e6db74"&gt;@&amp;#34;modal.png&amp;#34;&lt;/span&gt;]];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, setup the UITabBarController&amp;rsquo;s delegate:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[_tabBarController setDelegate:self];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;At last&amp;hellip; you need to implement the UITabBarControllerDelegate protocol. Specifically, something that looks like this:&lt;/p&gt;</description></item><item><title>Guitar Pro for OSX</title><link>https://www.lantean.co/posts/guitar-pro-for-osx/</link><pubDate>Mon, 30 Apr 2012 15:39:58 +0000</pubDate><guid>https://www.lantean.co/posts/guitar-pro-for-osx/</guid><description>&lt;p&gt;We, as guitar players, need to constantly practise. Every single day of our lifes. After a certain point&amp;hellip; you don&amp;rsquo;t really need to practise. Your fingers get used to the strings&amp;hellip; everything works smoothly.&lt;/p&gt;
&lt;p&gt;Personally, i love Guitar Pro. If you&amp;rsquo;re lazy enough to learn songs by yourself, there are just  plenty of tab resources everywhere&amp;hellip;&lt;/p&gt;
&lt;p&gt;Maybe the best feature that GP has is the &amp;lsquo;speed trainer&amp;rsquo;. You can set up the initial Beats Per Minute, the number of loops, and the speed increase in each round. So all you need to do is to hook your guitar up to an amp, and hit the strings.&lt;/p&gt;</description></item><item><title>The iPad is the new Macintosh</title><link>https://www.lantean.co/posts/the-ipad-is-the-new-macintosh/</link><pubDate>Thu, 26 Apr 2012 10:54:04 +0000</pubDate><guid>https://www.lantean.co/posts/the-ipad-is-the-new-macintosh/</guid><description>&lt;p&gt;I&amp;rsquo;ve just seen a really interesting video, i&amp;rsquo;d like to share with you all. It&amp;rsquo;s what i&amp;rsquo;ve been thinking of since i began working on iOS. This technology is aimed at the masses. What do normal people need to do with a computer?&amp;hellip;. probably, check emails, surf the web, and videochat.&lt;/p&gt;
&lt;p&gt;Do you need a complex machine with a keyboard, mouse, and an antivirus?. Of course not!. If you need to do simple tasks such as those&amp;hellip; you can just get an iPad. Virus free, keyboard free&amp;hellip; always on. Isn&amp;rsquo;t that great?.&lt;/p&gt;</description></item><item><title>iOS and JavaScript Bridge</title><link>https://www.lantean.co/posts/ios-and-javascript-bridge/</link><pubDate>Sat, 21 Apr 2012 13:22:45 +0000</pubDate><guid>https://www.lantean.co/posts/ios-and-javascript-bridge/</guid><description>&lt;p&gt;What if you need to write a completely dynamic app, and you need to have the ability of updating the App&amp;rsquo;s contents remotely, without the need of pushing a new build to the AppStore?.&lt;/p&gt;
&lt;p&gt;What if you need to write javascript code, which needs to interact with your iOS code?.
Yeah. I had that problem. Long short story, i&amp;rsquo;m testing a nice framework called &lt;a title="Clutch" href="https://clutch.io/" rel="nofollow"&gt;clutch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Clutch has a nice JavaScript and iOS SDK, which smoothens the interaction between those two technologies. When you ship the app, you bundle a version of the webApp in it.&lt;/p&gt;</description></item><item><title>AES Encrypted Chat!</title><link>https://www.lantean.co/posts/aes-encrypted-chat/</link><pubDate>Sat, 21 Apr 2012 13:00:37 +0000</pubDate><guid>https://www.lantean.co/posts/aes-encrypted-chat/</guid><description>&lt;p&gt;Well, this time i'm not gonna share an HTML trick, library, or whatsoever. A friend of mine sent me a link... and i said... WOW... this is written in javascript alone?.&lt;/p&gt;
&lt;p&gt;It's a web-based, encrypted chat. Pretty amazing... there is no java applet anywhere to be seen. So... it's kind of a disposable, encrypted chat. If you wanna... have a secure communications channel, for whatever reason, you can give it a shot.!&lt;/p&gt;</description></item><item><title>If you stop... you die!</title><link>https://www.lantean.co/posts/if-you-stop-you-die/</link><pubDate>Sat, 21 Apr 2012 12:51:18 +0000</pubDate><guid>https://www.lantean.co/posts/if-you-stop-you-die/</guid><description>&lt;p&gt;I&amp;rsquo;ve seen this around the net&amp;hellip; and i think it&amp;rsquo;s the best motivational speech, ever.
So&amp;hellip; i&amp;rsquo;m sharing it, with you!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit01.png"&gt;&lt;img class="aligncenter size-full wp-image-305" title="doit01" src="https://www.lantean.co/wp-content/uploads/2012/04/doit01.png" alt="" width="800" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit00.png"&gt;&lt;img class="aligncenter size-full wp-image-304" title="doit00" src="https://www.lantean.co/wp-content/uploads/2012/04/doit00.png" alt="" width="800" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit08.png"&gt;&lt;img class="aligncenter size-full wp-image-303" title="doit08" src="https://www.lantean.co/wp-content/uploads/2012/04/doit08.png" alt="" width="800" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit10.png"&gt;&lt;img class="aligncenter size-full wp-image-302" title="doit10" src="https://www.lantean.co/wp-content/uploads/2012/04/doit10.png" alt="" width="800" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit11.png"&gt;&lt;img class="aligncenter size-full wp-image-301" title="doit11" src="https://www.lantean.co/wp-content/uploads/2012/04/doit11.png" alt="" width="800" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit07.png"&gt;&lt;img class="aligncenter size-full wp-image-300" title="doit07" src="https://www.lantean.co/wp-content/uploads/2012/04/doit07.png" alt="" width="800" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit06.png"&gt;&lt;img class="aligncenter size-full wp-image-299" title="doit06" src="https://www.lantean.co/wp-content/uploads/2012/04/doit06.png" alt="" width="800" height="61" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit03.png"&gt;&lt;img class="aligncenter size-full wp-image-298" title="doit03" src="https://www.lantean.co/wp-content/uploads/2012/04/doit03.png" alt="" width="800" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit04.png"&gt;&lt;img class="aligncenter size-full wp-image-297" title="doit04" src="https://www.lantean.co/wp-content/uploads/2012/04/doit04.png" alt="" width="800" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/doit09.png"&gt;&lt;img class="aligncenter size-full wp-image-296" title="doit09" src="https://www.lantean.co/wp-content/uploads/2012/04/doit09.png" alt="" width="800" height="34" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Targetting iPhone 3gs and superior</title><link>https://www.lantean.co/posts/targetting-iphone-3gs-and-superior/</link><pubDate>Sat, 21 Apr 2012 12:36:16 +0000</pubDate><guid>https://www.lantean.co/posts/targetting-iphone-3gs-and-superior/</guid><description>&lt;p&gt;I recently had a problem with one of the apps i&amp;rsquo;m working on. (Yeah, yet another problem!). The first release supported ARMv6 (which is handy when targetting older devices, as well, such as 1st and 2nd iPod generations, and the old iPhone 3g).&lt;/p&gt;
&lt;p&gt;As it turns out, you cannot change the requirements of an app after pushing an update. I mean, you cannot simply remove &amp;lsquo;ARMv6&amp;rsquo; support. Apple&amp;rsquo;s policy is that &amp;hellip; you should continue supporting all of the target platforms you&amp;rsquo;ve enabled in the very first release.&lt;/p&gt;</description></item><item><title>GPS in Safari Mobile</title><link>https://www.lantean.co/posts/gps-in-safari-mobile/</link><pubDate>Thu, 19 Apr 2012 10:46:25 +0000</pubDate><guid>https://www.lantean.co/posts/gps-in-safari-mobile/</guid><description>&lt;p&gt;So&amp;hellip; what if you wanna get the GPS position, but within a WebApp&amp;rsquo;s context?. There are several tools, such as PhoneGap, that encapsulate GPS access. But it turns out that there is an extremely easy way to accomplish this task.&lt;/p&gt;
&lt;p&gt;Check out this JavaScript snippet&amp;hellip; easy, right?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function &lt;span style="color:#a6e22e"&gt;foundLocation&lt;/span&gt;(position)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; var lat &lt;span style="color:#f92672"&gt;=&lt;/span&gt; position.coords.latitude;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; var &lt;span style="color:#66d9ef"&gt;long&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; position.coords.longitude;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; alert(&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;Found location: &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; lat &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;, &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;long&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function &lt;span style="color:#a6e22e"&gt;noLocation&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; alert(&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;Could not find location&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Debugging BAD_ACCESS crashes</title><link>https://www.lantean.co/posts/debugging-bad_access-crashes/</link><pubDate>Sun, 15 Apr 2012 23:26:15 +0000</pubDate><guid>https://www.lantean.co/posts/debugging-bad_access-crashes/</guid><description>&lt;p&gt;Newbies can rely on ARC to handle memory management. But personally, i&amp;rsquo;d rather handling everything myself. Old school!.&lt;/p&gt;
&lt;p&gt;Besides that, you&amp;rsquo;ll probably need to support iOS 4 devices, as well. So&amp;hellip; at least for now, Memory Management is kind of a mandatory chapter, to everyone!.&lt;/p&gt;
&lt;p&gt;So what happens when you get a &amp;lsquo;BAD_ACCESS&amp;rsquo; crash?. There are just so many scenarios that can trigger that crash&amp;hellip; but the most common is simply a message sent to a dealloc&amp;rsquo;ed object.&lt;/p&gt;</description></item><item><title>Using 'performSelector: withObject: afterDelay:'!</title><link>https://www.lantean.co/posts/preventing-freeze-in-main-thread/</link><pubDate>Sun, 15 Apr 2012 21:26:10 +0000</pubDate><guid>https://www.lantean.co/posts/preventing-freeze-in-main-thread/</guid><description>&lt;p&gt;Sometimes, when developing an iOS application, we need to do something like &amp;lsquo;displaying a spinner&amp;rsquo;, and right after that, do a tedious task, such as query&amp;rsquo;ing a database, sorting a file, or hitting a backend.&lt;/p&gt;
&lt;p&gt;As you may (or may not know)&amp;hellip; all of the UIKit framework works on the Main Thread (with several exceptions, set aside). A common problem we might encounter is that&amp;hellip; if you begin a long process after initializing an ActivityIndicatorView, the main thread will remain locked out, and thus&amp;hellip; the spinner will never begin.&lt;/p&gt;</description></item><item><title>Preventing Paste in UITextField</title><link>https://www.lantean.co/posts/preventing-paste-in-uitextfield/</link><pubDate>Sun, 15 Apr 2012 19:43:39 +0000</pubDate><guid>https://www.lantean.co/posts/preventing-paste-in-uitextfield/</guid><description>&lt;p&gt;Suppose that your app has a custom keyboard (or component) which populates an UITextField. So&amp;hellip; suppose that you need to enable the User Interaction with that control. However, you don&amp;rsquo;t wanna anyone pasting values right there&amp;hellip; because you wanna force the user to rely on your custom keyboard.&lt;/p&gt;
&lt;p&gt;UITextField lacks a &amp;lsquo;disablePaste&amp;rsquo; property. In order to do this, we&amp;rsquo;re gonna need to subclass UITextField. Our subclass should look like this&amp;hellip;&lt;/p&gt;</description></item><item><title>UIView with Rounded Corners</title><link>https://www.lantean.co/posts/uiview-with-rounded-corners/</link><pubDate>Sun, 15 Apr 2012 19:33:42 +0000</pubDate><guid>https://www.lantean.co/posts/uiview-with-rounded-corners/</guid><description>&lt;p&gt;Sooner rather than later, you&amp;rsquo;ll probably end up with a simple yet tricky requirement: an UIView with rounded corners.&lt;/p&gt;
&lt;p&gt;iOS SDK has no &amp;lsquo;radius&amp;rsquo; property. Ohhh wait!. Yeah, it actually has!. But the catch to it is that you need to import Quartz framework, first:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#import &amp;lt;QuartzCore/QuartzCore.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Also, you need to link the &amp;lsquo;QuartzCore.framework&amp;rsquo;. Otherwise the import won&amp;rsquo;t work.&lt;/p&gt;
&lt;p&gt;So&amp;hellip; how do you actually display an UIView with rounded corners?. Easy!&lt;/p&gt;</description></item><item><title>Removing Push Notifications from NotificationBar</title><link>https://www.lantean.co/posts/removing-push-notifications-from-notificationbar/</link><pubDate>Wed, 11 Apr 2012 12:24:03 +0000</pubDate><guid>https://www.lantean.co/posts/removing-push-notifications-from-notificationbar/</guid><description>&lt;p&gt;I have come up with a weird problem&amp;hellip;. which goes as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The app receives a Push Notification.&lt;/li&gt;
&lt;li&gt;You tap over the PN (in the iOS notification center).&lt;/li&gt;
&lt;li&gt;The app gets launched&amp;hellip; and you handle the notification&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: the notification remains in the &amp;rsquo;notification bar'.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;How do you clean it ?. Well&amp;hellip; this isn&amp;rsquo;t in Apple&amp;rsquo;s docs. But i&amp;rsquo;ve figured out that if you execute the following line of code, the notification &amp;lsquo;gets acknowledged&amp;rsquo;:&lt;/p&gt;</description></item><item><title>JSON Parsers</title><link>https://www.lantean.co/posts/json-parsers/</link><pubDate>Sun, 08 Apr 2012 22:41:21 +0000</pubDate><guid>https://www.lantean.co/posts/json-parsers/</guid><description>&lt;p&gt;XML days are numbered&amp;hellip;. it&amp;rsquo;s just my opinion. I know, it&amp;rsquo;s out there in the wild, almost everywhere. But XML itself has a huge overhead, which is something we, as mobile software developers, really want to avoid.&lt;/p&gt;
&lt;p&gt;Personally, i just love json. It&amp;rsquo;s extremely lightweight&amp;hellip; and i dare to say, it is what XML should have been. Why is it exactly that you need to repeat a keyword once and over and over&amp;hellip;???. I still don&amp;rsquo;t get what those guys were thinking&amp;hellip; when they wrote the XML specs.&lt;/p&gt;</description></item><item><title>HTML Color to UIColor</title><link>https://www.lantean.co/posts/html-color-to-uicolor/</link><pubDate>Fri, 06 Apr 2012 14:30:03 +0000</pubDate><guid>https://www.lantean.co/posts/html-color-to-uicolor/</guid><description>&lt;p&gt;This is a nice tool i&amp;rsquo;d like to share with you. While skinning your app, you might need to convert HTML color codes into those that are actually accepted by UIKit framework (which, by the way, is HEX!).&lt;/p&gt;
&lt;p&gt;So&amp;hellip; you need to fire Photoshop, or find a website that does that for you. Well, i just found a nice app called HexColors. It&amp;rsquo;s in the Mac AppStore, and it&amp;rsquo;s free (go get it!).&lt;/p&gt;</description></item><item><title>UITableViewCell without borders!</title><link>https://www.lantean.co/posts/uitableviewcell-without-borders/</link><pubDate>Fri, 06 Apr 2012 14:21:40 +0000</pubDate><guid>https://www.lantean.co/posts/uitableviewcell-without-borders/</guid><description>&lt;p&gt;Suppose that you have an UITableView with a borderColor. Everything is cool and easy&amp;hellip; as long as you don&amp;rsquo;t need to break the mold.&lt;/p&gt;
&lt;p&gt;But if you ever need to add just ONE single cell without borders, you&amp;rsquo;ll notice that there is no way to do it. Well, it turns out that there is. But it&amp;rsquo;s not a straightforward one. You simply need to do this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;UIView&lt;span style="color:#f92672"&gt;*&lt;/span&gt; emptyBackView &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[UIView alloc] initWithFrame:CGRectZero];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[cell setBackgroundView:emptyBackView];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[emptyBackView &lt;span style="color:#66d9ef"&gt;release&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;emptyBackView &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nil;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Magic, ha?. If you add an empty backgroundView (with its background set to clearColor), the cell&amp;rsquo;s border will be gone.&lt;/p&gt;</description></item><item><title>Foo Fighters in Argentina!!!</title><link>https://www.lantean.co/posts/foo-fighters-in-argentina/</link><pubDate>Fri, 06 Apr 2012 14:17:58 +0000</pubDate><guid>https://www.lantean.co/posts/foo-fighters-in-argentina/</guid><description>&lt;p&gt;I&amp;rsquo;ve been to Foo Fighters concert in River Plate. Let me tell you something about this band&amp;hellip;. THEY ROCK!!!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/04/FooFighters.jpg"&gt;&lt;img class="aligncenter size-full wp-image-217" title="FooFighters" src="https://www.lantean.co/wp-content/uploads/2012/04/FooFighters.jpg" alt="" width="640" height="640" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It clearly was the best concert i&amp;rsquo;ve ever been to. It seemed that they actually enjoyed playing. Other big bands, such as AC/DC or Rolling Stones, seem to play just to make money. But they&amp;hellip; they took the stage while it was raining. And no, they didn&amp;rsquo;t have a roof covering them.&lt;/p&gt;</description></item><item><title>OSX: Renaming Fonts (For Free!)</title><link>https://www.lantean.co/posts/osx-renaming-fonts-for-free/</link><pubDate>Thu, 29 Mar 2012 23:22:07 +0000</pubDate><guid>https://www.lantean.co/posts/osx-renaming-fonts-for-free/</guid><description>&lt;p&gt;I just got a huge problem. I&amp;rsquo;m working on an iOS app, and it turns out that we need to maintain compatibility with iOS 4. So&amp;hellip; the problem is that we use custom fonts. A lot of them. That shouldn&amp;rsquo;t be an issue. BUT&amp;hellip; i got to notice that iOS 4 supports up to two different fonts per family.&lt;/p&gt;
&lt;p&gt;Long short story, if you&amp;rsquo;ve got a font family with&amp;hellip; 5 different fonts, iOS 4 will load just two of  them. So how do we solve it?.&lt;/p&gt;</description></item><item><title>Buenos Aires Places: Brew Bars</title><link>https://www.lantean.co/posts/buenos-aires-places-brew-bars/</link><pubDate>Tue, 20 Mar 2012 02:40:09 +0000</pubDate><guid>https://www.lantean.co/posts/buenos-aires-places-brew-bars/</guid><description>&lt;p&gt;I felt like i had to post this, you know?. There are loooots of bars in Buenos Aires. But few of them actually have a great variety of beers. I spent most of my weekends, during the past ten years, finding the best places to go.&lt;/p&gt;
&lt;p&gt;And it turns out&amp;hellip; there is nothing like staying at home. Yeah, i might sound like an old man. But if you go to a bar, you cannot drive for two good reasons. The police might take your car, or even worse, you won&amp;rsquo;t be able to find a parking spot. Okay, that might sound backwards&amp;hellip; but anyways.&lt;/p&gt;</description></item><item><title>Back to BitTorrent</title><link>https://www.lantean.co/posts/back-to-bittorrent/</link><pubDate>Tue, 20 Mar 2012 02:31:01 +0000</pubDate><guid>https://www.lantean.co/posts/back-to-bittorrent/</guid><description>&lt;p&gt;Well&amp;hellip; after MegaUpload was shut down, it&amp;rsquo;s been a hell of a nightmare to find a working filesharing service. Everyone is sooo afraid of the MPAA and RIAA, that they&amp;rsquo;re just closing the door. So&amp;hellip; it&amp;rsquo;s time to get back to our roots.&lt;/p&gt;
&lt;p&gt;YEAH!. I&amp;rsquo;m talking about P2P networks. I used to be a huge fan of BitTorrent, in the good old days where MegaUpload wasn&amp;rsquo;t even technically possible. It is in fact thanks to BitTorrent protocol that The Pirate Bay is still operative. Magnet links are, as far as i know, legal. Nobody can punish you for posting magnet links. In the end, it&amp;rsquo;s a GUID, right?.&lt;/p&gt;</description></item><item><title>Buenos Aires Places: La Viruta</title><link>https://www.lantean.co/posts/buenos-aires-places-la-viruta/</link><pubDate>Tue, 20 Mar 2012 02:24:10 +0000</pubDate><guid>https://www.lantean.co/posts/buenos-aires-places-la-viruta/</guid><description>&lt;p&gt;After writing so much about iOS&amp;hellip; Apps&amp;hellip;. and other geeky stuff, i though it would be a good idea to write a little about one of the greatest places to visit&amp;hellip; (whenever) you step by Buenos Aires.&lt;/p&gt;
&lt;p&gt;Tango is one of the greatest assets that Argentina has. It&amp;rsquo;s an old fashioned musical genre. But let me tell you something you may not know. Dancing tango, actually, is one of the most fun things i&amp;rsquo;ve don in the past year (or so). It can get pretty technical, tricky, and difficult.&lt;/p&gt;</description></item><item><title>NSMutableSet: Filtering Duplicate Elements</title><link>https://www.lantean.co/posts/nsmutableset-filtering-duplicate-elements/</link><pubDate>Tue, 20 Mar 2012 02:16:28 +0000</pubDate><guid>https://www.lantean.co/posts/nsmutableset-filtering-duplicate-elements/</guid><description>&lt;p&gt;Suppose that your app has X amount cached objects. And suppose that there is a slight chance that.. since the backend doesn´t actually know what it is exactly that you have cached (and what you don´t have cached), it might send duplicates.&lt;/p&gt;
&lt;p&gt;So&amp;hellip; what do we do?. Shall we write a for routine checking dupes?. No way. There is a far more performant way to achieve this, and it requires less lines of code.&lt;/p&gt;</description></item><item><title>Grand Central Dispatch: Perform Block After Delay</title><link>https://www.lantean.co/posts/grand-central-dispatch-perform-block-after-delay/</link><pubDate>Tue, 20 Mar 2012 02:06:21 +0000</pubDate><guid>https://www.lantean.co/posts/grand-central-dispatch-perform-block-after-delay/</guid><description>&lt;p&gt;We have seen &lt;a title="GCD Singletons" href="https://www.lantean.co/grand-central-dispatch-singletons/"&gt;in a previous post &lt;/a&gt;the proper way to write a singleton, with the help of our good friend Grand Central Dispatch.&lt;/p&gt;
&lt;p&gt;In this opportunity, i´d like to share a goodie i´ve learnt few days ago. I suppose many of you had problems with the following scenario. You have to perform a task, which is time consuming, and you need to place, onscreen, an Activity Indicator.&lt;/p&gt;
&lt;p&gt;Although the Activity Indicator performs the animation on its own thread, you need to &amp;ldquo;spare some time&amp;rdquo; in the main thread for it to begin working. I mean&amp;hellip; you can execute [indicator startAnimating] right away. But&amp;hellip; if you don´t release the main thread, even for a short moment, surprise!. The spinner won´t work.&lt;/p&gt;</description></item><item><title>OSX iStats</title><link>https://www.lantean.co/posts/osx-istats/</link><pubDate>Sun, 18 Mar 2012 05:37:26 +0000</pubDate><guid>https://www.lantean.co/posts/osx-istats/</guid><description>&lt;p&gt;Apple did a pretty good job with OSX. You buy a new mac&amp;hellip; and you get almost everything you need, &amp;lsquo;for free&amp;rsquo;. Any mac comes with iPhoto preinstalled, Mail, Calendar, Safari and even Garage Band. Basically it covers everything an average user needs to do.&lt;/p&gt;
&lt;p&gt;There are really really few weak spots to OSX. I dare to say that&amp;hellip; one of the few things OSX lacks is a nice widget to check out things such as the download speed&amp;hellip; cpu load and temperature and even uptime. Good news is that there is a nice company called iSlayer, that has a reaaaaally cool Dashboard widget named &amp;lsquo;&lt;a title="iStat" href="http://islayer.com/apps/istatpro/"&gt;iStat&lt;/a&gt;&amp;rsquo; , which does exactly that.&lt;/p&gt;</description></item><item><title>Google Chrome: pageRank Tool</title><link>https://www.lantean.co/posts/google-chrome-pagerank-tool/</link><pubDate>Sun, 18 Mar 2012 04:58:05 +0000</pubDate><guid>https://www.lantean.co/posts/google-chrome-pagerank-tool/</guid><description>&lt;p&gt;If you haven&amp;rsquo;t ever heard about it.. pageRank is one of the core components of it&amp;rsquo;s awesome algorithm. Roughly speaking, the concept is&amp;hellip; you&amp;rsquo;re popular if people speaks about you. Right?. And if you&amp;rsquo;re popular, whatever you say should have a better ranking in google&amp;rsquo;s results.&lt;/p&gt;
&lt;p&gt;Well, the idea is&amp;hellip; there are several &amp;lsquo;root&amp;rsquo; webpages that have a high pageRank (which is a number ranged from 0 to 10), and there is a formula to calculate the pagerank of a page.. based on the pagerank of the backlinks. It&amp;rsquo;s a graph.. and the pageRank flows from those &amp;lsquo;root webpages&amp;rsquo;.&lt;/p&gt;</description></item><item><title>Automating file download...!</title><link>https://www.lantean.co/posts/automating-file-download/</link><pubDate>Sun, 18 Mar 2012 04:53:26 +0000</pubDate><guid>https://www.lantean.co/posts/automating-file-download/</guid><description>&lt;p&gt;I really don&amp;rsquo;t know if we&amp;rsquo;ll have file sharing services in&amp;hellip; say&amp;hellip; 5 years from now. Since megaupload has been taken down, and it&amp;rsquo;s CEO imprisoned, several other file sharing services have begun shutting down their services.&lt;/p&gt;
&lt;p&gt;But many of them are still alive and kicking. So&amp;hellip; whenever you need to download a huge amount of different files, manually entering the captchas (plus opening the links, one my one) turns into a tedious task.&lt;/p&gt;</description></item><item><title>Useful Firefox Plugins</title><link>https://www.lantean.co/posts/firefox-plugins/</link><pubDate>Sun, 18 Mar 2012 04:48:24 +0000</pubDate><guid>https://www.lantean.co/posts/firefox-plugins/</guid><description>&lt;p&gt;Google Chrome is definitely my favorite web browser. It has OSX Lion fullscreen support&amp;hellip; it&amp;rsquo;s fast and lightweight, and Google itself is in charge of pushing it forward. But sometimes it just falls short&amp;hellip; you just can&amp;rsquo;t find a suitable plugin for whatever you need to do. That&amp;rsquo;s the only reason i have firefox installed in my mac. Even the latest version of FF, release 11, doesn&amp;rsquo;t support OSX fullscreen feature.&lt;/p&gt;</description></item><item><title>UITableView: Make room for a new cell, and insert it!</title><link>https://www.lantean.co/posts/uitableview-make-room-for-a-new-cell-and-insert-it/</link><pubDate>Fri, 16 Mar 2012 22:06:35 +0000</pubDate><guid>https://www.lantean.co/posts/uitableview-make-room-for-a-new-cell-and-insert-it/</guid><description>&lt;p&gt;Suppose you wanna insert a new row at the bottom of a table. The first thing you need to do is to calculate the content offset. Suppose you already know the height of the new cell, and it&amp;rsquo;s stored into the variable &amp;rsquo;newCellsHeight&amp;rsquo;. Then&amp;hellip;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CGPoint contentOffset &lt;span style="color:#f92672"&gt;=&lt;/span&gt; CGPointZero;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;contentOffset.y &lt;span style="color:#f92672"&gt;=&lt;/span&gt; _tableView.contentSize.height
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; newCellsHeight
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; _tableView.frame.size.height
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; _tableView.contentInset.bottom;&lt;span style="color:#f92672"&gt;&amp;lt;/&lt;/span&gt;pre&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Once you&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;ve calculated the contentOffset (considering the current contentInsets)... you should make sure it&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s a non&lt;span style="color:#f92672"&gt;-&lt;/span&gt;negative value, to prevent quirks:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Do we need to scroll down?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(contentOffset.y &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;gt; &lt;span style="color:#ae81ff"&gt;0.0f&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [_tableView setContentOffset:contentOffset animated:YES];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The last step would be to actually insert the rows. Please, consider that a delay should be applied, so the insert rows animations won&amp;rsquo;t break the scroll animation!&lt;/p&gt;</description></item><item><title>Xcode: Number of lines</title><link>https://www.lantean.co/posts/xcode-number-of-lines/</link><pubDate>Fri, 16 Mar 2012 21:52:49 +0000</pubDate><guid>https://www.lantean.co/posts/xcode-number-of-lines/</guid><description>&lt;p&gt;I&amp;rsquo;ve been unable to figure out how to do this, actually, within Xcode. But this can also be accomplished by means of this short script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find . &lt;span style="color:#e6db74"&gt;&amp;#34;(&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;name &lt;span style="color:#e6db74"&gt;&amp;#34;*.m&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;or &lt;span style="color:#f92672"&gt;-&lt;/span&gt;name &lt;span style="color:#e6db74"&gt;&amp;#34;*.mm&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;or &lt;span style="color:#f92672"&gt;-&lt;/span&gt;name &lt;span style="color:#e6db74"&gt;&amp;#34;*.cpp&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;)&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;print &lt;span style="color:#f92672"&gt;|&lt;/span&gt; xargs wc &lt;span style="color:#f92672"&gt;-&lt;/span&gt;l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Google Chrome Plugins</title><link>https://www.lantean.co/posts/google-chrome-plugins/</link><pubDate>Thu, 15 Mar 2012 03:21:01 +0000</pubDate><guid>https://www.lantean.co/posts/google-chrome-plugins/</guid><description>&lt;p&gt;Google Chrome&amp;rsquo;s time has come. I love this browser because&amp;hellip; it&amp;rsquo;s the fastest thing out there. It had a lot of glitches when it was first released. I remember Facebook wouldn&amp;rsquo;t work fine on it&amp;hellip; and of course, i had to fix the HTML of many of the websites i maintain.&lt;/p&gt;
&lt;p&gt;But i stil love it. It gets updated in background&amp;hellip; and you hardly get to notice it!. As almost everything out there&amp;hellip; it&amp;rsquo;s better when tweaked&amp;hellip; right?. So i&amp;rsquo;d like to recommend three different plugins, available in the Chrome Web Store:&lt;/p&gt;</description></item><item><title>Free Mac RSS Reader</title><link>https://www.lantean.co/posts/app-review-capuccino/</link><pubDate>Thu, 15 Mar 2012 03:03:42 +0000</pubDate><guid>https://www.lantean.co/posts/app-review-capuccino/</guid><description>&lt;p&gt;I&amp;rsquo;m not really the kind of person that recommends things. Good things stand out by themselves, and if it&amp;rsquo;s true that they&amp;rsquo;re good, they actually don&amp;rsquo;t need sponsorship.&lt;/p&gt;
&lt;p&gt;But i feel like this app totally deserves a review. I&amp;rsquo;ve been using Google Reader for years. Somehow, i got used to its rusty interface. It&amp;rsquo;s true. A RSS reader doesn&amp;rsquo;t need to be fancy.. it should just work. But why not make it pretty?&lt;/p&gt;</description></item><item><title>Xcode 4.3.1</title><link>https://www.lantean.co/posts/xcode-4-3-1/</link><pubDate>Thu, 15 Mar 2012 02:50:34 +0000</pubDate><guid>https://www.lantean.co/posts/xcode-4-3-1/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-14-at-11.46.46-PM.png"&gt;&lt;img class="size-full wp-image-187" title="Screen-Shot-2012-03-14-at-11.46.46-PM-150x150" src="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-14-at-11.46.46-PM.png" alt="" width="150" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t done so&amp;hellip; go grab the latest release of Xcode. But beware&amp;hellip; as soon as you download it, it&amp;rsquo;ll overwrite your current 4.3 installation. It comes &lt;strong&gt;without &lt;/strong&gt;sdk&amp;rsquo;s 5.0 and below. So&amp;hellip; as usually&amp;hellip; i recommend you do that after your looong working journey.&lt;/p&gt;
&lt;p&gt;Otherwise you might find yourself stuck watching the download progress bar. No&amp;hellip; that didn&amp;rsquo;t happen to me&amp;hellip; i swear!.&lt;/p&gt;
&lt;p&gt;Bad thing is that Apple didn&amp;rsquo;t fix the Refactor functionality, yet. It&amp;rsquo;s getting kinda difficult to rename class names. For some reason, i keep getting an annoying popup saying that it cannot be done. There are several posts in stackoverflow saying that Dropbox might cause that&amp;hellip; but my projects are not inside a Dropbox folder, so that option can be discarded.&lt;/p&gt;</description></item><item><title>Retina Macbook Air 15′ ???</title><link>https://www.lantean.co/posts/retina-macbook-air-15%e2%80%b2/</link><pubDate>Thu, 15 Mar 2012 02:45:05 +0000</pubDate><guid>https://www.lantean.co/posts/retina-macbook-air-15%e2%80%b2/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/Air-Jobs.jpg"&gt;&lt;img class="size-full wp-image-181" title="Air-Jobs-300x281" src="https://www.lantean.co/wp-content/uploads/2012/03/Air-Jobs.jpg" alt="" width="300" height="281" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Although Macbook Air&amp;rsquo;s screen size is about 13 inches, the resolution is about 1440x900 pixels. Which is the same resolution as the Macbook Pro 15 inches has. At least, the standard model&amp;hellip; you can always upgrade it to HD and you&amp;rsquo;ll get a gorgeous resolution of 1680x1020.&lt;/p&gt;
&lt;p&gt;So far so good. But&amp;hellip; Apple seems to be planning a 15 inches version of the Air. What would it mean??. Well&amp;hellip; if they include a Retina display, it could mean the end of the Pro lineup. The new iPad has a 9.7 inches screen, and its resolution is of 2048x1536px. So&amp;hellip; if my math doesn&amp;rsquo;t fail, a 13 inches retina display could have a resolution as high as 2744x2058px&amp;hellip;. while a 15 inches retina display could be 3167x2376px.&lt;/p&gt;</description></item><item><title>iPad 3's demand "has been off the chart"</title><link>https://www.lantean.co/posts/ipad-3s-demand-has-been-off-the-chart/</link><pubDate>Tue, 13 Mar 2012 00:17:24 +0000</pubDate><guid>https://www.lantean.co/posts/ipad-3s-demand-has-been-off-the-chart/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/iPad-3.jpg"&gt;&lt;img class="size-full wp-image-182" title="iPad-3-300x147" alt="" src="https://www.lantean.co/wp-content/uploads/2012/03/iPad-3.jpg" width="300" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yet another post about Apple&amp;rsquo;s iPad 3&amp;hellip;!!. If you check Apple&amp;rsquo;s online store, you&amp;rsquo;ll probably notice that the delivery time for an iPad 3 is about 3 weeks. WOOOOOOW&amp;hellip; that&amp;rsquo;s a looot of time man!!. Usually they ship between 2-3 business days.&lt;/p&gt;
&lt;p&gt;I guess&amp;hellip; after all&amp;hellip; Retina Display is a key feature. At least&amp;hellip; it&amp;rsquo;ll definitely help to get new customers on the line.&lt;/p&gt;
&lt;p&gt;That has an indirect benefit to iOS developers. Yeah&amp;hellip; that means&amp;hellip; a lot of people downloading apps. Well, the whole ecosystem benefits from it. Ain&amp;rsquo;t that cool?&lt;/p&gt;</description></item><item><title>Apple Stocks!!!</title><link>https://www.lantean.co/posts/apple-stocks/</link><pubDate>Tue, 13 Mar 2012 00:12:31 +0000</pubDate><guid>https://www.lantean.co/posts/apple-stocks/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-12-at-9.08.12-PM.png"&gt;&lt;img class="size-full wp-image-185" title="Screen-Shot-2012-03-12-at-9.08.12-PM" src="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-12-at-9.08.12-PM.png" alt="" width="235" height="59" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is just UNVELIEVABLE!!!. It was less than 8 months ago when Apple Stocks were about 380 dollars. Then, Steve Jobs passed away&amp;hellip;.&lt;/p&gt;
&lt;p&gt;I wish i could go back in time and buy a couple of them. This is a strong indicator that&amp;hellip; these guys are doing great. In fact, if they wanted to do so, they could basically buy all their competition.&lt;/p&gt;
&lt;p&gt;Yes&amp;hellip; they have enough cash to buy Microsoft and Google, without having issues at all.&lt;/p&gt;</description></item><item><title>WordPress Import Issues</title><link>https://www.lantean.co/posts/wordpress-import-issues/</link><pubDate>Tue, 13 Mar 2012 00:05:26 +0000</pubDate><guid>https://www.lantean.co/posts/wordpress-import-issues/</guid><description>&lt;p&gt;I&amp;rsquo;ve migrated this blog to a brand new domain. Thing is&amp;hellip; i&amp;rsquo;ve been having lots of glitches and bugs while trying to import the wordpress XML containing all of my posts.&lt;/p&gt;
&lt;p&gt;How did i solve it?. Well, it&amp;rsquo;s probably not the best option, in terms of security. But i had to grant 777 permissions to the folder wp-contents/upload, and the same applies to the /tmp folder.&lt;/p&gt;
&lt;p&gt;After that, everything worked like a charm. Besides that, i had lots of issues while trying to install the plugins i&amp;rsquo;d like to use!. Yeah&amp;hellip; permissions again. The easy and quick workaround was to simply upload everything i need, already decompressed, to the folder wp-contents/plugins.&lt;/p&gt;</description></item><item><title>OSX Software: Code Editor</title><link>https://www.lantean.co/posts/osx-software-code-editor/</link><pubDate>Sun, 11 Mar 2012 22:21:30 +0000</pubDate><guid>https://www.lantean.co/posts/osx-software-code-editor/</guid><description>&lt;p&gt;I know. Real, old school devs.. use nothing but VI&amp;hellip; or it&amp;rsquo;s enhanced incarnation, VIM. But maybe you don&amp;rsquo;t have the time to deal with a big learning curve. I don&amp;rsquo;t wanna memmorize obscure shortcuts, just to be considered &amp;lsquo;old school&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s why i&amp;rsquo;ve been searching for a good html / javascript / php IDE for OSX. So far&amp;hellip; i&amp;rsquo;ve played with few tools. What i was looking for is an integrated environment that allows you to upload your files&amp;hellip; right there. That practically eliminates TextWrangler from the list.&lt;/p&gt;</description></item><item><title>OSX Software: VLC</title><link>https://www.lantean.co/posts/osx-software-vlc/</link><pubDate>Sun, 11 Mar 2012 21:22:42 +0000</pubDate><guid>https://www.lantean.co/posts/osx-software-vlc/</guid><description>&lt;p&gt;I most definitely love Quick Time. It&amp;rsquo;s easy to use, elegant, and it bears Apple&amp;rsquo;s logo. But it has several limitations. Yeah, you guessed. There are certain video formats that you cannot open with Quick Time.&lt;/p&gt;
&lt;p&gt;So&amp;hellip; what happens? . You switch to Windows? just to play your favorite show?. No way.&lt;/p&gt;
&lt;p&gt;There are few alternatives you may or may not have heard of. &lt;a title="VLC" href="http://www.videolan.org/vlc/" target="_blank" rel="nofollow"&gt;VLC&lt;/a&gt;, is a great opensource application, that allows you to open, virtually, any file format. Furthermore, it&amp;rsquo;s available for Mac, Windows&amp;hellip; and linux!. I really love VLC, because it has support for Apple&amp;rsquo;s Remote, and you can lower the volume, pause, or fast forward / rewind, whatever you&amp;rsquo;re viewing.&lt;/p&gt;</description></item><item><title>GeoTargeting your Website</title><link>https://www.lantean.co/posts/geotargeting-your-website/</link><pubDate>Sat, 10 Mar 2012 18:48:50 +0000</pubDate><guid>https://www.lantean.co/posts/geotargeting-your-website/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-12-at-8.56.29-PM-e1331596657120.png"&gt;&lt;img class="ize-full wp-image-183" title="Screen-Shot-2012-03-12-at-8.56.29-PM-e1331596657120" src="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-12-at-8.56.29-PM-e1331596657120.png" alt="" width="200" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Suppose that you&amp;rsquo;ve got a chinese or italian domain name. And&amp;hellip; for the sake of giving you an example, you wanna rank high in Argentina&amp;rsquo;s Google results.&lt;/p&gt;
&lt;p&gt;As you may (or may not know), google has regional search results. If you launch &amp;lsquo;google.com&amp;rsquo; while you&amp;rsquo;re in Argentina, you&amp;rsquo;ll get redirected to &amp;lsquo;google.com.ar&amp;rsquo;, and the &amp;lsquo;.com.ar&amp;rsquo; webpages will have more weight in the search results.&lt;/p&gt;
&lt;p&gt;Well&amp;hellip; there is a secret to this!. You can specify what&amp;rsquo;s the &amp;lsquo;Target Country&amp;rsquo; of a website. How?????&amp;hellip;.&lt;/p&gt;</description></item><item><title>HTML5 Slideshow!</title><link>https://www.lantean.co/posts/html5-slideshow/</link><pubDate>Sat, 10 Mar 2012 16:20:31 +0000</pubDate><guid>https://www.lantean.co/posts/html5-slideshow/</guid><description>&lt;p style="text-align: center;"&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/html5-slideshow.png"&gt;&lt;img class="aligncenter wp-image-1072" title="html5 slideshow" alt="html5 slideshow" src="https://www.lantean.co/wp-content/uploads/2012/03/html5-slideshow.png" width="815" height="623" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I began playing with HTML&amp;hellip; ten-eleven years ago. It was a rough time, in which you had to do virtually everything. It took a loooot of time to do something at least decent, but you had to code every single component.&lt;/p&gt;
&lt;p&gt;Ten years have passed by. Now, it seems easier than ever to build a great looking website in almost no time. Hey! look at this blog! it&amp;rsquo;s running thanks to Wordpress, and guess what! i&amp;rsquo;ve set it up in five minutes!.&lt;/p&gt;</description></item><item><title>OSX Tools: TrueCrypt</title><link>https://www.lantean.co/posts/osx-tools-truecrypt/</link><pubDate>Sat, 10 Mar 2012 13:14:57 +0000</pubDate><guid>https://www.lantean.co/posts/osx-tools-truecrypt/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-12-at-8.58.13-PM.png"&gt;&lt;img class="size-full wp-image-184" title="Screen-Shot-2012-03-12-at-8.58.13-PM" src="https://www.lantean.co/wp-content/uploads/2012/03/Screen-Shot-2012-03-12-at-8.58.13-PM.png" alt="" width="243" height="37" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OSX Users have enjoyed FileValult for quite a long time. It&amp;rsquo;s Apple&amp;rsquo;s standard tool to encrypt a whole volume. And it&amp;rsquo;s pretty hard to crack!.&lt;/p&gt;
&lt;p&gt;But it has few weak points. You cannot encrypt a folder, or a single file. And once you&amp;rsquo;re logged into your mac, you&amp;rsquo;ve got access to all the files and folders stored within your user.
Maybe you share the user with someone else. Or maybe you simply wanna backup encrypted data, and you think that PGP isn&amp;rsquo;t a good alternative.. or you just wanna try something new!.&lt;/p&gt;</description></item><item><title>HTML5 Popups!</title><link>https://www.lantean.co/posts/html5-popups/</link><pubDate>Sat, 10 Mar 2012 02:52:38 +0000</pubDate><guid>https://www.lantean.co/posts/html5-popups/</guid><description>&lt;p&gt;Old school HTML fellows know how annoying popups can be. It&amp;rsquo;s definitely not a good practise, since every single modern browser has some sort of popup blocker.&lt;/p&gt;
&lt;p&gt;But what happens when we &lt;strong&gt;really&lt;/strong&gt; need to display a popup ?.&lt;/p&gt;
&lt;p&gt;Well, what Google fellows do is basically display a modal layer, preventing you from clicking anything below this layer. Thanks god, there are few interesting opensource options that already solve all the quirks you might find while dealing with tons of different browsers.&lt;/p&gt;</description></item><item><title>FTP Client for OSX!</title><link>https://www.lantean.co/posts/osx-ftp-client/</link><pubDate>Fri, 09 Mar 2012 18:34:25 +0000</pubDate><guid>https://www.lantean.co/posts/osx-ftp-client/</guid><description>&lt;p&gt;I recently had to play with several FTP servers&amp;hellip; and truth to be told, working command line can turn into a pain in the neck. You might miss a filename, or maybe you need to type really, relaly long paths. That&amp;rsquo;s why i began looking for a decent FTP client for OSX.&lt;/p&gt;
&lt;p&gt;Well, it turns out, &lt;a title="Cyberduck FTP client" href="http://cyberduck.ch/" target="_blank"&gt;these guys wrote a pretty decent FTP client&lt;/a&gt;. And guess what! they offer it for free!.&lt;/p&gt;</description></item><item><title>Preventing crashes: JSON Parsers &amp;amp; Null entries!</title><link>https://www.lantean.co/posts/preventing-crashes-json-parsers-null-entries/</link><pubDate>Fri, 09 Mar 2012 16:35:06 +0000</pubDate><guid>https://www.lantean.co/posts/preventing-crashes-json-parsers-null-entries/</guid><description>&lt;p&gt;How many times you got to parse a backend response, and tested if a given value is != nil?. Well, as it turns out, many parsers (such as JSONKit) will parse &amp;rsquo;null&amp;rsquo; values into an instance of NSNull. That might cause a crash&amp;hellip; unless you write eeeverywhere&amp;hellip; &amp;lsquo;!= nil &amp;amp;&amp;amp; != [NSNull null]&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;So&amp;hellip; a good idea would be to implement an NSDictionary extention, to do that. Right?.
The method would look like this:&lt;/p&gt;</description></item><item><title>Filtering arrays with NSPredicate!</title><link>https://www.lantean.co/posts/filtering-arrays-with-nspredicate/</link><pubDate>Fri, 09 Mar 2012 12:24:42 +0000</pubDate><guid>https://www.lantean.co/posts/filtering-arrays-with-nspredicate/</guid><description>&lt;p&gt;Suppose you wanna filter a collection of objects. Normally, you&amp;rsquo;d write a while loop, implement a comparison, and add the matching objects to a collection.&lt;/p&gt;
&lt;p&gt;Well, there is an easier way!!. For the sake of this example, say you wanna filter the objects that have the BOOL &amp;lsquo;isEnabled set to YES. So, you could do the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSPredicate&lt;span style="color:#f92672"&gt;*&lt;/span&gt; predicate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [NSPredicate predicateWithFormat:&lt;span style="color:#e6db74"&gt;@&amp;#34;isEnabled == YES&amp;#34;&lt;/span&gt;]; NSArray &lt;span style="color:#f92672"&gt;*&lt;/span&gt;filteredArray &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [myArray filteredArrayUsingPredicate:predicate];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Yet another powerful example of NSPredicate would be&amp;hellip; remember &amp;lsquo;SELECT* WHERE FIELD IN(1, 2)&amp;rsquo; ?. Guess what!&lt;/p&gt;</description></item><item><title>Memory Management Tips!</title><link>https://www.lantean.co/posts/memory-management-tips/</link><pubDate>Thu, 08 Mar 2012 23:26:27 +0000</pubDate><guid>https://www.lantean.co/posts/memory-management-tips/</guid><description>&lt;p&gt;It&amp;rsquo;s REALLY recommended that you set to nil any pointer that has a reference to a released object. But it&amp;rsquo;s tedious, right?. [pointer release]; pointer = nil;.&lt;/p&gt;
&lt;p&gt;Why don&amp;rsquo;t we use a macro instead??&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define LAWipe(x)         [x release]; x = nil;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Simple. Nice. This should help you lower down the BAD_ACCESS crashes!.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>iOS Singletons</title><link>https://www.lantean.co/posts/ios-singletons/</link><pubDate>Thu, 08 Mar 2012 23:08:53 +0000</pubDate><guid>https://www.lantean.co/posts/ios-singletons/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/ios3.jpeg"&gt;&lt;img class="aligncenter size-full wp-image-1066" alt="ios3" src="https://www.lantean.co/wp-content/uploads/2012/03/ios3.jpeg" width="400" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Suppose that&amp;hellip; for whatever reason, you need to target iOS 3.x. Yes. You need to build an app that should run on any possible device. Or say that&amp;hellip; you simply don&amp;rsquo;t wanna use GCD.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s the alternative to write a singleton?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+ (&lt;span style="color:#66d9ef"&gt;id&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;sharedInstance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(_instance &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nil)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;@synchronized&lt;/span&gt;(self)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(_instance &lt;span style="color:#f92672"&gt;==&lt;/span&gt; nil)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; _instance &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[[self &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt;] alloc] init];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; _instance;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a nice alternative to the GCD option. The first time the instance is created, you&amp;rsquo;ll suffer the lag caused by the @synchronized block. But after that. it&amp;rsquo;s just an if. No context switch. No whatsoever! REALLY performant!&lt;/p&gt;</description></item><item><title>iOS Assertions</title><link>https://www.lantean.co/posts/ios-assertions/</link><pubDate>Thu, 08 Mar 2012 23:03:28 +0000</pubDate><guid>https://www.lantean.co/posts/ios-assertions/</guid><description>&lt;p&gt;So&amp;hellip; you write a new piece of code. You run it. Test it. Ship it!. And in two weeks, you end up flooded by iTunes Connect Crash Reports.&lt;/p&gt;
&lt;p&gt;What happened?. It turned out that an attribute parsed from a backend response ended up being a NSString instead of an NSNumber. And it was only after an untested-and-specific-workflow that your application actually used that field.&lt;/p&gt;
&lt;p&gt;How do we prevent this?. ASSERTIONS!. A good friend of mine teached me that&amp;hellip; great software blows everywhere before getting published. If your code works perfectly&amp;hellip; you should be scared!.&lt;/p&gt;</description></item><item><title>Grand Central Dispatch Singletons</title><link>https://www.lantean.co/posts/grand-central-dispatch-singletons/</link><pubDate>Thu, 08 Mar 2012 22:46:41 +0000</pubDate><guid>https://www.lantean.co/posts/grand-central-dispatch-singletons/</guid><description>&lt;p&gt;So&amp;hellip; what&amp;rsquo;s the recommended way (thread safety + performance) to implement a singleton?&lt;/p&gt;
&lt;p&gt;Well.. it looks pretty much like this!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+ (&lt;span style="color:#66d9ef"&gt;instancetype&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;sharedInstance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; dispatch_once_t pred;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; Foo&lt;span style="color:#f92672"&gt;*&lt;/span&gt; bar &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nil;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dispatch_once(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;pred, &lt;span style="color:#f92672"&gt;^&lt;/span&gt;{ bar &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [[Foo alloc] init]; });
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; bar;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>OSX Terminal: Adding current folder to the title!</title><link>https://www.lantean.co/posts/osx-terminal-adding-current-folder-to-the-title/</link><pubDate>Thu, 08 Mar 2012 22:00:21 +0000</pubDate><guid>https://www.lantean.co/posts/osx-terminal-adding-current-folder-to-the-title/</guid><description>&lt;p&gt;If you&amp;rsquo;re just like me, and have lots of Terminal tabs open, you probably end up typing &amp;lsquo;pwd&amp;rsquo; all the time.&lt;/p&gt;
&lt;p&gt;Luckily, there is an easy solution:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a file named &amp;lsquo;.profile&amp;rsquo;, in your user&amp;rsquo;s home.&lt;/li&gt;
&lt;li&gt;Type the following string in there!:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export PROMPT_COMMAND&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;echo &lt;span style="color:#f92672"&gt;-&lt;/span&gt;ne &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\033&lt;/span&gt;&lt;span style="color:#e6db74"&gt;]0;[${PWD/$HOME/~}]&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\007&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;rsquo;s it!. You&amp;rsquo;re gonna have, from now on, the current working directory right there in the windows tab!.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>En algun lugar del Tiempo</title><link>https://www.lantean.co/posts/en-algun-lugar-del-tiempo/</link><pubDate>Thu, 08 Mar 2012 20:36:55 +0000</pubDate><guid>https://www.lantean.co/posts/en-algun-lugar-del-tiempo/</guid><description>&lt;p&gt;&lt;a href="https://www.lantean.co/wp-content/uploads/2012/03/welcome-home.jpg"&gt;&lt;img class="aligncenter size-full wp-image-193" title="welcome-home" src="https://www.lantean.co/wp-content/uploads/2012/03/welcome-home.jpg" alt="" width="375" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>