Sunset Lake Software - Cocoa http://www.sunsetlakesoftware.com/taxonomy/term/4/0 en Introducing GPUImage 2, redesigned in Swift http://www.sunsetlakesoftware.com/2016/04/16/introducing-gpuimage-2-redesigned-swift <div class="image-attach-teaser image-attach-node-622" style="width: 75px;"><a href="/2016/04/16/introducing-gpuimage-2-redesigned-swift"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/GPUImageLogo-Small.thumbnail.png" alt="GPUImageLogo-Small.png" title="GPUImageLogo-Small.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>Back in 2010, I <a href="http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios">gave a talk about the use of OpenGL shaders to accelerate image and video processing on mobile devices</a>. The response from that talk was strong enough that two years later I <a href="http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework">started work</a> on the open source framework <a href="https://github.com/BradLarson/GPUImage">GPUImage</a> with the goal of making this kind of processing more accessible to developers. In an attempt to broaden the reach of this framework, today I'm introducing the completely-rewritten-in-Swift <a href="https://github.com/BradLarson/GPUImage2">GPUImage 2</a> with support for Mac, iOS, and now Linux. This isn't just a port, it's a complete rewrite of the framework.</p> <p>Read on for how GPUImage 2 differs from the previous iteration, and why I rebuilt it from scratch.</p> <p><a href="http://www.sunsetlakesoftware.com/2016/04/16/introducing-gpuimage-2-redesigned-swift" target="_blank">read more</a></p> Cocoa Drupal iPhone Molecules Pi Cubed SonoPlot Sat, 16 Apr 2016 15:17:59 +0000 Brad Larson 630 at http://www.sunsetlakesoftware.com What we learned from rewriting our robotic control software in Swift http://www.sunsetlakesoftware.com/2015/11/03/what-we-learned-rewriting-our-robotic-control-software-swift <div class="image-attach-teaser image-attach-node-626" style="width: 75px;"><a href="/2015/11/03/what-we-learned-rewriting-our-robotic-control-software-swift"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/Apple_Swift_Logo.thumbnail.png" alt="Apple_Swift_Logo.png" title="Apple_Swift_Logo.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>At the beginning of this year we started a complete rewrite of our robotics software from Objective-C to Swift, for reasons <a href="http://www.sunsetlakesoftware.com/2014/12/02/why-were-rewriting-our-robotics-software-swift">described here</a>. That rewrite was concluded two months ago, passed testing a month ago, and has been deployed to all of our customers. As a result, I wanted to do a final analysis of the rewrite and what we learned from it.</p> <p>Read on for the results from this rewrite in Swift.</p> <p><a href="http://www.sunsetlakesoftware.com/2015/11/03/what-we-learned-rewriting-our-robotic-control-software-swift" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2015/11/03/what-we-learned-rewriting-our-robotic-control-software-swift#comments Cocoa SonoPlot http://www.sunsetlakesoftware.com/crss/node/629 Tue, 03 Nov 2015 15:50:02 +0000 Brad Larson 629 at http://www.sunsetlakesoftware.com Swift 2 error handling in practice http://www.sunsetlakesoftware.com/2015/06/12/swift-2-error-handling-practice <div class="image-attach-teaser image-attach-node-626" style="width: 75px;"><a href="/2015/06/12/swift-2-error-handling-practice"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/Apple_Swift_Logo.thumbnail.png" alt="Apple_Swift_Logo.png" title="Apple_Swift_Logo.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>This week, Apple enhanced Swift with several additions or changes, bumping it to version 2. Perhaps the biggest change was the introduction of an official error-handling model based on try/catch semantics. At first, I was skeptical about this approach when compared to other techniques (primarily the use of a Result return value), but after applying it to real-world code, I've found it to work extremely well.</p> <p>Read on for more detail about the new Swift error handling model.</p> <p><a href="http://www.sunsetlakesoftware.com/2015/06/12/swift-2-error-handling-practice" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2015/06/12/swift-2-error-handling-practice#comments Cocoa http://www.sunsetlakesoftware.com/crss/node/628 Fri, 12 Jun 2015 19:16:53 +0000 Brad Larson 628 at http://www.sunsetlakesoftware.com Why we're rewriting our robotics software in Swift http://www.sunsetlakesoftware.com/2014/12/02/why-were-rewriting-our-robotics-software-swift <div class="image-attach-teaser image-attach-node-626" style="width: 75px;"><a href="/2014/12/02/why-were-rewriting-our-robotics-software-swift"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/Apple_Swift_Logo.thumbnail.png" alt="Apple_Swift_Logo.png" title="Apple_Swift_Logo.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>At SonoPlot, we just undertook a full rewrite of our robotic control software from Objective-C to Swift. While at first it might appear crazy to rework a large, stable project in a brand-new language, we did so after carefully examining sources of bugs in our Objective-C application and determining that Swift would prevent a large percentage of them. While we've only just started, we've learned enough so far that I thought there would be value in sharing this.</p> <p>Read on for more about what led us to rewrite this application, and what we observed when doing so.</p> <p><a href="http://www.sunsetlakesoftware.com/2014/12/02/why-were-rewriting-our-robotics-software-swift" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2014/12/02/why-were-rewriting-our-robotics-software-swift#comments Cocoa SonoPlot http://www.sunsetlakesoftware.com/crss/node/627 Tue, 02 Dec 2014 18:41:21 +0000 Brad Larson 627 at http://www.sunsetlakesoftware.com Exploring Swift using GPUImage http://www.sunsetlakesoftware.com/2014/06/30/exploring-swift-using-gpuimage <div class="image-attach-teaser image-attach-node-622" style="width: 75px;"><a href="/2014/06/30/exploring-swift-using-gpuimage"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/GPUImageLogo-Small.thumbnail.png" alt="GPUImageLogo-Small.png" title="GPUImageLogo-Small.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>I always find it more effective to learn new programming concepts by building projects using them, so I decided to do the same for Apple's new Swift language. I also wanted to see how well it would interact with my open source <a href="https://github.com/BradLarson/GPUImage" rel="nofollow">GPUImage framework</a>. As a result, I made GPUImage fully Swift-compatible and I've built and committed to the GitHub repository a couple of Swift sample applications. I wanted to write down some of the things that I learned when building these.</p> <p>Read on for more about my explorations of Swift using GPUImage.</p> <p><a href="http://www.sunsetlakesoftware.com/2014/06/30/exploring-swift-using-gpuimage" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2014/06/30/exploring-swift-using-gpuimage#comments Cocoa http://www.sunsetlakesoftware.com/crss/node/625 Mon, 30 Jun 2014 18:06:50 +0000 Brad Larson 625 at http://www.sunsetlakesoftware.com Switching GPUImage to use cached framebuffers http://www.sunsetlakesoftware.com/2014/03/17/switching-gpuimage-use-cached-framebuffers <div class="image-attach-teaser image-attach-node-622" style="width: 75px;"><a href="/2014/03/17/switching-gpuimage-use-cached-framebuffers"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/GPUImageLogo-Small.thumbnail.png" alt="GPUImageLogo-Small.png" title="GPUImageLogo-Small.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>I recently pushed a significant set of changes to the <a href="https://github.com/BradLarson/GPUImage" rel="nofollow">GPUImage repository</a>, and wanted to explain them in a little more detail, especially since this changes one part of the manual photo filtering process. These changes should dramatically reduce the overall memory usage of the framework, help to prevent memory-related crashes, and fix a number of subtle bugs that have plagued the framework since I started it.</p> <p>Read on for more about these changes.</p> <p><a href="http://www.sunsetlakesoftware.com/2014/03/17/switching-gpuimage-use-cached-framebuffers" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2014/03/17/switching-gpuimage-use-cached-framebuffers#comments Cocoa http://www.sunsetlakesoftware.com/crss/node/623 Tue, 18 Mar 2014 02:22:00 +0000 Brad Larson 623 at http://www.sunsetlakesoftware.com Optimizing Gaussian blurs on a mobile GPU http://www.sunsetlakesoftware.com/2013/10/21/optimizing-gaussian-blurs-mobile-gpu <div class="image-attach-teaser image-attach-node-622" style="width: 75px;"><a href="/2013/10/21/optimizing-gaussian-blurs-mobile-gpu"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/GPUImageLogo-Small.thumbnail.png" alt="GPUImageLogo-Small.png" title="GPUImageLogo-Small.png" class="image image-thumbnail " width="75" height="75" /></a></div> <p>With the launch of iOS 7, and its use of blurs throughout the interface, there's been a lot of interest in fast ways of blurring content. <a href="https://github.com/BradLarson/GPUImage">GPUImage</a> has had a reasonably performant, but somewhat limited Gaussian blur implementation for a while, but I've not been happy with it. I've completely rewritten this Gaussian blur, and it now supports arbitrary blur radii while still being tuned for the iOS GPUs. At higher blur radii, I'm slower than Core Image, though, and I don't quite understand why.</p> <p>Read on for more about the techniques I've used for GPU optimization of a Gaussian blur, as well as some interesting iOS benchmarks.</p> <p><a href="http://www.sunsetlakesoftware.com/2013/10/21/optimizing-gaussian-blurs-mobile-gpu" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2013/10/21/optimizing-gaussian-blurs-mobile-gpu#comments Cocoa http://www.sunsetlakesoftware.com/crss/node/621 Mon, 21 Oct 2013 17:48:46 +0000 Brad Larson 621 at http://www.sunsetlakesoftware.com Introducing the GPUImage framework http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework <div class="image-attach-teaser image-attach-node-360" style="width: 75px;"><a href="/2012/02/12/introducing-gpuimage-framework"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/apple-touch-icon-precomposed.thumbnail.png" alt="SecondConf logo" title="SecondConf logo" class="image image-thumbnail " width="75" height="75" /></a></div> <p>I'd like to introduce a new open source framework that I've written, called GPUImage. The GPUImage framework is a BSD-licensed iOS library (<a href="https://github.com/BradLarson/GPUImage">for which the source code can be found on GitHub</a>) that lets you apply GPU-accelerated filters and other effects to images, live camera video, and movies. In comparison to Core Image (part of iOS 5.0), GPUImage allows you to write your own custom filters, supports deployment to iOS 4.0, and has a slightly simpler interface. However, it currently lacks some of the more advanced features of Core Image, such as facial detection.</p> <p>Read on for more about the GPUImage framework.</p> <p><a href="http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework" target="_blank">read more</a></p> Cocoa iPhone Mon, 13 Feb 2012 02:30:04 +0000 Brad Larson 440 at http://www.sunsetlakesoftware.com My experience with the new iTunes U Course Manager http://www.sunsetlakesoftware.com/2012/01/26/my-experience-new-itunes-u-course-manager <div class="image-attach-teaser image-attach-node-435" style="width: 75px;"><a href="/2012/01/26/my-experience-new-itunes-u-course-manager"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/iTunesULogo-small.thumbnail.jpg" alt="New MATC logo" title="New MATC logo" class="image image-thumbnail " width="75" height="75" /></a></div> <p>Last week, Apple unveiled two new education-related products: iBooks textbooks and the new iTunes U courses. While both interest me, I was particularly fascinated by the new iTunes U courses and how they bundle information together. I converted my existing Advanced iPhone Development iTunes U class into a full course (which <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewCourse?id=497193807&amp;s=143441&amp;ls=1">you can subscribe to</a> for free) a few days ago. I wanted to write about what I learned in the process of doing this.</p> <p>Read on for more about my experience with the iTunes U Course Manager.</p> <p><a href="http://www.sunsetlakesoftware.com/2012/01/26/my-experience-new-itunes-u-course-manager" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2012/01/26/my-experience-new-itunes-u-course-manager#comments Cocoa http://www.sunsetlakesoftware.com/crss/node/436 Thu, 26 Jan 2012 16:41:20 +0000 Brad Larson 436 at http://www.sunsetlakesoftware.com An introductory iOS development course taught at Rose-Hulman http://www.sunsetlakesoftware.com/2010/12/09/introductory-ios-development-course-taught-rose-hulman <div class="image-attach-teaser image-attach-node-366" style="width: 75px;"><a href="/2010/12/09/introductory-ios-development-course-taught-rose-hulman"><img src="http://www.sunsetlakesoftware.com/sites/default/files/images/RoseHulman.thumbnail.png" alt="Rose-Hulman logo" title="Rose-Hulman logo" class="image image-thumbnail " width="75" height="75" /></a></div> <p>Last quarter, <a href="http://www.rose-hulman.edu/~fisherds/" rel="nofollow">Dr. David Fisher</a> taught an introductory course on iOS development at my alma mater, the <a href="http://www.rose-hulman.edu/" rel="nofollow">Rose-Hulman Institute of Technology</a>. He's made that course <a href="http://www.rose-hulman.edu/iosprogramming" rel="nofollow">publicly available</a>, including videos of the sessions, assignments, and tests. If you want, you can also grab the videos from his <a href="http://itunes.apple.com/us/podcast/csse490-ios-programming-rose/id399951666" rel="nofollow">podcast on the subject</a>.</p> <p>I highly recommend checking out this course, because it has a huge amount of content within it and Dr. Fisher does a great job in presenting the material.</p> <p><a href="http://www.sunsetlakesoftware.com/2010/12/09/introductory-ios-development-course-taught-rose-hulman" target="_blank">read more</a></p> http://www.sunsetlakesoftware.com/2010/12/09/introductory-ios-development-course-taught-rose-hulman#comments Cocoa iPhone http://www.sunsetlakesoftware.com/crss/node/367 Thu, 09 Dec 2010 19:02:34 +0000 Brad Larson 367 at http://www.sunsetlakesoftware.com