2011-01-24

New JQuery / Java / Scala Trails

CRUD using jQuery and Codeigniter - did not dig into this one, just a memo
Scala for Java Refugees - really nice brain-savvy intro
Java concurrency bug patterns for multicore systems - did not go either, but looks quite promising
The busy Java developer's guide to Scala - looks to be heavier and more FP-oriented

2011-01-21

MySQL dummy mode

Команда mysql --help | less выдает такое замечательное:
-u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
То есть, легко ошибиться и написать не -u, a -U, что как бы намекает... :)

2011-01-19

О стратегиях управления

Очень внятно написано по поводу того что не автоматизация, технологии или монады перегибают ситуацию к успеху, а банальные рукопашные рефлексы, знание оперативной обстановки и хорошая голова в штабе.

1. Необходимо иметь либо работающий макет приложения, который устраивает заказчика, либо глубоко разбираться в предметной области и знать, что же требуется, а еще лучше – и то, и другое.
2. Хорошее знание инструмента, который используется при реализации – на первый взгляд представляется чуть ли не самоочевидным.
3. Единоначалие. Понятно, что должно быть одно ответственное лицо (или небольшая группа лиц). В реальности нередко оказывается так, что каждый реализует свой участок работ, совершенно не интересуясь тем, что производится на других, и основной своей задачей видит не качественную реализацию, а как бы поскорей спихнуть.

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

И вот это стоит привести полностью, без купюр.

1. Ни в коем случае не формулируйте цели проекта, не расставляйте их приоритеты и не связывайте их со стратегическими целями и приоритетами организации.
2. Подключите как можно больше людей, но не определяйте их роли.
3. Оттяните на самый последний момент планирование того, когда, как и какими ресурсами проект будет реализован.
4. Всеми силами избегайте мозговых штурмов, открытых обсуждений, общих встреч и любых коммуникаций между участниками.
5. Изначально перекройте участникам проекта доступ к информации о его статусе, принятых решениях и ключевых лицах, принимающих эти решения.
6. Не учитесь на ошибках прошлых проектов, не анализируйте риски, не учитывайте возможных изменений в стратегии.
7. Игнорируйте любую инициативу “снизу” и, тем более, вопросы мотивации участников проекта.
8. Ничего не фиксируйте и не документируйте.
9. Начните с широкой пиар-активности с минимумом конкретики.
10. При старте проекта назначьте отвечать за него за него того, кто не участвовал в планировании проекта (если уж вы уже допустили такую ошибку как планирование)
11. Поощряйте решение краткосрочных задач, отражающих локальные интересы разных участников проекта.
12. Помечайте как можно больше вопросов как “tbd” (to be defined)
13. Не думайте о том, как еще можно добиться поставленной цели “завалить проект”, это может привести вас к ненужным сомнениям по любому из предыдущих 12 правил.

2011-01-17

Опасности изучения Java

Сложность этих курсов просто ошеломляющая. На первой лекции вы целиком изучаете Scheme, и теперь вы можете быть посвящены в работу функций, работающих с неподвижной точкой, которые используют другие функции на входе. Когда я смог побороть такой курс, CSE121 в Университете Пенсильвании, я увидел, как много, если не большинство, студентов так и не смогли это сделать. Материал был слишком сложным. Я послал по электронной почте профессору длинное письмо, полное рыданий, говорящее о том, что Это Просто Нечестно. Кто-то в университете, должно быть, услышал меня (или одного из других жалобщиков), потому что теперь на этом курсе изучают Java. Теперь я бы предпочёл, чтобы меня не услышали.
...
Ничто в образовании, построенном полностью на Java, не отсеивает студентов из-за недостаточной гибкости их мозгов для понимания этих концепций. Как работодатель, я вижу, что 100%-Java школы начали штамповать выпускников курсов CS, некоторые из которых просто недостаточно умны для того, чтобы работать программистами с чем-то более замысловатым, чем Ещё Одно Бухгалтерское Приложение На Java, хотя они и управились со скрипом с «современной-упрощённой-для-тупиц» курсовой работой. Эти студенты никогда не справились бы с курсом 6.001 в Массачусетском Технологическом, или с CS 323 в Йеле, и, честно говоря, это и есть причина, почему, с точки зрения работодателя, диплом Массачусетского Технологического или Йеля имеет больший вес, чем диплом Дюка, который недавно стал Полностью-На-Java, или Penn University, который заменил Scheme и ML на Java, пытаясь преподавать на ней курс, который когда-то почти убил меня и моих друзей, CSE121. Дело не в том, что я не хочу нанимать умных ребят из Duke или Penn — я нанимаю их — просто мне гораздо сложнее понять, кто они. Раньше я мог сказать, что парень действительно умён, если он за несколько секунд может разобраться в рекурсивном алгоритме, или реализует функции, манипулирующие связными списками на основе указателей, с такой скоростью, с которой он может писать на листе бумаги. Но в случае выпускников школ Java я не могу сказать, имеет ли претендент проблемы с этими задачами, потому что у него просто не хватает соответствующего образования, или потому, что у него нет соответствующей части мозгов, необходимой для отличной работы в качестве программиста.

2011-01-13

Tools update

Freemind has been forked off to Freeplane. Not sure which project is better, but I guess the *plane deserves looking into.
Currently I have some troubles with Freemind as our team moved to 0.9.1 while I am still using some 0.8.x release (ubuntu repos do not offer me any newer ones).
Well, I am not that sure that Freeplane would help me with that version clash, but it's still worth a try. 

CodeBubbles : one of the weirdest Java IDEs I've ever seen. I was thinking towards something similar, yeah (as many others of course did)...
This looks quite like some middle ground between textual and visual programming language representations. Some visual weirdos were proposed in academia but AFAIK none survived to wider use in the industry. At least there was a great taxonomy of PLs in wikipedia and a dedicated section on the visual PLs, which is an interesting read. Personally me thinks that some notation change might be very promising, as text does not scale up well, especially for specifications, code or any other interdependent, non-linear structures. This is of course completely open-ended area, with lots of usability/cognitive/ergonomics factors to take care of...

And of course the new Idea 10 is out. I'm a bit reluctant to upgrade as my licence to Idea 8 (which turned to be free license to Idea 9) would be kinda useless. Oh, I just shall wait till JetBrains offers a free upgrade to 11 from 10! Maybe some Scala or Velocity plugin upgrade would force me, but, the new 10 looks quite nice anyway, with lots of polyglot syntax closures and so on and on and on...

As for free project hosting: there's a BitBucket project which offers roughly as much as Unfuddle does, but with limit of 5 accounts not 2. Maybe BitBucket has only Mercurial support, while Unfuddle has git/SVN support? Not sure this is an issue though (for noobs hg/git is more demanding log-wise while svn is less forgiving merge-wise). Another consideration: BitBucket offers free unlimited hosting for OSS projects, while Unfuddle does not. BTW, Revelation (quite simple password management app) uses BitBucket, too. And yes, I know about assembla and google code options.