29 mar 2012

Makeover av syse.no

No Comments News, Uncategorized, Web design


I kontinuerlig arbeid med å forbedre brukeropplevelsen av alt vi leverer, relanseres nå syse.no, i en friskere og mer sammensveiset innpakning.

Først og fremst er det jobbet for å skape en lettere og mer unison opplevelse. Sidene er raskere med mer effektiv bruk av CSS og Javascript; typografien er blitt mer sammenfattet; handlekurv er bundet tettere sammen med produktsidene, som forøvrig har fått en tettere integrasjon med resten av nettstedet.
Read more

24 feb 2012

The Importancy of the Geographical Location of your Hosting Provider

2 Comments Hosting, Marketing, Web hosting

While businesses, and government agencies for that matter, are considering buying hosted services and moving data to the ‘cloud’, there is a growing concern about where the data actually is stored or the services are hosted. ‘Cloud’ based services have raised issues of security, control, and trust, but the fact that many tend to disregard is that the geographical location of your hosting provider goes beyond the scope of security for your data.

Read more

06 feb 2012

Better, stronger, faster! Photoshop workflow enhancers

No Comments Graphics, Photoshop, Web design

There are endless of different ways to attack a problem, or task inside of Photoshop, some more efficient than others. Be sure that the things you do regularly are done with the least effort. In this post I will share some simple, but powerful tips to help speed up your workflow, along with some extras.

(SUPERCHARGED: A piece I made for the occasion. The engine is somewhat of a mess and the shadow around the typo is hurt due to interpolation from down sizing, but allover I really like the mood, and might do a tutorial or two, covering some of the techniques used to make this. Feel free to use the image in any way you like. It’s against a transparent background, so compositing should be a breeze :) )

Read more

09 jan 2012

Chained ResultMaps in Tornado Query

No Comments Java, Tornado Query

This is another post about Tornado Query. Some times you want to select fields from just one table, and other times you join the fields from that same table as part of your result set. It’s common to have many foreign keys in different tables pointing to the same table. For that reason, you shouldn’t need to repeat what you have already configured in your result map for that table. Let’s use an address example table:
Read more

29 des 2011

CRUD should be DRY and free!

No Comments Java, Tornado Query

In my previous blog post I showed you how Tornado Query takes the pain out of writing SQL and mapping the result to your domain objects. After thinking about how to improve CRUD, I came to think about DRY (Don’t Repeat Yourself) – the ResultMap actually already knows all it needs to create my UPDATE and INSERT statements as well!
Read more

27 des 2011

Elegant SQL Queries and O/R mapping

1 Comment Java, Tornado Query

I’ve used Apache iBATIS for years and always liked how it works, but there are some boiler plate that could be avoided, and I don’t really feel like wrapping my SQL in XML. I’d rather keep the expressiveness of the Java/Groovy language at my fingertips, but still write SQL (Don’t even get me started on Hibernate/JPA and other O/R mappers that do magical things behind your back and try to hide that you are working with a relational database).

These thoughts gave birth to Tornado Query, a simple and elegant way of writing SQL and mapping results to your domain objects.
Read more

20 des 2011

CSS only, equal height faux columns

3 Comments CSS, Web design

While playing around with some CSS, I found a nifty technique to produce equal height faux columns with pure CSS, using the pseudo-element; :after. No background image, and no javascript required. Here is how it works:
Read more

18 des 2011

Smarter, domain specific caching

1 Comment Java

Most enterprise applications employ some kind of caching to boost performance. Traditionally, the database is the most common and most beneficial layer to cache. However, only caching your database often result in some major drawbacks:

  • The cache becomes tied to your particular RDBMS or ORM, making an eventual switch down the road more troublesome
  • You have no way to cache other parts of your application, like the result of remoting calls or expensive calculations

On top of that, a traditional, automatic database cache will often invalidate too much of your cached data, making the cache less efficient. I will explain why that is, and then show you the solution I came up with, and implemented into my Spring Framework alternative, Tornado Inject.

Read more

14 des 2011

The (Norwegian) Spam Paradox

No Comments Anti-spam, E-mail, Marketing

If I say spam you’ll say Nigeria, Viagra, Cialis, virus or phishing. Or something closely related to cybercrime and fraud. It  is true that spam is used in fraud. Kaspersky recently reported a 20-fold increase in fraudulent spam in Q3 2011. However, e-mail spam is also a widely used advertising technique adopted by legitimate businesses. In fact, your spam filter provider may be spamming, as a service for their business customers, or even worse, as a marketing effort for themselves.

Read more

11 des 2011

Tornado Inject – A simple and fast dependency injection system

No Comments Java

I’ve used Spring Framework as my DI container of choice for the last decade, and I’ve watched it grow and mature, and at the same time become both faster and easier to use. The new Java only configuration and the new annotation support makes it very convenient and easy to work with. Even in large projects though, I find myself using just a small fraction of the features found in Spring. Normally I just need automatic injection (@Autowired) and transaction demarcation for my service layer. The nice thing about Spring is that you can use just what you like, and forget about the rest, or add features as your application grow. In my experience though, the requirements for the DI container normally doesn’t change much in the course of an application’s lifecycle.

Read more