Friday hackathon

Every month we have a Friday Hackathon, where we can code or create anything we want. That’s for the purpose of evaluating new technologies, doing crazy stuff or just having fun.

Beneath that we develop our skills and gain new experience.

Today we have 5 teams, that are doing following projects in various technologies:

  • Ping-pong scoring – we play ping pong a lot, so an app is a must! – Java (Dropwizard), Mongo
  • TouK’s library – we have dozens of books but currently we have a chaos who lends what – Clojure
  • ToukApi – access all internal data (about people, salaries, holidays, auth, projects people are in etc) through REST api – vert.x
  • ID / Drivers license recognition on Mobile – just shoot a photo of an ID and have all data and photo in a few seconds – Kotlin, Android
  • jaIde – I’m going for a sandwich – you can inform other employees that you go for a morning sandwich – that means – Mr Sandwich has just arrived at the kitchen – it’s like a snowball, the more people go for a sandwich the more confident you can be that there are actually sandwiches waiting :) – Swift/Scala/Java

At 4:30 PM we have hackathon summary. Let’s see what projects we will manage to accomplish…

 

rd

DSC_3057 DSC_3056

You May Also Like

New HTTP Logger Grails plugin

I've wrote a new Grails plugin - httplogger. It logs:

  • request information (url, headers, cookies, method, body),
  • grails dispatch information (controller, action, parameters),
  • response information (elapsed time and body).

It is mostly useful for logging your REST traffic. Full HTTP web pages can be huge to log and generally waste your space. I suggest to map all of your REST controllers with the same path in UrlMappings, e.g. /rest/ and configure this plugin with this path.

Here is some simple output just to give you a taste of it.

17:16:00,331 INFO  filters.LogRawRequestInfoFilter  - 17:16:00,340 INFO  filters.LogRawRequestInfoFilter  - 17:16:00,342 INFO  filters.LogGrailsUrlsInfoFilter  - 17:16:00,731 INFO  filters.LogOutputResponseFilter  - >> #1 returned 200, took 405 ms.
17:16:00,745 INFO filters.LogOutputResponseFilter - >> #1 responded with '{count:0}'
17:18:55,799 INFO  filters.LogRawRequestInfoFilter  - 17:18:55,799 INFO  filters.LogRawRequestInfoFilter  - 17:18:55,800 INFO  filters.LogRawRequestInfoFilter  - 17:18:55,801 INFO  filters.LogOutputResponseFilter  - >> #2 returned 404, took 3 ms.
17:18:55,802 INFO filters.LogOutputResponseFilter - >> #2 responded with ''

Official plugin information can be found on Grails plugins website here: http://grails.org/plugins/httplogger or you can browse code on github: TouK/grails-httplogger.

Spring Security by example: securing methods

This is a part of a simple Spring Security tutorial:

1. Set up and form authentication
2. User in the backend (getting logged user, authentication, testing)
3. Securing web resources
4. Securing methods
5. OpenID (login via gmail)
6. OAuth2 (login via Facebook)
7. Writing on Facebook wall with Spring Social

Securing web resources is all nice and cool, but in a well designed application it's more natural to secure methods (for example on backend facade or even domain objects). While we may get away with role-based authorization in many intranet business applications, nobody will ever handle assigning roles to users in a public, free to use Internet service. We need authorization based on rules described in our domain.

For example: there is a service AlterStory, that allows cooperative writing of stories, where one user is a director (like a movie director), deciding which chapter proposed by other authors should make it to the final story.

The method for accepting chapters, looks like this:

Read more »