12 Jun 2015
this years' Apple developer conference has made me reflect again on the strong platform lock-in that Apple has developed. (if you're unfamiliar, lock in refers to a company making it difficult for developers or users to switch to other platforms)
this is behavior i got to see a bit from the inside of Microsoft when i worked there. when they dominated the industry they used that advantage to prevent others from succeeding and consciously trap users and developers into their ecosystem.
last year apple introduced a proprietary graphics API for iOS devices named Metal. this year they announced Metal is now also coming to Macs as the preferred graphics API. its use replaces the industry standard OpenGL. Metal is streamlined for modern graphics processors and eliminates a ton of overhead which is great for performance and battery life. these goals are also addressed though with OpenGL's successor Vulkan.
it's unfortunate that Apple has focused on creating their own platform specific solution instead of embracing the new standard. sure it lets them innovate at their own pace and tailor the API to the specifics of their platforms but it also serves to make things more difficult for developers to simultaneously support non-Apple devices and operating systems. this is a sad change from Apple's embrace of OpenGL which allowed nice code sharing with Android, Linux, WebGL, and Windows.
last year Apple also introduced their own new programming language Swift to replace Objective-C. while Objective-C was already pretty specific to Apple's ecosystem it's really just a bit like some extra macros and libraries on top of the widely supported C language. you can write code in C and build it for pretty much any operating system and device. this year they announced they will open source Swift and support Linux but i still suspect code written in Swift will wind up pretty strongly tied to Apple's platforms and be much more difficult than C to target Windows and Android.
years ago when i switched from Windows to Mac it was quite refreshing to see Apple's use, embrace, and creation of open systems and standards like GCC, LLVM, OpenCL, OpenGL, Collada, sqlite, Unix, WebKit, etc, etc. now it seems as they've risen to dominance they're trending towards more and more proprietary solutions providing strong lock in and making cross platform development increasingly difficult. hopefully Apple's intentions aren't malicious, but it's still a bit disappointing.
09 Feb 2015
last thanksgiving i got my nephews addicted to Bitcoin Billionaire but it seems they've gotten me back now by getting me hooked on Summoners War. these free to play mobile games are dangerous!
it takes hundreds of hours of hard to work to achieve something special and get that nice shot of dopamine from your nervous system rewarding you for a job well done... or you could play one of these games for like 30 minutes. why spend ten years leveling up your coding or drawing or composing skills when you could get to be a wicked cool level 35 5-star awakened fire monster in just a few weeks (or like right away if you throw down some cash)??
they've done a good job capturing the addictive aspect of Diablo (which i think should be called Dopaminecraft to fit with Starcraft and Warcraft). play over and over and over again not because it's fun really or you're doing anything different, but because you're going to see your characters' numbers go up and up and get that occasional epic drop that makes you go WHOOOAAA just because the text is in a different color and the number next to the item is bigger than the last one you got.
it's so sad that this works and our minds are so weak and easily manipulated. exploiting these natural weaknesses for profit (as marketing, sales, advertising, junk foods, sugar drinks, casinos, drugs, and others also do) seems really immoral. still... i'm glad Summoner's War exists and have become pretty attached to my little monsters. i hope people find ways to harness these manipulative powers for good like working in useful education or side effects while playing. or just focus games more on strategy and skill mastery and less on time played and money spent.
11 Jan 2015
i've always wanted to code up and play with some of the texture synthesis algorithms out there since reading the Graphcut paper from Siggraph 2003. i remember thinking it was the coolest thing ever and wondering why it wasn't being used for everything everywhere all the time. back then i found a Gimp plugin that purported to implement it but the results i got with it were absolutely awful.
anyway it came up while chatting with Kirill a few month back and led to me experimenting a bit with image quilting between matches of Hearthstone one sunday. the image quilting paper from 2001 preceded the graph cut stuff and looked much simpler to implement so that's what i decided to try first.
i was hoping to use it to stick together bodies in horrific arrangement like the panoramic fails but i think to get reasonable results you really have to go all the way to graph cuts for that. fortunately i did find something image quilting really excels at: MEXICAN FOOD SYNTHESIS! and so was born INFINIMEX. :)
after the first experiments i upgraded it a bit with laplacian pyramid blending to smooth out sour cream and cheese transitions. (so you might see those are kinda rough on earlier screenshots and vids but better on the later ones)