Monday, 26 June 2017

Potential of HomePod

On the potential of HomePod

At WWDC17, Apple decided to focus and market the HomePod around the music quality and advancements it will bring to the home as the home speaker. And despite my tech enthusiasm, I think this is the right approach. This will allow them to reach a wider audience than the tech-savvy or enthusiasts who have for so long compared Alexa with Siri.

According to all reviews I’ve read so far this product really does sound great. So it should come as no surprise that it could be a great companion not only to your music, but to the Apple TV content too.

If the past tells us something, that is HomePod’s December release is just in time for a iOS 11.2 release. This gives Apple time for more than two minor iOS releases to come up with features that will be specific for the new HomePod. This was hinted multiple times throughout the WWDC livestream, especially in regards to AirPlay 2 that both Apple TVs and this HomePod will benefit from, but also in regards to the features tvOS will bring.

At WWDC not much has been said about tvOS except that “we will be hearing a lot more about later this year”. And with a new Apple TV with 4K rumoured for later this year, a high end speaker will go hand in hand with high quality movies and series.

So if Apple shared very little of what the HomePod can do and will do, it means they’ve got more in the works. This will allow Apple to under promise and over deliver, just like they’ve done with the AirPods.

But the aspect I want to talk about is the second category, the intelligent speakers. The Siri version they promoted was the musicologist that lives in your living room. On the HomePod, Siri will be able to handle your music requests, fine tune and change the songs’ list based on the user’s inputs, as well as answer questions about the song, artist or album. Siri will also be able to do the common tasks it can already do on all other platforms. Here is a full list of capabilities it will have, as they’ve been listed at WWDC:

  • Music
  • News
  • Unit conversion
  • Messages
  • Reminders
  • Podcasts
  • Alarms
  • Translation
  • Stocks
  • General knowledge
  • Weather
  • Traffic & Nearby
  • Sports
  • HomeKit

This list of domains that were announced are surely the main ones, but lack the Siri extensibility announced last year and this year was surely disappointing to me. payments, ride ordering, note taking are some of the main skills Siri should be able to perform.

This is the aspect that I believe and hope Apple will address with later this year as part of maybe, iOS 11.2. And I say that because for a few months now, since the rumours started going around in regards to the speaker, I have argued that if Apple was to release one, it had to do 3 things really well:

  1. Be able to hear you
  2. Be able to recognise you
  3. Be able to do understand and do more for you

The HomePod should be able to do these three things really well.

Be able to hear you

This device, unlike your phone, watch or computer is not supposed to be next to you. You’ll be addressing it from across the room, in situations when you might not even be able to reach your phone, or would be difficult to. So it should be able to hear you easily even when you are at a significant distance from it, even if there is noise around, like music, other family members talking or simply outside noise.

Thankfully, this seems to be resolved, based on what Apple presented. The HomePod is equipped with 6 microphones who is able to hear the user even if the music is playing.

Be able to recognise you

Unlike your iPhone, Apple Watch and Mac, and just like the Apple TV the HomePod is a device meant to be shared with others in your home, your partner, maybe your children of any age. But unlike the Apple TV which has a GUI one can interact with, the HomePod won’t. So what I mean by recognising is identifying who you are. This is important, especially since Apple announced the HomePod will be able to read and send messages.

The question is, whose messages? Mine or my father’s? If I ask Siri to reply to read my messages it should be able to know I mean mine. Moreover, my tastes might be different from my family’s, therefore when I say “Hey Siri, play My New Music Mix” it should bring my playlist up.

Siri is able to recognise my voice only at the minute. I’ve already tested this with a couple of friends who tried to activate “Hey Siri” on my phone and it would not trigger when I said it. The tricky part here would be recognising more than one person and connecting to each of our individual accounts.

We do not yet know what the set up process for the HomePod looks like, but I hope this has been considered.

Be able to do understand and do more for you

As much as I love Siri, and I use it quite often on my Apple Watch and iPhone, I still feel like it’s “intelligence” is limited. Besides understanding exactly what you want, which means better natural language processing, it should also be able to do more than just tell me the news.

I should be able to order a taxi, pay my bills, send money to someone. This is why I believe some sort of Siri developer integration is crucial for the HomePod to be a “smart speaker”. If not this year, we will certainly see it at some point next year.

With this said, I’m excited to find out more details about it later next month, which is when, I hope, Apple will tell us more about it.

Monday, 10 April 2017

Mastodon Interface Screenshot

Repository Showcase: Headless CMS with automatic JSON API, Mastodon and Mac apps

This week repository showcase is about learning and resources. First up is a collection of algorithms and data structures implementation in Java as well as some potential interview questions.

Implementation of Algorithms and Data Structures, Interview Questions and Answers→

This is the collection of algorithms, data structures and Interview Questions with solutions. This repository contains my solutions for common algorithmic problems and implementation of Data Structures in Java. I’ve created this repository to learn about algorithms. I am adding solutions continuously.

I swear I don’t pick these “interview” repos on purpose, following the similar repo from last week’s repository showcase. Next up is an interesting CMS that automatically generates the JSON API for you, written in GO.

Ponzu→

With the rise in popularity of web/mobile apps connected to JSON HTTP APIs, better tools to support the development of content servers and management systems are necessary. Ponzu fills the void where you want to reach for WordPress to get a great CMS, or Rails for rapid development, but need a fast JSON response in a high-concurrency environment.

Hot this week is the appearance of a Twitter platform alternative. Interesting part about it is its decentralized approach where anyone can run their own instance and connect to others.

Mastodon→

Mastodon is a free, open-source social network server. A decentralized solution to commercial platforms, it avoids the risks of a single company monopolizing your communication. Anyone can run Mastodon and participate in the social network seamlessly.

An alternative implementation of the GNU social project. Based on ActivityStreams, Webfinger, PubsubHubbub and Salmon.

And finally something I love about Awesome lists is how awesome they are… This one is about Mac applications and lookign through it it’s quite comprehensive.

Awesome Mac→

This repo is a collection of AWESOME Mac applications and tools for developers and designers.

Sunday, 9 April 2017

Ask HN: What are the pros and cons of PostgreSQL and MySQL?

For the past two years PostgreSQL has been my RDBMS of choice and has served me well. In fact I love PostgreSQL so much I decided to use it over the MySQL in my dissertation project, but for different reasons than the one exposed. Now someone has asked a sensible question on HackerNews and I am glad they did because the conversation unfolds nicely which tidbits from both sides.

I always got the impression (since I started using it in Prod in the late 90s) that the MySQL team had never worked on an RDBMS before, even as users, and didn’t really understand it. Back then they would say, you don’t need foreign keys, you can just enforce consistency in your application, you don’t need transactions, you can just handle it in your application, and so on and so on. Monty Widenius was very arrogant and thought he knew everything. Eventually they matured a bit and realized that actually, yes, the entire rest of the database community weren’t idiots, maybe there is something to these features, but now they needed to find a way to retro-fit them onto what they had and now – 20 years later – they still haven’t figured out how to smush it into their architecture.

Whereas the Postgres crew were fresh out of the Ingres project led by the genius Micheal Stonebraker, they had a very clear vision and a culture of doing the right thing, not the easy thing. There’s a steeper learning curve but once you have learned a few things you can easily guess the rest because it’s so consistent. For MySQL you really need a “guru” because there are so many dark corners and weird edge cases that make no sense, you just have to “know” them.gaius

Ask HN: What are pros and cons of PostgreSQL and MySQL?→

 

And that is also where I found this article that goes in depth on why MySQL might not be such a good idea. Here is a bad argument on why you should use MySQL over something else.

  • It’s getting better, so we might as well stay on it. It’s true, if you go by feature checklists and the manual, MySQL is improving “rapidly.” 5.6 is due out soon and superficially looks to contain a number of good changes. I have two problems with this line of reasoning:
    1. Why wait? Other databases are good now, not eventually.
    2. MySQL has a history of providing the bare minimum to satisfy a feature checkbox without actually making the feature work well, work consistently, or work in combination with other features.

Do Not Pass This Way Again – Choose something else →

Ah and this also reminds me about the list of features coming in PostgreSQL 10. If you haven’t read it yet, give it a chance.

 

Friday, 17 March 2017

Repository Showcase: Roadmap and resources on how to become a full stack dev, how to build a ‘safe’ A.I.

Starting this week I’ve decided to start a weekly ICYMI repository showcase blog starring a few of the repositories I’ve found this week and considered interesting.

This week it’s mainly about becoming a better me and nailing that interview with an interesting entry on how to build a safe A.I.

100+ Free resources for learning Full Stack Web Development →

The list below isn’t meant to be exclusive, it’s more so a collection of links that have helped me out along the way (and can hopefully help you). As you’ll see, I’ve focused on Javascript, React, and Node.js. There is also a wealth of information on interview prep and applying to jobs.

Web Developer Roadmap in 2017 →

I like this one because it helps you look at what paths you might want to take and paints a clearer picture of the available options. Features both frontend and backend, soon to have DevOps as well. Watch this repository for updates!

Below you find a set of charts demonstrating the paths that you can take and the technologies that you would want to adopt in order to become a frontend, backend or a devops. I made these charts for an old professor of mine who wanted something to share with his college students to give them a perspective.

Personal Guide to Software Engineering interviews →

Brush up your knowledge on different notions and principles. Data structures and algorithms explained, handful of useful resources.

Building Safe A.I. →

TLDR: In this blogpost, we’re going to train a neural network that is fully encrypted during training (trained on unencrypted data). The result will be a neural network with two beneficial properties. First, the neural network’s intelligence is protected from those who might want to steal it, allowing valuable AIs to be trained in insecure environments without risking theft of their intelligence. Secondly, the network can only make encrypted predictions (which presumably have no impact on the outside world because the outside world cannot understand the predictions without a secret key). This creates a valuable power imbalance between a user and a superintelligence. If the AI is homomorphically encrypted, then from it’s perspective, the entire outside world is also homomorphically encrypted. A human controls the secret key and has the option to either unlock the AI itself (releasing it on the world) or just individual predictions the AI makes (seems safer).

Not exactly a repository, but a Github Page, although @iamtrask makes the code available on his GitHub.

Thursday, 16 March 2017

Principles for C programming

Common sense advice that can be applied to any language. Definitely recommend the read and good C programming perspective.

Avoid magic. Do not use macros. Do not use a typedef to hide a pointer or avoid writing “struct”. Avoid writing complex abstractions. Keep your build system simple and transparent. Don’t use stupid hacky crap just because it’s a cool way of solving the problem. The underlying behavior of your code should be apparent even without context.

Had this happen so many times where code I was reading was using an obscure solution and spent hours trying to understad what was going on.

It’s more important that a novice could understand your code than it is to use some interesting way of solving the problem. Ideally, a novice will understand your code and learn something from it. Write code as if the person maintaining it was you, circa last year.

What more is there to say?

Do strict testing and reviews. Identify the different possible code paths that your changes may take. Test each of them for the correct behavior. Give it incorrect input. Give it inputs that could “never happen”. Pay special attention to error-prone patterns. Look for places to simplify the code and make the processes clearer.

Principles for C programming →

And while you’re there, check out his other articles on C programming and the lessons to learn from it.