Jan 20, 2017 Comments
Post
Tag:
booknon-fiction
Несколько затянутая, на мой взгляд, книга с тремя основными идеями поиска работы:
- Докажите, чем именно вы лучше других претендентов.
- Имейте запасной план, а лучше не один.
- Лучшая работа находится не по объявлениям, а через знакомы и их знакомых (“слабые связи”).
Заметки:
-
Если вы хотите найти путь, который дифференцирует вас от других профессионалов, работающих на том же рынке, вот первый шаг: закончите следующее предложение: «Компания выбирает меня среди других профессионалов, потому что…» В чем вы первый? Или единственный? В чем вы быстрее, лучше или дешевле других людей, делающих в этом мире то же самое, что делаете вы? Что вы можете предложить такого, что трудно получить в другом месте? Что вы предлагаете редкого и ценного?
-
Иначе говоря, не пытайтесь стать величайшим директором по маркетингу в мире; стремитесь стать величайшим директором по маркетингу для маленьких и средних компаний, работающих в сфере здравоохранения.
-
Хороший карьерный план учитывает взаимодействие этих трех фрагментов – наших активов, стремлений и реалий рынка. Все они должны сочетаться друг с другом. Например, приобретение ключевого навыка автоматически не даст конкурентного преимущества. То, что мы умеем что-то делать (активы) и увлечены этим (стремления), не обязательно означает, что кто-то нам за это заплатит (реалии рынка).
-
Люди, с которыми мы познакомились в предыдущих главах, обращаются к своей сети постоянно, и это помогает им развивать карьеру. Когда Шерил Сэндберг работала в офисе Ларри Саммерса в World Bank, Ларри попросил ее провести исследование о том, что могло произойти, если бы в 1917 г. США помогли России подавить Октябрьскую революцию. «Как поступил бы обычный студент? – сказал Саммерс в интервью Кену Аулетту, опубликованном в The New Yorker. – Он пошел бы в библиотеку, просмотрел несколько книг по истории России и сказал бы, что никто точно не знает, что случилось бы в таком случае. А Шерил позвонила Ричарду Пайпсу, историку из Гарварда, специалисту по истории Октябрьской революции». Она целый час разговаривала с ним и сделала подробные заметки, которыми на следующий день весьма впечатлила Саммерса.
-
Графический конспект от thestartupofyou.com
Jan 14, 2017 Comments
Post
Tag:
booknon-fiction
Книга о политике. И о том, как средство свободного распространения информации - интернет, влияет на нее. От первого подключения, в 1990 году, СССР к мировой сети и бесконтрольности, до Сноудена.
Не смотря на первые главы о становлении интернета в 90-х, книга больше о современной политике. О историях протеста на Болотной площади, Навальном и телеканале «Дождь». Если вы немного следите за новостями, и так это знаете. Авторы лишь помогают систематизировать.
Это большое журналистское расследование. И отнюдь не беспристрастное. Последовательно, с примерами, проводится параллель, о усилении контроля за средствами связи, между СССР и современной России. От почти полной свободы в 91, до тоталитарной слежкой за пользователями во время олимпиады в Сочи. С удивлением узнал, в Сочи работал общедоступный бесплатный вай-фай, но подключится к нему можно было лишь с помощью специального паспорта болельщика. Перед этим «Мегафон» - главный организатор информационной поддержки, закупил большое количество прослушивающей и следящий аппаратуры.
Волей-неволей проникаешься паранойе авторов. Со временем она проходит. Точь-в-точь как при чтении новостей.
Заметки:
-
Первое подключение СССР к интернету произошло 28 августа 1990 года, когда программисты с Овчинниковской набережной обменялись электронными письмами с коллегами из университета Хельсинки.
-
Лорен Грэхэм из Массачусетского технологического института, ведущий исследователь истории советской и российской науки, подтвердил: «По сравнению со своими коллегами из западных стран российские ученые и инженеры куда меньше озабочены вопросами этики и морали».
«Я вижу на то две причины, – добавил он. – В советский период российские ученые и инженеры быстро осознали, что любого, кто задает вопросы, касающиеся этики и морали, власти начинают считать “политической оппозицией” и могут наказать за это. Поэтому они научились хранить молчание, что со временем стало неотъемлемой частью их профессии».
-
Статистика свидетельствовала, что за последние шесть лет количество прослушки и слежки выросло почти в два раза: в 2007 году спецслужбы получили от российских судов 265 937 разрешений на прослушивание и запись телефонных переговоров, а также перехват e-mail, включая сообщения в социальных сетях и мессенджерах. В 2012-м таких разрешений уже было 539 864. Но на самом деле под наблюдением находятся намного больше людей: статистика Верховного суда не учитывает тех, кого прослушивают в рамках контрразведывательной деятельности, выслеживая шпионов.
Jan 4, 2017 Comments
Post
Tag:
tech
Attic backup
Borg backup
borg init --encryption=repokey /path/to/repo
#!/bin/sh
REPOSITORY=/mnt/d/Backup/my-backup.borg
LOGFILE=/mnt/d/Backup/log.log
BORG=/mnt/d/Borg/borg
export BORG_PASSPHRASE=PASSPHRASE
exec >> $LOGFILE 2>&1
#List all archives: borg list /path/to/repo
#Restore archive: borg extract /path/to/repo::Monday
#simple function that just prints the time and the info you pass to it
echotime () {
echo "$1 `date +%Y-%m-%d--%H:%M:%S`"
}
echotime "BORG CREATE"
$BORG create -v --stats -C zlib,6 \
$REPOSITORY::backup-`date +%Y-%m-%d`\
/mnt/d/Books/ \
/mnt/d/Source/ \
/mnt/d/Photo/
# --exclude /home/*/.cache
echotime "BORG PRUNE"
$BORG prune -v --stats $REPOSITORY --keep-monthly=4
echo
D:\Cloud\Cloud.exe
timeout 3
bash -c "/mnt/d/Borg/backup.sh"
Jan 3, 2017 Comments
Post
Tag:
film
Добавлю, помимо моих предпочтений, ссылки на чужие подборки фильмов и сериалов:
Фильмы
Омерзительная восьмерка/The Hateful Eight
Фильм Тарантино просто обязан здесь оказаться.
Дэдпул/Deadpool
Ваш друг “мертвый бассейн”. Может быть не самая лучшая комедия и боевик, но точно лучшее разбивание “четвертой стены”.
Зверополис/Zootopia
Лучший мультфим. Смешной, интересный и атмосферный.
Да здравствует Цезарь!/Hail, Caesar!
Братья Коэны, море сарказма и безумный голливуд 50-х.
Хардкор
Лучший экшен - двух мнений быть не может. 100% чистота.
Славные парни/The Nice Guys
Великолепная “ретро” комедия с отличным актерским составом.
Человек – швейцарский нож/Swiss Army Man
Безумие года. Идеально создан для парирования жалоб о отсутствии “необычных сюжетов” в голливудских фильмах.
Дом странных детей Мисс Перегрин/Miss Peregrine’s Home for Peculiar Children
Очень красивый и атомсферный фильм Тима Бертона.
Визит/The Visit
Ужастик с необычной концовкой.
Прибытие/Arrival
Великолепная научная фатастика.
Сериалы
Мир Дикого Запада/Westworld
Шикарная первая серия, нудное повествование до шестой и первоклассная концовка.
Детективное агентство Дирка Джентли/Dirk Gently’s Holistic Detective Agency
Дуглас Адамас и безумие. Лучше не придумать.
Jan 3, 2017 Comments
Post
Tag:
bookfiction
Необычный детектив. С самого начала предупреждают - виновен стеклянный Джек. И разумеется, во всех трех историях не так-то просто понять, что именно он - виновен.
Неплохой детектив, но сам мир будущего совсем не так хорошо проработан, как в недавно прочитанной “ложной слепоте”. Обе книги о будущем, и я их сравнивал. Почти всегда в пользу “слепоты”. Нет, стеклянный Джек не плохая книга. Просто “ложная слепота” очень хорошая.
Dec 1, 2016 Comments
Post
Tag:
bookfiction
“Жесткая” научная фантастика, где почти к каждому фантастическому объекту есть ссылка на научную статью с объяснением как это возможно. Сборище психопатов и социопатов на невероятном, и при этом реалистичном, космическом корабле, отправляются исследовать пришельцев, что до страшного не похожи на людей. И даже не ясно, разумны ли они. Микс из отличной истории, крутых персонажей, научных исследований и философских вопросов. Вы должны это почитать. Одна из лучших фантастических книг.
Nov 7, 2016 Comments
Post
Tag:
bookengineeringcareer
Отличная книга. Об этом недвусмысленно свидетельствует размер “полезных советов” в конце статьи.
Эдмонд Лау(Edmond Lau), проработавший в Google, Quora, Facebook и в куче стартапов поменьше, пишет обо всем понемногу. Советы в основном широко известные, так например, в книге Soft Skills by John Z. Sonmez описываются очень похожие методы обучения и управления временем.
Автор, не только дает большое количество рекомендаций, но, самое главное, приводит логическое обоснвание этих самых рекомендаций. Инженер получает почти пошаговую инструкцию - начиная от личного развития, заканчивая управлением команды. При этом, у автора минимум абстрактных рассуждений и максимум полезной информации. Больших трудов стоило внести в список “заметок” так мало.
Заметки:
Optimize for Learning
-
Study code for core abstractions written by the best engineers at your company.
-
Write more code. If you feel that programming is your weak point, shift time away from other activities like meetings and product design, and spend more of it building and writing code. Over a decade of research on learning has shown that the more effort you expend when retrieving knowledge from memory, the better you’ll learn and retain those ideas.
-
Go through any technical, educational material available internally. If your company maintains design documents or holds tech talks, use them as learning opportunities.
-
Master the programming languages that you use. Read a good book or two on them. Focus on developing a solid grasp of the advanced concepts in that language, and gain familiarity with core language libraries. Make sure that at least one of your languages is a scripting language (e.g., Python or Ruby) that you can use as your Swiss army knife for quick tasks.
-
Send your code reviews to the harshest critics. Optimize for getting good, thoughtful feedback rather than for lowering the barrier to getting your work checked in. Ask for a more detailed review on those implementations you’re not as confident about. Discuss software designs with your company’s best designers in order to avoid writing great code for a design that doesn’t work well.
-
Enroll in classes on areas where you want to improve. These could be courses offered on the company campus, at nearby universities, or online through educational initiatives like Coursera, edX, Udemy or Udacity. Online education is exploding;
-
Participate in design discussions of projects you’re interested in. Don’t wait for an invitation. Ask project leads if they’d mind you being a silent observer or even a participant in a design meeting.
-
Work on a diversity of projects. If you find yourself always doing similar tasks using similar methods, it’s going to be hard to pick up new skills. Interleaving different projects can teach you what problems are common across projects and what might just be artifacts of your current one. Make sure you’re on a team with at least a few senior engineers whom you can learn from. If you’re not, consider changing projects or teams. This will help increase your learning rate for the remaining 80% of your time.
-
Learn new programming languages and frameworks. One of the most exciting aspects of working in software is that the technology landscape changes so rapidly. But this also means that if you’re not continuously learning, your skills might get stale and outdated.
-
Invest in skills that are in high demand. If you’re unsure about what types of skills you should be learning, see what’s being included in job postings you find interesting, or evaluate the current industry trends and demand for skills. For example, as of 2014, 15% of Internet traffic now comes from mobile devices, 26 and global annual smartphone sales are triple that of consumer PCs.
-
Attend talks, conferences, and meetups. Growing technology companies often hold open tech talks, both to share knowledge and to help recruit new engineers. Google even shares many of its on-campus talks on YouTube.
-
Build and maintain a strong network of relationships. I used to avoid coffee meetings and meetups with people I didn’t know. But I’ve since learned that the more people you meet, the more you’ll find serendipitous opportunities. Richard Wiseman captures this idea in his book The Luck Factor, when he writes, “Lucky people dramatically increase the possibility of a lucky chance encounter by meeting a large number of people in their daily lives. The more people they meet, the greater opportunity they have of running into someone who could have a positive effect on their lives.”
-
Follow bloggers who teach.
-
Write to teach. When you write to teach other people, you gain a deeper understanding of ideas you’re already familiar with and pinpoint the details that you didn’t fully understand. That’s the technique that Physics Nobel Prize winner Richard Feynman used to learn faster.
-
Tinker on side projects. Side projects, even ones not related to engineering, provide further opportunities to hone your skills, particularly in areas of interest that you don’t typically engage in at work.
Invest in Iteration Speed
-
Get proficient with your favorite text editor or IDE. There are countless debates over which is the best text editor: Emacs, Vim, TextMate, Sublime, or something else. What’s most important for you is mastering the tool that you use for the most purposes.
-
Learn at least one productive, high-level programming language. Scripting languages work wonders in comparison to compiled languages when you need to get something done quickly. Empirically, languages like C, C++, and Java tend to be 2–3x more verbose in terms of lines of code than higher-level languages like Python and Ruby; moreover, the higher-level languages come with more powerful, built-in primitives, including list comprehensions, functional arguments, and destructuring assignment.
-
Get familiar with UNIX (or Windows) shell commands. Being able to manipulate and process data with basic UNIX tools instead of writing a Python or Java program can reduce the time to complete a task from minutes down to seconds. Learn basic commands like grep, sort, uniq, wc, awk, sed, xargs, and find, all of which can be piped together to execute arbitrarily powerful transformations.
-
Prefer the keyboard over the mouse. Seasoned programmers train themselves to navigate within files, launch applications, and even browse the web using their keyboards as much as possible, rather than a mouse or trackpad.
-
Automate your manual workflows. Developing the skills to automate takes time, whether they be using shell scripts, browser extensions, or something else. But the cost of mastering these skills gets smaller the more often you do it and the better you get at it.
-
Test out ideas on an interactive interpreter. In many traditional languages like C, C++, and Java, testing the behavior of even a small expression requires you to compile a program and run it. Languages like Python, Ruby, and JavaScript, however, have interpreters available allowing you to evaluate and test out expressions. Using them to build confidence that your program behaves as expected will provide a significant boost in iteration speed.
-
Make it fast and easy to run just the unit tests associated with your current changes. Use testing tools that run only the subset of tests affected by your code. Even better, integrate the tool with your text editor or IDE so that you can invoke them with a few keystrokes.
Measure What You Want to Improve
-
Measure your progress. It’s hard to improve what you don’t measure. How would you know what types of effort are well spent?
-
Carefully choose your top-level metric. Different metrics incentivize different behaviors. Figure out which behaviors you want.
-
Instrument your system. The higher your system’s complexity, the more you need instrumentation to ensure that you’re not flying blind. The easier it is to instrument more metrics, the more often you’ll do it.
-
Know your numbers. Memorize or have easy access to numbers that can benchmark your progress or help with back-of-the-envelope calculations.
-
Prioritize data integrity. Having bad data is worse than having no data, because you’ll make the wrong decisions thinking that you’re right.
Validate Your Ideas Early and Often
-
Approach a problem iteratively to reduce wasted effort. Each iteration provides opportunities to validate new ideas. Iterate quickly to learn quickly.
-
Reduce the risk of large implementations by using small validations. Invest a little extra effort to figure out if the rest of your plan is worth doing.
-
When working on a solo project, find ways of soliciting regular feedback. It may be easy and comfortable to keep working in a silo, but you run the huge risk of overlooking something that, if spotted early, could save you lots of wasted effort.
-
Adopt a willingness to validate your decisions. Rather than making an important decision and moving on, set up feedback loops that enable you to collect data and assess your work’s value and effectiveness.
Improve Your Project Estimation Skills
-
Incorporate estimates into the project plan. These estimates should be used as an input to decide whether delivering a set of features by a certain date is feasible. If it is not, they should lead to a conversation about whether to change the feature set or the delivery date. Don’t let a desired target dictate the estimates.
-
Allow buffer room for the unknown in the schedule. Take into account competing work obligations, holidays, illnesses, etc. The longer a project, the higher the probability that some of these will occur.
-
Define measurable milestones. Clear milestones can alert you as to whether you’re on track or falling behind. Use them as opportunities to revise your estimates.
-
Do the riskiest tasks first. Reduce variance in your estimates and risk in your project by exploring the unknown early on. Don’t give yourself the illusion of progress by focusing first on what’s easy to do.
-
Know the limits of overtime. Many teams burn out because they start sprinting before they’re even close to the finish line. Don’t sprint just because you’re behind and don’t know what else to do. Work overtime only if you’re confident that it will enable you to finish on time.
Build Long-Term Value
-
Establish a culture of reviewing code. Code reviews facilitate positive modeling of good coding practices. Find the right balance between code reviews and tooling to trade off code quality and development speed.
-
Invest in good software abstractions to simplify difficult problems. Good abstractions solve a hard problem once and for all, and significantly increase the productivity of those who use it. But if you try to build abstractions when you have incomplete information about use cases, you’ll end up with something clunky and unusable.
-
Scale code quality with automated testing. A suite of unit and integration tests can help alleviate the fear of modifying what might otherwise be brittle code. Focus on ones that save the most time first.
-
Manage your technical debt. If you spend all your resources paying off interest on your debt, you won’t have enough time left to work on new things. Focus on the debt that incurs the most interest.
Minimize Operational Burden
-
Do the simple thing first. Simpler systems are easier to understand, extend, and maintain.
-
Fail fast to pinpoint the source of errors. Make debugging easier by not masking your errors and by not deferring failures until later.
-
Automate mechanics over decision-making. Aggressively automate manual tasks to save yourself time. At the same time, think twice before trying to automate decision-making, which tends to be hard to get correct.
-
Aim for idempotence and reentrancy. These properties make it easier for you to retry actions in the face of failure.
-
Plan and practice failure modes. Building confidence in your ability to recover lets you proceed more boldly.
Invest in Your Team’s Growth
-
Help the people around you be successful. The high rungs of an engineering ladder are reserved for those who make their co-workers more effective. Moreover, the success of those around you will also carry you along.
-
Make hiring a priority. Keep a high hiring bar and play an active role in growing your team.
-
Invest in onboarding and mentoring. The more quickly you can ramp up new team members, the more effective your team will be. The more effective your team, the more freedom you have to tackle different projects.
-
Build shared ownership of code. Increase your bus factor to be greater than one so that you’re not a bottleneck for development. This will give you the flexibility to focus on other high-leverage activities.
-
Debrief and document collective wisdom. Reflect on projects with team members, learn what worked and what didn’t work, and document and share the lessons so that valuable wisdom doesn’t get lost.
-
Create a great engineering culture. This will help you be more productive, streamline decisions, and recruit other strong engineers. You build a great culture by fostering the same habits you need to effectively deliver impact.
Nov 6, 2016 Comments
Link
Супер-пупер крутые статьи для разработчиков - подборка, что оказали на автора, как программиста, наибольшее влияние.
40 ключевых концепций информационных технологий - похожее, но от хабра.
Docker for beginners - прекрасное введение.
NoSQL Databases: a Survey and Decision Guidance - коротко о особенностях NoSQL.
Linux debuggin tools - великолепное графическое руководство.
Google Interview University - детальный план по подготовке к собеседованию.
Awesome Postgres - сборник полезных инструментов для Postgres.
Nov 5, 2016 Comments
Post
Tag:
bookfiction
Вот что бывает, когда недостаточно внимательно читаешь описание. Мне представлялся некий учебник по современному этикету. С экскурсом в историю, регулярными упражнениями и т.д. В общем, всем тем, что должно быть у порядочного учебника. А оказалось, Эми Алкон ведет колонку советов “Ask the Advice Goddess” и весьма известна на этом поприще. Видимо поэтому, самый главный совет книги тоже известный - поступай с другими так, как хотел бы, чтобы они поступили с собой. А все остальные советы производные от этого.
Понравилась часть про этикет в современном городе. Раньше, когда люди жили маленькими поселениями, любая ссора немедленно сказывалась на повседневной жизни. Сейчас же вокруг нас живет очень много людей, и даже если ругаться со всеми подряд, вероятность их встретить еще раз не велика. Поэтому, если познакомиться хотя бы с частью своих соседей, многие проблемы будут решаться просто. Например, громкие вечеринки или ремонт в 8 утра.
Если давать краткое описание - это книга о множестве смешных историй, о том, как Эми Алкон наставляет ближних на путь культурного человека. Например, развешивает фотографии ночных прохожих, писающих на ее лужайке, по всем близлежащим столбам. И, как и положено хорошим книгам, старается сделать мир чуточку лучше.
Заметки:
-
But at the roof of manners is empathy. When you’re unsure of what to say or do, there’s a really easy guideline, and it’s asking yourself, Hey, self! How would I feel if somebody did that to me?
-
You can behave terrible to strangers and have a good chance of getting away with it because you’ll probably never see your victims again. If, on the other hand, that’s your neighbor driving behind you and you flip him off, you’re likely to find a Mount Whitney-sized pile of dog poop on your front walk the next morning. Being around people you know doesn’t just deter rude behavior; it promotes neighborly behavior. In a small, finite community, reputation is a major concern.
-
The Big Three advices:
- Listening
- Empathy
- Dignity (The value in making people feel valued)
-
Fran Lebowitz laid bare the reality of many people’s approach to a conversation: “The opposite of talking isn’t listening. The opposite of talking is a waiting.”
-
Decades of research finds that one of the fastest ways to change how you feel is to change how you behave.
-
Euphemism - a pleasantly vague word or phrase substituted for a harsher, franker on - is the plastic nose and glasses of civilised speech.
-
Flattery is sometimes the greatest form of creeping a woman out.