I've been using Skarsta since August 2015 at my home office. I'm pretty satisfied with the desk.
I always wanted a standing desk. I saw pictures of many awesome home-built desks here at HN so I thought that I could built myself one too. However, it turned out that it's not very easy. So I started looking for one at local shops.
Fortunately, IKEA is about 10km from my home so I went there and asked. They told me they have some Skarsta desk. Long story short, I bought it for 200 Euro (the larger version). The assembly took max 1 hour. Initially, the desk was a little "bendy" and unstable, but I discovered that the screws were not tight enough. After tightening them, the desk is pretty stable, even at the highest position.
I'm about 190cm tall and at the highest position, I can comfortably work on the desk. What I like the most about it is that it's pretty huge and spacious. You can put three 22" monitors on it + smaller speakers + mechanical keyboard + notebook for drawing without a problem. Although you have to manually get it up and down with a handle, it usually takes something like 30 seconds and you can look into the monitor while doing that. :) It's a good training for your hands.
All in all, Skarsta is very nice and comfortable standing desk for a reasonable price. Since owning it, I no longer understand all the standing-desk startups with their smallish desks for Macbook + one monitor for 500 bucks. What is more, you can put a spin bike under the desk and exercise while doing a light work, reading or watching videos.
Use youtube-dl to download from YouTube (and many other sites). youtube-dl downloads the full video/audio file by default (which these days involves downloading and muxing audio and video streams), but it can also just download the audio.
You got some good points here though I don't know why opcode caching didn't work for you. Nowadays, it's just a matter of putting some configuration lines into PHP-FPM config and it works like a charm (at least for me, you might have a special site, idk).
Yes, compiling PHP shouldn't take that much (even though typical WordPress site consists of thousands of PHP files). But as you can see from some of the charts from my work, it can potentially double the amount of concurrent requests the server is able to respond to.
Whole page caching (I call it page cache) is the biggest improvement one can make. However, instead of using WP plugins, in my work I configured Nginx to cache the output of PHP interpreter (FastCGI). The advantages are that you can use Nginx's location directives to bypass the cache early (e.g. logged in users, shopping cart, etc) and that Nginx stores the pages in RAM in a tree-like structure with pretty fast access times. In a heavy WP site (plenty of large plugins, etc), you can go from 200 concurrent requests at 8 seconds to 1000 concurrent requests at 2 seconds, which is a pretty huge improvement.
MySQL query caching should definitely help, though in my testing it did not. Maybe I need a real benchmark with a real 100 people requesting different subpages. Then the DB (MariaDB in my case) might become a bottleneck.
Yeah, SSDs are superb-useful, in any cases. I made all the tests on a non-SSD server. At least the WordPress DB structure is quite flexible, though, as you mentioned, it now suffers from the gigantic joins.
Bad plugins and themes are the root of all the performance problems. But sometimes it is easier to implement caching and replacing Apache with Nginx on the server side than replacing plugins that you really need. That's the main point of the thesis: Time of an experienced developer fixing plugins and themes is more expensive than optimizing the server. But yeah, if you are a developer, learning to write clean and fast plugins is crucial.
It wasn't that configuring opcode caches is complicated or difficult. It's that they locked up every few days, no matter which one I used or how I configured them.
At the point where I wrote a cron script to kill PHP every 24 hours, I realised the extra few percent weren't worth it.
Maybe it's improved, but: four times bitten, twice shy.
> Nginx stores the pages in RAM in a tree-like structure with pretty fast access times.
On disk caching delegates this to the OS, which is pretty good at it.
Badly behaved plugins and themes are not a solvable problem on Wordpress, because it's essentially a cooperative multitasking environment. One bad actor can hog all the resources and there's no way to constrain it.
It seems as though very few plugin authors know what O-notation means (so many nested loops), what EXPLAIN QUERY is or that tinkering and and firing up a copy on your laptop isn't really testing.
> Maybe it's improved, but: four times bitten, twice shy.
I see, happens all the time.
> On disk caching delegates this to the OS, which is pretty good at it.
Yeah, it's just a matter of preference and convenience.
> It seems as though very few plugin authors know what O-notation means (so many nested loops), what EXPLAIN QUERY is or that tinkering and and firing up a copy on your laptop isn't really testing.
This is the real issue. I know a very few WordPress developers who have a formal technical education. While you can learn it yourself, school forces you to learn this in a great detail. In a near future, I will hopefully write on these topics, though, I need to study on this a bit more first.
Well in the old days, the operating system was there to help you. If plugins were standalone processes, they could be resource-constrained. But they all have to run in-process because of the LAMP architecture.
Thanks for the article, it's insightful and I & history agree completely with you. Nowadays, people are using prebuilt VPS images or automation scripts to provision their servers and shared hostings are becoming more of a VPS hostings with a good UI around these tools.
I see that you are a WordPress veteran, nice to hear your opinions :)
Thanks for the kind words Justin, they are the hugest approval of my work so far. :) Not getting this in uni where everybody is about matrices and stuff.
Have you tried using HHVM instead of PHP-FPM? Although you are definitely having a fast site, HHVM could potentially double the numbers.
Yes, one slow DB query can ruin all the fun. That's why using Redis for in-memory DB caching can help. In some cases, it might be more optimal than using full page caching because DB caching works for logged in users too while page caching has to be bypassed.
Using JavaScript for better performance helps too, I like how you optimized that menu. I've noticed that profiling the code with, for example xhprof, can be really useful during development. Found myself doing some slow code/queries, ran the profiler and immediately discovered the bad parts. It's quite easy and straightforward to fix them if you know where they are.
----
They probably meant that APC, which was a separate PHP caching module back then, is dead. However, caching is now part of PHP and as far as I can remember, it is using the same API as APC was, so basically it still lives and W3TC supports it.
WordPress is rather big, having more than 200K function calls on a typical request to a blog post. However, when using the default Twenty Fifteen theme, the performance is not that bad, as you can see from http://ldr.io/1cbbomp (VPS server with 3CPUs and 4GB of RAM).
I've just checked your blogging engine and it looks very minimalistic. I like it.
Thank you! Yes you are right! WordPress is huge! but not everyone need all the functionality... let's just say 10% of current WordPress users just need a simple blogging platform without all the widgets... then I think 1K function calls should be enough!
Anyway, I love WordPress and do not compare my hubby project with 10 years of 1000+ developers time!
Author here. The figure depicting the workings of APC cache was just an example of how opcode caching in PHP works. The thesis was published just today.
> It's an horrible peace of software, with horrible PHP code 4.x style, a db schema only a beginner could have come up with and an ecosystem with a lot of trash [...]
I must disagree with these statements. Although it is not the most elegant one I've seen, using the word "horrible" is simply out of place. Have you ever built some sites with it? Do you realize that WordPress is developed in open source with many talented people working on it every day? The DB schema is actually quite flexible, being able to accommodate various kinds of data without many modifications. Apart from that, you can write your own beautiful code according to the newest PHP standards if you want in your WordPress-powered projects. No-one is forcing you to use old versions of PHP.
As far as the success of WP is concerned, I think the reasons for it are very similar to why PHP is successful:
- A huge community with plenty of plugins and themes.
- Supported on basically any hosting service.
- Being free with free updates.
- Refined administration panel with many subtle features like auto-saving posts to Local Storage, which can save your article in case of an accident.
and much more...
I'm not saying that WordPress doesn't have its own issues, however, ignorantly stating that it is "an horrible peace of software" is simply outrageous.
> Apart from that, you can write your own beautiful code according to the newest PHP standards if you want in your WordPress-powered projects.
You really can't. Wordpress actively prevents you from writing beautiful, modern code. When writing themes, every template has to be in the root directory of the theme, creating an awful mess. All of wordpress has global variables and/or state in functions that is simply inescapable, making it impossible to write unit tests. Dependency injection is completely out of the question.
If you want to modify some behaviour and someone hasn't thought of putting in a filter for the exact thing you want to modify, it's not a matter of extending a class and overriding a method. Because wordpress is littered with huge god functions with global state, you basically have to copy/paste hundreds of lines of code and make sure that you keep that up-to-date with core updates yourself to prevent future bugs.
Several times I've gone into plugin development thinking "this must be possible without making too much of a mess", thinking I can separate out the unit-testable bits and write a thin WP wrapping layer that deals with the global state. Every time I've been disappointed.
It's not about PHP versions alone. It's that Wordpress was designed in and for PHP 4, and was never modernized. That's an inescapable fact, regardless of which PHP version your server runs.
The fact that this is not shows that not many people (here) agree. :)
I personally have no opinion on DB schema because I never looked that deep, but last time I had to deal with WP its codebase was just horrible. And don't get me started on plugins' code quality, it goes to entire other level of "horrible". The project might have a lot of talented contributors, but they seem to be overshadowed by everyone else.
They might have fixed it from the last time I looked of course (though I doubt it, judging by never ending stream of vulnerabilities).
Here is a nice article written by Lütke himself about how he got into computers and how his then boss Jürgen was probably the most important thing that happened to him in his professional life.
I always wanted a standing desk. I saw pictures of many awesome home-built desks here at HN so I thought that I could built myself one too. However, it turned out that it's not very easy. So I started looking for one at local shops.
Fortunately, IKEA is about 10km from my home so I went there and asked. They told me they have some Skarsta desk. Long story short, I bought it for 200 Euro (the larger version). The assembly took max 1 hour. Initially, the desk was a little "bendy" and unstable, but I discovered that the screws were not tight enough. After tightening them, the desk is pretty stable, even at the highest position.
I'm about 190cm tall and at the highest position, I can comfortably work on the desk. What I like the most about it is that it's pretty huge and spacious. You can put three 22" monitors on it + smaller speakers + mechanical keyboard + notebook for drawing without a problem. Although you have to manually get it up and down with a handle, it usually takes something like 30 seconds and you can look into the monitor while doing that. :) It's a good training for your hands.
All in all, Skarsta is very nice and comfortable standing desk for a reasonable price. Since owning it, I no longer understand all the standing-desk startups with their smallish desks for Macbook + one monitor for 500 bucks. What is more, you can put a spin bike under the desk and exercise while doing a light work, reading or watching videos.