Alejandro Martinez

195 Posts

A successful game developer, a game for Blackthornprod GAME JAM #1 27 October, 2018

Last week I participated in the first Blackthornprod GAME JAM . I had so much fun creating a small game involving some mechanics that I…

Must watch NSSpain 2018 talks 04 October, 2018

Everyone knows that NSSpain is one of my favourite conferences but sadly this year I haven't been able to assist. Luckily for me the…

Tales of updating to Gatsby 2.0 30 September, 2018

I haven't been doing much maintenance to this website since I migrated to GatsbyJS , but recently Gatsby has announced its 2nd major…

GroupBy with KeyPath in Swift 4 24 August, 2018

One of the best things of modern Swift is the introduction of . It allows us to reference getters and setters as first class values in our…

Swift 4.2 CaseIterable enums and UISegmentedControl, a practical example 18 August, 2018

On 2014 I wrote a post about how to drive a UISegmentedControl with the new powerful Swift enums. Back then the major complain was that to…

Making a script to automate creating posts for GatsbyJS 08 August, 2018

One small inconvenience of a static blog generator running without a CMS is that to create a new post in markdown you need to add manually…

Programming the Cloud with Pulumi and Typescript 04 August, 2018

Server side development and the managing of the infrastructure has gone a long way in the recent years. From scalable virtual machines easy…

Netlify deployment with Siri 20 July, 2018

In previous posts I described my setup with Netlify for automatic deployment and even how to receive push notifications when a deployment…

Netlify and IFTTT, push notifications on deployment 16 July, 2018

After the setup of this new website with Netlify I lost a little the perception of when the website was up to date. Before I had to run…

The community decides what becomes oficial 13 July, 2018

I was reading the Rust forums when I saw this post talking about an oficial Rust error crate . It reminded me about the discussions in the…

Using Netlify for static site hosting and deployment 09 July, 2018

On every new iteration of my website I'm always happy to have taken the decision of using a static site generator instead of a big and fat…

My experience with GatsbyJS and modern web development 01 July, 2018

As I mentioned in my previous post, I'm Rebuilding my website with GatsbyJS . At the moment of writing this the migration is pretty much…

Rebuilding my website with GatsbyJS 16 June, 2018

This days, between watching WWDC sessions , I'm undergoing the renewal of this my personal website and blog. For the past 3 years this…

WWDC 18 session notes 10 June, 2018

As every year after WWDC is time to sit down and watch the videos of the sessions! I wrote last year about How I watch the WWDC videos and…

WWDC 18 expectations and review 08 June, 2018

One thing that I always want to do is talk about WWDC before and after it happens. I used to do it when my podcast was active but without…

Swift Forums embraces the community 11 May, 2018

Today I woke up to receive great news for the Swift community. The Swift Forums now have a new section to talk about some community projects…

Google IO, Android Jetpack and Architecture components 10 May, 2018

This past week Google did their annual developers conference. I rarely watch the main keynote because I'm not that interested in their…

Make is great and it shouldn't exist 04 April, 2018

Make is one of those tools that I've always been curious about but never had a good change to try it until a couple of years ago. It is a…

Testing an RxSwift operator with TestScheduler 10 March, 2018

RxTesting makes testing a custom Rx operator an enjoyable experience. Being able to fake time simplifies a lot the develpemnt of reactive…

How flatMapLatest cancels an API request 28 February, 2018

How cancels an API request? This is a common question that people has when they start learning about Rx. Specially since RxSwift has an…

Processing and p5 in Swift 20 February, 2018

p5.js and the rest of Processing projects are an amazing way of making coding more accessible to everyone, allowing creative people to…

Lox Swift interpreter finished 11 February, 2018

One year ago I decided to start working on a Lox interpreter in Swift following Bob Nystrom 's book Crafting Interpreters . Today I'm…

Improving Swift struct composition, inspired by Jai 03 February, 2018

Today I was reading Composing types in Swift which showcases the different ways of composing the different types in Swift: structs…

Hole Driven Development in Swift 30 January, 2018

While programming with a static type system there are times when you write the definition of a function but you still don’t have any idea on…

Jonathan Blow's libraries discussion 27 January, 2018

This post is just a dump of the things that came to mind while watching Jonathan Blow's libraries discussion . I'm not an expert on any of…

New Swift forums and wishes for 2018 23 January, 2018

Swift forums are live ! This is a great change that many of us have been waiting for a long time and that marks a new era for the Swift…

LambdaCast examples of functional programming in Swift 16 January, 2018

I recently discovered the podcast LambdaCast, a really interesting podcast about functional programming with hosts that are at different…

Creating a Swift package with SPM 13 January, 2018

Watch how I create and publish a library with Swift Package Manager for the first time! With the help of the command line tool is pretty…

HealthKit privacy radar 11 January, 2018

Today I had to create a new radar for Apple in relation to HealthKit privacy descriptions. When you integrate HealthKit into your App you…

Advent of Code 2017 05 January, 2018

I discovered the Advent of Code from some retweet on the first days of December. I found them really interesting and original so I decided…

Black Mirror Season 4 review 04 January, 2018

Snapshot from my tweets about Black Mirror Season 4, for posterity. Alejandro Martinez @alexito4 BlackMirror4 ep 1: mhe ¯ \ (ツ) /¯ 9:03 PM…

Idiomatic Kotlin, in Swift 18 December, 2017

In this post I'm gonna explore the talk Idiomatic Kotlin by Dimitry Jemerov. I'm gonna do it by showing how each of the topics the author…

Loading translations with NSLocalizedString dynamically at runtime 24 June, 2017

One of the best things about developing for iOS is having the power of the amazing frameworks that the Apple platforms have. Foundation is…

Time tracking in plain text 18 June, 2017

I've been always a big fan of productivity, time is gold. But funny enough, as many other people, we fall into the traps of being productive…

The Swift 3 Grand Migration 10 March, 2017

Some days ago I finally merged one of the biggest Pull Request our team has seen, the migration of our codebase to Swift 3. I decided to…

Lox, expressions 18 February, 2017

The chapter 5 of Crafting Interpreters has been published and after a first read I started writing some Swift code to continue my…

Lox interpreter in Swift 30 January, 2017

A couple of days ago I was reading Crafting Interpreters written by Bob Nystrom and it awoke my passion for programming languages so I…

JIRA reports with Swift 28 January, 2017

One of the things I think is really important in any team is to keep track of the performance. Not to use it as ammo to blame individuals…

Dead is here 21 October, 2016

I'm 26 years old. And at the time of writing this I still have my 4 grandparents alive. I've been lucky. One could say I've never lost…

Let If Flow, a talk about FRP 15 October, 2016

Yesterday I gave a talk about Functional Reactive Programming to my coworkers at LifeWorks. At first, I wanted to give some insight about it…

Swift 3, linked lists and sentinels 01 October, 2016

I've always been a big fan of Linked Lists. Maybe is because it was one of the first data structures that I learn how to implement and they…

Abusing mocks 02 September, 2016

The post Mock yourself, not your tests immediately captured my attention just by saying "I feel like we abuse of them" . As I've been…

Let patterns emerge 25 August, 2016

Without entering in the dicussion about MVVM I just wanted to quote here an interesting paragraph of the linked post. It's mainly for my own…

The trip to modern declarative software 21 August, 2016

It's a known fact that in our community there are always a constant discussions about the best patterns to use when building an App. But I…

A quick API layer with GraphQL 30 June, 2016

Facebook has brought to the open source world a bunch of amazing technologies, React being one of the more widespread ones. It is really…

XcodeTopComment, modify or remove the top comment of a file 25 June, 2016

One of the things that Apple released on WWDC was the official support for Xcode plugins. Although in a very limited way, is really nice to…

Xi Editor, the piece of software that hypes me the most 13 June, 2016

One of the most interesting parts of software is decoupling. Although not the kind of decoupling that we are all used to in our code, but…

UIViewController extension for keyboard avoidance, and the missing features of Swift 10 June, 2016

Being able to conform to a protocol and automatically have the implementation that you need is really a game changer. Having trait like…

Interesting talks in ReactEurope 2016 08 June, 2016

I’m always interested in knowing what is going on in other communities, it helps me a lot to understand how others work and what tools they…

Using closures to simplify 07 June, 2016

This is an update to an previous post about using blocks to simplify in Objective-C. Swift makes working with functions much enjoyable…

Poor man's hot reloading for Swift scripts 05 June, 2016

The other day, while I was writing a Swift script , I added an option to make it run continuosly so it could be on a server doing its job…

It’s a trap! Catch OS signals in Swift. 29 May, 2016

In the script that I was recently writing, from where the post “ The state of Swift scripting ” emerged, I found that when the scrip is…

The state of Swift scripting, writing the script 28 May, 2016

This is the second part of my posts about the sate of scripting with Swift . In the previous post I wrote about what I expect from a…

The state of Swift scripting 27 May, 2016

In the past few days I’ve spend some time writing a little script in Swift and I thought it was a good time to revisit the state of the…

Matt Gallagher on C-level performance in Swift 24 May, 2016

Getting C-level performance in Swift for numerical algorithms is quirky but not particularly difficult. If you limit yourself to value types…

Save web development 21 May, 2016

Swift, Rust, Go, and the rest of tomorrow’s languages, can you marry modern thinking, build a community with simple as a core design goal…

Excuses and UX patterns 20 May, 2016

I really liked this post about Misused mobile UX patterns . I'm not a UX or UI designer, but after all this time being a user and a…

Not Swift by default 19 May, 2016

I really recommend reading how Maxim made his FlatBuffer library 10 thousand times faster Swift . The interesting part is when he…

On teaching C 11 May, 2016

“ Teaching C ” is really nice write up on what to teach in a C class. It has been a while since I was a student in University but there are…

Quick and dirty debug timer 03 May, 2016

For those occasions when you need to check something some state at regular intervals. Just drop this snippet at the top of your file: And…

MIR, the new Rust mid-level IR 02 May, 2016

Really interesting post about MIR . I really like this kind of posts that the Rust team publishes giving insight into the compiler…

Tales of my first contribution with Swift on the server 27 April, 2016

The other day I had to work with some date formatting on iOS and Android and I end up using the great http://nsdateformatter.com website…

Mike Acton on "Data-Oriented Design and C++" 26 April, 2016

That’s the reason why I have to wait 30 seconds for Word to boot. Such an interesting talk. The best part is seeing how a bunch of smart…

Subjective objectivity 23 April, 2016

Good analysis of the rejected Swift proposals by Chris . I can see why, yet still feel the opposite. This is one of those cases where we…

It’s all about meaning 22 April, 2016

About elegance in code: ​The trick here is, again, all about meaning. We like to pretend that programming is a purely abstract thing, and…

WindowCapture, screenshot windows with RxSwift 28 January, 2016

A while ago I wondered how easy would be to make a screenshot of a window in OS X from another application using some system API. With that…

Replace tabs in Safari 23 January, 2016

Oh, that feeling when you find small features that you didn’t know. I found that you can have, in Safari, a folder in the Bookmarks bar…

Release of Survive! The Game of Life 17 January, 2016

A couple of months ago I wrote a small prototype of the well known Conway's Game of Life . This kind of simulation has always fascinated me…

Rust Traits restriction 28 December, 2015

From Rust Traits page: There’s one more restriction on implementing traits: either the trait, or the type you’re writing the impl for…

Swift Typed Throws compared with Rust 23 December, 2015

I was reading about Error Handling in Rust to have a better understanding of the implications of typed throws in Swift (thanks to David…

Functions are Functors 21 December, 2015

We are used to treat closures as first class citizens in our code. Same goes to functions as they are interchangeable. But we often don’t…

Some interesting proposals for Swift 13 December, 2015

Since Swift was open sourced I've ben scanning trough the mailing lists and there has been some interesting proposals for the future of…

Solving the Strings Problem in Swift 05 December, 2015

In this post I try to port the type based solution to the strings problem ideas by Tom Moertel to Swift. I started this some days ago as…

Sometimes Swift library 28 November, 2015

Sometimes is a small Swift library that makes it easy to run code... sometimes. Well, actually, just once. It was highly inspired by…

Brad Larson on using Swift for robotics 07 November, 2015

I’ve been following the linked blog because I’m really interested in the usage of Swift in environments different from the typical Apps. And…

Swift JSON mapping libraries 28 October, 2015

Today I had to do a little research on the state of JSON mappers in Swift for a new project. I’ve been using a simple JSON library to help…

Open-Sourcing as a company culture 26 October, 2015

The last post of this blog was inspired by Artsy , and so is this one. I swear I don’t do it in purpose ^^ This time I want to link to…

Know what you do, then be pragmatic 11 September, 2015

I absolutely recommend you to go and read the linked article. This posts by the Artsy devs are so great for me since I’ve been following…

Developers, be considered 10 September, 2015

developers have become complacent in being wasteful for the benefit of their own development ease instead of considerate of the time and…

Swift Stack for fun 04 September, 2015

The other day I had some spare time and I started exploring the idea of a Stack in Swift using protocols. For what? For fun. {: .center } A…

Swift as a good language to learn Software Development 02 September, 2015

The author of the linked post gives some reasons on why Swift is a good language for an introduction to computer science class. I’m really…

Useless Sprint Reviews 27 August, 2015

Emphasis mine: I often see that a sprint review (or sometimes called a demo) consists of the Product owner showing the stories to the team…

Dependency injection without frameworks 25 August, 2015

This post is one of those ones that I’ve been wanting to write for a while. It was some days ago when, by coincidence, I was reading a post…

Photos framework with ReactiveCocoa 19 August, 2015

In the last version of BWallpapers I added the ability to save the wallpaper to a specific Wallpaper album in the Photos app. You can use…

Protocols in Swift, the ongoing discussion 18 August, 2015

Protocols in Swift are really powerful thanks to be able to be generic and to protocol extensions. But there is some things that drive us…

Why I prefer Swift over Javascript 14 August, 2015

The other day while I was adding the ability to generate the protocol file to my Sketch plugin I took the opportunity to make a couple of…

Generating an Objective-C color palette from Sketch 10 August, 2015

Last week I had to made some changes on the colors of the WorkAngel app. The colors of that app are retrieved through an object called…

The concepts behind iterating 09 August, 2015

I’ve been reading and talking with people that when explaining functions like , or they start with “it loops over the collection and…

Designers should be dynamic 05 August, 2015

I’ve been lucky to have the opportunity to work in a bunch of different projects in my years as a developer. In all those projects I also…

A better future without web apps 03 August, 2015

On the episode 125 of ATP ( A Better Future for Everybody ) there was an intense talk abut the future of the software and its openness. The…

Scotland trip, The West Highlands 25 July, 2015

Last 3rd of July I left the office a little earlier than usual. I had a flight to take, a flight that took me and my girlfriend from London…

Don’t be afraid of sharing 22 July, 2015

I realized that we all should write and share more. Bear with me for a couple of technical paragraphs to explain you the motivation for this…

How I watch the WWDC videos 30 June, 2015

Yesterday I saw this tweet from Diego talking about how he watches WWDC videos: The post is really interesting and gives some interesting…

GroupBy in Swift 2.0 28 June, 2015

2018/08/23: A new version of this post is available. Using to simplify the call site and reduce possible mistakes. A while ago when…

This is not a Singleton 28 June, 2015

From Wikipedia, Singleton in Software Engineering : In software engineering, the singleton pattern is a design pattern that restricts the…

Sam Soffes on Building Functional Apps 27 June, 2015

I would like to talk about a video of a great talk that I really recommend. I’m really interested on the topic of sharing code between iOS…

The beginnings of Apple using ARM 25 June, 2015

Interesting to watch Professor Steve Furber talk about how Apple played an important role as a client of Acorn. If not for that maybe ARM…

The unexpected but convenience case of flatMap in Swift 24 June, 2015

Yesterday night I found myself reading this code in GitHub I read the diff a couple of times but I couldn't understand why was used to…

Understanding Swift Protocol Extensions dispatching 20 June, 2015

As I said on my Fist impressions on WWDC 2015 I was really excited for finally having traits in Swift, in form of Protocol extensions…

What I don’t like about the new Swift error handling model 12 June, 2015

I mentioned the new Swift error handling in my WWDC first impressions post. And although it’s true that I still have not had the…

First impressions on WWDC 2015 09 June, 2015

Every year, after the WWDC I usually record a podcast episode talking about my feelings of the keynote. This year I've been keeping a list…

Casey Muratori, about Object Oriented Programming 05 June, 2015

Kind of following the thoughts on the exploration phase post . Casey Muratori says: Don’t ever bother learning or using object-oriented…

Minecraft and My perfect game 01 June, 2015

This post was originally posted in Medium . I reposted it here after the announce of Lego Worlds. It made me think about this post…

Exploring Swift generic functions with WallpapersKit 31 May, 2015

Today I’ve been updating BingWallpapers to use the last version of Swift and also include the latest changes of WallpapersKit, the…

The exploration phase 26 May, 2015

Today I found this great post by Zach Holman . He presents some points that can contribute to make you a better developer. I was reading…

Swift script to download Youtube videos from Safari Reading List 28 March, 2015

When I wrote my srly script I thought on doing it in Swift, but at the end I decided to go with a well known scripting language, Ruby…

ScrumVotes 19 March, 2015

On March 1st of 2015 I released ScrumVotes in the App Store . It’s an application that helps in the Sprint Planning Meeting when the…

Enjoying the disconnection 28 February, 2015

In the era of the Internet of Things we are the first Thing that is always connected. Luckily for me I spent the past week enjoying my…

Type Systems and Domain Driven Development 10 February, 2015

Some days ago I read this tweet from @sendoaportuondo saying that creating a class for the mail field, the phone field, etc was crazy . I…

Objective-C keeps improving 09 February, 2015

Yes, the title is not wrong. Apple just released Xcode 6.3 beta that includes multiple huge improvements to Swift 1.2 solving a lot of…

Octopress 3.0 28 January, 2015

Lately I’ve been working on move my site, again, to Jekyll. Using directly the original Jekyll and keeping my customizations apart from the…

Should be easier to create Xcode templates 28 January, 2015

+10 to this post from Jon Reid. Xcode File and Project templates are full of code and comments that maybe are useful at the beginning but…

Download Youtube videos from the Safari Reading List 26 January, 2015

This weekend I wrote a little script that helped me to connect two of the main things that I do everyday: save things into the Safari…

How to write the perfect pull request... in GitHub 21 January, 2015

Great suggestions from GitHub. But the important part is at the end: Our guidelines suit the way we work, and the culture we want to nurture…

Post-Publicity Personalities 21 January, 2015

A great post by Zackh Holman. This isn’t a matter of right or wrong, in my mind. People can legitimately fuck up, or be wrong, or do…

Connecting Minecraft and the Real World™ 17 January, 2015

For those who don’t know me I have to say that I’m a big fan of Minecraft ( 1 and 2 ). And I’ve always wanted to connect the things that…

Real world weather into Minecraft 17 January, 2015

In the previous post I talked how to connect Minecraft and the Real World . In that case I made my real lamps follow open at the same time…

Documentation in game development 13 January, 2015

The other day I was talking about games with my friend Marc and we ended up talking about Don’t Starve , an amazing game. He confess me a…

Inide vs. "I've done this" developers 30 July, 2014

A very good episode (you should suscribe to Developing Prespective ) and a very good post. But for me the most interesting and surprising…

Must read: The secret of Minecraft 26 July, 2014

You must read this article about Minecraft, go! Now! See the Minecraft books in this article has made me smile. I was so exited the first…

Swift enums and UISegmentedControl 24 July, 2014

2018/08/18: Swift 4.2 introduces automatic synthesis of values. Check out the new version of this post . 2016/09/29: Updated for Swift…

The power of clousures in Swift 22 July, 2014

assert(someExpensiveComputation() != 42)

Cakebrew 30 April, 2014

Too afraid to use the terminal but need that small program or tool? Cakebrew is for you too!

Retiring Shopless from the AppStore 30 April, 2014

A sad notice today. I've retired Shopless from the AppStore. The reason is simple: I can't afford the costs of the server that stores and…

Alejandro Martinez
alexito4@gmail.com

Buka pintu