HNHacker News
TopNewBestAskShowJobs

timclark

903 karma · joined January 17, 2008

submissionscomments
timclark··on Better Java – Resources for Writing Modern Java
I consider Jersey to be a good example of what is wrong with Java. Annotation driven APIs don't really lend themselves to composability - sparkframework, vertx or ratpack are much better ways of building REST apis with Java 8.
timclark··on Amazon Web Services in Plain English
"It's like: Stacking cash on the sidewalk and lighting it on fire"

Is an accurate description of a large number of products that I have been forced to use after various CTOs have played golf with a vendors sales team.

timclark··on DDD, Event Sourcing, and CQRS Tutorial
I think a lot of what you are mentioning comes down to the implementation of CQRS / ES being used not fundamental flaws in the approach.

CQRS doesn't force you to build a distributed system. It doesn't make you use eventual consistency or asynchrony but provides them as options.

For example the system I worked on had synchronous command handling with a mixture of synchronous and asynchronous subscribers. This allowed us to use eventual consistency where it was appropriate and for all clients to be immediately aware of problems.

timclark··on DDD, Event Sourcing, and CQRS Tutorial
I am not buffoon but I have used CQRS with event sourcing for a reasonably large system written and maintained by around 10 developers. Additionally I have used event sourcing without CQRS on two other systems.

I found the cognitive load to be less than with other service based architectures I have worked on. I could jump into any area of the code base and because of the naming conventions for commands and events I could see what was going on - this has never been my experience with a service oriented architecture.

The main change in developer thinking that is necessary is that you don't record state you record state transitions. Once that is internalised development is easy, a new feature requires new commands and handlers, new events, new queries and an updates to aggregates.

I had absolutely no problem with cross cutting concerns - security for example was handled in command handlers where needed. Other system components of our system that didn't use CQRS - for example reporting, general ledger, third party integrations - received data from the event stream and injected commands back into the system. So in no way was our organisation infected by CQRS / ES.

timclark··on Ask HN: Has anyone here programmed in Kotlin? What do you think about it?
I have used it for a small amount of production code in a mixed Java / Groovy codebase coded using Intellij and Kotlin version 0.11.

Kotlin worked well - clear concise code, no null worries and no cast worries.

It is peculiarly refreshing to know that my code won't even compile if I try to call a method on null and that Intellij will underline the code in red and suggest a fix.

At the time I was using it I would say the quality of some of the code in the Kotlin API was questionable - specifically the jdbc code. I used the parts that seemed sensible and wrote additional code to provide the functionality I needed. I don't think that code is even in the standard API anymore.

timclark··on Go has a debugger and it's awesome
You can use gdb - https://golang.org/doc/gdb
timclark··on Java Micro Frameworks
Ratpack - http://ratpack.io is another interesting Java micro framework.
timclark··on Ask HN: Why do people have a hatred for Scala?
In my opinion (and I have worked on large scale development in Scala in the past) it is just unnecessarily complicated.

Random annoyances off the top of my head - you can't necessarily understand an isolated function unless you know what implicits are being used, crazy overuse of operator overloading and slow compilation times (this has improved over the years).

You don't have to learn Scala, you could learn Clojure, F#, OCaml or Haskell. They would all teach you interesting aspects of programming and then you could come back and examine Scala with a broader perspective.

timclark··on The Economist’s Tom Standage on digital strategy and the limits of advertising
Der Spiegel is a high quality weekly news magazine that I think compares favourably to The Economist if you read German.
timclark··on Steam store rendered in Servo
I did lots of programming in Java between 1995 and 2004 when the language had no generics. I did lots of programming in C++ prior to 1995 when it barely had generics. Now I do a fair amount of programming in Go and I don't really miss generics.
timclark··on NIMBYs in the twenty-first century
Not every country taxes land in that way. I own no land but pay tax for occupying a property, my landlord pays no tax on this property - he may pay some tax on his rental income and will be taxed if the property is sold.
timclark··on Dropwizard 0.8.0: Java framework for ops-friendly, high-performance web services
I'd rather use a careful selection of libraries that provide me a single executable to run than have to work with OSGI or a JEE container.
timclark··on Why people were enthused about GCC early on in its life
Sun removing the C compiler from Solaris pretty much made it obligatory for my whole university department to install GCC in the early 90s.
timclark··on Snoopers charter amendment is back in bill again (again)
Lords West, Blair, Carlile and King have inserted a large amendment to a bill at the last minute yet again.

This appears to be very similar to the last amendment although not identical. They withdrew the previous amendment last week.

timclark··on Infrastructure for Data Streams
Apache Kafka describes the ordering of message arrival to consumers in its documentation, I think it is even covered in the introduction (http://kafka.apache.org/documentation.html#introduction).
timclark··on What will I look like?
The Daily Express routinely uses Fahrenheit when reporting heatwaves or blizzards on the front page - most of the other UK tabloids rarely have a weather focused front page.
timclark··on Kotlin: Statically typed programming language targeting the JVM and JS
It works for me, It looks like you've just pasted a ? on the URL.
timclark··on Kotlin: Statically typed programming language targeting the JVM and JS
Is someone bypassing the duplicate submission logic by editing URLs.

Earlier submission here - https://news.ycombinator.com/item?id=8036515

timclark··on OCaml for the Masses (2011)
Scala came at the problem from the wrong direction. F# started with the functional pieces of ML/OCaml and added the 'OO' stuff in record types resulting in a simple and powerful language. Scala seems to have started with the 'OO' stuff and then has kept on adding and adding and adding.
timclark··on Homemade Speakers
http://www.theregister.co.uk/2014/07/02/feature_the_future_l... - has an interesting perspective on speaker design and the human auditory system.
timclark··on Uber sign-ups soar by 850 percent as cab drivers protest
Uber ran full page ads in London's free newspapers yesterday, so it looks like they were planning on benefitting from the controversy.
timclark··on How Frank Lloyd Wright Tried to Solve the City
Move nearer to where you work then!
timclark··on Spark – A small web framework for Java
If I compare the lines of code between JUnit without annotations and JUnit with annotations I usually have less lines of code without annotations and I don't find it bothersome to name my test method correctly.

Annotations in Java have always bothered me! Why are they needed? I don't need them in Clojure, Go, Haskell, C - similar behaviour is supplied by alternative means.

timclark··on Spark – A small web framework for Java
JAX-RS annotations aren't really composable - functions usually are, although I haven't looked at the Spark implementation to find out.

With plain functions if I need to wrap requests or responses I just wrap the functions. With JAX-RS I need to find or write an appropriate annotation or start adding filters.

With plain functions I can share behaviour between resources by sharing functions.

timclark··on 10 things you (probably) didn't know about Go (2012)
I believe the empty struct is marginally smaller than a boolean.
timclark··on Obituary for Ian McNaught-Davis
He was a big influence on me working in technology and becoming a programmer. Thanks for all those BBC programmes in the early eighties.
timclark··on In Defense of Scala. Response to “I Don’t Like Scala”
(eq leiningen clojure)

and I like it that way

timclark··on In Defense of Scala. Response to “I Don’t Like Scala”
The last time I used SBT, which was well over 3 years ago, the SBT file wasn't really valid scala - this may not be the case now.
timclark··on Aperture Science Personality Core 01 - URL Lengthener
URLs you can laugh at!
timclark··on Crash Course on Notation in Programming Language Theory
Excellent, I think if I reread this before turning every page of Pierce's Types and Programming Languages I might understand it a little.
← PreviousPage 2 of 6Next →