What I’ve Been Working On Lately – Recap

I didn’t write for a while1. And it’s not that nothing had happened. The opposite… so much learning and new experiences that I didn’t find the time to log. No, it’s not a lack of time, but rather not internalizing how important it is to stop, asses and capture what I’m learning as I go.

But it’s better done late than never2. So here’s a list of projects I’ve been working on, in no particular order, followed by the list of new skills I’ve learned.

Projects

Outbrain News Brief for Alexa

This is a simple skill for Alexa, that reads summaries of top news stories. So as a user, you have to add this skill to Alexa, and can then ask Alexa “what’s in the news”. Alexa then calls a web service, which I developed. This web-service calls Outbrain and ask for the latest news (using the Sphere platform). It then sends the articles it gets from Outbrain to a summation service (Agolo), and returns them back to Alexa, which then reads the summaries to the user.

Outbrain skill for Alexa

Similar to the skill above3, but with more functionality. This is actually the initial stage of a conversational experience, where users will be able to interact with Alexa to get personalized news stories. So users will be able to guide Alexa through conversation to article from site, or on topic they are interested in, or discover new content based on their interest graph. Here’s a simple sequence diagram that illustrating the current user flow:

sequence-diagram.jpg

My Clipboard

alexa-clipboard-icon.png

Now that’s where things become more interesting, working on my stuff… This is a skill for Alexa that serves as your clipboard. You can say “Alexa, ask my clipboard to remember 212 322 4432” and she’ll remember this phone number for you. “Alexa ask my clipboard what’s in my clipboard” (yeah, redundant, I know…) and she’ll repeat the phone number for you.

Why is it helpful? imaging that you’re on the phone and can’t take a note, or fine a pen to write one down… let Alexa handling it for you… But if you think about a smarter clipboard, one that takes keys and values, you can do much more interesting stuff. For example, ask Alexa to remember that you put your passport in the top drawer. Later on, you can ask her where did I put the passport. But that’s a longer term functionality… I first need to finish the current iteration and get it public (it’s not at the time of writing this…).

Baby Weatr

Artboard_1v2.png

Baby Weatr is a Facebook Messenger app4 that helps parents decide how to dress their kids appropriately for the weather. Well, it designed around my lack of any skill to translate weather into baby wear. So to make sure I’m not endangering our daughter, I decided to build this decision support app.

I’m working on it together with a friend, but this was an opportunity to tie together a lot of the things that I like, and always wanted to use more, such as coding and design5. Initially we tried to outsource the design work, but working with chip freelancers produced deliverable at the quality we paid for, meaning bad. On the other hand, hiring capable designer is expensive. So, I decided to hone on the opportunity to connect with the right side of my brain, and design the first version of the app myself.

Baby Wear is live on Messenger now, so if you need help dressing up your baby – I would love to get your feedback…

Try Baby Weatr

Dlog

While working on the projects above, I did quite a bit of coding. What’s more, this time I coded almost professionally (some of  what I built is going to be used by my company…).

I found that I need to log what I’m doing, so I can backtrack if needed, and won’t make the same mistakes twice. I found that it also accelerated my learning (similar to how writing does…). Git commit, or inline commenting weren’t enough, as I wanted to capture not only the outcome of my thinking, research, trail and error and refactoring. But rather, I wanted to put capture my deliberations and place bread crumbs as I go. I wanted to be able to read back and understand why I made certain decisions. For example, why I selected one data structure and not another, how do I start a flask project, and how do I run a flask app and make it reload every time I make a change.

And so I started to maintain a file called development log, or dlog. I keep it open as part of my workspace and include it in my git repository. Here’s an example of how it looks like (the dlog is in the bottom right quadrant):

I thought that might be something that other developers find helpful, and put it on a separate blog (here). I’m contemplating with the idea of opening this blog for others, with the assumption that if many developers log their process, it will serve as a new form of knowledge repository, stack-overflow extension, or companion to readme documentation.

Things I’ve learned

Chatbots Messenger Apps

Well that’s not new for me… my team is dedicated to messaging apps for awhile now. I think I mentioned before that we’re responsible for the CNN app on Messenger and Kik, as well as for the apps of other notable publishers. What I did learn is how to view these type of apps as the best way to develop an MVP, and how you can build a full experience with building blocks, and minimum amount of code, or back-end services.

I’m used Chatfuel6 as the content management system for the Baby Weatr app, and love the way I can control the behavior of the app, and build it to match the way I’m thinking about flows. Here’s how the Baby Weatr app looks like within Chatfuel: chatfuel-baby-weatr.png

Assistant devices

Assisted device are the conversational version of messenger apps. Here, a user can interact with a device with voice, rather than with text. I’ve been working with Alexa on the skills I mentioned above. I also experimented with Google Home, and their api.ai platform.

I think that these experiences are the real revolution in AI and conversational design, and messaging apps, or chatbots are just a stop in the way. I suspect that FB is going to kill their (less than) year old platform, and bet on live video, VR and maybe voice recognition. Right now the messenger apps are like a ghost town, Much more to say about that, and about what messenger apps are good for (hint: MVP). I’ll keep that to another post.

Python

Python isn’t new to me. I use it occasionally to write scripts to streamline my workflows, or automate tedious manual work. (Automate the Boring Stuff with Python was the book that got me started with python. Highly recommended.)

But this is the first time I’ve used python for real products and services. Using it more intensely I’ve learned how friendly the language is, and how well it fits the way I think about code. I wrote so much, that even google took note, and invited my to the google coding challenge7, mistaking me with a real developer :-). google-code-challange.jpg

Flask

That’s the backbone of almost every one of the projects I listed above. Flask, and it’s Alexa extension – Flask-Ask, are super easy and intuitive packages that help creating web services. I created a template (TODO: push this template to GitHub) and I use it as a starting point with new projects.

Design

Now, that were my passion is at these days. I’ve just finished a 12h Illustrator course in Udemy, and in the middle of a… Illustrator 4 Fashion class. All I think about are shapes and colors, and how I can make them in Adobe Illustrator, my hands are glued to the new Intous Pro I’ve just bought.

In a way, I’m where I wanted to be when I did my bachelor degree – code and design (I graduated as a software engineer, with focus on machine learning and… graphic design).

But in my journey to Illustrator I actually made two stopped, in Inkscape and Sketch. I started with Inkscape, which is great. It’s easy to learn and very powerful. What I like most with Inkscape is the control over the creation and modification of paths, which is way easier and more intuitive than Sketch and Illustrator. I did most of the clothing items to Baby Weatr using it, and posted samples of these designs in a previous post.

But Inkscape lacks in layout and layer management. I also missed smart guides, which makes the interface design much controllable. And so I’ve started to learn Sketch.

I love Sketch’s workflow, as well as the way it lets me organize design assets alongside my artboards. But, it’s not a replacement to Inkscape when it comes to actual illustrations. What I ended up doing is creating the cloth items’ illustrations in Inkscape, and importing them into Sketch, where I did the layout created the sets of outfits.

Here’s how the Baby Weatr project looks like in Sketch: sketch-outfits-page.png sketch-cloth-items.png

And then, as I drawn deeper and deeper into design, I’ve started to learn more about Adobe Illustrator. I tried it while using Inkscape and Sketch, but it seemed too complex, and inaccessible to me. But the more complex it seemed, the more attracted to it I became (no wonder I use Emacs…). When I finished all the clothing sets I needed for the beta launch of Baby Weatr, I decided to get serious and learn Illustrator. After all, it is the tool for designers…

And as I mentioned, 150 episodes later that took 15 hours and span over 3 course, I’m at a point where I feel comfortable with the tool, and starting to do art and design work in it.

Phooo, there was a lot of catching up I needed to do… but it feels good to look at that list and appreciate all the things that I had the chance to learn and experiment with.

Footnotes:

1

And now, just to make sure this post is going to get published, I used one of my hacks, and put it on scheduled publishing…

2

And no, there’s no new year resolution involved in this writing. I don’t like this practice, and don’t set those resolutions…

3

This skill is still in development, so not public and can’t be added to Alexa yet.

4

aka chatbot, but I denounce the term, because it’s lame…

5

I graduated as a software engineer, with a focus on machine learning and… graphic design.

6

They were actually a fierce competitor when we tried to get the CNN project 🙂

7

I completed several stages, but didn’t go all the way, because I had other things to work on, and I’m not going to make a career switch…

On Not Writing

I’m sitting in Pret, at my favorite spot in the store, dark coffee with tons of sugar, listening to Requiem For A Dream for the gazillionth time. This was the soundtrack of my life for the last month, playing in an infinite loop, and with every repeat charging me with more energy. So much energy, that I’m about to explode.

For a month now, I’m doing some of the coolest stuff I’ve ever did. At work, the product and team I’m leading got the recognition it deserve1, being featured by Mark Zuckerberg in the opening keynote at F82.

In parallel, I’m working on my own thing, and while looking for a technical co-founder, I’ve started to get my hands dirty with code. Elastic search, python scripts, email scrapping, logstach and kibana are just few of the technologies I got myself familiarized.

Everything’s good except for one thing, though: I didn’t write a single post during all that time. If writing was part of me, this would have been the best month for it to flourish. I could share so many experiences, learning and lessons; I could also even brag (just a little) about some the successes my team had. But nothing got documented. This month was like a dream vacation where I took no photos.

But all is not lost. When I started this blog, I “bought” an “insurance policy”, specifically for that situation. I initiated the Blog Writing meetup and surrounded myself with people who are passionate about writing, who can support me, while supporting each other, to stay on the wagon (or is it off the wagon…).

This week, I made a claim to my insurance. In our monthly meetup, I shared with the group my struggle in keep writing during this crazy month, and my frustration when finding that the writing mussel got weaken so quickly when not being trained for only this short period, hindering me from getting back to writing.

Fortunately, my investment paid off. I learned from members of the group not only the writing-hacks that might help me get back on writing, but that I’m not the only one suffering from those symptoms.

Sue Hellene, a novelist and a published author, shared that she has different moods for writing, and can’t write productively at night. She also related with my feeling that writing is like a muscle, and that it weakens if not trained regularly. Melody had many good tips to overcome writers’ block. For her, setting a deadline for each post, absorbing herself in the editor, eliminating any possible destruction (read – disconnect from the internet…), and, sometime, the a glass of wine, help keeping her writing on track. Dee-on reminded me of the morning pages, which were my initial inspiration. And lastly, Joe’s post, “The Look of Silence”, helped me think of my posts as notes-to-self again, and not worried about those who might read them, hence freeing myself to write whatever on my mind.

And thanks to that group, here I am, writing again. Sitting in this coffee place, starting from a morning page that turned into this post, my Emacs is in full screen and I’m committed to push publish before going back home. Nothing special, interesting, or helpful in this post, just a small, personal, step forward; a light jog after a month of no exercises. Rarely will a quote from physics will be that appropriate:

“Every object in a state of uniform motion tends to remain in that state of motion unless an external force is applied to it.” Newton’s First Law of Motion

Footnotes:

1

At least from the technology world. wish it would have a fraction of it internally…

2

Details on what that product is will come in a follow-up post…

Make Food Fun Again

So this idea that I had. I was talking with a company that is doing personalization for jobs – UpScored. I knew Elise, their CEO, from twitter and gave their newly launched product a spin. I came back with some feedback, and after a good chat with Elise, I realized that the problem I’m working on my day-to-day – personalization engine for content, is relevant for other fields as well.

A day later, I was introduced to on of the co-founders of Plated – a meal planning service. He’s story, of how they’ve started the company, reminded me a lot of how and why I’ve started FeedMe – a marketplace for food company that I started about 5 years ago and close about a year later. He was talking about Plated as a food-tech company, while I was struggling what technology had to do with the service, other than having a consumer facing website.

Anyway, at that point I was doing one plus one in my head, and the idea to develop a true technological approach to food discovery popped up. I want to develop an app that will tell me what I want to eat. Let me offer some context, though.

While food related technologies and services proliferate, the simple question of “what to eat?” becomes harder than ever.

Here’s an example: last weekend I went to Austin, for the SXSW festival. I landed on Friday morning, and headed downtown for breakfast. I opened Yelp, to “discover” what I should be eating. But after looking into the first 5 results (out of hundreds), I became hungrier and less patient, so I picked up the first restaurant that I saw across the street, and which seemed decent. Yelp didn’t help me to “discover” the best of Austin.

Another example: Every night (no exaggerations), I have the same dialog with my wife:

Screen_Shot_2016-03-20_at_00.03.51.png

So the problem is that not being able to choose what to eat takes the fun out of the food experience. I want an app, or a service that will take the decision for me, based on my history, my taste, my diet and that’s of my partner for the order.

I spent the previous week researching, brainstorming with friends, wire-framing and what not, and got a long way in defining the problem and focusing the approach for the solution. More on it in following posts.

Two Out Of Three

When I served in the air-force, we used to make fun of the meteorology unit, which was responsible to provide us with weather information before going on a mission. You see, know the wether conditions at the location of the target, at the time we suppose to attack it is critical to the success of that mission.

What. When. Where

Our issue with the meteorological unit was that they were very accurate at predicting only two out of the three parameters.

They could say, for example, that it’s going to be sky overcast at 7am, but not where; it will be sunny and clear within 10 miles of our target, but not sure when. No need to be a meteorologist to make a forecast with that level of (in)accuracy.

Many times I come across those types of predictions\assertions. I don’t have a good example now, though. But if you have, feel to share…

My Post-Evernote Life

Few months ago I wrote about my decision to move away from Evernote. Recently, few readers1 emailed me to ask whether I actually stooped using Evernote, and if I did, what’s my alternative solution.

Continue reading My Post-Evernote Life

I Can Live Without A Mac

Couple of months ago I listened to an episode of the technical difficulties podcast. In that episode Gabe Weatherhead (macdrifter.com) and Erik Hess hosted Dr. Drang and talked about the history of computing.

At some point 1, Gabe asked Dr. Drang what will he do if he can’t use Mac anymore. I don’t remember exactly what Dr. Drang’s answer was, but for awhile, the question kept echoing in my head. The thought about Mac not being around at some point was terrifying. I can’t go back to Windows. Never. And Linux never seen as an adventure I would have like taking.

Since then, though, much have changed.

At first, I was reintroduced to old fashion mechanical keyboards2. I bought a couple of them; one for home and one for my office. Suddenly, typing using my laptop’s keyboards 3 feels awkward and unsatisfying, and I now do it as little as possible.

Then, I took a step into the rabbit hole of Emacs, the timeless editor which is backed by a strong and lively community. It’s built around the keyboard, so I stopped using the Apple’s “magic” mouse as much as I used to.

Lastly, since Emacs requires tinkering with Mac’s internals, I got more comfortable and familiar with the terminal application, and with “UI-less” experiences.

Slowly, I’ve learned that my Mac is nothing but a strong processing device with a Retina display. With that realization, the idea of using a different platform, Windows is still not an option, stopped scaring me. To the contrary, that thought sparks curiosity in me…

While switching away is still not an option, I feel as if I was cured from Apple’s spell. I regained my ability to think critically on its products, and look more objectively on their alternatives.

It’s probably only me, though, cuddling with the past. Most users are probably welcoming the intersecting paths of Mac and iPad into a comp-let mongrel that will lock developers out of its internals. But now, at least, I’m less anxious about that trajectory. I will be able to find my way elsewhere…

Footnotes:

1

Here’s a link to this section in the podcast.

2

Typing on mechanical keyboard makes me not wanting to stop writing… I learned about them in yet another podcast – Cortex

3

Except for the Apple Extended Keyboard. I actually bought one, and am loving it.

Leap Into The Past – IRC

So we’re living in the future, yet I’m traversing the past. It started with this blog, when I decided to build it from scratch rather than using one of the modern blogging platforms, such as WordPress and tumblr. Not only that, but I also insisted on writing it in pure, static HTML. No real-time rendering, no dynamic libraries, no Ajax nor server-side scripts. Just HTML, CSS and a little of JavaScript.

Then, I stopped using Evernote and started to manage my life with plain text files. That transition opened the door to a search for a new text editor. New is just a figure of speech, because in the course of that search I fell under the spells of Emacs and Vim, two of the oldest pieces of software out there.

And now, I’m taking another step into the past, to the Internet’s cave era. Instead of embracing Twitter or Reddit (although Reddit do start to win me over), I resorted to… IRC.

I won’t get into why I’ve started to use IRC, or what I find in it that I don’t in modern social networks; I’ll do it in a different post. I’ll just note that I’m starting a new journey, a journey of learning. I have no idea how to navigate and use IRC, let alone how follow its protocols (technical and communal). I’ll have to RTFM

But the journey I ought taking, is also what attracts me to IRC and all those archaic beasts. They come with manuals, and I, a simple user, has to surrender my time and my mind to them, and learn. Read manuals upon manuals, posts, email lists and discussion boards. Follow the rules of communication, listen and learn how to interact before pressing to transmit. Only then, after substantial amount of time, will I feel comfortable using the basics of the said app\software. Years will pass by before I will be able to take full advantage of it. It might not happen during these life, though, so I must be a good servant for a chance to see the light in the after life.

Yeah, there is something magical, almost religious, with those apps, their communities and the philosophies behind them. There is something special in learning, and committing to them. If not the efficiency gain, then at least the resistance to the modern world that do anything to dummify my mind for attention.

But I’ve drifted too far already. I suspect the imminent next step will be to move this site to a BBS