<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for nevyn</title><link>http://disqus.com/by/nevyn/</link><description></description><atom:link href="http://disqus.com/nevyn/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Wed, 20 Feb 2019 11:33:21 -0000</lastBuildDate><item><title>Re: Feber</title><link>http://feber.se/393636/#comment-4346419601</link><description>&lt;p&gt;Så oansvarigt av er på Feber att kalla detta haveri för "mänskliga faktorn". Detta handlar om extrem vårdslöshet och inkompetens. Det var inte ett misstag som gjordes, det var någon som medvetet fattade väldigt dåliga beslut. De verkar fortfarande stå för sina extremt dåliga beslut också, vilket gör dem till dårar som ingen någonsin borde köpa tjänster av.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Wed, 20 Feb 2019 11:33:21 -0000</pubDate></item><item><title>Re: Activator beta now available for iOS 8.4</title><link>https://www.idownloadblog.com/2015/06/30/activator-beta-now-available-for-ios-8-4/#comment-2113584192</link><description>&lt;p&gt;Just confirmed that Lookback works for recording the screen on 8.4 tho :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Thu, 02 Jul 2015 19:18:46 -0000</pubDate></item><item><title>Re: Recension &amp;#8211; Towerfall Ascension</title><link>http://ctrlaltelite.se/2014/04/14/recension-towerfall-ascension/#comment-1335539063</link><description>&lt;p&gt;Jag tycker Quest-läget är otroligt roligt med två spelare, speciellt när man kör på den svårare svårighetsgraden: riktigt bra utmaning utan att bli frustrerande. Förlorar man så är det alltid ens eget fel, inte orättvis AI eller konstig leveldesign; ändå är fienderna rätt avancerade och har massa roliga spelmekaniker.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Mon, 14 Apr 2014 06:18:56 -0000</pubDate></item><item><title>Re: Methods of concurrency &amp;mdash; GCD, agents, tasks and invocations</title><link>http://overooped.com/post/41803252527#comment-1055161794</link><description>&lt;p&gt;Correct.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 22 Sep 2013 17:41:41 -0000</pubDate></item><item><title>Re: Methods of concurrency &amp;mdash; GCD, agents, tasks and invocations</title><link>http://overooped.com/post/41803252527#comment-1055155424</link><description>&lt;p&gt;I would say that a GCD queue is a "cheap thread". You can easilly use a dispatch queue to transfer data, instead of code: data is captured by the block, and transported sequentially to the other queue. If you have classes exposing the work queue à la SPAgent, you could transport data by doing something like:&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;pre&gt;@implementation NSObject (SPAgentChannel)&lt;br&gt;- (void)chan_sendMessage:(id)message&lt;br&gt;{&lt;br&gt;  dispatch_async(self.workQueue, ^{&lt;br&gt;    [self chan_handleMessage:message];&lt;br&gt;  });&lt;br&gt;}&lt;br&gt;@end&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;... and the agent then just implements chan_handleMessage: to parse and handle the message, not having to care to dispatch, since it's on its worker queue ("in my process" in erlang).&lt;/p&gt;&lt;p&gt;This way doesn't allow the target "process" to choose to dequeue the message at a specific point, but it *will* be handled with guaranteed ordering.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 22 Sep 2013 17:33:08 -0000</pubDate></item><item><title>Re: Weekend Hacking</title><link>http://overooped.com/post/35236556#comment-878348853</link><description>&lt;p&gt;Fixed, thanks!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 28 Apr 2013 06:19:24 -0000</pubDate></item><item><title>Re: Methods of concurrency &amp;mdash; GCD, agents, tasks and invocations</title><link>http://overooped.com/post/41803252527#comment-787368770</link><description>&lt;p&gt;I haven't seen Celluloid before, but it looks very similar. Will look at it closer, thanks! An aside: what I enjoy with doing this in ObjC is all the work Apple has done for me already with GCD. So many tricky situations you don't have to think about.&lt;/p&gt;&lt;p&gt;To your question: Yes! That's the beauty of SPAgent. It's up to the caller to decide how it wants to enforce the API contract. You can use the magical category method, or you can dispatch manually, or you can let SPTask dispatch for you, or whatever. The callee is exposing all you need to fulfill its API contracts for it. Once you've done that, you can do anything you can normally do in C or ObjC.&lt;/p&gt;&lt;p&gt;sp_agentAsync is a bit more limited, however: it only supports object types. If you want to return a struct or C++ object, you're going to have to dispatch_async on your own.&lt;/p&gt;&lt;p&gt;Regarding making it appealing to read, have a look at SPAwait, which I haven't had time to blog about yet: &lt;a href="https://github.com/nevyn/SPAsync#spawait" rel="nofollow noopener" target="_blank" title="https://github.com/nevyn/SPAsync#spawait"&gt;https://github.com/nevyn/SP...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 03 Feb 2013 10:51:00 -0000</pubDate></item><item><title>Re: My Inner Hulk</title><link>http://overooped.com/post/30132680252#comment-628781153</link><description>&lt;p&gt;Just to make sure: you're not being ironic? IMHO I shout really loud, almost getting hoarse here :P&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sat, 25 Aug 2012 15:04:08 -0000</pubDate></item><item><title>Re: My Inner Hulk</title><link>http://overooped.com/post/30132680252#comment-628780511</link><description>&lt;p&gt;Awesome, I was waiting for your opinion, Blixt :)&lt;/p&gt;&lt;p&gt;What you're saying only makes sense if developing in web+js is faster than Cocoa. Given two equivallently good developers, I don't think that's the case, but maybe I'm fooling myself. What you're saying is also exactly what Facebook themselves are saying. It feels like a retrofitting of what happened to make it sound better; they obviously really believed in web tech and thought that it was the way forward. Many people do and did: just look at webOS and the development tools for iPhone OS 1. Difference is, Apple gave up on web tech fast, Facebook only just did, long after anything that could be considered a prototyping period.&lt;/p&gt;&lt;p&gt;Oh, what you're describing is almost trivial, from a technical point of view. You can plug in a scripting language with direct object-model compatibility (not even a bridge) with Lisp, JavaScript or Ruby in minutes. Apple have powerful (optional) automatic layouting tools, and there are even third-party libraries to apply CSS to Cocoa views ( &lt;a href="https://github.com/cssapply/CSSApply" rel="nofollow noopener" target="_blank" title="https://github.com/cssapply/CSSApply"&gt;https://github.com/cssapply...&lt;/a&gt; is one, I saw another one recently but don't remember the name). The only problem (and it's a big one) is political - Apple doesn't allow giving your app features without going through review. It feels kind of pointless to build, but I might do it anyway :P&lt;/p&gt;&lt;p&gt;Thank you for the feedback and opinions!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sat, 25 Aug 2012 15:02:54 -0000</pubDate></item><item><title>Re: Faking generics in ObjC</title><link>http://overooped.com/post/22516989979#comment-521024933</link><description>&lt;p&gt;Hah, synchronicity! Wonder if the solutions can be combined somehow to make something where the pros aren't drowned in the cons…&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 06 May 2012 13:18:21 -0000</pubDate></item><item><title>Re: DBGraffle4&amp;#160;: Automatically draw SQL schema in OmniGraffle</title><link>http://overooped.com/post/89728630#comment-495846750</link><description>&lt;p&gt;That's a great idea! The code is not mine originally, but I really don't mind, and I would be greatly surprised if Paul would mind given the comment below.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Thu, 12 Apr 2012 19:12:49 -0000</pubDate></item><item><title>Re: The One Objective-C Block Memory Management Example You Need To Read</title><link>http://overooped.com/post/174960131#comment-492505355</link><description>&lt;p&gt;Yes. Either Block_release( ... ) or [(id)block release]&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Mon, 09 Apr 2012 17:14:07 -0000</pubDate></item><item><title>Re: File format plugin API for Spotify?</title><link>http://overooped.com/post/5505499488#comment-465408339</link><description>&lt;p&gt;No :( :( I haven't had time to work on it... A few months back I tried resurrecting the branch, but that code has atrophied beyond rescue, will have to rewrite it. again... I have a few other projects I want to do first, but hopefully I can get to it near end of summer or so.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Wed, 14 Mar 2012 16:37:30 -0000</pubDate></item><item><title>Re: http://blog.stabyourself.net/post/18752093583</title><link>http://blog.stabyourself.net/post/18752093583#comment-456305843</link><description>&lt;p&gt;Hey, wanted to start hacking on mari0 but don't like source tarballs, so I imported 1.0 and 1.2 into a git repo on github: &lt;a href="https://github.com/nevyn/mari0" rel="nofollow noopener" target="_blank" title="https://github.com/nevyn/mari0"&gt;https://github.com/nevyn/mari0&lt;/a&gt;&lt;br&gt;even awesomer would be if you guys had a canonical repo on github or bitbucket :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 04 Mar 2012 17:54:52 -0000</pubDate></item><item><title>Re: http://tumblr.thedailywh.at/post/17901966176</title><link>http://tumblr.thedailywh.at/post/17901966176#comment-443575697</link><description>&lt;p&gt;I read about it in the paper the other day. iirc, he turned onto the wrong road onto one that was in such bad condition that the car got stuck.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 19 Feb 2012 16:05:24 -0000</pubDate></item><item><title>Re: Rapid network protocol prototyping with TCAsyncHashProtocol</title><link>http://overooped.com/post/14937574206#comment-443533322</link><description>&lt;p&gt;No, I don't know why I named it that. It should be TCAsyncDictProto. I guess Ruby's use of the word "hash" to mean 'dictionary with hashed keys' sort of stuck.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sun, 19 Feb 2012 14:53:20 -0000</pubDate></item><item><title>Re: Spotify iOS app update brings 320kbps music to mobiles</title><link>http://www.engadget.com/2012/02/11/spotify-ios-app-update-brings-320kbps-music-to-mobiles/#comment-436044942</link><description>&lt;p&gt;Spotify doesn't use mp3.&lt;/p&gt;&lt;p&gt;You can compress audio at least 50% without losing a single bit of audio information with a lossless encoder. Storing or transmitting wav files is only a waste of storage space or bandwidth  (unless your hardware is incapable of decoding any lossless audio formats).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Sat, 11 Feb 2012 07:15:43 -0000</pubDate></item><item><title>Re: Programming with C Blocks on Apple Devices</title><link>http://thirdcog.eu/pwcblocks/#comment-422534002</link><description>&lt;p&gt;Since it seems I've lost that code, I leave it as an exercise for the reader to implement it :P Not so sure I think it's a good idea anymore anyway; I'd probably return an object representing the operation instead.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Fri, 27 Jan 2012 15:34:34 -0000</pubDate></item><item><title>Re: Programming with C Blocks on Apple Devices</title><link>http://thirdcog.eu/pwcblocks/#comment-422531361</link><description>&lt;p&gt;No, blocks is not creating code at runtime. The only differences between a normal C function and a block is that the block can be defined inline, and the block will manage captured variables at runtime. There is no run-time compiler in Objective-C.&lt;/p&gt;&lt;p&gt;Plist files can only contain dictionaries, arrays, strings and numbers. You are trying to execute an NSString as if it was a block.&lt;/p&gt;&lt;p&gt;Casting in C cannot change a value (beyond changing the storage size of a number). You're telling the compiler that the memory that parserVersionA is pointing at is actually a block, but the NSString in memory remains an NSString, and thus trying to execute it like a block will always crash.&lt;/p&gt;&lt;p&gt;Since you're compiling every app upgrade, there is no point in interpreting your parsers: just write an abstract interface for parser plugins, and implement the interface and register the resulting class for each parser you need.&lt;/p&gt;&lt;p&gt;If you really want run-time loaded code and are developing for Mac, look into NSBundle's -[classNamed:]; or on iOS, look into embedding a scripting language such as Lua or Nu.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Fri, 27 Jan 2012 15:30:27 -0000</pubDate></item><item><title>Re: Rapid network protocol prototyping with TCAsyncHashProtocol</title><link>http://overooped.com/post/14937574206#comment-408143815</link><description>&lt;p&gt;haha oops :P fixed!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Wed, 11 Jan 2012 16:55:48 -0000</pubDate></item><item><title>Re: Pier-Olivier Thibault - @private, @public and @protected with the arrow operator (-&gt;)</title><link>http://www.pothibo.com/2011/05/23/arrow-operator-in-objc.html#comment-396458979</link><description>&lt;p&gt;My suggestion is to never ever use the -&amp;gt; operator on an ObjC object, and to never touch an instance variable in a superclass. In fact, never even expose instance variables in headers.&lt;/p&gt;&lt;p&gt;Instead of&lt;/p&gt;&lt;p&gt;@interface Foo : Bar {&lt;br&gt;  int mything;&lt;br&gt;}&lt;br&gt;@end&lt;/p&gt;&lt;p&gt;do&lt;/p&gt;&lt;p&gt;@interface Foo : Bar&lt;br&gt;@end&lt;/p&gt;&lt;p&gt;@implementation Foo {&lt;br&gt;  int mything&lt;br&gt;}&lt;br&gt;@end&lt;/p&gt;&lt;p&gt;if you're on iOS 5, or if you're on iOS 4 or below:&lt;/p&gt;&lt;p&gt;@interface Foo : Bar&lt;br&gt;@end&lt;/p&gt;&lt;p&gt;// in .m file:&lt;br&gt;@interface Foo : Bar ()&lt;br&gt;@property(nonatomic) int mything;&lt;br&gt;@end&lt;br&gt;@implementation Foo&lt;br&gt;@synthesize mything;&lt;br&gt;@end&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Thu, 29 Dec 2011 09:01:20 -0000</pubDate></item><item><title>Re: http://durietz.tumblr.com/post/14131807949</title><link>http://durietz.tumblr.com/post/14131807949#comment-385458656</link><description>&lt;p&gt;We had Now Playing on the navigation stack previously, and it was rather horrible. The thing Spotify can do that &lt;a href="http://Music.app" rel="nofollow noopener" target="_blank" title="Music.app"&gt;Music.app&lt;/a&gt; can't do is to navigate to more content *from* the Now playing screen: you can get to the current track's album and artist. Pressing the album button would push an album view on top of the current navigation stack, and at the same time take Now Playing *out* of that stack so that you wouldn't be in the situation where both "back" and "forward" would take you to Now playing. This was highly confusing, and messed my brain up every time I used it, even though I had used the app for a year and it was *my app*! So confusing.&lt;/p&gt;&lt;p&gt;That's what led me to moving it to a modal sheet instead. As for the motivation for having the hide button in the right corner rather than the left? I was surprised to find that the HIG does not mandate positioning of buttons in a modal sheet. However, Apple consistently use the top-right corner for the primary action, and the top-left for the secondary action. This is also consistent with having important controls as close to the right thumb as possible. Compare with the Cancel button placement in the screenshot of New Message sheet at &lt;a href="http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW18" rel="nofollow noopener" target="_blank" title="http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW18"&gt;http://developer.apple.com/...&lt;/a&gt; . "Hide" is the primary action of Now Playing, and getting more information about the current track is the secondary action.&lt;/p&gt;&lt;p&gt;I've long been working on a redesign I call "Tabless", in which Now Playing never appears automatically, and in which its modal appearance makes a *lot* more sense. The secondary motivation to making Now Playing appear modal was that I would be implementing Tabless in the very next version of Spotify, where it would start to make more sense. Then that never happened :( I hope that this will happen for 0.5.0, however.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Tue, 13 Dec 2011 03:44:28 -0000</pubDate></item><item><title>Re: http://amyworrall.com/post/5829793584</title><link>http://amyworrall.com/post/5829793584#comment-332412868</link><description>&lt;p&gt;Heh, I've even downloaded the Clang sources to try to implement pretty much exactly those (but of course I haven't even gotten started...)&lt;/p&gt;&lt;p&gt;re the array and dictionary creation, you can use something like &lt;a href="https://github.com/nevyn/SPSuccinct/blob/master/SPSuccinct/SPLowVerbosity.h" rel="nofollow noopener" target="_blank" title="https://github.com/nevyn/SPSuccinct/blob/master/SPSuccinct/SPLowVerbosity.h"&gt;https://github.com/nevyn/SP...&lt;/a&gt; or &lt;a href="http://mooseyard.com/hg/hgwebdir.cgi/MYUtilities/annotate/d84d25d6cdbb/CollectionUtils.h" rel="nofollow noopener" target="_blank" title="http://mooseyard.com/hg/hgwebdir.cgi/MYUtilities/annotate/d84d25d6cdbb/CollectionUtils.h"&gt;http://mooseyard.com/hg/hgw...&lt;/a&gt; to achieve the same in just four extra characters.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Wed, 12 Oct 2011 03:50:01 -0000</pubDate></item><item><title>Re: http://blog.keendra.com/post/10483522866</title><link>http://blog.keendra.com/post/10483522866#comment-316812924</link><description>&lt;p&gt;heywhat! I wanted to play! :( didn't think I'd have time today but most def on sunday! &lt;/p&gt;&lt;p&gt;reading the chat scrollback maybe that wasn't obvious, I was just in a horrible mood and didn't look forward to the shitload of work I thought I'd have to do tonight...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Wed, 21 Sep 2011 14:08:25 -0000</pubDate></item><item><title>Re: http://blog.keendra.com/post/9328019204</title><link>http://blog.keendra.com/post/9328019204#comment-294268578</link><description>&lt;p&gt;Eh. Why does that look *exactly* like farmville :/ just because another concept is successful does not mean that copying it is a good idea &amp;gt;_&amp;lt; though it probably is, that's the sucky part. Just look at DOTA, HoN, LoL... :P &lt;/p&gt;&lt;p&gt;Also, ++ on the spam hate. Seriously, virality can be achieved without being a complete douche about it. E g, try having a good product and reasons for the user to *want* to share.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joachim Bengtsson</dc:creator><pubDate>Wed, 24 Aug 2011 04:26:19 -0000</pubDate></item></channel></rss>