CSS Exclusions are available in Chrome Canary

In October the CSS Exclusions feature made it for the first time in a browser nightly build. If you have Canary and you enable the experimental WebKit features flag then you can actually play with this feature (about:flags and then find ‘Experimental WebKit features’ flag and enable it; don’t forget to restart the browser).

So what can you do with this feature for now? Pretty amazing stuff actually. Suppose you are a big fan of E.A. Poe and you want to render “The Raven” like this (cheesy I know but beautiful nevertheless):

Then it is possible using this feature :) Here is the CSS guilty of formatting in this shape:

.wrap {
    background: url('crow-feet.svg') no-repeat;
    -webkit-shape-inside: polygon(59.015% 76.618%, 49.316% 72.894%, ...);
}

You can get this demo and others from here (don’t forget to use a Canary browser if you want to see this feature in action.)

A few words about this implementation. This is work in progress and as a result only a subset of the shape-inside functionality is available. Some of the restrictions are related to the shape itself. You can only use a shape that has the top edge horizontal and doesn’t break the text in more than one segment. Hans Muller has explained all of this in great detail in this post.

Do you think that this is awesome or not?

Update: you can find the Polish translation of this post here thanks to Katia Osipova.

Test the web forward, Paris stop

The Test The Web Forward conference is coming to beautiful Paris on October 26th-27th. There are still some seats available. So if you want to take part in an event that will help  make browsers better and you want to have a chance to talk to experts from Adobe, Facebook, Google, Microsoft, Mozilla, Opera, and W3C don’t waste any more time and register here.

I had the pleasure of taking part in the first one in San Francisco and I can tell you that it was pretty awesome :).

Say hello to WebPlatform.org AKA Web Platform Docs

Without any further ado please say hello to your new best friend when it comes to reading documentation about web: WebPlatform.org. Do you feel a little bit perplexed? Not sure if I am serious or just joking? Ask no more because I am dead serious :)

So here is the deal: Adobe, Apple, Facebook, Google, HP, Microsoft, Mozilla, Nokia, Opera, and the W3C have worked together to create a single point of reference for all sorts of documentation related to the web. The whole project is set as a Wiki because we need everyone to be a part of this: sometimes you only search for some API and sometimes you’ve spent a great deal of time figuring out how to use a new API and you are ready to share this with the world.

Here is a video that briefly introduces this project:

Remember: a single place for all web resources a web developer/designer needs and a resource that you can edit and enhance.

For more information check this post or the W3C press release, and make sure you go to WebPlatform.org.

Adobe Camp Amsterdam

Last week I had the pleasure of presenting at Adobe Camp Amsterdam. It was quite special for me for a number of reasons. First, my first presentation as a developer evangelist was in the Netherlands (June 2008). And I have good memories from that to this day :)

Second, all the events I’ve been to in the Netherlands are extremely well organized and the audience is great (knowledgeable and willing to interact with speakers).

And thirdly, the events organized by the local Adobe user group are just great. These guys know how to put together a great event. And of course this one was no exception. More than 200 people showed up for a whole afternoon and made us (the speakers) to feel fortunate for having such a great audience. Add to this the city, Amsterdam. Amsterdam is really something, and it doesn’t get better than this.

Foto: Ton Frederiks (Adobe Benelux)

Foto: Ton Frederiks (Adobe Benelux)

I was there together with my whole team (Kevin Hoyt, Terry Ryan, and Harish Sivaramakrishnan) and we presented seven sessions on HTML and web standards related topics (CSS Animations, The Future of Graphics on the Web, The Future of HTML5 Motion Design, Create Web Animations that Rock, Designing HTML for Devices, Adobe Shadow, PhoneGap and PhoneGap Build).

Bert Hagendoorn and the rest of the team did a great job and now you can see the recordings of these sessions here. There are also some pictures from the event.

The slides I used for this event are here and here.

PS. A big thank you from my heart to the Netherlands Adobe User Group, Christie, and Vincent for having us there.

Infinite timeline scrolling chart with HTML/CSS/JS

Awhile ago, my fellow evangelist Christophe Coenraets created a cool desktop application (and later a mobile version) as a concept of how an application used by sales people could look in the 21st century. Part of that app was a nice chart that allowed you to quickly see all the projects while swiping back and forth on the timeline.

Now, that little piece was developed using the Flex framework. In a moment of complete boredom I decided to recreate the chart part using HTML, CSS, and JavaScript. And to make things more interesting, I wanted the same code to run on desktop and mobile devices (tablets and smartphones).

Continue reading

WebKit Hackathon in Europe

My colleagues from the Web Platform Adobe team have been quite busy lately. Not only with those amazing CSS proposals they’ve been working on for some time but also with organizing events.

The latest and greatest is the one that will take place in our office from Bucharest, Romania. We will host a WebKit Hackathon on September 20-22. If you are a WebKit developer then join us for three amazing days of WebKit coding.

You can register here.

About books, beautiful books

I believe there are mainly three things that change and shape our soul and body:

  • Experiences we live
  • People we meet
  • Books we read

Now, if you look at these three categories you may feel that the last category, books, seems a bit out of place when placed alongside people and life experiences. I mean there is a first person angle, a directness in your personal experiences and the relationship you forged over time with other people that doesn’t exist in a bunch of paper sheets and some black ink.

And yet, there will be always books that manage to surpass these constraints and reach to our mind and soul.

In this post I want to talk about one book that I strongly believe belongs in that last category: Responsive Web Design by Ethan Marcotte. If you haven’t read it, please do.

Usually, the kind of books that you hear that are life-changing are those who roughly fall under religion, philosophy, or maybe psychology. And you know what, you’d be right thinking this. Because what else could a technical book be than a dry, insipid, narrow window to some subject that most of us don’t care about at all.

The thing is that this book is the opposite. Or to be 100% accurate it is opposite in areas that matter. Yes, it is a technical book and yes, it is about how to create modern web sites. But the way it is written, the way that it frames the problems and solutions, the brevity and richness, all these make this book something special.

It shows that even technical writing can be totally awesome with the right ingredients. Above all, I think this is the lesson I took from this book: There are no dry subjects. There are only dry approaches. Any book, on any topic can be as amazing as we dare to dream.

PS. Even the foreword, written by Jeremy Keith, is ridiculously good. Once you finish reading the book you’ll understand why Jeremy wrote what he wrote.

Six things you didn’t know about Dreamweaver

In what seems these days my previous life, when I was working for a small start-up as a web developer I was using mainly two tools for all my HTML, PHP, and ColdFusion code: Dreamweaver and Eclipse. Bear in mind that this was like 2004/2005 and many tools that we take for granted today weren’t available back then.

This is why I will always have a soft spot for Dreamweaver. And I will always believe that it is actually a pretty darn impressive product. In this blog post I will focus on a number of features that I think are quite useful and can boost your productivity. Some of these features are new, others have been there for a while though not as refined as they are today.

Continue reading

We need more than better tools

This is a post about something that I’ve been thinking about a lot lately: What do we need as web professionals in order to become more efficient and, hopefully, happier when coding web sites or web apps?

The first thing you may hear as an answer to this question is “better tools”. While this answer can be backed up with lots of data I don’t think that this is the right answer. I started doing web sites in the late 90′ and back then Homesite from Allaire was one of the best HTML editors and my favorite tool. Soon after heavier tools have emerged. Almost fifteen years later we have pretty much the same tools: light-weight tools (vi, Sublime, and so forth) and complete IDEs (like Eclipse) with some others in between.

So you have to have lots of imagination to invent a new tool that doesn’t fit in the existing categories. If the answer is not a better tool than what is?

Well, let’s step back for a second and look at what the current web development process looks like. And to simplify a bit let’s consider these two types of developers (it is a stretch  but stay with me):

  1. Newbies. People who just started modern web development. Contrary to what you may think these people are not necessary newbies in programming in general – they can be Java enterprise developers for example. What they have in common is that they have to find their way through a “million things” (tools, best practices, frameworks, libraries, browser inconsistencies, different JavaScript versions, different CSS versions, and so forth) all in the name of building a “simple” modern web site.
    It is amazing that the complexity involved in building a web page that runs across devices and browsers can beat the complexity required for building the back end for a website or an iOS app.
  2. Veterans. These people know the best practices, they know the “cool” frameworks, they’ve found “the best tools”. And yet they are not necessarily without worries. Updating the JavaScript libraries and the dependencies is not that trivial for a live product, nor is making sure that each time you change something you properly test it (unit testing, function testing). At the end of the day, they spend too many cycles on things that are not “fun”.

As you can see the challenges one faces when doing web development are not only in the realm that a tool typically covers. I’ve seen at least two examples that showed me that the solution is not that far fetched and there is life after all :).

The first one is, hold your breath :D, PhoneGap Build. Trust me, I am not mentioning this because I work for Adobe. Everyone who does mobile developing using the native tools/frameworks for multiple platforms knows that is not a walk in a park. You need a Mac for iOS development/packaging, a Windows machine for Windows Phone, and different IDEs and so forth. PhoneGap Build handles this complexity and let’s you focus on coding the app using open web technologies. The packaging is done in the cloud.

The second one is even more interesting. This comes from Paul Irish’s presentation at Google I/O 2012. If you haven’t seen it, please do yourself a good deed and do it. Now. Pay attention to project “Yeoman” (this is presented in the second part of the presentation). The main idea behind this is that you should go from idea to prototype in less than 10 minutes. Under the hood it uses a bunch of tools/libraries (Compass, RequireJS, Jasminte, PhantomJS, etc) and tries to minimize the friction that you typically experience when using them by making the installation in a new site seamless and so on.

In conclusion I don’t think that it is about a better tool. It is about a better process and workflow that may integrate a number of tools, services, and scripts. And this “thing” should take care of as many things as possible automatically. The bright side is that there are signs that this is possible. It is just a matter of time as more and more bright people change their focus from building libraries and frameworks for doing X or Y to building better working environment for general web development.

Making my blog mobile friendly

Yesterday night I finally managed to finish something I’ve been planning to do for a while: change my WordrPress based blog theme to one that adheres to the “responsive design” philosophy.

After doing this I figured that it would be (potentially) helpful to write a post and urge others to make their blogs mobile friendly. Especially if you are running a WordPress based blog, it is not that difficult.

Why in the name of all HTML tags would you want to make your blog mobile friendly?

Well the answer is quite simple: because more and more people end up doing serious reading on their mobile devices. If you’ve been attending mobile conferences lately, you know that the days when we thought people tended not to use their mobile devices for anything serious are gone. People not only do complex task on their phones but they read too. And when the mobile phone is the only device at hand and you are stuck in some place without a computer you want to and you do spend time with your phone.

Now, a couple of years ago a colleague told me that I should take good care of my mobile users and add support for a mobile theme. This made me instantly anxious as (for no particular reason) I pretty much hated the mobile.somesite.com version of all sites. It always felt alien, remote, and a little bit fake.

Nevertheless I swallowed it and I added a mobile pack theme to my blog. Then I erased this from my mind. Last year, while reading a blog post on my phone I noticed that the blog looked almost the same as the desktop version and it was a WordPress blog. So, you can understand why I felt like yelling “Eureka!” as loud as possible.

DIY is something I like a lot but not when it comes to building software. I’ve done my share of libraries, frameworks, and code generators so I don’t feel that every now and then that I should re-invent the wheel just to prove that I exist.

This is why I was so happy to have a bunch of themes to choose from. Twenty Eleven, Responsive, and Blaskan made it on my short list. In the end I decided to go with Twenty Eleven.

Are we there yet? Not yet my son!

Once I was happy with my choice (the theme to go with) I started to tweak my blog a little bit more. Some of the changes were design related, others content related.

From a design point of view I wanted to change the font size. I felt that the default size, even on a desktop was a bit too small. As someone who has to wear glasses and uses  Cmd + “+” quite frequently to bump up the font size in the browser or mail client I thought that it would be something nice to have. So in the stylesheet I changed the font size from 100% to 105%. Why 105%? Well I tested various values on a bunch of devices and desktops and 105% worked the best.

Bumping up the text size for paragraphs and friends left me with the text size of the headers a bit to small. This was a bit strange because I was expecting to find another percentage based value. Instead it was hardcoded to 26 pixels. After some trial and error I ended up with 170% as the best value.

The final touch was to change to the maximum width of the site. The default option was 1000 pixels which I think is too small for today’s computers. I changed this to 1120 pixels and I was done.

That was the design. What about the content? From a content point of view I’ve done two things. First, I added some more widgets on the sidebar. By default the theme has two widgets: archives and site login. I wanted to have categories, blog roll, upcoming events, and about me.

The second thing I wanted to change was to take out some of the content in order to speed up loading and rendering. My eyes were firmly set on the social sharing features. I had a bunch of plugins for sharing the posts on Twitter, Facebook, and Google Plus. These plugins load a bunch of resources (images, CSS, scripts), which adds time to both loading and rendering. Especially on slower mobile connections this was painfully slow.

Now, making your blog content easier to share is a good thing isn’t it? It looks like online marketing 101. Well, I don’t think that this is always true. If your blog is a technical one and you write good content then you should trust that your users are perfectly capable of copying and pasting the blog post URL into a Twitter message window or Facebook page.

Conclusions

In conclusion, don’t be as lazy as I was in regard to making your blog mobile friendly in a responsive design way. Especially if you use the WordPress platform, things are not that complicated.

And while doing this take a look at your current content and decide if you really need all those little plugins that are adding weight and rendering time to your page.