Skip to content

Author Archives:

Documenting Python REST API whining

18-Oct-13

A downside of Python dynamic nature is that REST API documentation won’t generate right out of your code, like Swagger does for Java. The best you can get is http://pythonhosted.org/sphinxcontrib-httpdomain/, for which you need to duplicate all of your REST service method signatures in ReStructured text, a format I’m not a fan of. One can […]

Fast Windows JSON pretty-printer

06-Feb-13

Just built a Win32 version of yajl, a comandline C JSON pretty-printer and validator. Viva CMake. Welcome to downoad.

The dead end of Russian software engineer?

12-Dec-12

Ex-USSR has got a great school of engineers. Russia is the 3rd software outsourcing country (market) in the world. Russian (let’s use the name, though I’m Ukrainian, for instance) engineers are very educated and think out of the box. We got OOP gurus, Java buddhas, UI Picassos, Haskell Lamas, agile addicts and tech team management […]

Getting Glassfish stdout logging under control

21-Nov-12

By default, Glassfish does an ugly thing: takes an application’s stdout/stderr and wraps it into its own log with INFO level for stdout and WARN level for stderr. Other logging facility normally log to stdout. In the end, a log entry looks pretty stupidly (and it’s damn multiline!): [#|2012-11-21T11:25:07.225+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=100;_ThreadName=Thread-2;|11:25:07.225 [http-thread-pool-8080(2)] DEBUG c.mycompany.packages.SomeClass – Finally, some […]

Rendering QR codes to SVG

21-Nov-12

Had a hard time rendering a QR-code to SVG. Drawing simple rect-s didn’t work well, visible gaps appeared between bars. I looked for a SVG QR renderer, but apparently neither zxing nor other libraries have a gapless algorithm. There is an online renderer by Kerem Erkan that uses path tag, but the author is apparently […]

Now on free CDN

11-Apr-12

Thanks to Dreamhost, now running on CloudFlare CDN. WP Super Cache happily supports it. BTW CloudFlare got a free plan, and it’s easy to set up so that it doesn’t interfere: Add a cdn subdomain to your hosting; Add your domain to CloudFlare; On CloudFlare, disable CDN for all subdomains except for cdn. Set up […]

Got a StackOverflow careers invitation.

04-Aug-11

They do a pretty cool thing: force you to tell “the truth” — no matter how subjective this term is — as opposed to emasculated official style: what you really did (whatever it means to you); what opensource/published projects did you participate in; Top Stack questions you answered; your professional reading and (sic!) writing. Here […]

Why I don’t like GMock

16-Feb-11

I don’t like GMock. It’s not as if it was badly written or designed. But it lets you to unit-test dirtier code, tying to method call structure instead of resulting data. For instance, this GMock code can be rewritten:

Groovy Comparator for class field names

15-Feb-11

I wonder why this was not in JDK/Groovy Collections. Just put together a Comparator for StackOverflow question – a Groovy Comparator that would sort class field names in the declaration order. Feel free to use: class PropComparator implements Comparator { private Class clazz PropComparator(Class clazz) { this.clazz = clazz } int compare(Object o1, Object o2) […]

Couple of Grails tricks to remember: reload scaffolding and fieldValue formatting

14-Dec-10

Grails doesn’t reload scaffolding on-the-fly if you change local templates. But you can open a Groovy console inside application and run in it: org.codehaus.groovy.grails.scaffolding.view.     ScaffoldingViewResolver.scaffoldedViews.clear() In order to change default g:fieldValue formatting for, say, BigDecimal, have a CustomEditorRegistrar in your resources.groovy, and register custom PropertyEditor: registry.registerCustomEditor(BigDecimal.class, ‘myProperty’,     new OurBigDecimalEditor(BigDecimal.class))

DB2 supports LIMIT and OFFSET syntax, in MySQL compatibility layer…

29-Nov-10

It hasn’t even been a ten years that DB2, one of the most, er, expensive DBMSes, got a feature needed by every other application – dataset paging. Before, you had to use window functions rownumber() and fetch first 40 rows only. When used by Hibernate, this resulted ugliness like: [sourcecode language=’sql’] select * from ( […]

Prim’s allgorithm in Groovy: inspired by Fortran and Java versions

18-Oct-10

A friend of mine defended Fortran against half-literate coders on an example of Prim’s allgorithm. Good pretext for another language comparison. Let’s see Groovy vs Java vs good old Fortran. Great Fortran implementation Great Java implementation by Bruno R. Preiss, P.Eng. and scientist. Some beginner’s C+ implementation (or is it just a link farm? Whatever). […]