• A Quick Update

    A lot has changed for me in the last few months, so it’s time for an quick update:

    I finished and submitted my Bachelors thesis in May. A few weeks later I received my final grade and my official degree. It took me quite some time to go through all online profiles and remove the ‚computer science student‘ part of it. At this point it was time to actively start looking for my first real job.

    I only sent out applications for iOS positions and it worked out pretty well. I attended a few interviews and decided to join a young, but international software development consulting company. Everything there was more inviting, structured and appealing than the other companies, mainly startups, I also applied at. The interview processes were stressful, but also exciting. Thank god no one asked ridiculous googly questions.

    The month between signing the final contract and my first day at work just flew by. The weather was beautiful and I spent a great time with my lovely girlfriend. It struck me that this was my last school and university-like summer break. It’s part of growing up, I guess.

    The first work day was two weeks ago. I’m still in the warming up phase, but everything looks perfect.

    I hope you enjoyed the update and I can bring myself to write a post here and there.


  • uBlock - ublock.org

    Content. Not clutter.
    Your web experience has never been this fast and efficient.
    uBlock is completely free and open-source.

    Whilst on the subject of Ad-blocking: uBlock looks like a perfect alternative to the bigger players in the game. uBlock is completely free, open source and the project is supported by donations. The intentions of the companies behind the more well-known alternatives is often unclear, so I’m very happy to use uBlock instead.


  • The ethics of modern web ad-blocking - marco.org

    Marco Arment:

    In a few years, after the dust has settled, we’re all going to look back at today’s web’s excesses and abuses as an almost unbelievable embarrassment. Hopefully, the worst is behind us. And it’s time to stop demonizing people who use tools to bring that sanity to their web browsers today.

    I just installed an experimental ad blocker on my iPhone (iOS 9 Beta) and suddenly browsing mobile web pages is fun again.


  • Three Months of Apple Watch - 512pixels.net

    Stephen Hackett:

    Apple Watch is much more about want than need. I can’t judge that for anyone but me, but it is something to think about. Apple Watch probably isn’t going to change your life, but it will make it better in a bunch of small ways. I find it a valuable addition to my life, but not everyone will, and that’s fine. After all, as Apple says, its the most personal device they’ve ever made.

    What a great piece, a review after three months of daily usage is so valuable!


  • Reeder 3 for Mac Public Beta

    Reeder is one of my favorite Mac Apps. The new design and functionality looks great, especially the support for read-it-later services like Instapaper!


  • Airplane Mode: The Podcast

    Dave Wiskus:

    We’ve always loved Behind the Music and iTunes Originals, and hearing our favorite artists tell stories on stage. Something about a view into the process makes the music feel like a more intimate experience. It seemed that, if we were going to try starting a band and making a record without a road map, perhaps we had an opportunity to give others a look into what we’re doing.

    This podcast follows the path of Dave Wiskus and Joe Cieplinski starting the indie rock band Airplane Mode. A really cool project and neat idea for a podcast. The first songs also sound promising!


  • Coda For iOS

    The incredible, portable text editor and file manager that does a lot has a major update that’s astonishing.

    I think “astonishing” is the right word for this update. Coda for iOS is now a universal App and it’s basically a full-fledged text editor, FTP-Client and a terminal. All that for 10 bucks. That’s insane.


  • Jim Dalrymple’s Apple Music Nightmare

    Jim Dalrymple:

    Looking at my old iTunes Match library, before Apple Music, I’m missing about 4,700 songs. At this point, I just don’t care anymore, I just want Apple Music off my devices.

    I trusted my data to Apple and they failed. I also failed by not backing up my library before installing Apple Music. I will not make either of those mistakes again.

    That is more than unfortunate for Apple Music. The service managed to anger one of the biggest music enthusiasts in the community. In an additional note: Never recommend Electronica and Pop music to the Beard.

    Apple Music has been great for me personally. Almost every recommendation in the ‘For You’ section is on point. I enjoy browsing the ‘New’ tab for new releases that may not be in my default genre. I haven’t spent too much time listening to Beats1 yet, but every time I tuned in the music they played was solid and enjoyable.

    I love listening to whole albums in order. With iCloud Music Library I can add albums from Apple Music to my own library and they are treated as if I bought them on the iTunes Store1. This way I can curate and expand my precious library for a monthly flat rate price. I made a backup before migrating to iCloud Music Library but for now everything looks perfect. I also have to mention that my migration path was very easy. I didn’t migrate with iTunes Match or an existing Beats subscription.

    I sometimes wonder if a stand alone App like Spotify would have been a better and cleaner fit for Apple Music instead of merging it into the mess that is iTunes. It sure would have prevented Jim from loosing his songs.


  • Evernote Just Replaced It’s CEO - theverge.com

    Chris O’Neill, who previously ran business at Google Glass, is the new CEO, and will focus on building a sales team and preparing the company for eventually going public. In an email interview with Recode, O’Neill offered up some empty boilerplate: „Global user growth looks strong as do early returns on recent monetization efforts. User growth and revenue are the oxygen for any successful company so we’ll be looking to double down on this traction.“

    Now I’m even happier that I switched away from Evernote a few weeks ago.


  • Equal - equalapp.net

    Equal splits your bills, shares the costs and gives you an overview of your debts. Forget about doing the math at the end of a vacation or uneven household expenses.

    Equal is a really great App to manage group expenses and share costs. The App is made in Hamburg, the design is beautiful and it’s free with some very handy features available by In-App purchase. Go try it!


  • YouTube

    If you would have asked me a few months ago to describe to content that is available on YouTube, my answer may have been the following: Animal video compilations, stupid amateur comedy show, beauty videos and children playing Minecraft.

    My view on YouTube and the content totally changed after I started listening to the Hello Internet Podcast. The two hosts CGP Grey and Brady ‘Bradly’ Haran earn their living by producing YouTube content. The reason I started listening had nothing to do with their job, but more with the always funny and entertaining conversations between the two of them. To get more insight into the topics they were talking about I started to watch their videos. A whole new world of unbelievable smart people producing highly informative/scientific and also entertaining content opened in front of me. I quickly discovered more people and more channels to not run out of new videos to watch.

    I will just highlight a few of my favourite channels that mark a good starting point to the big YouTube education world.

    • CGP Grey: Fast-paced videos about obscure topics like country border, elections and flags.
    • Numberphile: Mathematicians explaining numbers and math.
    • Objectivity: Videos about cool objects and relicts that played a role in the history of science.
    • SmarterEveryDay: Destin explores the world using science, often with the help of slow-mo videos.
    • Veritasium: Derek explains all kinds of science facts and uncovers general misconceptions.

    The most watched videos are general a perfect way to get an understanding about the different channels. Have fun!


  • Jumping on the Camel

    Since the beginning almost a year ago, this blog was run on a self hosted Ghost instance. Ghost is extremely easy to setup up, fast and fun to use but over the time the project naturally grew quite a bit in its size, to the point where I can’t easily wrap my head around it. More and more this made me feel uncomfortable. I’m no full time JavaScript developer or server admin, so I never was happy about making small changes like own linkpost support or updating the blog cms itself. This wasn’t the situation I wanted to be in for a small side project like this blog.

    I was looking for alternatives with the smallest possible complexity that have the following few characteristics:

    – Written in a language I have used before

    – Native support for linkposts

    – Posting on the go

    I quickly settled with Casey Liss’s Camel 🐪 project. I’ve already tried it a year ago, but I chose Ghost because I thought the existing community around it may be useful. Now my requirements have changed.

    I already had my posts saved as markdown files, so all I had to do was converting the format to Camel’s requirements, converting my blog theme and starting the single JavaScript file on my VPS. Done.

    Camel has not web interface for posting mobile, but Dropbox on the server makes it possible to use all the great mobile Markdown text editors for posting on the go. I plan to write a follow up post about my specific setup soon.

    I’m happy that I made the switch, everything went really smooth and is running great!


  • Lore Podcast

    Lore is a bi-weekly podcast about true life scary stories. The people, places, and things of our darkest nightmares all have real facts at their core. Each episode of Lore looks into a uniquely scary tale and uncovers the truth behind it. Sometimes the truth is more frightening than fiction.

    I discovered this podcast just by accident and I loved every episode of it. It’s produced by the designer and author of supernatural thrillers Aaron Mahnke. He tells regional scary stories, the kind that would be told around a campfire. He explains the stories in the context of the time and draws lines to the present. This podcast isn’t about supernatural fanatics, it’s just about telling lore. Also the background music was on point for every episode.


  • The Talk Show - LIVE FROM WWDC 2015, WITH SPECIAL GUEST PHIL SCHILLER

    Recorded in front of a live audience at Mezzanine in San Francisco, John Gruber is joined by Phil Schiller to discuss the news from WWDC: OS X 10.11 El Capitan, iOS 9, the new native app SDK for Apple Watch, Apple Music, and the 2004 American League Championship series.

    What is even happening. If you are still arguing that Apple hasn’t really changed under Tim Cook, think again.


  • Highlight (bold) First Line in a UITextView

    For a new App I’m working on, I wanted to use a single UITextView for entering a headline/caption and a body text. The first line (until a line break) should be treated as the headline, the rest as the body text. For a visual distinction, the header should be bold.

    This can be easily solved for static text using NSAttributedString:

    override func viewDidLoad() {
    	...
    	self.highlightFirstLineInTextView(self.textView)
    }
     
    private func highlightFirstLineInTextView(textView: UITextView) {
    	let textAsNSString = textView.text as NSString
    	let lineBreakRange = textAsNSString.rangeOfString("\n")
    	let newAttributedText = NSMutableAttributedString(attributedString: textView.attributedText)
    	let boldRange: NSRange
    	if lineBreakRange.location < textAsNSString.length {
    		boldRange = NSRange(location: 0, length: lineBreakRange.location)
    	} else {
    		boldRange = NSRange(location: 0, length: textAsNSString.length)
    	}
    	
    	newAttributedText.addAttribute(NSFontAttributeName, value: UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline), range: boldRange)
    	textView.attributedText = newAttributedText
    }
    

    I’m not using Swift Ranges because NSAttributedString-Objects do not play well with them. To get an NSRange from rangeOfString I’m bridging text to NSString.

    All the nice highlights will get butchered when the user starts to enter or edit the text. To prevent this, we can adjust the typingAttributes of the UITextView depending on whether the headline or the body is changed:

    let headerAttributes = [NSFontAttributeName : UIFont.preferredFontForTextStyle(UIFontTextStyleBody)]
    let bodyAttributes = [NSFontAttributeName : UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)]
     
    override func viewDidLoad() {
    	self.textView.delegate = self
    	...
    }
     
    // MARK: - UITextFieldDelegate
     
    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    	let textAsNSString = self.textView.text as NSString
    	let replaced = textAsNSString.stringByReplacingCharactersInRange(range, withString: text) as NSString
    	let boldRange = replaced.rangeOfString("\n")
    	if boldRange.location <= range.location {
    		self.textView.typingAttributes = self.headerAttributes
    	} else {
    		self.textView.typingAttributes = self.bodyAttributes
    	}
    	
    	return true
    }
    

    This will apply the correct attributes to the changed header or body part of the text. If someone has a better solution to this, please let me know!