2011-10-07

I've lost several evenings of configuration tweaks and chat logs after getting into this with my upsized truecrypt volume couple of months ago. I've created a password for the volume, rebooted, entered the password once and was flipping my netbook in-out of sleep for couple of weeks. And then I've rebooted once again and... see below for details. The next password was shorter, but I managed to forget it too, was bruteforcing it for couple of nights with simple bash script.

UPD: another page with language performance comparison (russian). A thought aside: there's no benchmark for green threads with in-process scheduling (which should look like load testing), where V8 and Erlang would shine.

2011-07-20

I'd recommend this informal intro into Erlang. Was quite nice for me till the moment author got into building Finite State Automata upon OTP. The examples in that section were brain-melting and I definitely lost the thread of author's thought (either none or massive bunch were present there at the moment). Some of the pictures have quite nice humorous messages encoded in the alt, so hovering them relaxes you a bit here and there. Nice idea.

And another trend worth checking. This of course is a gross oversimplification but the direction is more or less clear. Scala is not a programming language for Google, it's the theatre or something, so no Scala trend for you in there.

P.S. I have some extra links into realm of Erlang so stay tuned if you're interested.

Most language teachers do not require their learners to read much. Instead, they consider extensive reading as somehow supportive, or supplemental and rarely they set fluent reading for homework. This chapter has argued that it is fundamental mistake to consider sustained silent reading as supplemental, or optional. Extensive reading (or listening) is theonly way in which learners can get access to language at their own comfort level, read something they want to read, at the pace they feel comfortable with, which will allow them to meet the language enough times to pick up a sense of how the language fits together and to consolidate what they know. It is impossible for teachers to teach a “sense” of language. We do not have time, and it is not our job. It is the learners’ job to get that sense for themselves. This depth of knowledge of language must, and can only, be acquired through constant massive exposure. It is a massive task that requires massive amounts of reading and listening on top of our normal course book work.

2011-06-17

We've been burned by this while trying to mix easymock expectation with a constant String value.

The way to avoid these problems is to decide not to use EasyMock at all, instead creating your own hand-rolled doubles. And if you decide to use EasyMock in your project, ...

* Make sure at least someone on your team understands how EasyMock works under the hood.
* Be aware of EasyMock’s all-concrete or all-matchers requirement, and that violations of this requirement can be violated by automated refactoring.
* If you use EasyMock matchers, make sure that they are produced while marshalling the arguments to call the mock method, and not beforehand.

2011-05-19

Doing good work, on time and within budget, is only the starting point. Here are some ways to really shine, and foster a longer-term collaboration:

Contribute ideas. Go beyond the call of duty. When you can suggest improvements, either for the immediate task at hand or to complement the employer's efforts in general, you show that you brings ideas and initiative, as well as technical skill.

Beat deadlines. The employer wants to feel like he's getting more than he's paying for, so you want to surpass expectations whenever possible. Coming in ahead of schedule is a no-cost way to impress.

Be responsive and available. You're not there in the same office, but do your best to prove that distance is no challenge. This can mean checking your emails outside local "business hours," and finding other ways to minimize the impact of time zones on your relationship.

Earn trust. If you don't know how to do something, admit it. If you're eager to tackle a challenge, but lack the experience, tell the employer — he may give you the go-ahead, but being honest upfront will keep expectations realistic and help him make a smart decision about assigning the work.

Communicate smoothly. Sometimes emails between you and your employer may be unclear, or seem negative. Work to fix communication issues early on. You want your employer to view communicating with you as a pleasure, not a chore.

Be "low maintenance." The employer gives you work to make his life easier, to get it off his plate. Try to get all the information you need early on in the assignment phase. Never hesitate to ask followup questions, and give progress reports at the expected intervals. But try to get everything you need up front to make the employer feel like working with you is an easy choice.

2011-05-06

2011-05-04

So what should a developer job interview look like then? Simple: eliminate the exam part of the interview altogether. Instead, ask a few open-ended questions that invite your candidates to elaborate about their programming work.
- What's the last project you worked on at your former employer?
- Tell me about some of your favorite projects.
- What projects are you working on in your spare time?
- What online hacker communities do you participate in?
- Tell me about some (programming/technical) issues that you feel passionately about.
These questions are designed to reveal a great deal about the person you have in front of you. They can help you decide whether the candidate is interested in the same things as you, whether you like their way of thinking, and where their real interests lie. It's tougher for them to bullshit their way through here, because the interviewer can drill deeper into a large number of issues as they present themselves.
What about actual coding ability? Well, take a few moments after the interview and look into some code the candidate wrote. Maybe for an open source project, maybe they have to send you something that's not public, doesn't matter. Looking at actual production code tells you so much more than having them write contrived fiveliners on the whiteboard.
I'm sure you can come up with even more questions and other ways to engage the interviewee. At this point, pretty much any idea will be an improvement.

I don’t think there is one right developer interviewing technique. It is worth mastering a variety of interviewing techniques and then adjusting based on the job requirements, team composition, manager style and company culture.

Here is an initial (incomplete) list. I’ll update with new content from comments & conversations.

2011-04-17

In general: conference was quite positive emotionally and mostly light on the brain (almost no complex theories/metrics/formulas out there). Lots of interesting edutainment-like report formats and talk-provocative meetings. The place was also quite nice, I regret I did not take any photos while being there.

DataArt's after-party rocked, that's for sure: but I did not really see any technical (or at least PR) report on the company's projects/teams/positions itself, which would fit quite nicely (at least) into the Open Space section (I guess).

Nice ideas having crossed my mind while I was listening (no particular order here, too):

ROI metrics / Survey integration: which basically means that customer feedback surveys are aligned with sales so we (roughly speaking) are able to estimate profit we get for each vote on any particular feature

Web-version of Scrum/Kanban board for a distributed team: oh this all really has something to do with HTML5, like that Spaaze project I've recently seen; just do that thingy via HTML5, and cast it off to the wall with a projector or wide plasma or something...

Start-up evaluations / Vision brainstorming: I really liked that presentation on Vision elaboration and would use that on any of my ideas before I start designing or coding.

free HTML5 mindmapping (yeah, ditch java from this domain, at last): well, I am late as usual: mind42, bubbl.us, MindMeister;

some time tracker/todo manager startup which beats RTM? The main idea is that if your application is quite well-profiled you may bite reasonable share of a crowded market: I'd recently searched for these applications and still have no proper solution: I'd like to see Hamster being cross-platform and having the Pomodoro features of workrave;

switch my lecture style to this Lightning Talks format: some of lectures, at least course section intros/outros would be quite engaging/igniting the students to work on the course... ;)

Please note that these two files should be present in the META-INF directory of your JAR. In fact, if you open the spring.jar under the META-INF directory, you can see the details of all the schema and handlers for the namespaces that comes with Spring.

Couple of extra hints: as your project in most cases should run fine from an IDE, you'll have to pre-bundle a jar with at least those two files (spring.handlers and spring.schemas) in META-INF (no other way to do that w/o packaging a custom jar on each run). And, notice that spring.schemas uses schema location as an url, not schema URI.

2011-04-07

JQuery has quite elegant syntax and rock-solid core, but the UI extensions are rather weak when compared to some of other JS frameworks. There was some recent progress in the UI's Grid (completed zero-feature grid phase, with proper ThemeRoller support, but no sorting yet).

As for third-party Grid plugins, Datatables is still one of the most stable and well-designed (at least you may sort visible column by a hidden one, for example), but there's no editors, column resizing and DnD. Then you have that jqGrid plugin, which, while being quite feature-bloated (also includes editors), does not allow for the same degree of controll over sorting as Datatables permit. FlexiGrid is quite promising: looks like not so well-documented middleground between Datatables and jqGrid.

2011-04-06

Yahoo UI already hit version 3 release, and node.js-compatible version lurks in betas out there. GWT requires java and does not hot-swap/recompile easily, but is indeed a good option. Actually some companies try to build on top of GWT: SmartGWT and Vaadin. It's quite an experience seeing each of them comparing against the other with an opposite conclusions (see this and this). Both of libraries are dual-licensed. Also there's Intelligent Expert JS framework, which is also dual-licensed, but builds on top of JQuery instead of GWT.

And of course you would not want to miss Comparison of JS Frameworks on Wikipedia. The table on that page just does not fit my screen, which is quite a fact for me. Quite interesting profiling results for selectors of aforementioned frameworks might be generated via SlickSpeed selector test.

Other interesting demos out there: Ample SDK, QooXDoo, DojoToolkit, among those frameworks I did not find decent Grid component, which is a no-go for me, but they're still worth looking through.

2011-04-05

Then we have a decent web-framework for Node.js, named express, and wiring/interop extension for it: connect; and meta-model for CSS generation SASS, HTML templating engine JADE, and... metalanguage for JS itself: CoffeeScript (frankly, this blew me away when I found that one).

I think it should be quite possible to grab third-party site page, introspect the page via JS DOM API, squeeze the data out by just the same JS, and serve the data out.

As for any ports of jQuery or some of its plugins, like jquery-tmpl or solr - this looks to be quite possible, but I am not sure whether this would be needed given the vastness of the current stack solutions.

2011-04-03

But you can't safely just forward TCP packets over a TCP session (like ssh), because TCP's performance depends fundamentally on packet loss; it must experience packet loss in order to know when to slow down! At the same time, the outer TCP session (ssh, in this case) is a reliable transport, which means that what you forward through the tunnel never experiences packet loss. The ssh session itself experiences packet loss, of course, but TCP fixes it up and ssh (and thus you) never know the difference. But neither does your inner TCP session, and extremely screwy performance ensues.

2011-03-29

Java developer and Eclipse enthusiast Yannick Saillet offers this comprehensive, hands-on guide to porting a Swing application to SWT using extensive code samples to illustrate the techniques. This tutorial is very comprehensive and will require significant time to complete. However, it serves as excellent reference material.

2011-02-26

Oh those guys rock. They've just put @Beta on the Beta itself, which is kinda showing that they have some wits but is practically useless.

Well, this is something like: "we'll mark some other entities in the project as to-be-soon-removed, including the marker itself, so - essentially, long term - the marker, our message and all relations thereof are void, there's nothing written here (long term, mind you, dumbo)".

...and this, as usually, is doomed to stick around for years, literally...

2011-02-21

I had to convert ssl private key + cert chain from the format nginx understands to a format which jetty/tomcat understands.Sounds pretty simple, but... well, I'd come up with so many ways to break the certificate chain that it deserves a separate post of its own.

2011-02-14

Well, is there a high-performance graph library for working with primitivies, without those generics/autoboxing overheads? For double lists you may use trove, for linear algebra you may use netlib-java (examples for you to better understand the point of my interest in this question).
As for Graphs/Networks: all the libs I've found use generics and should be not that performant. I may as well do some tests for that, but I believe that heap-managed network link weights would be inferior to double[] with some bit offsets to get the index for i and j. The usage scenario: there're hundreds of such networks (most of them sparse) of size 4k*4k, there's some genetic optimization running over that set of networks, which do some flow/min route estimations for each specimen.
So, there're: JGraphT, JUNG, ANNAS (the links lead to the APIs/code samples which expose the miserable Java Generics in all of them). Are there any Trove-ish alternatives? I'd already created some simplistic implementation, but just decided to look around to avoid inventing the proper bicycle...
PS: Please don't start on performance of generics-laden Java code, at least without linking to some decent benchmark, ok? ;)

Kinda short review/notes on the Cornell's book I'd been referred almost a year ago (download, amazon).

Well, I was able to read 13 chapters of 24. Then the authors got to the structure of the web, heavy tails and small worlds, which are quite more familiar for me - so I started skipping.Percolations and spectras were discussed at mere basics, so there was nothing quite new/interesting for me in the book, though some of game theory was quite a nice refresher.

The gross volume of the material does not deserve 800 pages: some of the general whatnot should be evicted from the book, especially in the beginning chapters.In most cases couple of formulas are quite sufficient and should not be duplicated by two or three paragraphs of redundant examples (or at least some styling should denote those "for-dummies" sections).

BTW: chapter 23 on politics and state seems to be of some marginal interest. No explicit discussion of networked warfare in there, so...

2. Unpack that distro to some convenient public place where you store your development tools.
Something likec:/java/maven_302
would be perfectly fine - short path without any spaces...

3. Then we have to ensure that main maven executable,c:/java/maven_302/bin/mvn.ban
is seen in the PATH (so you're able to run it from any other folder)
We do this simply by hitting Win+Pause and switching to the Advanced Tab and hitting Environment Properties:

Then you choose the PATH property (global, not a per-user one), and edit it away as shown:
Now couple of OKs and you're mostly done, hopefully.

4. Now fire up a command prompt (on most systems this would be win+r cmd <return>).
It should not really matter which current directory you use. Just run the commandmvn -version
this should report something aligned with the version you've downloaded and installed.
This should actually be quite like that my linux maven installation says to me:

5. Of course, you ask me next - "Okay, so we installed that thing, but how do we use it?"...
Well, don't close the console you've fired in the step #4. Just change the current working dir to the location of your maven project, and fire one or another magical command from the list below:mvn clean package - do a full clean build of the project, fetching the libraries off the public internet repository, run a basic set of project unit-tests...mvn dependency:tree - just check which submodules use which librariesmvn site - generate project documentation
Oh, and note that simple cd command won't switch you across system disks in windows. You need to issue d: command to switch current directory to disk d: and so forth.

2011-01-13

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.