воскресенье, 17 мая 2009 г.

Ссылка. Tell me about your work / life balance, Are you happy?

Интересная дискуссия о жизни программиста и о счастье. Меня особенно зацепил первый комментарий в топике, который я привожу в цитате.
Читать оригинал: Tell me about your work / life balance, Are you happy?

I go into work, screw off for a few hours, get some programming done after lunch, go home, work on code well into the night fueled by vault. 4 AM rolls around, I go to bed, wake up at 10, go back into work...

Weekend comes, I wake up at 5 or 6 PM on Saturday (have to make up for the lost sleep during the week), I play some games, do some work, maybe go out and play pool or hang out with friends, or get drunk, go to bed at noon. Wake up at 5 or 6 PM Sunday, get to a good stopping point on work.

Each of these days I pretty much eat fast food and my body hates me for it. I drink way too much soda, smoke way too many cigarettes. Each week I work 40 (reported) hours because no overtime is allowed, but in reality I work closer to 70 hours just to give everyone the idea that I'm this amazing programmer who can get things done.

I used to weigh 155 before I started programming again, I was lifting weights regularly and I lived for the outdoors. Now I stay inside all the time, I'm 25 lbs heavier - which is still ok (but not great) for a 5'11 guy, but I have absolutely no energy and I always feel tired.

I'm enjoying the programming immensely, but since where I work is staffed 99% male with all the females in another area, I don't get many opportunities for meeting women. It blows. I go to a bar and all of the women there are mid to late 30's and I'm only 28.

I make decent money, maybe not for a programmer, but pretty good compared to all of my friends from high school, but I sock 75% of it away and drive a car that costs less in total than most people's yearly insurance premium.

My life is severely dysfunctional. There is no order to it whatsoever, it's entirely chaotic. I am well past the stage of burnout, I'm missing out on life. I've never gotten laid; though I talk to some girls regularly and I can't really push myself to try for more than friendship.

My social life is pathetic. I know of only 3-4 people I hang out with who aren't from work. All in all, I'm happy with the work, but I find the rest of my life deeply unsatisfying.

I don't know if this is a typical programmer experience, but there you have it.

среда, 6 мая 2009 г.

Наследие от MS-DOS. Какой ваш логин [%_username_%], случайно не COM1?

Интересную багу сегодня нашли. Наверное, все знают, что имя пользователя не должно содержать таких символов как <, ?, >, * и т.д., потому что при регистрации профиля пользователя, для него может создаваться папка, куда будет складываться различный файлы по типу музыки, фоток и т.д.
Но, наверное не все знают, что имена папок, такие как com1, com2 … com9, lpt, con, nul, aux и другие запрещены, потому что эти имена зарезервированы MS-DOS и Windows. Это имена устройств.

А как поведет себя ваше приложение, если пользователь с именем com1 будет создан в БД, но при создании папки для его профиля произойдет ошибка? Хорошо еще, если все неприятности закончатся на 404-й ошибке при попытке запросить данные из папки его профиля. Вы проверяли?

вторник, 5 мая 2009 г.

Учишь? Меня? Но я ведь Эксперт!

Ты был кодером на протяжении нескольких лет, возможно, даже десятилетий. Ты нашел успешную работу, зарабатываешь достаточно денег. Ты знаешь «респектабельные» технологии, которые так востребованы на рынке труда: C++, C#, Java и т.д. И тебе без надобности учить что-то новое. Оставайся в своей зоне комфорта. Бери пример с этих парней:
"Я думаю, что весь мировой рынок состоит приблизительно из 5 компьютеров."
- Thomas J. Watson, Председатель Совета, IBM, приблизительно 1948

"Кажется, что мы достигли пределов того, чего возможно достигнуть в компьютерной технологии, хотя нужно быть осторожным с такими утверждениями, поскольку они имеют тенденцию казаться довольно глупыми через 5 лет."
- Джон Von Neumann, приблизительно 1949

"Но, где это можно будет использовать?"
- Инженер в Advanced Computing Systems Division of IBM, комментируя микрочип, 1968

"Нет никакой причины для любого человека иметь компьютер в своем доме."
- Кен Olson, президент, Digital Equipment Corporation, 1977

В самом деле, мудрые слова.
Ты должен учится, когда ты знаешь, что не знаешь достаточно. Легко взять книгу, когда ты чувствуешь неуверенность в собственных знаниях. Но, опасней всего, когда ты действительно думаешь, что знаешь достаточно. Программирования (как и вся компьютерная наука) походит на бег Красной Королевы: ты должен бежать с такой скоростью, с которой только можешь для того, чтобы оставаться на своем прежнем месте.

  • Когда ты в прошлый раз покупал или брал почитать техническую книгу?
  • Когда ты в прошлый раз покупал или брал почитать техническую книгу, и затем читал ее?
  • Когда ты в прошлый раз покупал или брал почитать техническую книгу, и затем читал ее, и при этом она не имела непосредственного отношения к твоей работе?

Уходи из своей зоны комфорта. Признай свое незнание. Изучи что-то новое. Изучи что-то бесполезное, чтобы в следующем году ты мог бы назвать это бесполезным. Не говори мне, что все, что ты знаешь сейчас – это все что тебе необходимо знать вообще. Не становись цитируемым в моем следующем списке.

Если вам понравились цитаты, то их можно почитать еще и это: A Double Handful of Programming Quotes

Оригинальная статья: Learning? Me? But I’m An Expert
Перевод: Дмитрий Жарий

среда, 29 апреля 2009 г.

Silverlight: Открываем Насыщенные Интернет Приложения для мира Open Source


Silverlight: Enabling Rich Internet Applications for the Open Source World.
Да, вот скачал себе туториал на 44 странички с таким вот громким названием. В общем то, туториал не плохой, поэтому его и рекомендую. Рассказывает, как создавать приложения на Silverlight без Visual- и прочих студий, а на родном, для Java-разработчиков, Eclipse.

Книга бесплатна. Скачать вы ее можете вот отсюда, но пройдется пройти процедуру регистрации на сайте. Поэтому, скачать книгу можно также с моего Яндекс.Диска.

воскресенье, 26 апреля 2009 г.

Английский язык, как же его fucking сложно изучить

Когда я учился в школе, я любил уроки английского языка. Сравнительно с другими предметами, я почти всегда делал домашние задания и, следовательно, мог похвастаться своими оценками, начиная с 5-го класса. В общей сложности, как обычный школьник, а потом и в колледже, я изучал английский на протяжении 10 лет. Тогда было много свободного времени, часть которого можно было посвятить на чтение англоязычной книги, мануалы по какой-нибудь технологии в программировании и т.д.
Но, когда я устроился на работу, понял, что нихрена то я и не знаю английского языка.
По крайней мере, очень сложно понять разговорный английский, общаясь с американскими заказчиками. Я понимал слово через десять, и приходилось связывать эти 10% распознанного текста какой-нибудь своей логикой, чтобы ответить что-то в тему.

Через год, я понял, что, в принципе все не так сложно. По работе мы, как оказалось, общаемся шаблонами. Когда слышишь или читаешь одну и ту же шаблонную фразу несколько раз, то поневоле запоминаешь ее, и уже используешь самостоятельно:
“This bug is reproduced…”, “An exception has occurred”, “At this point [%some behavior here%]”.
Проработав уже более 3-х лет над одним и тем же проектом, я хорошо понимал устный английский заказчика, мог вести электронную переписку и иногда вставить свои 5 копеек в устной форме, при разговоре по Skype, например.

Но, к сожалению, все таки, к большому сожалению, такие живые общения Skype, или в лучшем случае, когда приезжает заказчик, проходят очень редко. А ведь они дают тот необходимый толчок для совершенствования языка. Нет, обычно все вопросы решаются по e-mail. Это очень сильно экономит время, но не дает мне лишний раз попрактиковаться в английском.

Проблемы


  1. Основная проблема в том, что на изучение английского не хватает желания, если хотите, то не хватает грубого пинка под зад. Кто сказал что я не понимаю английского? Я прекрасно понимаю, что там написано на MSDN или на CPAN. Я отлично ориентируюсь в том чего от меня хотят, и могу объяснить, что я буду делать в переписке по ы-мейлу. В устной форме я могу связать 3 слова, и помочь себе жестикуляцией. Кроме того, устным английским мне приходится пользоваться очень редко.
  2. Не хватает времени. С одной стороны, тут все таки больше желания опять таки не хватает. Ну не могу я посвятить кучу времени на изучение английского. Лучше я какую-нибудь книгу умную почитаю, или разберусь с какой-нибудь интересной технологией, или напишу что-то свое. Не могу я выделить время и в будние дни, чтобы ходить на курсы по английскому – мне работать надо.
  3. Не хватает практики. Ну, хорошо, вот изучу я английский, и с кем я буду общаться? А если не буду общаться, то деградирую нафиг и забуду все.


Решения


Пинком под зад для меня служит тот факт, что английский просто необходим для моего дальнейшего профессионального роста. Английский открывает множество дверей, в том числе и на западный рынок, где и крутится большая часть IT-шной работы и IT-шных зеленых денег. Возможно через пять лет я открою свое дело, либо буду работать удаленно, так почему бы мне прямо сейчас не подготовить необходимую базу для общения с заказчиками?

Что же касается нехватки времени, тут все очень просто. Ну, по крайней мере, я считаю, что все очень просто.
Дело в том, что у нас, обычных людей, есть целая мусорного времени:
  • Когда мы едем в поезде/метро/маршрутке на работу и с работы. Сколько времени теряем? Я теряю 1 час в день, т.е. 5!!! часов в неделю.
  • Когда ничего не хочется делать, когда просто устал и развалился перед телевизором или лег отдохнуть.
  • Когда делаешь тупую рутинную работу, не требующую полного вмешательства мозга.

Как не дать пропасть этому времени попросту? Слушать аудио записи. Подкасты или специализированные курсы для изучения английского языка.
И это действительно работает. По крайней мере, это самый эффективный метод изучения английского для лентяев.

При этом, все те аудио материалы которые я слушаю, можно разделить на следующие категории:

ESL – English as a Second Language, рассчитаны специально на слушателей, изучающих английский:

English as a Second Language Podcast
Самый известный ресурс. Обновляются очень часто. Аудио материалы бесплатны и очень хорошего качества.
Слушать: ESL Podcast 472 – Feeling Nervous About Public Speaking


Fun English Lessons
Это действительно веселые подкасты. Очень рекомендую. Слушаю их обычно утром, чтобы поднять настроение перед работой.
Слушать: 119 - E-Commerce


Преимущество этих подкастов в том, что они не устаревают, я скачал себе весь архив и слушаю каждый подкаст.
Характерной чертой ESL подкастов является то, что на «простом» английском объясняется более сложный английский. Кроме того, в ненавязчивой форме рассказывается про культуру и жизнь американцев, что, несомненно, помогает понять их лучше.

Подкасты по программированию и IT, рассчитанные на англоязычного (или около того) слушателя:
Следующие подкасты посвящены IT и программированию, поэтому, в принципе, их не так и сложно понять. С другой стороны, там рассказывается о новинках и интересностях, происходящих в мире разработки программного обеспечения:

SE-Radio
Слушать: Episode 133: Continuous Integration with Chris Read


The Command Line Podcast
Слушать: TCLP 2009-04-22 Interview: Jonathan Zittrain


Deep Fried Bytes
Слушать: Episode 30: New Ideas for the Web with Thomas Krotkiewski


Herding Code
Слушать: Herding Code 43: Javier Lozano on the "M" in MVC


Из русскоязычных подкастеров, которые помогают нам изучить английский и найти смысл жизни американцев ;), я хотел бы выделить следующие:

В первую очередь, это Будам. Этот человек живет в Америке, и очень много рассказывает про американский образ жизни в своей ленте За cool жизнь.
Слушать: #85 American Woman


И рекомендую ленту career_english Влада Воробьева.
Слушать: Russian-english typical phrases and expressions - THINK


Кроме подкастов, когда нужно убить время, а полезного ничего делать не хочется, я смотрю англоязычные фильмы с англоязычными субтитрами. Во-первых, я могу посмотреть новый фильм, не дожидаясь пока фильм появится в русскоязычном переводе. Во вторых, я запоминаю, как американцы произносят те или иные фразы, и могу подсмотреть на субтитры, когда начинаю теряется в длинных фразах. На самом деле, польза от такого просмотра довольно ощутимая, но на просмотр тратится довольно много времени: от часа до двух. И лучше всего смотреть такие фильмы перед сном или в том время, когда ну очень не хочется что-то делать.

Секретное, самое мощное и самое сложное оружие


Это перевести какую-нибудь англоязычную статью. На самом деле на перевод небольшой по объему статьи, можно потратить кучу времени. Основную сложность тут составляют так называемые идиомы, ведь дословно каждое слово переводить нельзя! Вот и тратишь время на распознавание этих идиом и гугление значений, чтобы не получилось, как в старом анекдоте:
В российской глубинке фестивальный показ зарубежных фильмов.
На экране идет американский фильм...
Герой на экране:
- How do you do
переводчик:
- Как вы это делаете?
Ответ:
- It's all right
переводчик:
- да все правой,правой.

понедельник, 20 апреля 2009 г.

Красота string.Empty или скорость“”?

Для разработки небольшого парсера, решил вынести все значения ключевых слов в конструкцию switch. Так как пустая строка также предусматривается, то решил воспользоваться гламурным string.Empty в кейсе:

static void Main(string[] args)
{
string token = " ";
switch (token.Trim())
{
case string.Empty:

break;
}
}


Я очень удивился, когда компилятор выдал ошибку, что в строке
case string.Empty:
требуется констанотное вырожение.
Лезем в Object Browser и смотрим декларацию string.Empty:

public static readonly string Empty в классе String.

Почему не константа?! Может быть, есть какое-то сверх объяснение, связанное со сверх оптимизациями и прочей магией?
Погуглив на это тему, обнаружил замечательную статью:
string.Empty Example and Issues in C#
Оказывается, что даже при использовании в конструкции if, сравнение со string.Empty работает в два раза медленнее, чем с константной пустой строкой "":

=== string.Empty benchmarked code ===

if (string.Empty == null)
{
throw new Exception();
}

=== Constant string benchmarked code ===

if ("" == null)
{
throw new Exception();
}

=== Benchmark results ===
Second loop was completely compiled out before runtime.
1000000000 iterations.

string.Empty loop: 637 ms
"" loop: 319 ms [faster]


Я не отказываюсь от использования string.Empty, но теперь призадумаюсь о том, стоит ли использовать такую запись пустой строки на конкретном участке кода.

среда, 15 апреля 2009 г.

Слушаем C Sharp ;)

Так вот, какой ты, C Sharp ;)

Кстати, таки не плохо поют ;) Послушать: C-Sharp Band
 

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc