Справедливость из Пензы

  • 776 words
  • 4 minutes to read
  • comments

Пишу эту статью по результатам своей поездки по небольшим российским городам, а именно: Пенза, Самара и Новосибирск. Удручающее впечатление, особенно после Москвы. Нищета и грязь. При этом совершенно нет ощущения, что населяют их глупые и ленивые люди, заслуживающие такой жизни. Скорее наоборот, “вроде не бездельники и могли бы жить”. В чем же дело? Почему, работая по две смены, люди в российском третьем городе едва сводят концы с концами, а на их улицах грязь и ямы? Чем отличаются они от Москвичей или, скажем, от жителей Цюриха?

How to Use Nutch From Java, Not From the Command Line

  • 1741 words
  • 9 minutes to read
  • comments

Apache Nutch is an open source framework written in Java. Its purpose is to help us crawl a set of websites (or the entire Internet), fetch the content, and prepare it for indexing by, say, Solr. A pretty useful framework if you ask me, however it is designed to be used only mostly from the command line. You download the archive, unzip it, and run the binary file. It crawls and you get the data. However, I’ve got a project where this crawling had to be embedded into my own Java app. I realized that there is a complete absence of any documentation for that. Hence this blog post. It explains how you can use Nutch from Java, not from the command line.

Stop Pitching, Beg Them!

  • 1104 words
  • 6 minutes to read
  • comments

You want your startup to be visible on TechCrunch, right? But you don’t have $15-20K per month to bribe a reputable PR firm to get you there? No worries. This blog post will give you a set of simple instructions on how you can get the attention of those tech journalists who are currently busy writing about Musk’s and Zuckerberg’s innovative ideas. They will definitely write about your baby, I promise you. Just do what I say.

Software Project Review Checklist

  • 515 words
  • 2 minutes to read
  • comments

A few years ago I wrote about the independent technical reviews any software project must regularly go through in order to make sure everything is under control. I even said recently that there is no excuse for not doing them. Moreover, the more we trust programmers, the higher the necessity to review their projects regularly. Here is a short summary of what a report from a reviewer must include.

Zerocracy: Survival Guide

  • 782 words
  • 4 minutes to read
  • comments

Zerocracy is a great platform to manage a software development project … if you understand how the world of wild animals, also known as pay-by-result freelancing microtaskers, works. If you treat them as you used to treat traditional full-time programmers, you will lose. You will lose your money, your time and will blame Zerocracy. I don’t want this to happen, that’s why this blog post with a short list of important principles/hints.

Zerocracy: Most Typical Concerns

  • 943 words
  • 5 minutes to read
  • comments

I decided to publish this blog post in order to summarize the most popular concerns potential clients of Zerocracy express, when they start thinking about moving from a traditional management to microtasking. The blog post will be get new content regularly, and will be used as a reference tutorial for our sales front.

How Much Does It Cost to Hire Zerocrat?

  • 538 words
  • 2 minutes to read
  • comments

It is a very popular question I hear when I explain what Zerocracy is doing and how it turns traditional software development upside down to increase quality, motivation, and so on. “OK, but what is the financial gain,” they ask? “What is my return on investment? How much will I pay and why it will be cheaper than what I spend now? Give me the price list!” It’s a fair question, which is rather difficult to answer. There is a price list, of course, but it’s impossible to compare it with what you are used to see in a traditional software development.

Zerocracy: Sales Kit

  • 904 words
  • 5 minutes to read
  • comments

I was talking to a few people recently, who wanted to join our team and help us sell the platform to potential customers—software companies. They all asked me for a “sales kit” document or a package of documents, which were supposed to answer their most important questions and help address the pain points of those potential customers. Anyway, instead of a fancy PDF document I decided to write up this blog post. Here it is, feel free to use this information when you sell Zerocracy:

How to Create a Java Web Framework from Scratch, the Right Object-Oriented Way

  • 2310 words
  • 12 minutes to read
  • comments

How do you design a web application in Java? You install Spring, read the manual, create controllers, create some views, add some annotations, and it works. What would you do if there were no Spring (and no Ruby on Rails in Ruby, and no Symphony in PHP, and no … etc.)? Let’s try to create a web application from scratch, starting from a pure Java SDK and ending with a fully functional web app, covered by unit tests. I recorded a webinar no.42 about it just a few weeks ago, but this article should explain it all in even more detail.

Logging Without a Static Logger

  • 829 words
  • 4 minutes to read
  • comments

How do you organize logging in your applications? I mean web applications or command line apps, or even mobile apps. I bet you have some global variable or a singleton, known as Logger, which has a few methods like info(), error(), and debug(). You configure it when the app starts, or it configures itself via something like log4j.properties, and logs everything to the console or a file, or even a database. I was doing exactly that, or something very similar, for many years, until I finally realized how wrong this approach was. In one of my recent Ruby applications I did it all differently, and since then I’m much happier than I was before.

Терроризм и власть

  • 559 words
  • 3 minutes to read
  • comments

Терракт в Новой Зеландии. Вчера. 50 трупов. Один убийца. Соболезнования выразили Владимир Путин, Дональд Трамп, Елизавета II, Барак Обама, весь Евросоюз в лице Федерики Могерини, и многие другие. Событие, безусловно, трагическое. Однако, сейчас интересно другое: почему подобные события привлекают наше внимание и внимание наших лидеров? Только ли в силу своего трагизма или есть другие причины?

How to Push Them Forward?

  • 850 words
  • 4 minutes to read
  • comments

I just got an email from one of our customers this morning. They are complaining that the project is not moving forward as fast as they would expect. Here is what they are literally saying: “Despite the fact that about 20 developers have been invited to the project, work is going very slowly and, worse, unpredictable. On average, the developer closes 3 tasks per week. It seems that all of the DEVs have a main job, and in Zerocracy they work on a residual basis. There are cases when a task (which should take 30 minutes for the developer) is not solved within 10-15 days. Moreover, we cannot do anything about it, because according to the policy, developer has 10 days to complete the task. Also, we do not have tools for additional motivation of developers. The reputation system doesn’t seem to work, because reputation does not affect anything and punishments are very small.” It’s a fair complaint, let’s see what we can do about it.

How Data Visibility Hurts Maintainability

  • 2195 words
  • 12 minutes to read
  • comments

I’ve been writing so much about object-oriented programming and its pitfalls, claiming that most of the design patterns and “good practices” which we are accustomed to are actually wrong and hurtful, that I totally forgot to explain the bigger picture problem. Someone asked me some time ago in the blog post about “naked” data: What is the problem we are solving and why exactly does maintainability suffer if we don’t encapsulate our data enough? Here is the answer.

Калиброванная демократия

  • 724 words
  • 4 minutes to read
  • comments

Демократия — это наихудшая форма правления. Власть принадлежит толпе, которая неспособна мыслить стратегически, состоит в большинстве своем из людей недалеких, принимающих сиюминунтые решения. Так во втором веке до нашей эры считал Аристотель. Более эффективной системой правления ему казалась та, в которой власть принадлежит тем, у кого заведомо больше авторитета ею обладать, а значит принимать более взвешенные и грамотные решения.

Why I Want to Live in Silicon Valley

  • 1772 words
  • 9 minutes to read
  • comments

You remember my blog post about Why I Don’t Want to Live in Silicon Valley, don’t you? Read it first if you haven’t already. The gist of it is that Silicon Valley is a place with a lot of troubles. No one should want to live there, according to that previous post, right? That is what many of my readers concluded, but they were wrong. Despite the problems, the place is definitely unique and there are a lot of reasons why you may want to consider it as a great place to live, for a few years at least, especially if you are in the tech business.

Zache: A Simple Ruby In-Memory Cache

  • 291 words
  • 1 minutes to read
  • comments

A month ago I stumbled upon a problem: I wasn’t able to find a Ruby gem which would do in-memory caching with the capability to expire on timeout. After some quick research I decided to implement my own and called it Zache (as in “zero cache,” since there is no back end). Here is how it works:

How to Deploy Maven Artifacts to CloudRepo via Rultor

  • 847 words
  • 4 minutes to read
  • comments
badge

In my previous article, I described how to set up a private Maven repository in Amazon S3 and deploy there via Rultor. This is a great solution if you’re familiar with managing Amazon Web Services (AWS), S3, and AWS Identity and Access Management (IAM). However, if you’re not comfortable administering an AWS account and all the related permissions, you may want to store your Apache Maven Artifacts in some cloud based repository manager instead. Here is how you make Rultor deploy your Maven dependencies to CloudRepo. I wrote this blog post together with Chris Shellenbarger, their founder.

My Recipe Against Dependency Hell

  • 745 words
  • 4 minutes to read
  • comments

Do you specify exact versions of your dependencies? I mean, when your software package depends on another one, do you write down, in your pom.xml, Gruntfile, Gemfile, or what have you, its version as 1.13.5 or just 1.+? I always thought that it was better to use exact version numbers, to avoid the so called dependency hell, and I was not alone. However, very soon I realized that dynamic versions, like 1.+, give more flexibility. Just a few weeks ago I realized that neither approach is right and found myself a hybrid formula.

Стена

  • 576 words
  • 3 minutes to read
  • comments

США борется с нелегальной иммиграцией уже давно. Строительство забора между Калифорнией и Мексикой началось еще в 1993-м году. В 2006-м году Джордж Буш добавил к нему еще 900 километров укреплений, а совсем недавно к борьбе подключился Дональд Трамп. Наблюдая за его активностью в Twitter и Instagram, создается ощущение, что последние несколько месяцев вся Америка озабочена только одним: как спастись от нашествия мексиканцев. Других проблем нет? Почему так важна эта стена? Почему именно сейчас? Неужели, все так критично, что пришлось на целый месяц заблокировать работу правительства?

Кого бы нам еще наказать за наркотики?

  • 945 words
  • 5 minutes to read
  • comments

Досмотрел вчера сериал El Chapo (2017-2018), рассказывающий историю еще не оконченной жизни одного из самых успешных наркобаронов современности по имени Хоакин Гусман. Первый сезон оказался самым сильным, второй слабее, а третий удалось переварить только благодаря сюжетной линии Конрадо. Но речь сейчас не о кинематографе, а о наркотиках.

What if the Architect is Wrong?

  • 1100 words
  • 6 minutes to read
  • comments

You most probably know what I think about the architect role on a software project—it’s that of a dictator who makes all technical decisions and who bears the entire responsibility for the final result. I wrote about it and even gave a talk Who is a Software Architect? at BuildStuff in 2016. However, the obvious question you may ask is: What happens if the architect is wrong? Does it mean the entire project is at risk of failure? And isn’t it better to make the whole team responsible for the result, instead of having one single point of failure?

Государство как услуга. Почему нет? Потому что.

  • 812 words
  • 4 minutes to read
  • comments

Исторически государства были нужны, помимо прочего, для более эффективного ведения войн. Чем крупнее группа, тем легче ей было побеждать более мелких агрессоров, тем проще было захватывать прилегающие территории. Чтобы войну вести более эффективно, нужны были технологии, наука, образование, культура, медицина, и многое другое. Однако, все это можно было бы делать и без образования государств и установления между ними жестких границ. Страны, флаги, гимны, границы, и национальные интересы нужны там, где есть война. А она есть везде и всегда.

Hazardous Enthusiasm

  • 729 words
  • 4 minutes to read
  • comments

On a daily basis I deal with many programmers who contribute to my open source projects, either as volunteers or for money via Zerocracy (and my software projects are all open source). Over the years I have realized that there is a pattern in their behavior, which I need to be scared aware of. I call it “hazardous enthusiasm.” Here are the symptoms.

Speaker Cheat Sheet

  • 2052 words
  • 11 minutes to read
  • comments

I speak at software conferences regularly. Over the last three years I spoke in 30 cities and 10 countries. I recorded almost all of them, you can see them here and on my YouTube channel. My principal rule is that I never give the same speech more than once. Every time it’s a new deck of slides and a new flow of thoughts. Of course, they all dance around the ideas I preach about, like Elegant Objects or rebellion against office slavery. I guess it’s time to share some of my secrets, mostly learned the hard way.

Why I Don't Want to Live in Silicon Valley

  • 1897 words
  • 10 minutes to read
  • comments

Silicon Valley is a great place to be … or maybe not. I’ve spent five years there, from 2011 till 2016. I did enjoy some parts of it, but others were not enjoyable at all. Here is a quick summary of what’s wrong with this territory. I can’t speak about the rest of the United States since, even though I’ve seen some other places, I’ve never lived there for more than a month. Long story short, the territory between San Francisco and San Jose, also known as Silicon Valley, is not the thing you see in the famous TV Series. It is absolutely different…

Unit Testing Anti-Patterns, Full List

  • 1090 words
  • 6 minutes to read
  • comments

I wrote some time ago about anti-patterns in OOP. Now it’s time to write about unit testing anti-patterns—because they also exist, and there are many. I will try to include every example I know in this list. If you know any others, please add them via a pull request or post a comment below. For each anti-pattern I will try to mention where it was found, if it’s not mine. Keep in mind that if I found it somewhere, that doesn’t necessarily mean it was invented there. If you spot an error, please comment.

You Can Do Better

  • 1675 words
  • 9 minutes to read
  • comments

OK, it’s time to publish this piece. I’ve been dancing around it for quite a while, telling you how to make more per hour, how to manage those stupid managers that don’t let you grow, how to boost your career and how to deal with office slavery. Now here is a simple, plain list of recommendations for you: what you should do if you want to be a more successful programmer. Not a better algorithm designer, even though that’s important. Not a funnier clown team player, even though that’s also important. But a more successful software engineer, both financially and socially.

The Era of Freelance Is Coming

  • 344 words
  • 1 minutes to read
  • comments

The outsourcing in combination with low-cost offshoring was a major trend in the software industry twenty years ago. Since then small groups of enthusiasts grew into large companies with thousands of employees and dozens of offices all over the world, like Wipro, EPAM, Luxoft, and others. Despite the obvious success, the future of software development may need a different business model, since clients’ requirements are rapidly changing. The market is quickly shifting towards more flexible work models, which compete with full-time office employment and time&material contracts.

Tech Journalism Sucks

  • 577 words
  • 3 minutes to read
  • comments

This July, just four months ago, I submitted an article to InfoQ, a popular online tech magazine. In the article I suggested that in order to improve our projects we must not make programmers worry about the quality of code they write, but instead let them focus mostly on the speed of delivery. The quality, I argued in the article, must be the concern of the delivery pipeline. You have most probably already read the blog posts where I mention this idea, especially this one: Don’t Aim for Quality, Aim for Speed.

sixnines availability badge  GitHub stars