Samuel Goodwin

95 posts Samuel Goodwin
  1. The 30 Day Music Challenge you're going to do

    Why Sometimes a cheesy random challenge helps can help you get out of your rut and start something new. I propose we do exactly that. All of you who play/sing music: record yourself playing every day for 30 days. Put the videos on Instagram. The time limit Instagram imposes (max 1 minute) will help to make this doable since you can't spend the afternoon trying to get a whole song perfect on camera. I don't care what instrument you use or how good you are. Sing, strum, blow, whatever you've got. The point of this is to get over mental barriers to recording. So if you record and publish, you win. This isn't about getting the perfect take or having the best ever recording quality, this is about showing up. I figure if you do this every day, your recordings will improve on their own even if you don't

    Samuel Goodwin music
  2. Wacky JSON

    In Swift, turning JSON content from a file or a server into structs or classes in code is much friendlier now that we have the Encodable and Decodable protocols. For simple cases you need to write almost no code and can quickly get on to something else. For example, if you see this: { "posts": [ "this is a tweet maybe", "this is something political", "I'm angry about something", "I made something cool" ] } You can decode it with very little code: struct PostPage: Decodable { let posts: [String] } let data = // Get this JSON from a file or the internet or your imaginination let decoder = JSONDecoder() let page = try docoder.decode(PostPage.self, from: data) This is all great for most cases, but what happens when API-makers stop being polite and things get real? What if your JSON looks like this: { "posts"

    Samuel Goodwin swift
  3. Hiring And Retaining

    I've heard from a great many companies here in the Netherlands (and elsewhere) that hiring and retaining engineers is super difficult. Here are some things to consider to make things easier for your company: Is your company involved in the right communities? If you're looking for, let's say, Ruby developers, you're going to need to be involved in Ruby communities. Here are some ways to get in: Send your engineers to local meetups. Like Appsterdam here in Amsterdam, Cocoaheads near you, and so on. Send your engineers to conferences. Send your engineers to at least one conference a year, even if it's just a nearby one. Not only does this get you exposure for your company, a policy like this can be the difference between someone choosing to apply for your company or not. Encourage your engineers to speak. If you can send them to a conference and they get

    Samuel Goodwin
  4. Core Data Performance

    Last year I spoke at PragmaConf in Italy and the video of my talk is now available:

    Samuel Goodwin speaking
  5. How I Approach Rat-Nest CoreData Projects

    Part of my job involves working with existing projects, some with overly complicated Core Data implementations. Usually clients request that I help fix performance problems in the project or at least clean them up. Here is how I approach each project: 1: Clear out the cobwebs First thing I do is look through the whole project for unused classes, methods, variables, etc. For Objective-C projects, this is the one thing I use AppCode for. For Swift projects, there are tools such as fus to help. For one project, I was able to delete 30 thousand lines of code this way. No refactoring yet, simply deleting unused stuff. Most projects that have been around for longer than 6 months have unused bits to delete I've found. 2: Refactor Next I look for eveywhere an NSManagedObjectContext is used. Anywhere a context is used, the operation/function/class should be told what context

    Samuel Goodwin