C compilers transform myArray[i] into *(myArray + i), which is equivalent to *(i + myArray) which is equivalent to i[myArray]. Experts know to put this to good use. To really disguise things, generate the index with a function:This looks like a rather bad joke, but who knows all the ways of C compiler...
int myfunc(int q, int p) { return p%q; }
...
myfunc(6291, 8)[Array];
2011-04-29
C's Eccentric View Of Arrays
2011-04-21
JSR 305 : javax.annotations
Intro on most usable annotations of the JSR 305. And the maven dependency snippet:
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>1.3.9</version>
</dependency>
2011-04-17
Agile Basecamp Ukraine : Impressions/Summary
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).
UPD: So, here's the link to conference presentations on SlideShare. Also I've updated books and ideas section, so check'em out. My personal TODO: compensate for missing presentation on Estimation Techniques.
General Agile Resources:
- Agile manifesto (the very basics);
- Mike Kohn's blog, and his site (evangelist);
- DSDM, Crystal Clear and Scrum-ban (some of adjoined methodologies);
- Chris Avery (team management);
- Tasty Cupcakes (educational games, some of them being Agile-centric);
- Bury Agile, not praise it (one hour of Agile evangelism and top-level discussion).
- User Stories Applied: For Agile Software Development Agile Estimating and Planning (Mike Kohn)
- Continuous Delivery (Jez Humble);
- Scrum and XP from the Trenches (Henrik Kniberg);
- Crush It (Gary Vaynerchuck) - looks like some brain-bender for a startup manager
- Delivering Happiness (Tony Hsieh) - looks like another enterpreneurish brain-twister...
- The Improved Methods;
- DataArt Club;
- ScrumGuides.com;
- Agile Group Ukraine (and the google group);
- Agile Eastern Europe;
- XP Injection.
Some tools which were discussed on the conference:
- redmine (tracker with lots of Agile-ish yummies) - missed some of core plugins though;
- gitosis (some kind of large-scale git management tool);
- jenkins (a fork-off/rebranding of Hudson, was new to me).
- 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... ;)
2011-04-12
Custom Namespaces for Spring Configurations
Well, this feature is explained in the Spring docs (section B.6. Using a custom extension in your Spring XML configuration) and TheServerSide.com had thorough article on that matter:
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.
Authoring Custom Namespaces in Spring 2.0
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-11
Graph Visualization Frameworks
The most extensive list of Graph Visualization Frameworks, ever.
My eye was caught by GINY and Piccolo2D. Looks like GINY might be forked and implemented atop of Trove's, not Colt's primitives.
Well, trying protovis seems to be more promising and effective endeavour, so no forks of GINY, at least for the time being.
2011-04-09
nosql databases, and some cherry-picking hereof
MongoDB, C++: 32-bit servers' datasets are limited by 2.5gb (what a fail...); but you still may look into a review of admin interfaces for MongoDB.
CouchDB, Erlang: review of related projects (several GUIs included). Also there's an approach to build applications directly on top of CouchDB, w/o appserver at all: see couchapp.org. And check the hubsite of the CouchDB related projects (and news).
OrientDB, Java: minimalistic dependencies, might be embedded just like H2, and here's the demo of OriendDB admin interface.
2011-04-08
git init

Pro Git Book (is to Git as Red Bean Book is to SVN)
git-scm – The official git website.
git man pages – In-depth documentation for every git command.
git user’s manual – Concepts and workflows.
git ready – rather hot and relevant tips and hints for using git (I'd already used couple, with having been gitting only for a couple of days).
Also check an extensive list of code hosting solutions on Wikipedia, and Git-supporting hosters list on git.wiki.kernel.org. Also, GitHub has Pivotal Tracker integration, not completely submersive into IDE, but still quite nice to use (quite better then GitHub's issues, even after the recent rewrite).
And this enables colors in the git console output:
$ git config --global color.diff auto
2011-04-07
JQuery : Grid Widgets
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.
And then there're some less mature/up-to-date versions like SlickGrid, GridNic (a clone/stale version of the former one), TableSorter (rather minimalistic), FireScope Grid (outdated, no demo, GPL), InGrid (outdated).
2011-04-06
Hot JavaScript RIA Frameworks
UPD: a bit of a side-note: there's even a Basic RIA platform.
2011-04-05
node.js on the web: full-stack javascript
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.
Sexiest aspect of Node.js is: full-stack javascript.
...or, may all of this just be some massive, distributed april fools fake, just like Google Motion? ;)
2011-04-04
Binary JSON : Java implementations
BSON is a binary representation of JSON. It has gained prominence by its usage as the main exchange and persistence format of the document-oriented database management system MongoDB.
bson4jackson: this library adds support for BSON to the Jackson JSON processor. Tutorial, and JVM serializers benchmark, and, of course, the spec.
2011-04-03
tcp over tcp drawbacks
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.
(c) apenwarr/sshuttle @ gitHub
2011-04-02
Programmer Wetware/Peopleware Books
- The Passionate Programmer: Creating a Remarkable Career in Software Development
- Becoming a Technical Leader: An Organic Problem-Solving Approach
- Peopleware: Productive Projects and Teams
- Brain Rules: 12 Principles for Surviving and Thriving at Work, Home, and School
- A User's Guide to the Brain: Perception, Attention, and the Four Theaters of the Brain
- Mindset: The New Psychology of Success
- Rework
I'll of course try to update this post as soon as I find and read anything of those books, in any readable form.
