Tracking Users Online — Part 2

iStock 000003369160XSmall 150x150 Tracking Users Online    Part 2 photo    technology news  web application web transparent pixel spring mvc spring framework spring seo privacy pixel server online privacy online advertising mvc maven project maven malware linux jsp js jdk8 JDK javascript java 8 Java IP address internet browser internet http header http google github git gif pixel gif image gif browser apache tomcat amazon s3 amazon cloud 3rd party cookies First release of this project on Github is now out there. And as promised in my “pilot” post of this series, this post will walk you through what went into this release and why.

The project itself as you recall is available on Github in this repository: https://github.com/liviutudor/PixelServer.

The version for this release is pixelserver-1.0.0 –and the link to the release is this: https://github.com/liviutudor/PixelServer/releases/tag/pixelserver-1.0.0 . Please note that I currently “deploy” this artifact into a private Amazon S3-based repo — once I figure out how to make that public I will include the link to the binary downloads too. However, for now, simply run mvn package into the project folder and you will get the war file.

Read the rest of Tracking Users Online — Part 2

Tracking Users Online — Part 1

iStock 000003369160XSmall 150x150 Tracking Users Online    Part 1 photo    technology blogroll  web application web war file transparent pixel spring mvc spring framework spring servlet privacy pixel server open source online privacy mvc jsp JDK java 8 Java internet github git cookies apache tomcat 3rd party cookies I’ve written before in my blog about privacy online, cookies, user tracking and so on. The idea isn’t new at all and it is encountered on every decent website out there. (In fact, I use a few different solutions on my blog for various reasons: analyzing the number of unique visitors, page views, filtering comments, applying gravatar photos where needed and so on.) Despite all of this, I find out that there is still quite a large segment of people who are either oblivious to this or don’t understand it. What’s even more worrying is, as I found out recently, that some of these are actually developers or techies themselves.

For that particular segment, I decided to start a project on GitHub coupled with a series of posts on my blog to showcase some of the techniques involved in this.

The idea is rather simple: I’ve hosted the PixelServer project on GitHub — this contains all the source code and configuration files etc for implementing a HTTP server component which is responsible for dropping cookies on the user side, generating log entries etc. As I modify the code and make a new release of this in GitHub, I will post a new entry on my blog to talk about the changes I’ve made in the source code and why they are necessary (or nice to have perhaps) and talk about how these changes can be applied on a website to track users.

Read the rest of Tracking Users Online — Part 1

Small (Mac OS) Script to Backup Raspberry Pi

Raspi Colour R 150x150 Small (Mac OS) Script to Backup Raspberry Pi photo    technology blogroll  sudo sd card script raspberry pi mac os x mac os Mac gzip flash drive flash card disk image disk dd bash scripting bash script bash backup I’m a big fan of Raspberry PI — to the point where I have actually 2 of these little rascals. (I actually use one of them occasionally to run bits of development stuff on it — test things like nodejs and groovy scripts etc; and the other one I sort of keep for experimental PI projects, trying to figure out the intensity of the light outside, whether it’s going to rain and all sorts of useless things icon smile Small (Mac OS) Script to Backup Raspberry Pi photo    technology blogroll  sudo sd card script raspberry pi mac os x mac os Mac gzip flash drive flash card disk image disk dd bash scripting bash script bash backup ) Anyway, I find myself for simplicity I try to keep the 2 of them in sync so to speak — in other words whatever packages Raspberry PI 1 has, I try to keep on Raspberry PI 2, such that I can interchange them easily. (That in itself makes using them so much easier!)

To keep them in sync I normally take an image of the SD Card from one of them on my Mac, then install the image on the other SD Card — which then goes into the other Raspberry PI. This way they both run with exactly the same config and also I get to make a backup of the SD card, which occasionally has been known to be temperamental. (Nothing worse than the card getting corrupted without a backup so you have to re-set it all up icon sad Small (Mac OS) Script to Backup Raspberry Pi photo    technology blogroll  sudo sd card script raspberry pi mac os x mac os Mac gzip flash drive flash card disk image disk dd bash scripting bash script bash backup )

Read the rest of Small (Mac OS) Script to Backup Raspberry Pi

Of Twitter and Mobile

twitter bird blue on white 150x150 Of Twitter and Mobile photo    technology random thoughts blogroll  website twitter advertising twitter samsung mobile samsung galaxy Rugby online advertising mobile website mobile conversions clicks advertising I use Twitter a lot (see for yourself here if you don’t believe me icon smile Of Twitter and Mobile photo    technology random thoughts blogroll  website twitter advertising twitter samsung mobile samsung galaxy Rugby online advertising mobile website mobile conversions clicks advertising ) — and as such it annoys me terribly when I see companies using it the wrong way. And by “wrong way” I’m not talking about the contents of their tweets — it’s a free world and everyone has the right to tweet whatever they want as far as I’m concerned. (Whether I will decide to follow them on Twitter and read the content they publish there is a different matter.) I’m talking here about how Twitter is employed to deliver marketing messages to the online users.

Twitter is a very powerful tool for that, with a huge reach, we all know that — and as such in the right hands can generate a lot of user interaction. And also, in the wrong hands it seems to create awful user experiences which (getting back to my point) annoy me terribly!

It is not my intention here to point fingers — which is why in the screenshots below I’ve removed the logo and Twitter handle — rather just point out what’s wrong with this situation so others hopefully can avoid making the same mistake (and generating rubbish user experiences).

Read the rest of Of Twitter and Mobile

Careful with Naming in Your Platform — Part 2

iStock 000003290557XSmall 150x150 Careful with Naming in Your Platform    Part 2 photo    technology random thoughts blogroll  software engineering platform naming conventions naming Java framework ddos coding class names I’ve written before on this blog about the importance of naming “things” in a tech platform/framework and I feel this deserves a bit more attention, so here is a follow-up.

Previous post saw me discussing naming class member data as well as database fields — these can wreak havoc amongst your users (be them developers or simple customers running reports). Not to mention that it can end up confusing even your own team further down the lines, when the memory of the reasons for choosing a name has faded away!

That’s not the only place where naming can hit you! Naming components in your system wrongly can have disastrous effects. (And by components I mean anything from a simple class or collection of classes, a library in your framework to actual standalone server software components running in your infrastructure.)

Read the rest of Careful with Naming in Your Platform — Part 2

Tales from Ole’ Romania: Electricity

romanian flag Tales from Ole Romania: Electricity photo    romania random thoughts blogroll  USSR russia RSR romanian revolution Romania memories lights light electricity communist romania communism commie blackout OK, so I’ve decided to blog, amongst all the other stuff I publish on my blog, about some of the experiences I’ve been through or remember from “ole Romania”: the pre-1989, communist, Romania — or RSR (The Socialist Republic of Romania as it was known to us). I’ve realised recently, talking to people “from the West” that a lot of these experiences are absurd and funny to them and people have no idea about some of the things that used to happen in the Eastern Block in Europe. Even more so, they quite likely don’t realise that a lot of these things happen still in countries like China and the likes!

So with that in mind, I’ve set off to reveal some of the things that I remember — having been through all of these and come out (relatively) normal and alive, these all seem funny nowadays; however, these are things which affected entire generations and left an imprint on a lot of lives and destinies. Therefore, as much as the memory of some of these things amuse me nowadays, they are not to be taken lightly!

As a side note, for those of you unaware of the history, Wikipedia has a pretty decent coverage on the Romanian Revolution of 1989 which has overthrown the communist regime. I was 14 when this happened and still remember some of them — enough to blog about them! icon smile Tales from Ole Romania: Electricity photo    romania random thoughts blogroll  USSR russia RSR romanian revolution Romania memories lights light electricity communist romania communism commie blackout

Read the rest of Tales from Ole’ Romania: Electricity

maven-release Plugin and GitHub Issues

maventxt logo 200 maven release Plugin and GitHub Issues photo    technology blogroll  SCM S3 storage maven archiver maven release plugin maven release maven project maven archiver plugin maven Java github aws maven amazon s3 amazon This one is another good find from the maven “gotchas” archives. Good enough at least to make it onto my blog icon smile maven release Plugin and GitHub Issues photo    technology blogroll  SCM S3 storage maven archiver maven release plugin maven release maven project maven archiver plugin maven Java github aws maven amazon s3 amazon

I brief, I’ve been pulling my hair for the best part of yesterday trying to figure out what’s going wrong with my maven-based project, which used to work otherwise fine until recently. It used to compile without problems, package and deploy like a dream. And then yesterday, as I found out, the release process sort of worked … but not quite the way it used to do! More to the point, it did the packaging, did the revision increment and github tagging — but it only deployed the SNAPSHOT version!

Read the rest of maven-release Plugin and GitHub Issues

Careful with Naming in Your Platform

iStock 000016175279XSmall 150x150 Careful with Naming in Your Platform photo    technology random thoughts blogroll  x forwarded for variable names software engineering naming conventions naming method names javadoc java bean Java IP address http headers http ddos database fields coding For those of you who keep an eye on my blog, I write quite a bit about technology and about software engineering — that’s because by trade I am a software engineer and quite passionate about a few areas in this segment. I write code and as such I blog a lot about coding. I wrote a lot of code lines in my life and I’ve encountered various things (good and bad) and sometimes I feel I need to share some of my experiences and the knowledge I’ve gained going through them. And today is such a day: I’ve just looked over some code recently, doing a sort of a technical audit for a friend and found myself confused at times about something that is overseen quite often: naming conventions!

And I’ve realised that naming is often perceived as such a small aspect to the point that no one really cares about it that much — and this leads often to confusions and errors. Whether it’s naming of variables in the code, of fields in databases or on reports or even naming of system components, this is hardly ever looked upon as a serious matter. “Just get it done and deploy it so we can move onto the next piece of functionality” seems to be the approach — and as such components such as “email validation engine” make their way into production and code ends up written around it, only to surface later on (typically due to some production outage) that the component doesn’t actually validate email addresses, but instead checks that the string provided “looks like an email address and has an @ and something which looks like a domain“. By that point you find out you have a lot of wrong email addresses of your customers in and you have no way of contacting them now… You get the picture!

I’ve decided as such to share a few of my experiences when it comes to naming “things” in software engineering — hopefully these will help others avoid mistakes made in the past.

Read the rest of Careful with Naming in Your Platform

wc-minus-l

macosx terminal linux 150x150 wc minus l photo    technology random thoughts fun time blogroll  word count wc unix shell unix Tech story startup script regular expression regex management linux IT humour command line bash Quite a while back, (and I mean quite a while back, that’s been enough water under the bridge so I can now tell the story icon smile wc minus l photo    technology random thoughts fun time blogroll  word count wc unix shell unix Tech story startup script regular expression regex management linux IT humour command line bash ) I used to work for this guy who quite frankly was way out of his depth in the position he was in. He was my (and others’) boss nevertheless and as such we had to work with him and for him. And in a lost of cases we had to work despite him too — which I’m sure paints a bit of a picture about the guy by now icon smile wc minus l photo    technology random thoughts fun time blogroll  word count wc unix shell unix Tech story startup script regular expression regex management linux IT humour command line bash

Bottom line, for whatever reason — and I think he didn’t know that either towards the end — he found himself being our boss, and the thing is he realised I’m sure deep down inside he was way out of his depth there. This realisation though, rather than comfort him made him very insecure, which had a huge negative impact on the team. Rather than thinking: “Great, I have a team here who can cover all bases, all I need to do is help them set up the roadmap and prioritize their own work and these guys can do it all while I sit back and let them all do their magic”, he actually started micromanaging every single one of us and trying his best to show all the way to us and everyone else that he is better than each and every one of us at everything we did.

Read the rest of wc-minus-l

Fixing aws-maven Issue with “Access Denied”

maventxt logo 200 Fixing aws maven Issue with Access Denied photo    technology blogroll  tarball spring framework security s3 rsa key packaging mvn maven release plugin maven plugin maven archiver plugin maven Java aws maven amazon s3 amazon cloud I’ve been using the aws-maven plugin for a while now to deploy Maven artifacts to S3. Typically I’ll use the Maven Archiver plugin to package the projects in some sort of tarball then use aws-maven to upload this to S3. From there on regardless of the deployment tools I use on our production servers I can simply use some script to download the tarball and unpackage it on the server — and maybe even run some (packaged) scripts — to install the software in production.

And also typically in this scenario I’ll use the archiver and aws-maven in the context of the Maven Release plugin — so after all tests have passed and I’m ready to release a version I simply use mvn release:prepare and mvn release:perform — this packages the software (via Maven Archiver) and then copies the tarball to S3 (via aws-maven).

Read the rest of Fixing aws-maven Issue with “Access Denied”