Google's Oct 4th Big Event

Google has a big event later today and it's expected to release a new high-end Chromebook. I've had my eyes on a new laptop for some time now and I'm even considering a Chromebook.

The previous Google Chromebook Pixels were gorgeous devices. The biggest problem with them was their availability here in Finland. I guess you could have ordered them somehow from the States but you wouldn't have a Finnish/Swedish keyboard and probably would avoid warranty and what not. So the previous Pixels were pretty much non existent for me. I'm hoping this time will be different.

Last updated June 21, 2022 17:17


Ember Frustration, Data Relationships

I've been building a large web app for about two years. The front end is made with Ember.js. We have a team of two people and for both of us this was the first really large scale single page app we have written.

Honeymoon Period

Ember was very good to start with. It gave us all the build tools and project structure to start with. Even with so little experience we were able to start writing our business logic in day one.

The Reality Kicks in

But, when your experience and needs grow you suddenly realize that in many cases you are fighting the framework. Of course, Ember has good intentions and most of the time everything works as expected and there's a lot off cool magic that Ember does for you.

But every now and then you need to do something in a non-Ember way. Maybe you're working with a legacy API or your data model doesn't quite fit Ember's way of thinking. And this is when things get frustrating. You find yourself fighting the framework which is just trying to do your work and does it wrong. It can be difficult to tell Ember to back off a bit and give you more space to do your own thing.

Now I've hit one of those moments. We have some relatively complex data models, although in this case they are used in a very simple way. Sometimes I'd just like to be able to call an API and process the raw data without Ember intervening.

Of course, there's always an Ember-y way of doing things but sometimes I'd just like to take a short cut and have my own way. But in a way, Ember forces you to use some good programming practices and I have to give them credit for that.

Last updated June 21, 2022 17:18


The State of Facebook Instant Articles

Facebook has just removed Instant Articles support from Messenger. I don't use Messenger that much and, frankly, I hadn't even noticed Messenger also supported Instant Articles.

But why did Facebook drop support from Messenger after just over a year? I'm guessing Instant Articles just aren't popular enough and the Messenger team wants to concentrate their efforts on something else. Initially I liked the idea of Instant Articles and the fact that it's built on RSS technology. But building a separate feed just for Facebook felt weird, and the open web lover in me was a bit irritated.

And I guess I wasn't the only one to be irritated. Instant Articles were targeted at major news publishers and I guess they had their concerns as well. Most media houses are struggling with online media these days but apparently Instant Articles weren't the answer publishers we're looking for.

Last updated June 21, 2022 17:19


Ember "No model was found for `user-role?`"

I added a new model in Ember called user-role. It's no different to any of the other 30+ models the app has. But out of the blue I get this error in the console:

No model was found for 'user-role'

I get this error when I'm requesting the user model from the API. user model has a hasMany relationship to user-role models.

Our user model already has at least three hasMany relationships to other similar models and they work just fine. I'm completely lost why this is happening.

UPDATE almost two hours later I renamed the user-role model to userrole and everything works as expected. I've been using Ember for over two years almost on a daily basis and I'm still lost with their naming conventions. user model also has a hasMany relationship to user-relationship model and it works just fine. There must be some difference how the data is loaded from the API.

Last updated June 21, 2022 17:21


Dear Google, Why Don't You Know What Kind of Music I Like?

Dear Google, you probably know me better than I do myself. I know you know that I listen to a lot of music every day. You already have all the music I've ever owned and even some albums that actually belong to my kids.

I used to rely on your arch enemy, Spotify, to recommend me new and interesting music I didn't even know existed. Recommendations work great in Spotify. For example, I've recently discovered some hidden gems such as Mt. Wolf and Zola Blood.

Why, Dear Google, didn't you recommend me these bands? Also, you already know I own seven Tori Amos albums, so why didn't you think I would be interested in her latest record? Or Sleep Well Beast by The National that I've listened to hundreds of times using your Google Play Music service?

Don't you care enough of me to remember what kind of music I like? Or is Google Play Music just one of your side projects that will get shut down when you start another project (yes, I'm thinking Google Reader)?

Please, dear Google, remind me when there's some great new music available. It's okay to even wake me up everytime Tori Amos releases a new album. Or The Cure, or Björk. Or any of the other all-time favourites that I have. But you already know those, don't you? Don't you?

Last updated June 21, 2022 17:23


Easy Trick to Show Translation only if it Exists in Symfony

I had a problem. I needed to show a translated piece of text based on a route parameter. For instance, I wanted route /category/symfony to show a translated description of symfony.

What I tried was to create translations like this

category:
	  symfony: Symfony is a framework and...

Now the problem I had is that I don't want to write descriptions to all of the categories. For instance, if I tried to access route /category/twig I would only see category.twig because the translation is missing.

I was a bit surprised that I couldn't find a way to show an empty string if the translation key is not defined. I came up with a simple solution like this inside the twig template

{# Set the translation key #}
{% set translationKey = "category." ~ category %}
{% if (translationKey | trans) != translationKey %}
    <p>{{ translationKey | trans }}</p>
{% endif %}

That does the trick. This piece of code will show the translation only if the trans filter returns something else than the translation key itself. Probably not the most elegant solution but it works for this use case.

Last updated June 21, 2022 17:27


AWS Elastic Beanstalk: First Impressions

I've been building my first app in AWS Elastic Beanstalk. There's a lot to like in this platform.

There's a learning curve when you setup the system, but once you're done everything seems to be working smoothly. Deployments are easy from command line and I haven't had any problems so far.

Here's the things that I like the most:

  • Easy to set up a separate web tier and a background worker tier
  • Possible to use your own custom server AMI (I needed some custom binaries for image processing)
  • Nice web based console for setting things up

I'm still learning and I'm probably not utilizing the full potential of Elastic Beanstalk.

Last updated June 21, 2022 17:28


Telegraph by Telegram

Telegram, the company known for their messaging app, has just published a blogging tool called Telegraph.

To try it, go to telegra.ph, publish a story, and share it on Telegram. With Telegraph, your Telegram channel can run stories just like the mainstream media (although you may find it tricky to become as biased).

Telegram Blog

This is interesting. Of course, I had to try it myself :) Here's my first Telegraph post. I really like the simplicity and the Medium inspired editor is really pretty and minimalist. You don't have to (and cannot) signup which adds to the simplicity. Since you cannot create a user account, anyone can post anything under any name. This might become a problem, and you need to be extra careful when you're reading posts in Telegraph.

It's going to be interesting to see what people will do with this. I know there's a need for public, anonymous posting tools, but I'm afraid Telegraph might end up filled with crap and fake news and whatnot. But we'll see, lets be optimistic.

Last updated June 21, 2022 17:29


Why ContentEditable is Terrible - Medium Perspective

I came across some reasoning behind the editor on Medium.com and reasons why contentEditable html5 tags did not work for them. It's written by Nick Santos, one of Medium software engineers. The Medium editor is probably one of the most elegant web html editors there is and, apparently, designing it wasn't that simple a task.

Most of the wysiwyg editors you see these days are broken in one way or another and the html they usually produce is far from optimal. This is probably the number one reason markdown has gained popularity especially among the more tech-savvy crowd. There are many beautiful markdown editors in Ghost and Dillinger to name just a few. However, markdown is definitely not for everyone and Medium has taken another, visually more appealing road.

There's pros and cons in everything. I do like the Medium editor and its simplicity and ease of use. But on the other hand, I'm also a big fan of markdown. There's probably good use cases for both of them. Using contentEditable html5 tags did not work for Medium. It will be interesting to see where where contentEditable will evolve into and what kind of native browser support it will have in the future.

Last updated June 21, 2022 17:30


Fresh Coffee from Slurp

Slurp Coffee

There's a cool new company called Slurp and I'm a fan! They get coffee from small roasteries around Finland and send it to you on a monthly subscription. I get freshly roasted beans twice a month delivered right into my mailbox.

This is simply brilliant. I live in the middle of nowhere and the selection of coffees in my local grocery store is rather limited. Nearest roastery is about 35km away. Slurp is a perfect way to get to try out new coffees from small roasteries.

I've just got my first batch of beans and I'm drinking my Saturday morning cappuccino. I don't think it gets any better than this.

Last updated March 15, 2022 10:14


Refreshingly Anti-Disruptive Thoughts on Startups

Part of the problem seems to be that nobody these days is content to merely put their dent in the universe. No, they have to fucking own the universe. It’s not enough to be in the market, they have to dominate it. It’s not enough to serve customers, they have to capture them.

Signal v. Noise

Ahh, this is a refreshing read. David from Basecamp writes a slightly ranty post about what's wrong with the whole startup scene. Not everyone needs to be chasing unicorns or trying to own the universe.

I really like David's approach to business. And I think this the best way to do business in the long term. I've had enough bad luck with startups getting acquired and seeing their service closed down. Or the company going bankcrupt because the founders or investors were unable to come up with a profitable business model. Personally, I'm getting wary about heavily funded startups that don't have a clear business model. I don't see the long term future in them.

The post is full of great quotes I'd like to add here.

There’s an incredible connection possible when you align your financial motivations with the service of your users. It’s an entirely different category of work than if you’re simply trying to capture eyeballs and sell their attention, privacy, and dignity in bulk to the highest bidder.

I'll leave it at that.

Last updated June 21, 2022 17:32


Square's Valuation Bubble

Square went public today, raising $243 million, a price that values the company around $3 billion. That's about half the $6 billion valuation it received during it's last funding as a private company.

The Verge

This is a good reminder that the high valuations of some startups might not be accurate. Of course, that's the nature of the startup scene, but a 50% reduction in valuation after going public is a slap in the face.

Last updated June 21, 2022 17:32


Mobile Internet Usage Exceeds Desktop

Internet usage by mobile and tablet devices exceeded desktop worldwide for the first time in October according to independent web analytics company StatCounter

StatCounter

This has been coming for a long time. If this isn't a big enough a reason to check how your site works on mobile then I don't know what is.

Last updated June 21, 2022 17:34


Long Term Support in the JS World

Ember.js, one of my favourite JavaScript frameworks announced in February that they will release Long Term Support (LTS) versions of Ember.js.

The LTS version will receive security fixes for 60 weeks. Sixty weeks? Long term?

I guess that's considered a long term in the JS world. Anyway, it's a very welcome announcement for anyone who creates enterprise software.

Last updated June 21, 2022 17:35


JavaScript Frustration

I'm starting to get frustrated with all the front-end development kits. I'm more of a back-end guy and I've been spoiled by Symfony's long term support, excellent documentation and punctual release cycle. I wish some JS frameworks would offer the same kind of enterpriseyness.

Last updated June 21, 2022 17:36


Jackdaw's Nest

This is a place for my personal IT ramblings. I'm the CTO at Skillhive and the founder of Innota and Wrote. I work mostly with PHP and JavaScript.