by Cesare Rocchi

A JavaScript budget for the browser

Craig Hockenberry has posted an interesting proposal about limiting the amount of JS loaded by a web page. I understand that the implementation can be complicated but that’s not a reason to not try. We could proceed step by step. Instead of building such limits in the browsers right away we could start with a simple extension that kicks in and tells you “This website is using too much memory/CPU”. It’s not a solution but it’s a good start to incentivize developers to be less sloppy.

Continue reading →

Weekly cleanup

Do you clean your office once a week? Or somebody does it for you? Do you shower once a day (more or less)? Do you trim your nails periodically? How often do you clean/update the dependencies in your software projects? Every guru solopreneur would likely tell you that, instead of doing “work that nobody notices”, you should grind, do more marketing, grow your audience and sell more. And yet, if nobody takes care of your code base, it will decay.

Continue reading →

Burning life

Poetry is just the evidence of life. If your life is burning well, poetry is just the ash. Leonard Cohen I have this feeling that in 2018 I burned more life than previous years. Lots has happened: I worked for a startup most of the year. Demanding and rewarding. (1,324 contributions in the last year, says my GitHub.) I went on with restoring the house. Not totally done but happy with what I did.

Continue reading →

Coding is a Means

This tweet made me think quite a bit. Looking at my twitter feed, it feels like the longer you've been coding professionally, the less you actually like coding. For people who've been coding for 10+ years, is this how you feel? — Saron (@saronyitbarek) December 29, 2017 I am restoring a house. I have been in touch with quite a bunch of masons for more than a year. I never heard any of them saying “I like manipulating cement” or “I like plastering walls”.

Continue reading →

That White Thing

It was 2004. I decided to buy a Mac. It was an iBook G4. I was about to click “Buy” when I spotted an offer for another white thing. Did I need it? I thought I didn’t, but I added it to the cart anyway. It even delayed the whole shipment. I didn’t know it yet, but it was worth it. It was an iPod. I took it with me while I was running, sleeping, in line at the post office, on the train.

Continue reading →

Transmit iOS was great, and yet

Panic is winding down Transmit iOS. I am surprised. I assumed they were doing good. They are, as a company. But even great companies that create compelling app have problems in justifying further investments on products that don’t bring in enough money. It’s a bittersweet announcement. It must have been a tough call. I think it’s important to not fall in the “if Panic can’t make it, I can’t make it either” trap.

Continue reading →

Excess of focus

There’s plenty of books, podcasts, classes out there about staying focused: How to not waste a minute How to make most of your time How to get in the zone Mostly in response to the concerns that many of us have: I can’t focus I am busy I have so many things to do I’ll do this when I have time There’s nothing wrong with acknowledging a problem and looking a solution.

Continue reading →

Owning your Space as a Podcaster

I had the pleasure to be interviewed by Yann Ilunga on the 360 Entrepreneur Podcast. It was fun. I stressed the importance for podcasters to own the URLs of domains and RSS feeds. Also valid for bloggers.

Continue reading →

Breezi is Back

It was 2012. Prince was still alive and iOS 6 was about to be released. There were rumors of a bigger iPhone. They’d have called it “iPhone 5”. At this point I had already built quite a lot of apps for clients and I wanted to take a stab at building AND selling an app. And so Breezi was born. I wanted it to be something unique and so I designed a fully gesture driven user interface.

Continue reading →

Signal

I am sick of iMessages not being delivered. Situation: my wife has one Apple ID she’s logged on an iPhone and an iPad both her phone number and her email are linked to iMessage I have one Apple ID With that ID I am logged on an iPhone, a Mac Book Air and a Mac mini Random stuff that happens: I send an important message from my iPhone She gets it on her iPad She is running errands and has just the iPhone with her.

Continue reading →

Bye bye white label apps

I listened to the last episode of Release Notes about the new App Store guidelines. There’s a new clause. 4.2.6 Apps created from a commercialized template or app generation service will be rejected. App Store guidelines source My first reaction was “finally!”. There’s too many clones in the App Store and it’s time to clean it up. So bravo Apple. But my thinking here is mostly based about clones of games.

Continue reading →

Harvesting Stories

I spent most of the last week harvesting grapes. Yep, I don’t just make software. I also make wine. Moving many crates can take a toll on your backbone. In spite of that, harvesting is fun. The best part is that, while you harvest, you can chat. I was lucky to spend time in the vineyard with my parents and some of our neighbors. I have told and listened to many stories, jokes, adventures, struggles and dreams.

Continue reading →

From Taxi to Cruise Ship

Remember that running a taxi is a fine sort of business, but don't expect to turn it into a cruise ship. And vice versa. Seth Godin source Going from freelancing/consulting to building and selling your products is a bit like becoming a cruise organizer after being a taxi driver. It’s quite a switch. You still build software but with a pretty different perspective.

Continue reading →

Podrover Diaries: Cleaning a stain in the iOS navigation bar

Podrover Diaries is a series about my adventures in building Podrover, a service to track, collect and share your podcast reviews. Subscribe to the RSS feed or join my newsletter to stay up to date with upcoming adventures. When I released the 1.3.5 version of Podrover some customers reported the presence of a “stain”. Here it is (look at the top and bottom right). I didn’t notice it at first but it’s creepy, isn’t it?

Continue reading →

Stumbling

As adults we try to avoid it. Imagine yourself stumbling on a step and falling in the middle of a crowded square. Even if you didn’t do it on purpose you feel stupid, right? We (adults) probably forgot how we learned to walk. .. on the floor, every day, trying it out Seth Godin source And with no fear of feeling stupid. As a developer practicing the art of business, being of the floor and trying it out is the most important thing for me these days.

Continue reading →

Podrover Diaries: Table views with load more at the bottom

Podrover Diaries is a series about my adventures in building Podrover, a service to track, collect and share your podcast reviews. Subscribe to the RSS feed or join my newsletter to stay up to date with upcoming adventures. “Why there isn’t a built-in component to make this?” I remember this question rolling in my head as I was building this allegedly simple feature in Podrover. You have seen this pattern many times:

Continue reading →

Taking the time

I usually build a feature, deploy it (after testing :) and rush writing the announcement. Then I move on to the next task. No games, no ceremony. This time I want to take some more time. I want to slow down. Last week I deployed a big new feature in Podrover, but didn’t announce it yet. It’s hidden, but working. I kept an eye on the performance in the last few days.

Continue reading →

Instead of WWDC

I didn’t attend WWDC 2017. Lucky me. Last week my wife was recovered at the hospital for pneumonia. Had I been in the US, it’d have been pretty complicated. Now she’s back home and recovering. I was in the right place at the right time. Instead of having fun in San Jose: I took care of my family Had the best cherries and apricots in years Enjoyed very sunny (but not unbearably hot) days Planned new products Started working on a new product (hint: it’s about podcasts) Built a big new feature for Podrover During the last week I saw blog posts, pictures, tweets of people having a good time in San Jose.

Continue reading →

Unhappy software developers

Are software developers unhappy? Yes, slightly. Why? Here’s a study. They interviewed 2000+ developers. Unfortunately the sample is heavily biased towards male software engineers. It’s an interesting read, although the most frequent cause for unhappiness is “being stuck in problem solving”, which is a bit generic.

Continue reading →

Mobile first means desktop second?

A bunch of interesting observations in this post by Oliver Brooks. The pursuit of a platform agnostic UI doesn’t map neatly to a digital landscape filled with a wide array of different devices, screen sizes, users and, most importantly, input methods. As much as we want to apply order and consistency to the world, it’s important to embrace the fact that it is staggeringly complex and filled with inconsistencies.

Continue reading →

The power of part-time at AppBuilders

When I was at App Builders I gave a talk titled “The Power of Part-time”. After the presentation I gladly discovered that some companies allow working 80% of the week. Some allow 6 hour work days, while others let employees take one day off. Every week. Yes, we make software. And we like it. That doesn’t mean we have to make it full-time. Here’s the video. Enjoy!

Continue reading →

Object-oriented programming and third party dependencies

One of the strengths of object-oriented programming is code reuse. Along the lines of: Organize your code in objects and pack your objects into modules. When needed import your module and inherit data and behaviour from the classes in the module. In the 90’s it sounded like the panacea to all the problems of software developers. To some extent it still is. In the meantime open source became huge, thanks mostly to GitHub, and we now have millions of libraries/modules/packages ready to be imported and reused in our projects.

Continue reading →

Which hacks do you ship today?

There’s a 20 year old temporary hack in the Linux kernel. If you don’t use an Amiga you are fine. How many hacks do you have in your code base? It’s funny how we are flexible in stretching the meaning of “temporary”. And yet we have to ship, because shipping is a feature. We are forced, wittingly or not, to choose which hacks (and sometimes bugs) to include in our apps.

Continue reading →

App Builders 2017

I just got home from Lausanne, where I attended App Builders. It was a great event. Thanks to all the organizers, the speakers and the attendees. I attended many interesting presentations, very well prepared. I saw speakers honing their slides and helping each other in rehearsing. I saw attendees very excited to have learned something new. I was part of spontaneous debates about the usage of third party libraries. (Sometimes I just eavesdropped).

Continue reading →

Navigation should be at the bottom

I like using my iPhone with one hand and I like apps optimized for one hand usage. I almost built one once. So this post by Cuberto hit a nerve. If you develop this kind of app for iOS you’ll need paddle upstream because UIKit components are not thought for this kind of layout. When I did it iOS7 was around. Some things might be easier now but the following hurdles are still around the corner when you place navigation UI at the bottom:

Continue reading →

Playing devil's advocate about Electron

Electron is a rampant technology. I am playing with it and I like what I see so far. During the past weeks there’ve been heated debates about the fact that Electron based apps consume too much battery, CPU, RAM or all of the three combined. Some are even concerned about the size of the apps built with Electron. An empty Electron app, empty as in it just shows a blank view, is around 100MB on macOS.

Continue reading →

Manton's Timetable

I am liking Manton’s Timetable podcast. Short episodes, easy to listen. It’s easy to press play when I see a short episode. The world needs podcasts with shorter episodes. This might give me the final push to start my own micro cast. I am mulling over it. I just have to refrain myself from building a platform to publish micro podcasts first :)

Continue reading →

Github as CV

It’s pretty common nowadays to read a job description that explicitly asks for a link to a GitHub account. In some forms it’s even a mandatory field. I get it. By looking at a GitHub profile you can understand: the quality of someone’s code the way they organize a project the importance they attribute to testing the care they put in writing documentation the approach they have in interacting with other people, dealing with issues and pull requests.

Continue reading →

How to auto-renew a Let's Encrypt certificate (and get notifications about it)

Let’s Encrypt was still in beta when I started Podrover so I preferred to avoid any risk. Now I am building Affiliator and Let’s Encrypt is not in beta anymore. Plus I like the “always be learning” spirit, so I gave it a shot. I didn’t pick it because it’s free. I am not a fan of free. The beauty of Let’s Encrypt is that it comes as a binary program that you can run in the shell.

Continue reading →

Podrover Diaries: Building Login and Signup views

Podrover Diaries is about my adventures in building Podrover, a service to track, collect and share your podcast reviews. Subscribe to the RSS feed or join my newsletter to stay up to date with upcoming adventures. I took me five days to build v1 of Podrover for iPhone. I spent two full days just for login and signup. Weird uh? My goal was to build something easy to use but also easy to build, without going crazy about different layouts for different devices.

Continue reading →

No regrets

I am glad I was there, sitting on the very first row, when Daniel Steinberg gave his presentation at AppDevCon. The days before the conference we both were in Amsterdam and more than once he told me he had to rehearse and review it. “It’s still a bit dark” he said once. I had just a vague glimpse of what he meant. But I knew he was preparing to deliver a great presentation.

Continue reading →

Affiliator Private Beta

I am having a lot of fun building Affiliator. Today I released the Chrome extension. With three clicks you can enrich your blog post with affiliate links. It’s very easy. There are 5 slots available to join the private beta. Get in touch if you are interested.

Continue reading →

Winding down AppVersion

It’s been quite an adventure and I really enjoyed it. Yet, it’s time to wind down AppVersion. It was the first service that I built with a business mindset. It’s the first web app that I wrote after 8 years of mobile development. It was my emergency exit to escape the Indiepocalypse. It started as a playground, then graduated as a distraction from client work. Finally it became a real product.

Continue reading →

Podcast Analytics is Tricky

You have a podcast and you are looking for sponsor. Pretty soon you will hear this questions: “how many downloads per episode does your podcast have on average?”. Nobody ever will ask: how many bytes of your audio did your listeners download? how fast can I download your episodes? are your audio files encoded at 320 kbits/second? Why? Because number of downloads is easy to measure. When you download a file, an analytics platform increases a number somewhere on a server.

Continue reading →

I wrote an application in Objective-c

Podrover Diaries is about my adventures in building Podrover, a service to track, collect and share your podcast reviews. Subscribe to the RSS feed or join my newsletter to stay up to date with upcoming adventures. No, I didn’t inherit an old project. Yes, I know it’s 2017. Yes, I know there’s a thing called Swift. And yet, on January 2nd I created a new Xcode project, I picked Objective-c and I don’t regret it.

Continue reading →

Solving the wrong problem

We live in times where many products/services promise to save you time/stress/money. This works most of the time, but sometimes it doesn’t. This post by Jason Fried tells an interesting story, in which car sales manager don’t want a software that saves them a bunch of trips a year. Those trips are not stressful to them, they are indeed a way to stay in touch with the community. Fascinating.

Continue reading →

Trying out Solus

My search for an alternative to macOS slowed down but a few days ago I discovered Solus. It’s an independent distribution that doesn’t lean on mainstream ones. The most interesting component is Budgie, a very well done desktop environment. It doesn’t try to emulate the UI of macOS and still is a pleasure to use. Today I spent half of my day doing real web development on Solus installed in a virtual machine.

Continue reading →

I liked App.net

I really did. So much that I almost wrote an application for it. The community was great, the founders and developers always friendly and supportive. In spite of that it is shutting down. Alternatives? Manton is kickstarting on something interesting and needs your help.

Continue reading →

Programming languages and clay

My bias first: I build (and ship) products. Anything that slows me down along the path of building is a hurdle to me. This list includes: my computer is broken my DSL doesn’t work I am sick the compiler I am using is excessively picky the mental model behind the programming language I am using forces me to think too long Also some context. I grew up working with Lisp.

Continue reading →

No alternative to macOS (for now)

I have been keeping my eyes open for alternatives for quite a while. So when I read Wesley’s post it resonated quite a bit. My search was a little adventure. On purpose I started by ignoring hardware compatibility issues. I simulated a hypothetical PC with a Virtual Box machine. I know it’s a big assumption. Still … I started simple, with a calendar. I need one. I am used to the one on macOS and iOS.

Continue reading →

The Key was Safari

Ten years ago the iPhone was announced. The key of the success to me was Safari. I clearly remember how difficult it was to browse the web on my Nokia E65. I had to push up/down buttons until the ghost cursor highlighted the link I wanted to visit. Extremely time consuming. Apps, the App Store, the gold rush, it all came later. Safari was what sold me on the iPhone.

Continue reading →

How was 2016

So how was my 2016? Rewarding I have learned a ton, especially how to pick the right tools for the job. Even more important I have learned how to quickly spot weaknesses in tools, so I am much more effective in making my decisions. I also consolidated my knowledge on a specific technological stack that I can use with confidence. So now I can easily focus on building products instead of pondering over tools.

Continue reading →

Let your customers judge your products

It’s inevitable. Every time I use something I made I see what it can be and how I can improve it. It’s a good attitude. I am all for small and frequent improvements. But sometimes that very same attitude obfuscates my judgement especially when it comes to shipping. Overthinking. It happens also to people making movies. And so when you are watching the movie, you can see all the flaws, and it isn’t until you see the faces of your friends and family that you start to forget them.

Continue reading →

Front end vs back end programming

When I work on the front end (mostly iOS/Mac apps) I feel constantly involved. Write, compile, run, verify. Rinse and repeat. There are no dead moments, unless you are compiling a big project in Swift. I am sucked in by the task at hand, I hammer it until it’s solved and then I move on to the next one. When I work on the back end things are more laid-back. There are dead moments because some tasks take time, either CPU or network time.

Continue reading →

Displays for Pros

I don’t miss the days in which I had to decide which components to include in a PC. When I switched to the Mac I had a slightly lighter wallet but a much better mental sanity. Apple won’t produce standalone monitors anymore so, unless you buy an iMac, you’ll be forced to decide which monitor to connect to your Mac. Luckily Marc Edwards has put together a thorough article about all the features you should consider when buying a monitor to connect to a Mac.

Continue reading →

iPad as a hub

Federico Viticci has an impressive post about working with an iPad Pro for the last year. I’d be pretty scared to use so many tools and services combined together. I am a fan of small toolboxes, with few but great tools. Still, it’s a good read. Technology is cool because you can connect together the components you like to achieve a result.

Continue reading →

Designing with Sustainability in Mind

Rounding up a number. Hiding an option. Omitting a detail. We do it every day, sometimes lightheartedly. But it can have a big impact over the span of a year. Much like when we brew some tea. 97% of households in the UK own an electric tea kettle and 65% of them admit to overfilling their kettles. The extra energy that is wasted on a daily basis for boiling unused water is enough to light all the streetlights in London for a night.

Continue reading →

Who will I work with?

I got interviewed for a bunch of roles in the past years, but not recently. I think the last time was around two years ago. My preferred part is always when the interviewer asks “any questions for me?”. I am not very interested in the vacation policy or the allowance for hardware. I have a bunch of ready questions like: what’s the pace like? which other company would you join?

Continue reading →

Cocoaconf Podcast Season 3 Episode 7

There’s a new episode available. I talked to Anastasiia Voitova about security and encryption. Listen to it, then go and make your app more secure :)

Continue reading →

Resurfacing

I quit working on Microsoft software a few months after the first Microsoft Surface (the table touchscreen) was announced. I remember I liked working with C# and the APIs to rotate windows. The announcement of the iPhone generated such a big wave that I was dragged away. Full of enthusiasm I switched and didn’t look back. Building a sustainable business wasn’t a though in my mind at the time. But now it is.

Continue reading →

Undesigning abstractions

Undesigning sucks. Disassembling an architecture that I built months ago following the requirements provided at the time is never a nice experience. There’s a bit of a sense of failure, mixed with a feeling of time waste. But requirements and user needs change over time, and software should follow along. To overcome situations like these I try to avoid getting in bed with a too specific architecture. I prefer to work bottom up.

Continue reading →

Well Designed Code vs Usual Crap

Last week at the Pragma Conference I had the pleasure to attend a bunch of very interesting talks about designing better code and application architectures. During one of the breaks I was chatting with a friend and one of his reflections was along the lines of: We enjoy these presentations with great tips about good app architecture, well designed code, refactoring and when we go back to our job we end up dealing with the usual crap: duplicated code, patchy architectures and close to zero test coverage.

Continue reading →

Traffic on AMP pages

The intent of AMP, technology-wise, is noble: make web pages to render fast. But there’s a drawback in the way it’s implemented by Google. Traffic is essentially hijacked. At the beginning it all seemed great, but in the current implementation website owners give up quite a bit of routing control in exchange for some speed. There’s plenty of alternative ways to build speedy pages. AMP seems like those pills that help you digesting.

Continue reading →

Steady vs Rushed

I used to like rushes. When I was in college it was pretty common to have intense periods of study before the season of exams. I remember having lots of books open on the desk, reading fast and taking lots of notes. And I remember that feeling of “one more week and I am done, I am free”. It usually meant a few weeks off, with no books open on the desk and the possibility to say “yes” when friends invited me out to have some fun.

Continue reading →

Look at what you did

If you are running a business or planning to build one you might have noticed the generic tendency of “looking ahead”. Along the lines of: My Monthly Recurring Revenue (MRR) is satisfying but I am already planning the next steps. We need to change out stack on the back end because there’s this new thing that is magic. Our marketing uses old channels, there’s new ones that everybody is talking about.

Continue reading →

Falling for Hipster Tools

I like the new and shiny, I don’t deny it. Luckily I have learned to finish the chapters I start writing, so after some playing with a new tool/framework/library I ask myself: can I build a whole thing with this? And if the answer is yes Would I ship a product (that I sell to people) based on this? The new and shiny can get past the first but usually doesn’t pass the second test.

Continue reading →

Which JavaScript should be taught?

A few weeks ago I taught a class on front end development. At some point I had to face the question: which JavaScript do I focus on? It wasn’t an easy one, but I ended up focusing the JavaScript lessons on the good old ES5. Here’s a bunch of reasons that convinced me: the goal of the company is to port existing apps written in .NET to web technologies. It’s a already a huge switch.

Continue reading →

The Semantics of Zooming

Marc Edwards is facing a fascinating problem. In the context of a program that is meant for designers, what happens when I zoom on something? This question goes hand in hand with, what’s the expectation of the user when he/she clicks zoom-in? Given that there might be many elements on screen, deciding which one to enlarge is a non trivial task. Here’s the full post. I look forward to see which solution will be adopted in Skala.

Continue reading →

I am Thankful

I am thankful for: my wife. Friend, supporter, companion, accomplice, lover. my kids. Thanks for disrupting most of my plans, for waking me up in the middle of the night and for draining most of my energy. I didn’t know I had so much patience and so much energy under my skin. You are helping me to discover parts of me that I wasn’t aware of. And you are teaching me discipline.

Continue reading →

Traits of a good remote worker

Kyle Richter has been running a remote company for quite a while and has an interesting post on the traits of a good remote worker. Here are the key points. - Build a good routine that separates work from home. - Maintain a good social and activities circle that is independent of work. - Be an excellent self starter who is motivated to accomplish the tasks in front of you.

Continue reading →

Linking and Copyright Infringement

The EU Court has made a pretty complicated decision a few days ago. Quick recap. A publisher linked to copyrighted material, which was published without consent somewhere in Australia. When the Australian website took down the content, the publisher updated the links to point to another website, still hosting the same content illegally. Recidivist behavior, essentially. Every search engine links to external content. I don’t know how this resolution will impact the business of search engines, but Google and friends probably have the (computational, monetary and legal) power to come up with a solution that complies with EU rules.

Continue reading →

Shenzhen's Vibrant Scene

I am trying to keep up with the IoT/makers scene. It’s pretty complicated. Many manufacturers, many protocols, many ideas, many possibilities. I stumbled upon a very interesting documentary by Wired. It’s worth a look. They seem two years ahead of Europe and the US.

Continue reading →

I'd trade the audio jack for

Obviously it’s all done. So this is just for fun. I’d trade the audio jack on the iPhone for: a purple unicorn a device with a battery that lasts two days instead of one peace on earth a signed contract that says Swift is frozen for 1 year a device with a battery that lasts three days instead of one wireless earbuds that charge as fast as the Apple Pencil and are impossible to loose or very easy to find No, I don’t need a thinner, lighter device.

Continue reading →

Apps need a subtitle in the App Store

With the great news announced by Apple there will be some challenges in renaming applications. David Smith has an interesting post about it. 50 characters for a name is not a lot. Tweetbot - A beautiful Twitter client is 38. I’d have to struggle a bit with Podrover. These all fit: Podrover - Track and collect podcast reviews Podrover - Keep track of podcast reviews Podrover - Stay on top of your podcast reviews As I was listening to Release Notes today, Joe came up with an interesting proposal: an app should have a subtitle.

Continue reading →

Good news on App Store policies

Apple announced a bunch of changes to the App Store The best news is that … there are also apps on the App Store that no longer function as intended or follow current review guidelines, and others which have not been supported with compatibility updates for a long time. We are implementing an ongoing process of evaluating apps for these issues, notifying their developers, and removing problematic and abandoned apps from the App Store.

Continue reading →

Thanks Daniel

Scott Stevenson is putting together a great initiative to thank Daniel Steinberg. If you spare a few minutes please put together a short video following these instructions To contribute a video, send a download link to [email protected] • Use your phone or any camera • Please record in landscape • 1080p is best, but 720p is OK • Max 15-30 seconds long I am sure Daniel will appreciate.

Continue reading →

Ambiguous Design

Besides hostile design, there’s also another form of toxic design. I call it ambiguous design. I never met a designer that said “this remote control is perfect”. Even the latest Apple TV remote has some design flaws, mostly due to its shape. But this is a post about something simpler, the remote control of a gate. I recently installed an automatic gate at my house. The remote control is this.

Continue reading →

The Power of Small

Most of the times, when we read “size matters” we almost immediately think “the bigger the better”. I had the pleasure to give an inspirational talk at RWDevCon 2016 titled “The Power of Small”, in which I question if the advantages of being bigger are worth the cost and highlight the advantages of working in a small market, the advantages of a small team and the advantages of a small launch.

Continue reading →

Vesper shutting down

A few weeks after Vesper launched I clearly remember I was in Union Square in San Francisco, talking to a friend. At some point of the conversation we agreed on the following thought: If they can’t pull it off, who can? “They” is a sort of dream team: Brent Simmons, Dave Wiskus and John Gruber. I didn’t even think it was possible for Vesper to fail. Not to belittle the skills of Brent and Dave but I thought the “marketing power” of Gruber was essentially endless.

Continue reading →

For Kim

These days I am on vacation with my family and friends. As we checked in and got in the rooms we started complaining that they were small, that the elevator was slow and that the wireless was clunky. Yeah, first world problems. I got out a bit to breath some fresh air and skimmed through my Twitter feed. My first world problems were immediately washed away as I read this post by Daniel Steinberg.

Continue reading →

You have to write code to delete code

I recently had again masons at my place. I took off the wainscot in our living room and the wall behind it was in a horrible condition. So I had a chance to see a mason making a new, smooth, coat on top of the old wall. The secret for a straight coat? Place a bunch of straight aluminum bars in key spots of the wall as reference points. Make sure they are tall as the wall itself and perpendicular to both the floor and the ceiling.

Continue reading →

Hostile Design

Lighting, benches and paths can be designed to force or prevent a given behavior. This episode of 99pi is a great overview of hostile design. It’s incredible how you can design a bench on which it’s impossible to sleep or rest for more than five minutes. Check out also the videos with people enacting weird poses to show the hostility in the design of these objects. What about software? What about that newsletter that asks you to login when you want to unsubscribe?

Continue reading →

No specific goals

There are things I’ve wanted to do, but if I didn’t do them I’d be fine with that too. There are targets that would have been nice to hit, but if I didn’t hit them I wouldn’t look back and say I missed them. Jason Fried source Every time I set a specific goal I usually missed it and ended up thinking there was a conspiracy against me, or that I was unable to achieve my goals.

Continue reading →

Working part-time for a week

Last week I worked part-time. I went good. I ended up sleeping a bit more, thanks especially to the naps in the afternoon. Overall I felt more tired though. Here’s how I spent my time when I wasn’t working: family, helping my wife and playing with kids listening to jazz watching some interesting documentaries on the origins of jazz taking notes about new ideas visiting friends I didn’t meet in a while reflecting on myself and my life Here and there I had some very light headache.

Continue reading →

Research Papers are already payed for

I spent almost ten years in the academia and I am very familiar with the problem. I am interested in a research paper but it’s behind a paywall. The institute I was working for subscribed to many publishers and associations, including ACM and IEEE. So, as long as I was in the office I could download papers. Access to publications was never a problem to me, until a struggling student asked me a copy of a paper which I co-authored.

Continue reading →

Healthier Web Pages

I have nothing against AMP or similar projects. Anything that makes a website load faster is progress to me. The point is: why do we need something like AMP? Because pages are slow to load. Perfect. Why web pages are slow to load? My theory is the following. Web pages are slow to load because they are fat. They are fat because they include crappy and unneeded plugins and third party libraries.

Continue reading →

Dialog between a News Publisher and a Social Media Platform

Hey, I’d like you to create some content for me. I am gonna pay you of course :) What do you mean by “content for me”? You create it, I publish it on my platform. Will I be credited as author? Sure! Will the reader be clearly see that I am the author? Well, yeah, unless they are dumb fucks

Continue reading →

Supporting IPv6 Networks

In my list of transitions I forgot to mention IPv6 support. Mostly because I didn’t stumble upon it. Until today. I knew it was announced. I just didn’t recall when it was the deadline. It was June 1st 2016. From that day on every iOS (and maybe Mac app?) has to support IPv6. So yesterday I submitted an app for a client and my jaw dropped when it was rejected because it didn’t support IPv6.

Continue reading →

Part-time Week

Lately I have been noticing that my productivity has decreased a bit. Programming tasks that are pretty well known to me are taking too much time and I get distracted more often than usual. Kids are at home these weeks, so there’s one source of distraction. Another is the weather. It’s pretty hot and humid these days and I can’t think clearly enough. Finally … I also need a pause probably!

Continue reading →

The Eternal Transition

Trying to recap how many transitions we (developers) went through in Apple land: from 32 to 64 bits from one resolution (and one form factor) to many from one pixel density to three. Back to 2 if you target iOS10+ on. Unless in September the announce something @4x. from Spring and Struts to Auto Layout. Fun fact: a small version of Spring and Struts is back into Xcode 8. a new design language in iOS7.

Continue reading →

Dismantling the Salon App idea

As I am looking for feedback on a protoype I went back to my ideas.txt file to tidy it up a bit. One entry I found is “system to allow customers of a salon to book services like haircut, pedicure, etc.”. My idea was to manage the scheduling using an application. I didn’t even think about the nature of the app, web, native, both. I just took that note. Sometimes I remember that I need something in the evening, and if that something (like a haircut) requires an appointment, I think it would be cool to do it right away using an app, instead of a creating a reminder to make a phone call the next day.

Continue reading →

Relevant Microdecisions

As I step outside of the world of code these days I am faced with many microdecisions about my services. Some are: Come up with a relevant subject for emails Require credit card upfront or not Format of tweets (and when to tweet) Format of blog posts (and when to post) When to announce a new feature, e.g. right away or wait for the next newsletter I call them micro because I tend to make those decisions pretty quickly, maybe by taking inspiration from some other popular service or product that I am using.

Continue reading →

Should I build this app?

I had a need. I chopped away a few hours here and there and built the prototype of an app. Blogging with Hugo or similar static site generators means using three tools: the Terminal, to create new posts and start the local server an editor, to write the post a web browser, to preview the draft I couldn’t find an app that embedded all these functionalities. So I built one, to feed the inner beast.

Continue reading →

Pinboard turns Seven

Whoever runs a SaaS should take some inspiration from Pinboard, which recently turned seven. I am not aware of many services that are run just by one person and lasted seven years. Here’s some aspects that I like: no fuss simple design focus on ONE thing (bookmarking) focus on a simple thing (thus easy to explain) good timing (launched when del.icio.us announced the shutdown) keep the cost of the infrastructure low I am following all of this rules for my services.

Continue reading →

Feeding the Inner Beast

I had the pleasure to be interviewed by Izabela Russell on her New Media Europe show. It was fun. I talked about my inner beast.

Continue reading →

On Podcasts length

As I am editing the next episode of the Cocoaconf podcast I stumbled upon this comic. source I like short and edited podcasts. I also listen to long and unedited ones, but for exceptional reasons like: I am very interested in the guest(s) I am very interested in the topic(s) I have time to kill But when I see a 2h+ episode in my podcatcher, I rarely play it right away.

Continue reading →

Every Scene is a Lesson

Dreaming is a way of trivializing the process, the obsession that carries you through the failure as well as the successes, which could be harder to get through. If you're dreaming, you're sleeping. It's important and imperative to always be awake to your feelings, your possibilities, your ambitions. ... Every step is a first step. Every brush stroke is a test. Every scene is a lesson. Every shot is a school.

Continue reading →

App Quality and Target Audience

I am pretty critic against Facebook but I can’t deny that Paper was a gorgeous app. There are not many teams that can pull off a really well done app like Paper, and it’s a pity that it will be shut down. If it was that gorgeous why didn’t it have success? There are probably a million reasons, like: they didn’t push it enough “political” issues within Facebook teams change of priorities and many more.

Continue reading →

A new Cement

As I have written before, I am fascinated by the similarity between software developers and masons. Let’s suppose you are the head of a chemical lab and you are creating a new cement. You think you have a good prototype and you are looking for some feedback. Who do you talk to? Architects or masons? I’d talk to masons, people that will have to deal with my product on a day to day basis.

Continue reading →

The Web is already Decentralized

It’s funny. It sounds like “a loving love” or “a new innovation”. A tautology. There’s no need to specify that the web is decentralized. It’s already decentralized, by nature. And yet, the title of the conference had to be Decentralized Web Summit. We don’t lack technical tools. We have plenty of them. What we lack is the culture of owning the URL. Sir Berners-Lee says it better The problem is the dominance of one search engine, one big social network, one Twitter for microblogging.

Continue reading →

Blank canvases for kids

HyperCard didn’t try to teach you coding. It really didn’t try to do anything. It just gave you a blank canvas that you could do anything you wanted on. This had two advantages: You had to work hard to learn, and you also had to use your imagination and creativity to find solutions and build the things you wanted. Swift Playgrounds: Should we teach coding, or creativity? source When I learned programming I did it the same way, starting from a blank canvas.

Continue reading →

Static Types vs Unit Tests

Only 36% “see the value” of static types. In contrast, 62% – nearly twice as many – see the value of unit testing. Developers are nearly twice as likely to “enjoy using” unit tests (33%) as compared with static types (18%). Empirical Analysis of Programming Language Adoption source I am usually skeptical about papers like this. There’s a lot to pay attention to in surveys. For example:

Continue reading →

Optimized Storage in macOS Sierra

Storage space maxed out? No problem. macOS Sierra can help make more room by automatically storing rarely used files in the cloud and keeping them available on demand. It can also help you find and remove old files you no longer use. So there’s always room on your Mac for new files and the ones you’ve used most recently. macOS Sierra preview page source I am a fan of automation.

Continue reading →

Serverless

In the beginning there was the Monolithic application. Then we had (and still have) Microservices. Now the hot word is Serverless. I confess I am intrigued. Maybe a serverless approach could force me to think even in simpler terms. But then the pragmatic side of me takes over and thinks that, much like in fashion, in technology there are trends and I am totally fine with the old trend of the The Majestic Monolith.

Continue reading →

Podrover Graduation Day

It has been a rollercoaster. Sometimes I thought I was done. Sometimes I thought this day would never come. I made it. Podrover is out of beta. I am proud of what I achieved so far. There’s still a lot to do, but I am very happy with this milestone. Podrover and AppVersion are two products that I fully produced. Design, development, marketing, everything. I am very happy with my life these days.

Continue reading →

Lisp could have been huge

Lisp is the first programming language I learned. That’s why I liked programming since the beginning. Unlike some of my friends, my learning path looked downhill, at least at the beginning. In Lisp you are “free”. Its syntax is easy to grasp. You can write your own interpreter if you like. Functions as first class citizens are now a given in many programming language. In Lisp they were there since the beginning.

Continue reading →

iOS vs Android in Old Projects

Around ten days ago I wake up and the iPhone tells me I missed ten phone calls. Usually not a lot of people call me and very rarely ten times in half an hour. I call back, suspecting something weird. It was a friend. He runs a company that has many branches. One branch deals with constructions and publishes a monthly magazine. Besides being printed the magazine is also available as a Newsstand app for iOS and Android.

Continue reading →

Osteopathy and C++

I bet you’ll never find such an “alternative” title for a blog post :) My backbone has issues. I periodically schedule visits with an osteopath. He’s a doctor, that manipulates bones to unlock mobility of parts of the body and “reset” posture issues. During sessions we chat. He knows I make software. He once asked “do people still use C++?”. Honestly, really honestly, I didn’t want to chat about it but I rolled with it.

Continue reading →

Restoring non-consumable IAPs in iOS

You’d think that a Google search and subsequent visit to Stack Overflow are the solution to all your programming problems. Right? Until, I don’t find an answer or I find multiple contrasting answers. This adventure follows in the second category. I needed to restore a non-consumable IAP (in-app purchase) for an iOS app. When you search for something like that you end up with a lot of noisy and contrasting information.

Continue reading →

WWDC 2016 wishes

It’s all decided already. This list, and any other list of wishes, won’t change what will be announced next week. So this is just for fun, and for WWDC 2017. A 60% faster compiler a purple unicorn a do-it-all method that takes care of restoring IAPs. I call it and gets back to me with either success or error. peace on Earth, everywhere a promise that Swift will be frozen for 2-3 years so I can focus on building something that lasts instead of spending my time making a compiler happy a bitcode implementation that is not in the way refactoring for Swift Craig Federighi on stage, bald a blend of Storyboards and simulator.

Continue reading →

Cocoaconf Podcast Episode 5

I had a lot of fun talking to Natasha the Robot. We talk about: traveling while staying sane gear tips and tricks when you visit a new country conferences doing laundry and the usual uncomfortable questions Give it a listen. She’s fun :)

Continue reading →

Not Easy as PIE

I was submitting a new app to the App Store. I didn’t use TestFlight for beta testing. So new app, new id, new everything. Archive and validate. Once validation passes I usually think I am done. So I start uploading and bragging about it. Until … the upload fails. Must be a glitch, I retry. Failed again. I try many times and I end up with this on iTunes connect.

Continue reading →

40 and still cranking code

Do not worry about hype. Keep doing your thing, keep learning what you were learning, and move on. Pay attention to it only if you have a genuine interest, or if you feel that it could bring you some benefit in the medium or long run. Adrian Kosmaczewski source I really enjoyed this talk by Adrian Kosmaczewski. I can relate with many of the messages he sent out.

Continue reading →

Don't blame the tools

In the past I have been involved in big projects, managed via tools like JIRA or Redmine. It wasn’t heaven. Convoluted processes, tons of emails, walls of text that nobody read. I used to blame the tools. I am changing my mind. Clearly a tool in itself can’t be responsible for a situation. It’s the usage that people make of it that generates happiness or frustration. Now there’s an argument to be made.

Continue reading →

Read more Blogs

... they patiently inform and challenge, using your time with respect. Seth Godin source Seth Godin has been writing forever. His observation is spot on. I try to read magazines or other publications, and I can’t avoid to notice that often they write to get more eyeballs. Blogs, the ones I read at least, are more discrete, unobtrusive, even those with sponsors. I read the RSS feeds I subscribe to 3-4 times a week and I really enjoy it.

Continue reading →

Acceptable Business Terms

"You can always get the player on the device. The question is, can you get it on there with acceptable business terms?" Jeff Bezos source The developer side of me leans towards the “it is technically doable, thus good” side of things. The business side of me tends to ask “Is it worth it? Does it make sense in business terms?”. I feel very lucky that these two personas have arguments pretty often in my mind.

Continue reading →

WWDC 2016 guesses

Brent Simmons has collected an interesting and funny list of WWDC guesses. I particularly enjoyed the ones in uppercase :) My guess is the following: something like TVML but for iOS/Mac OS. Rationale Apple likes to introduce something new on one platform. If it gets traction it will extend it to other platforms. Storyboards were introduced first on iOS, then made it to the Mac. Auto Layout was introduced first on the Mac and then on iOS.

Continue reading →

Aren't Storyboards supposed to tell a story?

In the last few months I have read some interesting articles about “Coordinator” objects. Some they call it Flow Controllers, some coordinators. I admit I like the idea of having an object collecting the navigation logic. As a side effect you end up with slimmer and easier-to-test view controllers. Win-win. Now. Maybe it’s the word itself, maybe I conceptualized it in a wrong way. Isn’t a storyboard supposed to do exactly that?

Continue reading →

I Can't Write Content

I can’t cook food. I can cook a grilled salmon, a steak. But I can’t cook generic food. Much like I can’t write generic content, and specifically content designed to get more visits. It feels so unauthentic to me. I can write to explain a tool, an API. I can write about an experience I had. I can write about a struggle I went through. Sitting down to design a post, and handpicking the keywords to maximize the number of visits?

Continue reading →

Highly preached Common Sense Messages

Off the top of my head: Sleep more Plan backwards, start from goal define steps to get there Start marketing before having a product Define success for you Charge more Do content marketing Do growth hacking Build something that solves a problem or that people want Keep it simple Making money is not the most important thing Money is not a motivator Build habits to avoid making micro decisions throughout the day Focus Ignore the competition Work hard Work smart Don’t procrastinate Start somewhere Build a following Build a mailing list Create an online course There’s many more.

Continue reading →

The App that was Never Born

Becky Hansmeyer posted an interesting challenge. Share some screenshots of your first, and probably not that great, app. I enjoyed Curtis’ take. Here’s is mine. It’s not about my first app. It was supposed to be my fourth. Unfortunately, even if you get your first app right, you can still stumble along the way. Beginning of May 2014. I get out of the hospital after a sleepless night. A few hours before my daughter was born.

Continue reading →

Prince was Indie

At the time of his death, he reportedly owned the master recordings of all his output. With no major label to serve for most of the second half of his career and no constraints on distribution, he was free to try new modes of connection. Jon Caramanica on NYT source He broke up with Warner Bros because they imposed him the pace of one album a year.

Continue reading →

Now Page

It took me a while but now I have a now page. It’s here. I’ll keep it updated. I am also on nownownow. Thanks Derek!

Continue reading →

Apps like Music Singles

I’d rather Apple do tons of crazy experiments, some of which may hurt my business, than keep neglecting their major role in the entire consumer-software market by continuing to treat apps like music singles forever. Marco Arment source Apps have been treated like music singles, released once and NEVER meant to be updated. Since the beginning. Let’s give Phil Schiller some time to rearrange the App Store.

Continue reading →

Adventures with SSL

Google is pushing it. It began two years ago at Google I/O. Not only all their services support SSL by default, but they will “penalize” websites not running SSL soon. There’s a pretty controversial post by Dave Winer about why Google is enforcing SSL. I’ll be way less controversial and more pragmatic. SSL is good, the intentions of people installing it are (probably) good. Security is important, but doesn’t come without overhead.

Continue reading →

From Octopress to Hugo

I moved this blog form Octopress to Hugo. Octopress was good but hasn’t been updated in a while. Version 3.0 was promised a year ago but still no news. I don’t blame the author, I know plans can go sideways. Plus I wanted an excuse to use Hugo, because it’s a good candidate for the core of a new product I am designing. I kept an eye on Hugo for quite a while.

Continue reading →

Embracing JOMO

A few months ago I listened to an ear-opening (?) episode of Note to Self podcast about JOMO. JOMO stands for Joy Of Missing Out. You have probably heard to FOMO (Fear Of Missing Out). Something is happening right now, you are not part of it and you don’t like it, even worse you regret it. JOMO is the opposite, and no it’s not misanthropy. Last time I felt FOMO I was 15 and my parents forbade me to go to a trip with my friends.

Continue reading →

Build the whole thing

Sometimes I play with new tools and frameworks. I think it’s a sane practice to glance at the neighbour’s grass sometimes. I started playing with Laravel. PHP7 has improved a lot and the community is vibrant. While playing with it I noticed one thing about my attitude. First I time boxed my task to two hours. Second I didn’t play just with the framework itself, but I build a complete app, ready to deploy.

Continue reading →

From Georgia to Merriweather

I started this blog using the font Lucida Grande, then I switched to Georgia. At this point you might think I have a fetish for “vintage” fonts. As I am moving this blog to another “platform” I have been using Merriweather to tweak the new template and I confess I really like it. It’s “bolder” than Georgia, both visually and figuratively, and it’s very readable. So I think I’ll keep it for the next version of the blog.

Continue reading →

I Spoke at My First Online Conference

For the first time I spoke at an online conference. It was fun. The pros: no traveling no dressing up you speak in the comfort of your office no worries to forget the slides at home :) The cons: I missed the after conference, the water cooler chat that happens in between sessions I had to share my slides full screen, so I had no visual feedback from the audience As for the last point, my connection dropped five minutes before the end of my presentation, but I kept speaking because I had no way to find out.

Continue reading →

Coding as writing paragraphs

There’s an interesting discussion going on in the Cocoa community. It’s about being reactive vs traditional. While reactive programming has been present in the Cocoa community since 2012 with ReactiveCocoa, RxSwift is getting quite some attention lately. The recent discussion happened between these posts: The Reactive Revolution of Swift The Non-Reactive Solution To React, Or Not To React Comparing Reactive and Traditional There’s more, but that is the backbone of the debate I think.

Continue reading →

Architects should code

I advocate for Tech Leads to spend at least 30% of their time coding. Pat Kua source That’s just one of the gems in the article. Even if it’s written by a guy that worked in a big company for twelve years, many suggestions are relevant also to solopreneurs. I worked in the enterprise in the past. The first time was at a Java shop, building software for invoicing.

Continue reading →

Speaking at iOS Remote Conference

I was supposed to speak at Cocoaconf Austin. And after I committed I discovered a dear friend of mine was getting married on April 16th. I don’t take commitments lightly, once I commit I am committed. So I mulled on it a few days and then sent an email to the Kleins, asking if I could withdraw. Very simply they replied: You shouldn't miss a friend's wedding for a tech conference.

Continue reading →

Upsert in Core Data

I am a huge fan of upsert. An upsert operation creates a new record in a database, but if the record already exists it just updates it. All of that in the same query. Without upsert you’d need something like this (in pseudocode): if (record.exists?) { // update code here } else { // insert code here } The disadvantage of this is that you have to perform two queries, one to check the existence of the record and one either to update or to insert it.

Continue reading →

I am looking for PR friendly repos

One of the ideas that I had for my monthly challenges is to contribute a pull request a day to an open source project. I thought the simplest contribution is fixing typos. Now, as much as you think it should be appreciated, it isn’t. Not every author of open source projects is keen to receive these kind of contributions. A while back even Chris Lattner felt the need to confirm that “pedantic PRs” are welcomed in the Swift repo.

Continue reading →

Fascinated by Microcasts

Microcasting is producing short podcasts. The borders blur a bit if we consider platforms like Anchor.fm, which is a sort of audio version of Twitter. But I am fascinated by classically produced, short podcasts. I really enjoyed Developing Perspective and now I enjoy Manton’s Timetable. Even Dan Benjamin mentioned short podcasts recently on the Podcast Method. I am tempted to start one and if I had one single tool that allowed to do it I’d have started already probably.

Continue reading →

Old boring and battle tested tools

I have been listening to the Under the Radar podcast. More than once both Marco and David mentioned the phrase “old and boring” referring to the ideal tools to get a job done. I totally agree. I started prototyping AppVersion using MongoDB. Boy, upserting was fast! And so was I in writing code and adding features. Until it came time to deploy. I started having problems with random data losses and I was put off by the recommended setting to deploy at least 3 replica sets.

Continue reading →

A February of Blogging

In February I blogged every week day. It was fun, sometimes demanding, but overall rewarding. I started these challenges to push myself a bit. I have discovered that I am much better at committing to a daily task than to a weekly one. In the past I struggled quite a bit with blogging because I blogged when I felt the need, and that meant one post a month on average.

Continue reading →

Cocoaconf Podcast Episode 2

In the second episode of Season three I talked to Daniel Jalkut about working from home. I learned a lot of tricks. Give is a listen, there are some interesting gems.

Continue reading →

Is it drying up?

Sarah Parmenter wrote an interesting blog post about work drying up for freelance web designers. It reminds me a lot of what happened in the Flash community almost ten years ago. The once great tool that saved us all from fighting against incompatibilities between browsers was not useful anymore. Developers began to progressively ditch it. Some went back to web technologies, others (like me) started working on mobile native applications.

Continue reading →

Atlas

Stripe has launched Atlas. With all the mess generated by the VAT MOSS in Europe, this is great news. They help to incorporate a company in Delaware, open a bank account and have support to deal with IRS. It won’t be paradise but I feel it’s better than the bureaucratic hell we are living in on the other side of the pond.

Continue reading →

Staying in Character

An expression that you might have heard during an interview with an actor talking about his/her acting method is “being in character”. It’s the ability of an actor to stay in the character’s state of mind, in spite of the circumstances. Let’s suppose you are playing a sad scene. You remembered some personal sad moment to help you “get there”. You are playing the character and you are half way through the scene.

Continue reading →

How I Podcast

I don’t dislike podcasts-as-conversations. I listen to some and they are pretty good. But I prefer much more edited podcasts. For example TLDR is no more, but is very well produced. Reply All is another great one. And I am eagerly waiting for the new season of Codebreaker. When I listen to them I clearly perceive that they have worked to create a 2 hour long episode and then they sat down and picked the best parts to build a story.

Continue reading →

I prefer people to degrees

I have noticed this post by John Saddington a few weeks ago and I kept it around, mulling over it from time to time. It resonates a lot with me. When I look at the past I really enjoyed working with people that really didn’t qualify for the job if I just looked at their degrees. I enjoyed working with them because we got along, we shared the belief in the first-make-it-work-and-then-make-it-better principle and we never judged the person but just the code (or the design).

Continue reading →

Lines spent

My point today is that, if we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent": the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger. E. W. Dijkstra source Amen to that. I am trying to write less code. I am still honing that process. Nevertheless I recognize that sometimes I need to write some specific code before deleting it.

Continue reading →

Saying No

Would you speak at our conference? Can I pick your brain about this? Dinner out? We booked a chalet for the next weekend. Feel like skying? Saying no is hard. It really is to me. I don’t particularly love packing my luggage and take a plane. But I am willing to do it if I know I am gonna meet somebody interesting when I land. Taking some time off to listen to somebody’s idea is not my best hobby.

Continue reading →

Walking

Maybe you can relate to the feeling. Everything, or most of the things happening around you, point you to the same direction. And yet, you have doubts. I remember the first time I visited New York City. It was 2002, a few months after the Twin towers attack. My hotel was midtown, on the 31st. I arrived very late, on a Saturday night, jaded. Sunday morning I woke up, willing to visit Ground Zero.

Continue reading →

I am gonna miss mdevcon

It was 2012. I was … younger. I got involved in the iOS community since the very beginning. I joined the Ray Wenderlich team in 2011. After a few months we wrote iOS 5 by tutorials. My chapters were about iCloud. The book was a huge success. Somehow I got across the mdevcon call for papers. All I thought was: “why not?” I submitted a proposal and then I totally forgot about it.

Continue reading →

The slacker beast

A new framework is out. A new cool library has been released. You see it mentioned everywhere. You check it out quickly, it really seems cool. You are tempted to jump in. “Jump in” here might mean: I am going to include it in my next project I am going to convince my team to use it I am gonna build a demo project and talk about it at my local meet up I am gonna take sometime off to play with it I call this the slacker beast.

Continue reading →

How many design titles?

We go so far as to define the very word "design" as arranging pixels for display on a screen. Drew Wilson source I am with Drew on this. Every choice in a product contributes to its design. If a DevOps engineer spots that a service is slow and makes it faster, he/she improves the overall experience of the product. Would you call that engineer a designer? Probably not, but still the design has been improved.

Continue reading →

From motivation to discipline

Motivation. It has been my fuel many times in the past. I’d wake up in the morning and let her feed my engines. No complaints. Really. Now I am living a phase of my life in which motivation is not enough, it’s too much ups-and-downs. I’d have highly productive days mixed with horrible days, in which I can’t get anything done. So a while ago I switched fuel. Now it’s discipline.

Continue reading →

Pillars

A few weeks ago a friend of mine died. He was 89 but I’d still call him “friend”. He was even more than that. A mentor, a person that knew me well and saw me grow. I have been lucky to have known all of my four grandparents and I spent a great amount of time with them. I like to think of my “friend” as the fifth grand parent.

Continue reading →

Seamlessness

A seamless texture. It makes my eyes freely flow over it. It gives me that sense of endless. Whenever I go to a mall I stop by the cutlery section and I love looking for tureens with no welded joints. The Westfield Mall in San Francisco, on the ground floor, has a huge cutlery section. It’s design heaven to me :) I also like to pick up knives to figure out if they feel balanced in my hand.

Continue reading →

Celebration Test #1

One of the three words I picked for 2016 Today was a kind of down day, in which I couldn’t get a lot done. I tried to work in first gear mode. I worked on the core of a new feature, then I had a walk and thought about my long todo list. Suddenly two neurons collided in my brain and I wondered: how is my done list? When I got back from the walk I sifted through the log of activities in AppVersion, and it was a bit messy.

Continue reading →

Coworking

My wife had a great idea for Christmas. Her gift for me was a monthly subscription to a local coworking. We talked pretty often about my difficulties of working from home, especially when the schedule of our kids was pretty hectic. Her gift was perfect. I admit I was a bit skeptical. For a number of reasons my main machine is now a Mac Mini, which I wouldn’t move back and forth.

Continue reading →

Software updates are complicated

If you think waiting for Apple to approve a new version of your App is nerve-racking you should listen to Episode 4 of the Code Breaker. It’s an interesting podcast that I recently discovered and season 1 is all about the question “Is it evil?”. There’s a little segment in which they interview the folks behind Instapaper to talk about software updates in the Apple land. But the best part is when they talk about the NASA that screwed something up in a software update to the International Space Station.

Continue reading →

Clean Networking Code

I can’t help but think that my networking code was cleaner before the introduction of blocks, before 2010. That doesn’t mean my networking code after that date sucks though :) One of the things I liked the most when I discovered Objective-c and the Cocoa frameworks was the delegate pattern. I saw it and it clicked, just like that. To give you a bit of context I was coming from the world of Java, writing code to generate factories that in turn generated factories.

Continue reading →

The fallacy of almost free

The entry level tier of Parse was so generous that it felt like the service was free. I think this has led some developer to reason along the lines of: I don’t pay for that service, so I don’t need to charge for my app. Or I can charge less, because I don’t have recurring costs for the servers. That is unhealthy. Not just for developers but also for users. There’s probably gonna be some bending over backwards to port an app running on Parse somewhere else, with potential interruptions for the customers.

Continue reading →

Cocoaconf Podcast Season 3 is here

I am honored to be the new host of the Cocoaconf Podcast. The first episode of Season 3 is out. I had the immense pleasure to interview Brent Simmons. I had a lot of fun going back in time and walking with Brent along the streets he used to walk before the advent of the App Store. At some point we stopped for a beer and the conversation got even more interesting.

Continue reading →

Data leak as pipe leak

I don’t know about you but when we have some kind of problem at our house we call somebody to take care of it. I can venture in plastering and painting walls but if there’s a pipe leaking I call the plumber. If some socket doesn’t work I call the electrician. If things go on like this I feel like everybody will soon need an IT service that you can call for security related problems much like you call the plumber when a pipe is leaky.

Continue reading →

Interview with Drew Wilson

It was fun interviewing Drew Wilson. My favorite part is: Learning to code totally changed my life; being able to fully realize my designs all by myself was amazing. I immediately started building my own ideas. Here is the full interview.

Continue reading →

Three Words for 2016

I am picking my three words for 2016. The task sounded so easy, it’s just three words after all. For me it wasn’t. While I didn’t devote long sessions to think about it, I took a lot of micro moments to mull over it. Here they are. Thank As in say “thank you” more often and don’t think people owe me. How many times I found something done and I thought it was just owed?

Continue reading →

When I forget to celebrate

Only when I stop and really think about it I recognize I made steps in the direction I wanted to. But I don’t stop to celebrate often. One year ago I started drinking a glass of water as the first thing in the morning. It helps me a lot, much more than coffee, which I drink after. I do it every single morning. And every single morning I forget to celebrate.

Continue reading →

Lack of Motivation

It happens to everybody. You start with a spark, motivated, you are gonna rule the world. You put a lot of effort, you see the progress, you get feedback, that fosters more motivation, you go on. Smooth sailing. Suddenly that day arrives. The night before you have planned your tasks. You don’t have to think what to do, it’s all there in the list. But you can’t get started. Maybe something sidetracked you?

Continue reading →

A selfless Swift

It’s not a bird without ego :) There’s quite a heated debate about the use of self. If you read the proposal on GitHub there are pros and cons. We had a similar discussion on the Ray Wenderlich team when we wrote our Swift style guide. I am in favor of using self, but I lost the argument :( And my argument is simple: I like code easy to read. I don’t mind writing self, even when it’s redundant, and I am sure my future self will appreciate it (no pun intended).

Continue reading →

No SCM

I am not using a Source Code Management (SCM) system for my products, neither for AppVersion nor for Podrover. People look at me in a weird way when I say it. Here’s why. It’s just me. I am the only developer. There’s no need of sharing the code base with somebody. I save some time. Maybe not a lot. Maybe ten minutes a week. That’s a work day a year.

Continue reading →

Trying to avoid lock-in

While building my services I am trying to avoid lock-in as much as possible. I especially try avoiding to tie myself to a non portable technology. For example I could have used Heroku. I used it in the past, it’s very cool. But it doesn’t allow to upload files. I mean it does, but storage is not permanent. The suggested way is to upload files to S3. Another dependency. You see where this is going?

Continue reading →

On Signup Screens

There’s a very nice article by Sebastian Kreutzberger about improving UX by avoiding signup screens. There’s also a follow up post to address cross-platform issues. It’s all feasible, sure. But is it worth it? All of this just to avoid a signup form? I am all for a better UX and a signup screen can be seen as an “obstacle”. On the other hand a form is also a milestone. A customer entering her email is a form of commitment.

Continue reading →

Behind an Icon

We usually see the final product. We judge it pretty quickly. We almost never think how the designer got to that result. Here’s the story behind the icon of Podrover. I wanted to design it myself, but the entrepreneur side of me won that argument with a “let’s outsource the design of the icon while you keep on building the app”. I had a few ideas in mind, mostly playing with the concept of rover as a vehicle.

Continue reading →

In First Gear (at least)

Here’s a lesson I learned from my professor at the University. What’s cool is that this is not a motto he said, it’s something I internalized while working with him for three years. We had a lot of mishaps while working on a EU-funded project: hardware bought but withheld at the customs local administration delaying the project by putting a spoke in the wheels with bureaucratic nonsense people leaving the project after a few months other professors giving us a bad time, mostly due to envy snow that prevented us to access the lab for a week his son having a kidney transplant It was like bad luck decided to focus all his attention on my professor.

Continue reading →

Letting go of perfectionism

You have it, there in your mind. Maybe it took a while before you “visualized” it. Or maybe you got it in the blink of an eye. Either way now it’s there, so crystal clear that you feel it’s “mandatory” to realize it. The idea. You have time, skills and motivation. Just one little obstacle. Your perfectionist tendencies. I just described my younger self. I have a ton of abandoned projects.

Continue reading →

Product Programmer

A few days ago I stumbled upon this Taxonomy of Programmers. It’s not exhaustive list but I fit pretty good into the Product Programmer category, especially on this: They want to think about the product I feel pretty uncomfortable if my task is “build this cog, here are the specs”. I kinda need to know how my work fits in, how that cog contributes to the machine.

Continue reading →

Dismantling an App Idea

How do you analyze your app ideas? Here’s how I do it. First a little preamble. I am publishing this blog on S3. I use Octopress to generate it. I write my posts in markdown. Once I am done writing/editing I (re)generate the blog and upload the results to S3. That’s it. Most of this process involves scripts that I run in the Terminal and I am totally fine with it.

Continue reading →

Adventures with Servers attacked by Botnets

I have a toy VPS on Digital Ocean. It runs the backend of a very simple prototype for a demo that I had to run almost a year ago. The backend has a signup and login system but fortunately we didn’t use any sensitive data for the demo, just fake email addresses and a bunch of data about businesses like addresses and phone numbers, all publicly available stuff. At the time we were in a rush so I set up the machine without any particular protection.

Continue reading →

My Father and Mick Jagger

Sometimes during podcasts or even at conferences I get asked: “who is your role model?” My answer is “My father and Mick Jagger”. No, they are not the same person :) They share a very fascinating trait though. They are both older than seventy and both still enjoy doing what they did for their entire life. I assume you already know who Mick Jagger is and what he does. My father does not have a wikipedia page, yet.

Continue reading →

Software Masonry

We have been restoring our house for a few months. I saw many things that are pretty similar to the world of software development. Most of them are related to “executing a design”. When you restore a house there’s usually an architect or a quantity surveyor that leads the job. They check out the house, take a lot of measures, come up with a blueprint and the masons are supposed to execute it.

Continue reading →

Between me and Swift

When you teach it you build examples close to real world scenarios, but still not fully real. When you work on a project on your own you might take shortcuts to avoid what you suspect are intricate situations. When you work with a team, with designers that want a pixel perfect implementation, with an existing code base, with some bridges to Objective-C, with changes of mind along the way then you have a good battlefield to test a tool.

Continue reading →

Product or Project?

A friend asks you: “what are you doing these days?” You are working on something on the side, or even full time. How do you call it? Product or project? I’m not hair splitting. A project to me is in a sandbox. I do it for fun and to learn something new. The expected outcome is self contained. I know something more when I am done and I enjoyed doing it.

Continue reading →

Sleep is Good (if you can afford it)

I’d sleep for a month if I could. The point is, I can’t afford it. I am living a phase of my life in which I don’t sleep much. We have two kids. One is 4, the other is almost 2. Nights are crazy. My problem is not sleeping fewer hours than usual, but interrupted sleep. Like sleeping for 2 hours (enough to get in the REM phase) and be awakened by one the kids screaming because he had a nightmare, or because he wants to play.

Continue reading →

One small thing everyday

Since October 19th I have read and posted a small inspirational quote every day. I didn’t even realize it until I noticed that the file I uploaded was named “31.mp3”. That marked a month. Here’s the full list on Spoken. Why did I do it? I struggle with some kind of routines. I wanted to challenge myself. It was a lot of fun. And effort. Especially considering that I made it in spite of the following:

Continue reading →

Fostering Open Source Contributions by First Timers

Try to remember the first time you tried to contribute some code to an open source project. Even if you are a great developer there’s a lot behind a good contribution: requirements about tests how a pull request is managed code formatting guidelines If you manage an open source project and you welcome contributions, try to make it easy. Kent C. Dodds had a very cool idea. He just wrote the tests and a very detailed description of a feature.

Continue reading →

Monitoring a Server with the Telegram API

Some servers behind Podrover are just workers and do not run a web application, so I can’t use Pingdom and the like to monitor them. I could use some library like Monit but honestly I didn’t want to install one more thing on the server and I like to exploit push notifications when possible. I am already monitoring some behavior of my DB servers via Slack. When some key activity is performed a message is sent to a private Slack group, and I get a notification on my iPhone.

Continue reading →

Drew Wilson is crazy

I mean crazy good :) Yes, I could have used a pencil/pen and paper (my preferred method) but I didn't have any in the room. Drew Wilson source So what do you do when you don’t have pen and paper handy? You build a Mac application in 24h! Kidding aside, I think the NSF should create a fund to investigate how Drew can produce good stuff so quickly.

Continue reading →

The spite machine doesn't look back

Pattern: regular dude/gal does something relevant and gets “famous”. Three options: ignore envy take inspiration The first option is the hardest nowadays. Big publications might write about the success of dude or gal, not to mention appearances on podcasts. Either you are on vacation and totally disconnected or chances are that you will hear about that story. It’s up to you to try to ignore it and keep walking on your path, but it requires some effort to not get distracted, at least to me.

Continue reading →

Playing Darts

Just yesterday I wrote that your business is about them. This is extremely evident if you are building devices and software for customers with disabilities. Yesterday Kevin told me he was on TV. I met Kevin at Cocoaconf. We have been in touch since then. He’s blind since birth. He helped building and testing BrainPort V100. A camera mounted on glasses depicts a scene on a pad which the user keeps on the tongue and those stimuli are processed by the visual cortex.

Continue reading →

Your business is about them

I am an avid listener of the Hack the Entrepreneur podcast hosted by Jon Nastor. A few weeks ago he interviewed Derek Sivers. There’s a quote still stuck in my head. The success of your business has nothing to do with you and what you want, your personal passions and preferences ... this isn't about you, your business is about them and their needs. Derek Sivers source Passion can be a driver, no doubt.

Continue reading →

Stu Green on SaaS startups

My friend Stu is posting like crazy about the lessons he learned building SaaS startups. It’s very good stuff. Lesson #1 is: breathe.

Continue reading →

Control the Narrative

The App and Play stores have turned out to be exceptionally poor places to run a software product business for most developers. DHH source We have been saying this for quite a while. Check the presentations at iOS/Mac conferences in the last year and you’ll find at least one occurrence of the word “Indiepocalipse”. There are people, even solo developers, that make a living or a good secondary income off the App Store.

Continue reading →

Pitching a Product is a bit like Dating

These days I am getting in touch with some podcasters to see if they’d like to join the beta of Podrover. It feels a bit like dating. I have been out of the dating scene for quite a while but usually my approach was “can I buy you a drink?”. I always thought it was the simplest and less “compromising” question. I feel it’s also easy to answer, although once I got an “I don’t know”.

Continue reading →

International Podcast Day

I love podcasts. They are with me when I walk, in the bathtub, when I cook and before sleeping. Podcasts are a revolutionary medium and also a means to build a relationship. Even if you have never met the host of a podcast, don’t you feel you already know him/her a bit? As a host, didn’t you notice that people approach you more easily when you meet them face to face, for example at conferences or meetups?

Continue reading →

Writing code in entrepreneur mode

Here is it, innocent Ruby code: t1 = "2015-08-27T11:53:00-07:00" t2 = "2015-09-16T12:33:36-07:00" t1 < t2 #true Some of the DB queries in Podrover involve time. For example: “get all the reviews since yesterday”. During the prototyping phase I always worked with strings and when I came to build that query I still used strings. As long as the format (and the time zone) is the same it should work. If you have a case in which it doesn’t work let me know and I’ll update this post.

Continue reading →

Lock Yourself Out

Ok a few days ago I said Lock Yourself In and now I say lock yourself out. Both are right, just not at the same time :) An external deadline keeps you accountable. But sometimes you have to step away from the keyboard to get the word out and talk to your future customers. The code that you push every day isn’t going to announce itself and your product has no value if you don’t explain it.

Continue reading →

Lock yourself in

No setting a deadline does not work for me. I mean it works for client projects but when I am building my products it just doesn’t work. Honestly I don’t why, I should take some time off to think about it. But not now, because I have locked myself in. With Podrover I am sponsoring the Release Notes Conference. Since we announced the sponsorship the progress has been huge, especially regarding the UX and anything that is user facing.

Continue reading →

The Quickest

“Which solution should I go for, this or that?” “The quickest”. I have seen a lot of time wasted, especially in the enterprise, to make a decision about a tool or a service. Time spent hoping that the answer would manifest itself, time considered as validation. The more I think about it, the better will be my decision. Just to discover a few months later that the choice made was not even close to what you needed.

Continue reading →

Fun Facts #1

Discovered this week. Mac OS X has extensions. Really, I didn’t know. LLVM still supports the PowerPC architecture, and Windows XP! Release notes here. When I provision a machine 40% of the total time is spent compiling Ruby. I am tempted to switch to Docker just because of that. I discovered this new font designed for source code. It’s named Hack and I like it a lot. It looks cool on Sublime Text and Xcode.

Continue reading →

Leave out the part that readers tend to skip

Elmore Leonard's tenth rule of writing is "Try to leave out the part that readers tend to skip." I find that readers skip prose when it is written in the wrong order. Daniel Steinberg source This, and most of Daniel’s article, is totally applicable also to building software products. Sometimes we write lines and lines of code forgetting about the body, the “meat”, the hook. I am trying to apply this focus-on-the-body philosophy while building Podrover.

Continue reading →

No framework means your framework

Little update on my search for a UIKit for web apps. After experimenting for a few hours with some frameworks and kits I decided to go with no framework, that is my framework. I am following the Trello CSS guide and am really liking it. After all the UI of Podrover is pretty simple and what matters is the interaction. I am happy that ended up with: a single CSS file code that I actually understand code that I know how to tweak My personal suggestion is: don’t sweat it, especially at the beginning.

Continue reading →

Picking a chat widget

It’s a fact that a channel like real-time chat helps conversions. So I wanted to put a little widget on the home page of Podrover. Much like the the blog generator and the CSS framework the hunt was … wandering in a jungle. I am more and more convinced that a search on Google is not enough anymore. Sure, you dig out a list of potential candidates but how do you choose?

Continue reading →

There is no UIKit for the Web

… because there are many. I am building a web application and … I need a UI Kit. I am tempted to start with a clean slate, an empty CSS file, but first I’ll look around. I feel weird because I never needed this scouting when I built iOS apps for clients. The starting point was always UIKit, like it or not. It has pros and cons, but it saves you from the situation I am in: choosing a framework (or starting from scratch).

Continue reading →

Hunting for a Static Site Generator

Last week, pretty much in a hurry, I had to setup a blog for Podrover. I wanted to host it on AWS S3, where also the landing page is hosted. Why? To keep it very simple. I am sure that if I had used Wordpress or Tumblr I’d have started toying with themes, layouts and plugins. So I forced myself in a corner again and decided for a static site generator.

Continue reading →

KIVS: Keep it Very Simple

While I was building the landing page for Podrover I wanted a simple form to allow visitors to get in touch. I was already planning to host the page on Amazon S3, to keep the deployment as simple as possible. S3 is “just storage for files” and there’s no application server to execute php/ruby code. I could have used the newly introduced Lambda but it didn’t fit my definition of simple.

Continue reading →

Update to iTunes alternatives

I said I am looking for alternatives to iTunes and I promised I’d test Loop for Vox. Well I tested it but it’s not for me. Don’t get me wrong, it’s a well done service but it missed two key features for me: iPhone app doesn’t upload music to the cloud, only Mac app does I don’t see the files. I realize the latter reflects my paranoia about disappearing files.

Continue reading →

Salute solo Programmers and welcome Solopreneurs

Jean-Louis Gassée’s writings are always neat. When I read A Salute To Solo Programmers a whole tower bell rang in my head. He claims that solo programmers life is now complicated because of technological reasons. Those were the days… Computers and their operating systems were simple and the P in Personal Computers applied to the programmer. He or she (mostly he at the time) could make a dent in the universe while sitting alone in a cabin in the woods.

Continue reading →

Nothing is Something

Since I discovered /dev/null on Unix I have been always fascinated by the concept of nothingness in computers. When I started developing in Objc it took me a while to get acquainted with the fact that “it’s ok to send messages to nil”. And now Swift has changed the cards again with optionals. I recently watched this presentation by Sandi Metz at RailsConf 2015. She has been a Smalltalk developer and in the video the influence of “programming as message passing” is very evident.

Continue reading →

Limits of Modularity

I recently listened to episode #114 of iPhreaks about modularity with Samuel Giddins. There’s a key sentence in there, around 3:40: “Things can go wrong even if you are doing the right thing”. A while back he forgot to update a dependency and Cocoapods stopped working, even if all tests were passing. Debugging was a bit complicated. Modularity is drawing imaginary lines. If you are building an iOS app you are probably adopting an MVC model.

Continue reading →

Streaming apps like songs

Among the many ideas that I heard to redesign the App Store I heard the one of “streaming apps”. It goes like this: pay a monthly fee and you can use this, this and that app (much like the Adobe Creative Cloud). In all the conversations I had the idea has been dismissed pretty quickly. In case you are taking it seriously check what’s going with streaming in the indie music industry.

Continue reading →

Upgrades in the Mac App Store

Last week I joined the MAS crusade. Over the weekend I have tried to imagine what such a redesign would entail. Let’s suppose somebody tasks you with implementing payed upgrades in the Mac App Store. What would you do? So far I have come up with the following list of edge cases: Customer bought version 1.1 back in the day. Newest version is 1.7. Can the customer upgrade? If no, who picks the exact words to tell him/her?

Continue reading →

The iPad is not a MacBook Air

Since the day the iPad was released I met you. I am talking to you, you that think of the iPad as a laptop. I have seen your hope grow and grow as new devices and iOS versions were released. I admit that the situation has improved a lot. But when you grab a seat at your favorite Wi-Fi equipped coffeehouse I still feel a bit of compassion as you take the iPad and the external keyboard out of your fancy bag.

Continue reading →

The MAS Crusade

Everybody complains about it but the change didn’t happen yet. The Mac App Store (MAS) does not allow paid upgrades. Paid Upgrades are the Lifeblood for Indie Businesses Dan Counsell source Yes, they are. You can’t count only on big launch. I believe they are lifeblood also for customers. An up-to-date app tells me that behind it there’s somebody that cares. It’s easy to draw a parallel between our situation and Taylor Swift’s.

Continue reading →

iTunes parts

I’d break iTunes down into the following apps: Podcasts App to buy/stream music/movies App to buy/consume books/audiobooks App to play/manage music libraries iTunes U App to synch data with mobile devices I am fully aware that I don’t know what’s behind iTunes. Parts of my proposal maybe not be feasible given the current infrastructure or team organization. These are just the desiderata of a regular user that prefers small apps well done instead of a multi headed monster.

Continue reading →

Alternatives to iTunes

When it comes to music I am religious. I have my library, it’s in iTunes and I always know where are my files. I keep many backups, offline and online. I am so paranoid because I spent 15 years building my library. I started when I got my first Mac. It took me a loooot of time to rip my CDs and to correctly name the mp3 files that I had on my PC.

Continue reading →

My presentation at AltConf 2015

I was honored to be a speaker at AltConf 2015. As I wrote a while ago it was a great experience. Now the video of my presentation is out. Enjoy!

Continue reading →

Gratuitous Animations

Visual flair. Like smoke on the dance floor. Would people enjoy dancing without it? Probably yes. For some type of animations, or for animations in a given context, it’s the same. The animation that makes you furrow your brow in frustration as it stands between you an your intended goal. As a designer you need to realize that your UI is not entertainment. Sophie Paxton source When I perform a particular sequence of tasks I don’t think, I just act in a sort of “cruise control” mode.

Continue reading →

Percentage of Apple Watch apps

How many watch apps are there? While searching for the answer I stumbled upon this report by AppAnnie. On June 8th there were 6,352. When I found it I felt it wasn’t a lot interesting. So I came up with a different question: In the countries in which the Apple Watch has been released, which is the percentage of apps that have a companion Watch app? I extrapolated some of the data that I have via AppVersion and http://canihazawatchapp.

Continue reading →

Sandbox is bad sandbox is good

I love the Mac App Store, I hate the Mac App Store. The review system makes me angry, the review system makes my machines safer. I am a developer, I am a user, I am thorn. You might have read a lot of posts about how it’s hard to make a living in the App Store. The most common reasons are the usual ones: no paid upgrades long review times inconsistent rules no access to customers emails As a developer I perceive all these as obstacles to my business.

Continue reading →

My WWDC week was about people

WWDC was two weeks ago. I watched some of the videos while I was in SF. I don’t remember anything, and I will watch them again. What I remember vividly is the people that I met, so many and so passionate. I don’t remember what’s new in Swift 2.0 but I clearly remember who I met in SF, where and what we talked about. The essence of a conference is not the new APIs or tools presented but the people you meet and the relationship you create or nurture.

Continue reading →

Rob Napier on Taylor Swift and Apple

The web is full of unneeded and useless words about the “Taylor Swift convinced Apple with a blog post” episode. Among all the crap I found a gem, a post by Rob Napier The difference is that musicians had a money problem and devs have a not-money problem. ... The App Store is an engineering problem, not a money problem. Engineering problems are hard and messy. ... And that’s why one artist can move all of Apple.

Continue reading →

My plan for Twitter

Now that Dick Costolo stepped down, everybody has a plan for Twitter. So why should you read mine? Because it’s simple and effective. We (developers) made Twitter was it is because of its APIs. Remember when 80% of iOS demo apps were a Twitter client? Yes, that was PR, for free. Now Twitter does not need PR anymore but it needs tools so that people can use it in a meaningful way.

Continue reading →

Get rid of the Ceremony

I am following the stream of consciousness started yesterday. I’ll talk about an attitude that has helped me to deal with the concerns before shipping AppVersion. I am not a fan of ceremonies. There’s usually a “protocol” to follow. There’s something you can do and something you can’t. I worked a lot on iOS apps. When you have to submit one, there’s a ceremony. I call it the “App Store dance”.

Continue reading →

Fear to ship

You are ready. The servers are running, the credit card is a bit more empty, buttons are aligned as you wanted. You have waited for this moment. You are ready to press “Publish”. But you are not alone. Sometimes of the shelf, sometimes right on your desk. Fear. All kinds of questions cross your mind. Will the server keep up? Did I schedule backups? Did I run all the tests?

Continue reading →

On Forcing

“You have to wash your teeth”. “No”. If you are a parent this might be a common scene to you. This happens pretty often with my kids when I try to force them to do something. Usually my technique to persuade them is argumentative. “If you don’t floss daily you will probably have a bad tooth, that will hurt, and we’ll have to go to the dentist”. It takes a while but eventually they understand.

Continue reading →

Icons are a language

Brilliant post by @designjokes. Some icons are verbs, some are nouns. I have recently written about icons and labels but I skipped the part about the grammar, which is covered in the linked post.

Continue reading →

Icons labels or both

A few days ago I stumbled upon an interesting thread that started with this Tweet: “The Best Icon is a Text Label” http://t.co/eqVi82nAAN pic.twitter.com/cig7ZYVwAg — iA Inc. (@iA) April 10, 2015 I studied semiotics so this discussion resonated quite a bit with my studies. I looked up some of the notes I took at the time and got back to the roots of semiotics, to the founder Charles Sanders Peirce.

Continue reading →

Aluminum-ion battery

I always thought that the solution to battery powered devices was building batteries that last longer. I never thought of batteries that charge faster. Honestly I would not mind stopping by a cafe’, rest my dogs over a beer while the battery of my phone fully charges. The discovery presented in this paper seems to enable exactly this scenario. The future is bright.

Continue reading →

App Store Slowness

Sometimes I wish the biggest app developers would get together and delist their apps for a day, just to show how much pain this process causes. Kushal Dave source I couldn’t have said it better. One of the best signals that you can give to your customers is quick intervention. Someone proposes a feature that goes along with your vision and actually improves the app? Work on that and push it quickly.

Continue reading →

Quitting Apple

These days there’s a very interesting blog post by an ex-Apple employee. Correct me if I am wrong but I feel it’s the first of this kind, so open and so harsh. UPDATE: here is another interesting post by a designer. I can’t help myself to believe every single line is true. No, I don’t believe every team/manager at Apple is like that. I am sure there are great teams and people proud of being part of Apple.

Continue reading →

The Unsustainability Pattern

New shiny service announced. “How much does it cost? Nothing? I am in!” We have seen this many times. The fact that you don’t pay doesn’t mean that there’s no cost. Somebody is paying, maybe you’ll never know who, but believe me somebody is taking money out of his pocket to put it in someone else’s wallet. It may look free to you, but somebody is paying for servers, electricity and bandwidth.

Continue reading →

The Notifications Whore

This post on Wired confirms even more the fact that I am not a target user for the Apple Watch. Along the way, the Apple team landed upon the Watch’s raison d’être. It came down to this: Your phone is ruining your life. Like the rest of us, Ive, Lynch, Dye, and everyone at Apple are subject to the tyranny of the buzz—the constant checking, the long list of nagging notifications.

Continue reading →

Private means Private for Everybody

A 17-year-old student builds an app on top of the Instagram API. Everything would have been fine if the app didn’t include the possibility to upload pictures. According to this article on arstechnica the rationale behind the app was: "There are 15 Instagram apps on the App Store, and none of them have upload capability." On the App Store there’s a gazillion of iOS apps based on the Instagram API and none of them (except the official one) has upload capabilities.

Continue reading →

Trade Different

Apple is gonna offer a trade-in promotion. It started it a few years ago but now it’s gonna open it to non-Apple smartphones. I am all for recycling when possible, so this is a great news. Still I think this is a pretty unexpected move. I read it as an acknowledgment of competitors. Apple once pushed the “Think Different” campaign. For twenty years they not so implicitly claimed: We are on a different level We know there are competitors out there but we pretend they don’t exist (unless they are Microsoft and they come with a bag of cash).

Continue reading →

Let's Schedule a Call

I shiver every single time I hear that. Maybe I have just been unlucky but I have been involved in very weird situations. One time a guy had an old crappy PC, slow like hell. He had the great idea to buy a bluetooth headset. We spent usually half an hour to have a meeting that could have lasted five minutes. We talked in chunks of 20 seconds. That was the longest chunk because the headset kept dropping the connection to the device.

Continue reading →

Concerns with Apple

Finally the Watch has been fully announced and we had a few days to think about it. I am glad there’s no more posts rambling about the possible prices. But I am concerned. I have written elsewhere that I don’t feel a target user for the watch. Still, congrats to the team in Cupertino for launching a new product. My concern is not the watch but Apple itself. Imagine. You are the only child and you enjoy your parents’ undivided attention.

Continue reading →

Speaking Engagements Q1 2015

I am on the road again. If you are around the conference place get in touch. I am always up for a beer/coffee/chat. Yell at me on Twitter. My handle is @_funkyboy. RWDevCon ++++++– Where: Washington DC, USA When: February 6-7 Website: http://www.rwdevcon.com Mdevcon ++++++++++++– Where: Amsterdam, The Netherlands When: March 5-6 Website: http://mdevcon.com Cocoaconf ++++++++++++– Where: Chicago, USA When: March 27-28 Website: http://cocoaconf.com/chicago-2015/home

Continue reading →

Copy and paste mentality

Raise your hand if you remember which was the most difficult obstacle when you started programming. I do. It was the difference between ‘=’ and ‘==’. To me they were the same. I remember that to complete a homework I needed a function and it was like one that my mentor already shared with me. So I took his code and, on purpose, exchanged all the occurrences of ‘=’ with ‘==’ and then submitted.

Continue reading →

Putting Marco's numbers in perspective

Marco Arment has published the sales numbers of Overcast, the podcast application that he released six months ago. We need more posts like this. They help a lot other entrepreneurs to explore opportunities and put things in perspective. Before you jump to the “he made it so I can make it too” conclusion let’s put those numbers besides other facts/numbers: Marco runs a very famous blog. I don’t know if Alexa is still the goto tool for measuring websites but his blog has a 45,162 global rank.

Continue reading →

Where's that App?

Tons of words have been written about the problems that developers have with the App Store: It’s not sustainable for businesses, reviews are a black hole search is broken I enjoy a lot the fact that whenever I buy a new machine or install a new version of Mac OS X all the apps are “there”, in the list of my purchases. It’s just a matter of clicking on a bunch on “Install” buttons and wait.

Continue reading →

Where are not there (yet)

I was skimming Apple’s related announcements at CES and I stumbled upon Toshiba Transfer Jet. The fact that tools like this are still invented (and probably sold) makes me think we are not there yet. The dream of moving one file from a device to another is in fact still paved with complicated requirements. This led me to inspect the requirements to use AirDrop, which are pretty high, considering the following facts:

Continue reading →

Amazon devices

Dustin Curtis on Amazon Echo The media strategy that seems to be driving Jeff Bezos to make mobile consumption devices (with Amazon’s media stores and Prime video/music) is flawed. No one makes money selling media for consumption anymore. That market is quickly and brutally dying. @dcurtis source The only explanation I have is that Jeff Bezos wakes up in the morning and says “We have this money to spend, we can’t throw it away so let’s build something”.

Continue reading →

Fear of the App Store

As I’ve mentioned in previous emails, I fear App Review. And that’s no small thing. So many decisions I make end up being filtered through whether or not I think something might get rejected. Which has a profound impact on my team’s entire development process ... @drbarnard source Is this sane to you? Not even a bit to me. And yet you have to be paranoid about whether Apple will approve your app, especially if you are going to include an offbeat feature.

Continue reading →

Don't experiment on the App Store

The recent adventures of PCalc widget leads me to subscribe to the following statement. The bottom line is that if I were an iOS developer, I would be leery of investing significant resources into a Today View widget. @TidBITS source Unless you have time to explore (and see how it goes) DO NOT EXPERIMENT on the App Store. Do you have in mind a new feature? Toss it out as quickly as you can, submit it and see how it goes.

Continue reading →

Bikes must stay outside

We are having a sunny October over here and I enjoy biking to pick up my kid at the kindergarden. There’s a gate with a bell. You ring it, say who you are about to pick up and they let you in. The kindergarden is surrounded by a beautiful garden, so from the gate to the actual building there’s a short path. I got there, rang, waited for the gate to open and biked to the building, oblivious of what I just did.

Continue reading →

Costolo on mobile SDKs

The mobile SDK landscape has been inhabited by parties that optimize for self-interest first, and your interest second I have found this quote only in this post on ReadWrite. I can’t believe that Dick Costolo already forgot how Twitter treated developers a few years ago. I hope it’s a joke. Costolo may have a short memory, but developers hardly forget.

Continue reading →

Went to work for

Saul Mora -> Coursera Brent Simmons -> Omni Group Jonathan Penn -> Apple Kevin Hoctor -> Apple Dave Addey -> Apple Jared Sinclair -> Bloglovin’ Patrick Burleson -> Apple Sophia Teutschler -> Apple All indie in a previous life. Now working at a company. It’s hard to not see a trend. Is the wind changing? ps: I feel there’s more, but probably I don’t know them. Feel free to suggest.

Continue reading →

Would you work for Apple?

Sometimes, especially during conferences, somebody throws out the question. I always answered a sound no. As much as I base the most part of my business on Apple products, I think I’d not fit Apple’s culture as an employee. I have always found difficult to tell the why. Well, Ole Begemann transcribed part of Debug 47, in which two former Apple managers where interviewed. This is one excerpt that dazzled me

Continue reading →

This is a new Apple

Facts: The first part of the keynote live stream was a mess Developers had issues when uploading iOS8 apps to the store iOS 8.0.1 was a screwd up iOS 8.0.2 is not that better Xcode 6.0.1 requires me to clean DerivedData 20 times a day As far as I remember I have never seen a concentration of issues in such a short time. It’s easy to close with a “I miss Steve Jobs”, but I won’t fall into that trap.

Continue reading →

Accessibility and Dark Mode in iOS8

As you know I am very sensitive to accessibility. But until that day comes, I ask developers of text-heavy apps: please consider including a dark mode for your app not just because it's a night-use feature but also because, for some of us, it's an accessibility feature. @cgpgrey source Even if it’s potentially a lot of work to include a dark mode, do it. It’s worth it.

Continue reading →

Mixed feelings on Swift

While writing the chapters in iOS 8 by Tutorials I have banged my head against the wall often, pretty much every beta release. I was really excited when Swift was announced. Excitement naturally fades, by design I’d say. It fades even more quickly when the real thing is far from your expectations. Today, I’d use Swift in an app if: it’s a new app it’s a small app it’s a product of mine Right, I’d not venture in Swift land for client work.

Continue reading →

can't be copied because there isn't enough free space

I was about to copy a ~35GB file onto my Mac. I got the “can’t be copied because there isn’t enough free space” message. I checked Finder and the available space was ~75GB. First reaction: WTF? Tried a few more times with no success, much like when you keep on switching on/off a broken switch. Then I checked “System information” and I saw the real available space was ~28GB. Same reaction: WTF?

Continue reading →

Speaking Engagements - Fall 2014

After a short pause, conference season is back! Here is a list of conferences I am gonna speak at. Yow conference Where: Melbourne, Australia When: September 8-9 Website: http://connected.yowconference.com.au Pragma conference Where: Milan, Italy When: October 3-4 Website: http://pragmamark.org/events/pragma-conference-2014/ Mobilization Where: Warsaw, Poland When: October 18th Website: http://www.mobilization.pl Cocoaconf Boston Where: Boston, USA When: November 14-15 Website: http://cocoaconf.com/boston-2014/home If you are attending any of these events, or you live nearby, and you wanna chat yell at me on twitter.

Continue reading →

Choices and Consequences

I recognize that by writing this I may be disqualifying myself from some future CEO role. Will that cost me tens of millions of dollars someday? Maybe. Life is about choices. Right now, I choose to spend more time with my family and am confident that I can continue to have an meaningful and rewarding work life while doing so. At first, it seemed like a hard choice, but the more I have sat with the choice the more certain I am that it is the right choice.

Continue reading →

Simple Idea and Simple Design

I like simple, very much so. I usually tend not to publicize kickstarter projects on this blog, but this tool looks very interesting. How many times you had to slightly hear better the audio coming from your iDevice? Countless times I thought I could use something like SpeakerSlide. A video is worth a gazillion words. Key takeaways for designers and product makers: Solve a problem Solve a single problem If your product is simple, marketing is easier.

Continue reading →

It's not C, it's the API

“I’d like to order 10 pizzas”. “We have dough just for 5 pizzas, so we are gonna send you 5 pizzas plus a bunch of private data about other users that ordered pizza tonight”. This is, in a very simplified way, the flaw behind Heartbleed. XKCD explained it even better, in slightly more technical way. In my opinion the bug (which was introduced in this commit if you are interested) is not simply due to the code.

Continue reading →

On why I am not gonna buy any smartwatch

There are many rumors that Apple is designing a smartwatch, while Motorola has already announced moto 360. I work on a Mac, I have a few iPhones and also an Apple display. I am already hearing you screaming “fanboy”. According to your cliché I should line up as soon as Apple announces the alleged iWatch. Wrong! Even if Apple is really going to ship an Smartwatch I am not gonna buy it.

Continue reading →

On Naming Macros in Objective-C

Right after my latest post on naming methods with blocks my friend Murray asked for some feedback on the names for his collection of macros. Without even blinking I suggested ALL_CAPS, having in mind mostly the following macro by Apple UI_USER_INTERFACE_IDIOM() I think it’s pretty ugly to read but I guess it’s meant call out the fact it’s a macro. If you check UIDevice.h though, you’ll find the following: #define UI_USER_INTERFACE_IDIOM() .

Continue reading →

On naming methods with blocks

Recently I have been very busy with the implementation of the BaasBox SDK for iOS and I had to come up with lots of method signatures. It’s 2014 and we all love blocks, so I used them quite extensively. When consolidating the upcoming version I noticed I wasn’t consistent with the naming. Some method was like this: -(void) loadCurrentUserWithCompletion:(BAAObjectResultBlock)completion; and some other was like this: - (void) updateUserWithCompletion:(BAAObjectResultBlock)completionBlock; Notice the different naming for the last part, the name of the parameter.

Continue reading →

Detecting Screen Brightness in iOS

I am a huge fan of small libraries that do just one thing but well. Sure you can detect when screen brightness changes by listening to the UIScreenBrightnessDidChangeNotification, but ASCScreenBrightnessDetector by aschndr is the right sugar on top of that. All you need is to create an instance, set a delegate and implement the - (void)screenBrightnessDidChange:(CGFloat)brightness; method, like this. If you are already using Cocoapods, including it is a breeze.

Continue reading →

Objective-C Categories for Regular Expressions

I am not a heavy user of regular expression but I have tried this new library by John Wright and I find it very handy. It basically allows you to write 75% less code. Here is an example taken from the Readme page While I suggest to know what happens under the hood before using these kind of “shortcut libraries”, I am totally in favor of them when it comes to save yourself some typing.

Continue reading →

Building a Business outside the App Store

Written by a solopreneur, this article is not just for solopreneurs, but for everybody noticing that something has changed in the App Store. Introduction I must say it’s easy to stare at a shelf and complain about the price of a product. I did it many times and I still do it sometimes. Whenever I see a high price it’s kinda hard to not think the producer is cheating on me and charging too much.

Continue reading →

On Excitement in the Apple Land

Last year I wrote about boredom in the Apple land. Essentially I said that we were getting used to the patterns adopted by Apple and that a stretched iPhone was built just to show off. I still think we didn’t need a taller iPhone but I definitely changed my mind about boredom. It looks like Phil Schiller read my post and replied on stage with “Can’t innovate anymore, my ass”. That was just referring to the new Mac Pro, of which we had a preview during the last WWDC.

Continue reading →

On Stealing the Right Thing

TLDR; Be wise in choosing what to copy/steal Somehow we are all been fascinated by: Good artists copy, great artists steal. That’s a quote by Pablo Picasso often “stolen” by Steve Jobs to make his point. He put that in practice quite a few times, “copying” the guts of BSD, which became the foundation of Mac OS or “taking inspiration” from the groundbreaking work done at Xerox in the ‘80s.

Continue reading →

Why Your App Needs A Walkthrough

This article first appeared in issue #5 of App Ville. Thanks Tope for allowing me to repost it here. There has been some heat around walkthroughs in mobile apps. I think it all started with the bold post by Max Rudberg, If you see a UI walkthrough, they blew it. Here is another take on the subject. And by the end of this article, you will understand why you need a walkthrough if you are truly innovative.

Continue reading →

On Numbers and Happiness

With fewer numbers there would probably be way fewer discussions. At the moment I feel to say that “people tend to exploit numbers to be sensationalist”. That especially happens when I read some post exploiting the who-has-a-longer-penis “template”. The keyword in this case is “longer”: when you compare integral dimensions you can say which is greater. That’s ok, but you can assign meaning to numbers, as we do when we code.

Continue reading →

Kids are Entrepreneurs

.. but they don’t know yet. I have a kid and he is 16 month old. Now that I have more free time I really enjoy spending the days with him. You might think that way I am not working or learning something about my job. WRONG! He recently started walking, and that was a relief for my backbone! But there is more. In spite of the fact that we constantly say: “Slow down” or “Don’t run”, he walks fast and sometimes he falls.

Continue reading →

On Firing a Client

TLDR; Learn how to spot when things are going wrong with a client and leave as soon as you can. Use wisely the time you gain with that move. UPDATE: This was an article describing details about the relationship between me and a former client of mine. When my wife read it (after being published) she made me aware that it could have sounded offensive. I removed all the details and distilled it as follows.

Continue reading →

On Your value

Where I reflect on my value as an entrepreneur. You know that a freelancer is an entrepreneur, right? A few weeks ago Matt Gemmell touched my heart. He is not a cardiologist, so I mean it figuratively. He was the keynote speaker at mdevcon. Before his presentation I was already very happy because the conference has been great: my presentation was a success, the room was packed and many people approached me offline.

Continue reading →

On Trojan Horses

I remember when Google Chrome Frame was released. Everybody screamed trojan horse and claimed Google to be smart. The Chrome Frame is a plugin for Internet Explorer that actually is smart. Maybe you don’t know but there are companies where employes don’t get to choose which browser to use, because that’s up to their IT department. That’s why, sometimes, you see some Internet Explorer 7 in your logs: because somebody in an office is forced to use it (or I can’t think of any other reason).

Continue reading →

On App.net Going Freemium

Yes, it happened. Dalton and colleagues did it: they went fremium. While I am not a huge fan of this business model I think it’s a huge step ahead. Here is why. We are used to free (and it’s wrong) Facebook free, Twitter free. All free. This is hugely misleading. Do you know how many people will quit using WhatsApp if they have to pay $0.99 (yes ONLY 0.99) a year?

Continue reading →

On Learning to Code as a Shortsighted Goal

These days there is buzz around the idea that everybody should learn how to code. Far from feeling that as a threat for my career, lately I have come to realize that learning to code is just a small step. Once you are able to code, you are still missing out a lot of stuff. Ask yourself: what are you coding for? Sure, you can get a job in a company, push code to a repository and get payed.

Continue reading →

On Archetypes of Smartphone Users

Introduction A semi-serious overview of smartphone users, with some truth hidden behind jokes and some suggestions on who to target when building an app. Slightly biased towards iOS. Enjoy. The unconscious iPhone owner This guy has bought the iPhone just to emulate the people surrounding him. “He has it, I have to have it too!”. These are the kind of guys that refer to applications as “options”. “Have you installed the Twitter option?

Continue reading →

On boredom in the Apple land

Boredom has come. It was inevitable. After a rush of four years we are now not stunned anymore. Those holding that “wow” for one year will have to keep it for future events. “Apple is not innovating anymore”. “Skeuomorphism? I don’t like it”. Twitter is full of this messages. My intention is far from defending Apple. They have a big marketing machine and many lawyers, so they don’t need my defense.

Continue reading →

On Nielsen and Mobile Design

There has been hype about how to design a mobile web site/application. Instead of promptly writing my opinion, which would have been pretty guts-driven, I preferred to wait for things to settle down a bit (in the media and in my mind) and then write down, calmly, what I think. First a bit of history: Nielsen writes a year ago: “I am a screen-size bigot: bigger screens deliver hugely higher user productivity.

Continue reading →

On why I am not buying RubyMotion

RubyMotion is a recently released tool which allows to create native iOS applications using Ruby. It was made by Laurent Sansonetti, an ex-Apple employee, also leader of MacRuby. RubyMotion enables to develop native applications by skipping Xcode and using commands from the terminal to compile, run and even submit the application to the store. Premises I like Ruby and the way it is easy to work with. I personally use ruby in many projects, mostly on the server side.

Continue reading →

Welcome to my new adventure

I have decided to start over. I used to blog elsewhere and I enjoyed that. Now I feel the need to start fresh, with a shorter (and cooler) name, a new blogging platform, a new look and new topics. Here starts my new blogging adventure. I think it is not a coincidence that this blog is born in 2012, the year I have restarted attending/speaking to conferences, being more active in the great Mac/iOS community, writing a new book, launching new projects.

Continue reading →