Selected

Later Ctrl + ↑

Transport in Kiev

More pictures from the same April trip to Kiev as the recent yards.

Nice yellow trolleybuses:

Not as nice:

Jitney stops list:

A stop:

Metro ticket hall:

Inside:

Turnstiles:

A poster:

Map booklets:

River station:

Anything goes to protect your parking stop. Bottles:

Planks:

This is a different kind of transport. They attach you to a cable and you fly to the island:

Looks cool:

Kiev yards

Here are some pictures of beautiful Kiev yards.

1
2
3
4
5
6
7
8
9
10
11

Why I don’t call myself a “UI/UX” designer

Many of the things I do are considered a job of a “UI/UX” designer. But I haven’t ever called myself one.

That’s because the term “UI/UX” is badly designed: it’s tasteless and vague.

Tasteless

The abbreviations are used in science and tech, but when normal people talk, abbreviations are out of place. A good user interface is humane.

The way this abbreviation is constructed is wacky. First, it includes the word “user” twice. The good designer would not put a word twice where once would suffice. Second, it abbreviates “experience” with X instead of E. This comes from cheap marketing, where X used to sound “cool” and “trendy”. When a designer uses it, I feel like they disrespect the user and have shallow knowledge.

Vague

There’s a “/” in the middle, whose meaning is unclear. A slash usually implies an exclusive or. So does this mean “UI or UX, but not both”?

Good writers use conjunctions, not slashes. A slash is a way to slam two pieces together without thinking what sense the combination makes. This is not how you design a good user interface though.

The lack of taste and inability to communicate well are not the qualities of a good designer.

See also: Guy English on UX

How to install Aegea locally on a Mac

Before installing Aegea on a server, you may want to try it out locally. This is a manual on how to install it locally on a Mac in a way that I find the best.

Mac comes with a pre-installed Apache. But the way it is configured is rather strange and very hard to use in a productive way. I set up separate host names for all my local projects, such that I can point the browser to the address “aegea” to open Aegea or “ib” to open my website.

Here’s how to do this.

Get Aegea package

This part is the same as in How to install Aegea.

Download the Aegea zip archive from the website and unzip it:

Inside, you will see files like these (the list may differ depending on the version):

Put these files in ~/Sites/aegea/ folder. Select this folder in Finder, press ⌘I, go to the end of the panel, open the lock and change all permissions to “Read & Write”. Then click the gear and select “Apply to enclosed items”.

Configure Apache

Open /etc/apache2/httpd.conf. Uncomment this line:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Do not uncomment the PHP line.

Add the following after other Directory sections:

<Directory "/Users/ilyabirman/Sites">
    Options Indexes FollowSymLinks Multiviews
    MultiviewsMatch Any
    AllowOverride All
    Require all granted
</Directory>

Replace ilyabirman with your username.

Now find and uncomment this line:

Include /private/etc/apache2/extra/httpd-vhosts.conf

Now open the very file /etc/apache2/extra/httpd-vhosts.conf and add this:

<VirtualHost *:80>
    DocumentRoot "/Users/ilyabirman/Sites/aegea"
    ServerName aegea
    ErrorLog "/private/var/log/apache2/aegea.l-error_log"
</VirtualHost>

Again, replace ilyabirman with your username.

Finally, open the /etc/hosts file and add the hostname you want to use for local projects:

127.0.0.1 aegea

Now if you point the browser to the address “aegea”, it will request it from the local machine. If Apache is running locally, it will capture the request and look at ~/Sites/aegea/ folder for the content to serve. This will not work just yet because we haven’t installed PHP.

Install PHP and MySQL

Mac comes with a pre-installed PHP, but it’s rather old and doesn’t include GD (a library that Aegea uses to work with images). Install good PHP. I use the installers from the page PHP for macOS as binary package and like them very much. They have never failed me.

Install PHP 5.6 (better for now) or PHP 7.1 by following the instructions on the page.

This will make Apache work with PHP without any changes to the httpd.conf file.

With MySQL it’s even easier: there’s an official native Mac installer available. Download the DMG file and follow the installer’s instructions. Don’t forget to Install the System Preferences pane to be able to start and stop the MySQL server from System Preferences.

Start MySQL and Apache

Open System Preferences, go to MySQL and press “Start MySQL Server”.

Open Terminal and type:

sudo apachectl start

It will ask for your password.

Create a database for Aegea

In Terminal, type:

sudo /usr/local/mysql/bin/mysql

In the MySQL prompt, type:

create database aegea;

Install Aegea

Navigate to “aegea/” with your browser. Without the final “/” Safari will try to do a Google search of “aegea”.

You will see Aegea installer. Enter the following MySQL database access parameters:

Server 127.0.0.1
User name root
Password (leave empty)
Database name aegea

The last thing to fill in is the password that you want to use to access your blog (you can change it later):

Click “Start blogging” — and that’s it.

UI Animations: four things

Here’s a video of my recent talk about UI Animations at AngularJS-IL meetup in Tel Aviv:

The video quality is not good because this wasn’t even meant to be recorded. I am lucky to have the video at all. Also, this was my first public talk in English — sorry about some slips.

The design of the iPhone 7

Somehow it’s become a common knowledge that the design of the iPhone 7 is almost the same as the design of the iPhone 6. This boggles my mind.

How can you not see that the iPhones 6 and 7 are the most different iPhones in the history of iPhones? The iPhone 6 is the ugliest iPhone ever created. The iPhone 7 is the most beautiful iPhone ever created.

This is the original iPhone:

Original iPhone

It was beautiful. Everything was perfectly aligned. It would be better without the black stripe on the bottom, but it had to be there for the antennas to work.

iPhones 3G and 3Gs were worse:

iPhones 3G and 3Gs

They looked fine in pictures, but were plastic, felt cheap and often cracked.

Then there were the iPhones 4 and 4s:

iPhone 4

These were special. They didn’t look nice in pictures, but were very attractive in person. The antenna lines bugged me a lot, but overall these were good ones. The glass back was really cool (I don’t break my phones).

Since then, things went downhill. The iPhones 5 and 5s were ugly:

iPhone 5

The black stripes, unlike on the original iPhone, were completely out of place. The camera was misaligned.

I wrote about it in The hope for a beautiful iPhone.

Then came the iPhones 6 and 6s, painfully ugly:

iPhone 6

The camera was not aligned with anything and sticked out. The rubber stripes were all over the back. How was this even possible? Imagine somebody showing it to you in 2008, after you’ve seen the first iPhones. You wouldn’t believe Apple would have shipped such a device.

Definitely, these were the ugliest iPhones ever built.

And then Apple showed the iPhone 7:

iPhone 7

Image from wylsa.com

How can you even compare it to the 6? This one is finally beautiful, after several years of ugliness. The camera is aligned with the phone’s corner, for the first time after the iPhone 4! It still sticks out, but this time the phone is designed with this in mind. It’s not slapped on top of an unexpecting phone; it’s there because it was meant to be there. The same for the antenna lines: they are part of the design, not some crap put on top because it had to be.

This is the first iPhone in years that you can enjoy just looking at. And unlike the iPhone 4, it looks great from every angle. It’s the opposite of the iPhones 6.

Live mix: Loophole

This saturday I played techno in Bukowski Bar:

Live mix: Loophole

The playlist:

0:00:00 Rekord 61 Sverh (Radio Slave FYM Remix 2)
0:01:52 Pig & Dan & Alberto Ruiz Truenos (Original Mix)
0:06:05 Fixon The Pain Is Gone (Audio Injection Remix)
0:07:43 Israel Toledo Standing
0:11:22 Martin Eyerer & Florian Meindl The Rush (Original Mix)
0:15:31 Filterheadz Music Saved My Life (Original Mix)
0:18:55 Nastia Reigel Figures in Brine (Truncate Repaint)
0:22:50 Cirez D On Off (Original Mix)
0:27:44 Reinier Zonneveld & Axan Loophole (Original Mix)
0:31:32 Phunk Investigation Noizer (Original Mix)
0:35:24 Sam Paganini Dusty
0:39:03 Petter B Voltage Controlled Time (Original Mix)
0:43:43 NoizyKnobs Really Deep
0:46:29 Orion Forerunner (Jerome Sydenham & Janne Tavi Remix)
0:50:54 Woo York Siberian Night
0:54:35 Developer Catch My Flow
0:58:21 Cirez D Glow (Original Mix)
1:03:09 Tensal Achievement 3
1:05:37 Stanny Franssen Bionical Clones
1:08:09 Norbert Davenport & Robin Hirte Tijuana Mode
1:12:04 Spark Taberner Meteors
1:17:06 Robert Hood Power To Prophet
1:21:37 Marco Bailey Night Attack (Sian S Calpol Mix)
1:24:24 Adoo Drumigos (Original Mix)
1:28:18 Marcel Dettmann Linux
1:31:14 Fixon Detachment
1:34:37 David Moleon Pasive (DJ Lukas Remix)
1:36:45 Dustin Zahn Sunday Night Fever (Original Mix)
1:39:39 Vegim Thorazine (Original mix)
1:43:14 Unam Zetineb Transmissions
1:46:57 Alan Fitzpatrick Turn Down The Lights (Original Mix)
1:50:14 Birth Of Frequency In Their Steps
1:55:12 P.E.A.R.L. Desolation (Reeko Deep Version)

See also a Mixcloud page.

How to install Aegea

To install Aegea, the blogging engine, you will need:

  • A server with Apache, PHP 5 and MySQL,
  • FTP or SFTP access to the server or another way to access the server’s file system,
  • Access to a MySQL database.

If you don’t have all this or don’t know what this means, you will not be able to install Aegea on your own. Seek assistance.

Get Aegea package
Download the Aegea zip archive from the website and unzip it:

Inside, you will see files like these (the list may differ depending on the version):

Put files on server
Upload all these files to the server (I’m using the FTP client Flow here):

As you can see, I’ve created a “blog” folder on the server and put the files in that folder:

Open Installer with browser
Navigate to the server with your browser. As I’ve created the folder “blog” for Aegea, I go to blogengine.me/blog/:

Enter your MySQL database access parameters: the server, the username, the password and the database name. The last thing to fill in is the password that you want to use to access your blog (you can change it later):

Click “Start blogging” and go:

Permission problems
You may find that instead of the Installer Aegea shows you something like this:

In this case, you need to change the permissions of Aegea’s folder and everything inside it to let the engine do anything it wants. Select the folder “blog” (in my case) and press ⌘I (in Flow’s case) to open its details:

Click the pencil icon next to Permissions (or open the permissions in some other way). Set permissions like this:

Then go back to the browser and press “Try again”. Installer should work now.

Introducing Aegea

Introducing Aegea, a great blogging engine.

An engine is a program that runs on the blogger’s website. It provides the writing tools to the author, shows the posts to the readers and lets them write comments. Medium.com (or similar) is simpler, but they can shut down and take all your posts offline. With an engine, the blog runs on your own website and you have access to the files and the database (you don’t have to deal with the files or the database, but you own all the data).

I want most people to have access to personal blogging in this way. That’s why it uses the most easily available platform: PHP with MySQL.

Aegea powers this and many other blogs. Among my favourites:

With Aegea, you can use the built-in neutral theme or customise it however you like (this blog is an example). Be flexible with comments: allow and disallow them globally or per post. Refine posts using Drafts. Add images, videos, audio or code to illustrate your point. Organise your writing with tags.

Designers, writers, musicians and software developers use Aegea to show their work, communicate and spread knowledge. They love it because it’s simple and fast yet does everything they need. Aegea is free for personal use and paid for business use.

Learn more and get Aegea at blogengine.me.

Emerge 1.3 with video support and replay control

In 2013, I released Emerge, a page load coordinator:

Normally, when a complex web page is loading, elements appear in random order, causing unpleasant flashing. To replace it with nice and coordinated animations, programming is required. Emerge.js simplifies the task by removing the need to write any JavaScript code. The framework uses a declarative approach, where you specify the desired behaviour for each element and do not think about the implementation.

See also the introductory blog post.

Version 1.3 adds support for video tags and an easy-to-use replay control useful for debugging.

Update for free

If you’ve bought Emerge, you get the updates for free. Just re-download using the same link you got when you bought the script. Or drop me a line if you have any questions.

Earlier Ctrl + ↓