Tuesday, April 17, 2012

Modern Web Architecture: The HTML5 Web Storage

Abstract One of the most important features of HTML5 is the Web Storage feature. Using the Web Storage feature, the client state can be saved on the browser level without consuming the network bandwidth or the server memory. The Web Storage increases the scalability of the web applications on the server level and on the network level. In this article, I will show you how to work with the HTML5 Web Storage feature. Read more at Technical Advices

Tuesday, March 6, 2012

15 Tenets For The Software Engineer

15 Tenets For The Software Engineer Many people talk about the things a software engineer needs to know in order to be successful in their job. Other people talk about the traits needed to be successful. Typically, these posts may read differently but there are many similarities between the two posts. In reality, a software can never really be successful without looking at both types of posts. The list of 15 tenets below is my hope to consolidate the ideas into one handy list for your review.

Read more: http://www.javacodegeeks.com/2012/03/15-tenets-for-software-engineer.html

Wednesday, February 1, 2012

Using the Tomcat 7 JDBC Connection Pool in Production

Using the Tomcat 7 JDBC Connection Pool in Production One of the new features with Tomcat 7 is a replacement to the commons-dbcp connection pool. While the commons-dbcp connection pool works fine for small or low traffic applications, it is known to have problems in highly concurrent environments (think multi-core/multi-cpu).

Fortunately, this is where the JDBC Connection Pool excels. It is a completely new connection pool which has been written from the ground up, with a focus on highly concurrent environments and performance.

Given its focus on high concurrency and performance, many users are finding that the JDBC Connection Pool can be great for use in a production environment. This article will discuss the features and options which make using the JDBC Connection Pool a great choice. More...

Monday, August 15, 2011

What features of Java have been dropped in Scala?

What features of Java have been dropped in Scala? Despite more complex and less intuitive syntax compared to Java, Scala actually drops several features of Java, sometimes for good, other times providing replacements on the standard library level. As you will see soon, Scala isn't a superset of Java (like Groovy) and actually removes a lot of noise. Below is a catalogue of the missing features.

Friday, June 17, 2011

Intermediate Java | Software Developer or Engineer? An Immature Discipline

Intermediate Java | An Immature Discipline In the section “Is Software Development an Engineering Process?” on pages 8-9 of his excellent introductory volume Object-Oriented Software Development Using Java, Xiaoping Jia writes:

…there is still little consensus on the precise definition of software engineering, and even the legitimacy of using software engineer as a professional title is still being debated….

One of the key differences between engineering and craftsmanship is that the success of engineering projects can be assured beforehand through scientific analysis of their designs, whereas the success of craftsmanship projects is attained through trial and error during current and prior construction….

Monday, June 6, 2011

The science of software pricing | Binpress

The science of software pricing | Binpress One of the hardest parts when releasing a software product is determining the ideal pricing point. Wouldn’t you like to know the magic number that doubles your profit?

Pricing is not an exact science, but it is not magic either – it is influenced by perception of your software, market conditions and its value. So what is the process of finding that sweet pricing spot?

Monday, May 23, 2011

Coding Horror: The Infinite Version

Coding Horror: The Infinite Version One of the things I like most about Google's Chrome web browser is how often it is updated. But now that Chrome has rocketed through eleven versions in two and a half years, the thrill of seeing that version number increment has largely worn off. It seems they've picked off all the low hanging fruit at this point and are mostly polishing. The highlights from Version 11, the current release of Chrome? more...

Thursday, May 12, 2011

Blogger for android rocks!

Just installed the Blogger application from the android market. I don't know how it took me so long to discover this app but it really is a must have.

The application does what you would accept - write and post new applications, post pictures from your phone memory card or directly from the camera and tag ur posts. I still need to fugure out how it fairs on formating text etc. The basics are good enough for me.

I discovered there are several other applications for doing the same job but I settled for the official one by Google Inc.

Saturday, April 30, 2011

High Performance Computing: Create an AMI

High Performance Computing: Create an AMIThis blog will guide you through creating an AMI (Amazon Machine Image) from a launched Instance. In this tutorial we will create S3 backed AMI from running instance. Before getting down to create an actual AMI let’s try to understand some basic terminologies:

Monday, April 18, 2011

Oracle Technology Network: Contexts and Dependency Injection in Java EE: Which Annotations to Use?

Java Platform, Enterprise Edition (Java EE) 5 brought dependency injection (DI) with Convention over Configuration to Enterprise JavaBeans (EJB) 3.0. Java EE 6 introduces the flexible and powerful @Inject dependency injection model (JSR-330 and JSR-299) in addition to the already existing @EJB annotation. So when should you use what?

Read more at the Oracle Technology Network in "Contexts and Dependency Injection in Java EE."

Friday, April 15, 2011

Alex talks about Java: java.util.Objects. A new JDK 7 class for managing Objects

Alex talks about Java: java.util.Objects. A new JDK 7 class for managing Objects: With new release of JDK 7, a lot of really useful features has been developed, some of them I have write off before in this blog (JSR 203 and JSR 166y). In this post I am going to talk about one new small enhancement. This new feature is the addition of java.util.Objects class. This class is similar to java.util.Arrays or java.util.Collections but for objects instead of arrays or collections.

Wednesday, April 13, 2011

The Brain Dump: Gavin King unveils Red Hat's top secret Java Kille...

The Brain Dump: Gavin King unveils Red Hat's top secret Java Kille...: "Gavin King of Red Hat/Hibernate/Seam fame recently unveiled the top secret project that he has been working on over the past two years, a ne..."

Is Having a Build Specialist an Anti-Pattern?

A common pattern in software development teams is to have a person who owns the build system. This may be a deliberate decision, or it may evolve organically as a particular team member gravitates towards dealing with the build scripts, automated testing and deployment, etc. While it's normal for some team members to have a deeper understanding of these things than others, it's not a good idea for the knowledge and responsibility for the build to become overly concentrated in one person.

The build system should be looked at as a module or component of the software application or platform being developed, so the philosophy taken towards code ownership apply.

If a single person owns the build system, everyone else becomes dependent on them to fix issues with it, and to extend it to meet new needs. There is also a risk, especially for projects which are big enough that maintaining the build system becomes a full time job, that a bit of a siloed mentality can develop.

If developers have a poor understanding of how their software is built and deployed, their software is likely to be difficult and costly to deploy. On the flip side, if build and test tools are implemented and maintained entirely by people who don't develop or test the software, it isn't likely to make the life of those who do as easy as it could be.

In the past few months I've taken on a role which is largely focused on this area, and have been helping a development team get their build and delivery system in place. Pairing with developers to implement aspects of the system has worked well, as has letting them take on the setup of particular areas of the build and test tooling. This follows what Martin Fowler calls "Weak Code Ownership", allowing everyone to take part in working on the build and test system.

Special attention is needed for stages of the path to production as they get further from the developer's workstation. Developers are keen to optimize their local build and deployment, but can often be fuzzy on what happens when things are deployed in server environments. This is exacerbated when the platforms are different (e.g. developers working on Windows, code deployed on Linux).

Even without platform differences, developers understandably focus on the needs of their own local build over those of production system deployment. This is natural when server deployment is not a part of their daily world. So the best way to compensate for this is to keep developers involved in implementing and maintaining server deployment.

Driving the implementation of the build and deployment system according to the needs of business stories has also been useful. So rather than setting up tooling to test parts of the system that haven't been developed yet, wait until the design of the code to be tested starts to be understood, and the code itself has actually started being developed. This helps ensure the tooling closely fits the testing and deployment needs, and avoids waste and re-work.

Blog post originally from Kief Morris' Grok and Roll

Wednesday, April 6, 2011

Linux-Recipe: List all listening ports and the PID of the associated processes

Once in a while, you find yourself having to work on a box you know very little about. You try running an application you get an error telling you another application is already using the network port you need. What do you?
  • #lsof -Pan -i tcp -i udp
The lsof command is used to give a list of all open files - very powerful if you consider that *everything* is a file in Linux. This includes regular files, directories, block special files, a character special files, executing text reference, libraries, streams and network sockets.

It works for AIX, Apple Darwin, FreeBSD, Linux, NetBSD, NEXTSTEP, SCO OpenServer and Solaris 9 and 10.

Options
  • -P don't bother converting port numbers to port names - speeds up lsof.
  • -n don't bother converting ip addresses to host names
  • -i internet address must match the address specified (-i4 and -i6 are used to IPv4 and IPv6 respectively).
  • -a used to AND list options i.e show only files that satisfy all list options. The default behaviour is to show files that satisfy any of the list options.
Remember to refer to the man pages if in doubt.

Thursday, October 14, 2010

Tech Support

Another good one from the smart guys at xkcd, feels like me calling Telkom Tech Support: "I recently had someone ask me to go get a computer and turn it on so I could restart it. He refused to move further in the script until I said I had done that."

Wednesday, August 18, 2010

Java Best Practices – Vector vs ArrayList vs HashSet

Java Best Practices – Vector vs ArrayList vs HashSet: "An in depth performance comparison between the three probably most utilized collection implementation classes"

Continuing our series of articles concerning proposed practices while working with the Java programming language, we are going to perform a performance comparison between the three probably most used Collection implementation classes. To make things more realistic we are going to test against a multi–threading environment so as to discuss and demonstrate how to utilize Vector, ArrayList and/or HashSet for high performance applications.



Read more: Java Code Geeks: Java Best Practices – Vector vs ArrayList vs HashSet

Thursday, February 11, 2010

Google Buzz - My First Impressions

I've been using the latest innovation from the chocolate factory for 3 days now and my take so far? It's got legs. Besides the un-google like cold name, I love it and I see myself using it more and more. I primarily use Gmail for my email and chat. Everything there is just done right. A social networking feature like Buzz inside Gmail is heaven sent.

Buzz allows you to post items - links, images, videos etc to a wall within your gmail, that all contacts following you can see and comment on, much like the facebook wall. Buzz integrates well with Google Reader so that when I 'like' an item on Reader, it automatically appears in my Buzz like it does on my reading list feed. Of course Google Reader has to be added to my list of "connected sites" within Buzz. Connecting sites is easy and Google Buzz will offer to link your twitter and blogger accounts too - coool.

My biggest problem with Buzz is privacy - the default settings are just too slack that you can virtually follow anyone and easily find their email address. By default, you can view the profiles (Google Profiles) of people who follow you and those you follow. You can also see all their followers and those they follow and so on. What's worse their Buzz posts are also displayed on their profiles by default (I'm sure this can be turned off). I found this a bit disturbing. Of course when posting one can select to make posts private - only viewed by certain contacts but the tick will go unnoticed for most people.

I think the thinking behind Buzz posts is closer to tweeting than the facebook wall but it is definitely sitting somewhere between.

Comments on posts made by people we follow can also create unnecessary noise as they also increase the count on unread Buzz posts. What's worse, if you comment on someone's post, all comments made after yours will also appear in your inbox like ordinary direct email. To be fair though, there is an option to 'mute' a post - which makes it dissappear and stop subsequent comments from comming to you, much like Google Wave.

Another annoyance is that since my Reader account is "connected", anything I 'like' is by default shared public. I 'like' so many things in a day I can only feel sorry for the people who follow me. The Buzz inbox can soon be cluttered if one follows too many people. This is annoying because it is within email and unlike facebook feeds, we normally want to check on any new item in our email box.

It would be nicer if you could specify within Reader if with each 'liked' item, you wanted it also posted to Buzz. Linkedin does that well. When you link a twitter account, you can specify that it doesn't grab all tweets. If you want your tweet to appear on your linkedin profile, you prefix it with #in. I'm not sure if Buzz even supports the '#'.

Buzz is a great innovation but Google still needs to do some work there. I would like to see more twitter like features like "retweeting" and the ability to reply to a specific person with the @mashtales. This probaly needs Google to give us handles that do not reveal our email addresses.

Should Facebook and Twitter be afraid, maybe not very but this latest kid on the social networking block carries a brand with it and also rides on the millions that long fell in love with Gmail. No doubt Google has some more feature to roll out on Buzz, we will just wait and see.

Friday, November 27, 2009

5 Must Have Google Chrome Extensions

5 Must Have Google Chrome Extensions: "

While Google hasn’t officially released their own repository to download extensions yet (although you can officially submit them here), third-party sites such as Chrome Extensions have a large repository of extensions ready for you to download.


While many of these extensions are next to pointless, there are a few gems that can make your Chrome browsing experience a bit more useful.


5 Must Have Google Chrome ExtensionsAviary Screen Capture


Aviary, a powerful online image based editor, has released a quick and easy way to capture screenshots within Chrome instantly and edit them within a streamlined version of the Aviary image editor. You also get quick links to other Aviary products, such as Aviary Audio Editor, which we covered here. (Download extension)


Chrowety


You just can’t have a list without a Twitter app of some sort included. Chrowety is a streamlined, convenient and surprisingly intuitive Twitter client. While it doesn’t have all the features more advanced Twitter clients such as Seesmic Web, if you’re looking for quick and dirty tweeting without all the wait, you got it with Chrowety. (Download Extension)


5 Must Have Google Chrome Extensions


Feedly


5 Must Have Google Chrome ExtensionsOne of the most popular Firefox extensions, and beloved by many RSS consumers is Feedly.


Feedly turns your Google Reader into a magazine like start page. While I am not an avid user of Feedly, I know of many who swear by it. Some of them are so rabid about Feedly that they refuse to move from Firefox until a Chrome extension is available. Talk about a dedicated user.


Well now they can see the light. Feedly has now officially released a Chrome extension that will give you all the greatness of the magazine style reader you have come to expect. Time to move to the faster side of browsing my Feedly friends. (Download Extension)


Chrome Reader


5 Must Have Google Chrome ExtensionsIt has always puzzled me why Google does not integrate their own superior RSS reader, Google Reader, into Chrome. Until that day comes though, Chrome Reader will have to suffice.


When Chromes discovers an RSS feed, simply click on the RSS icon in the URL bar and that feed will automatically be subscribed to in Google Reader instead of opening a web page full of XML. Chrome Reader also allows you to add your new subscriptions into folders within the extension. (Download Extension).


Dotspots


5 Must Have Google Chrome ExtensionsDotspots is an annotation service that we recently wrote about here. Using the Chrome extension, you can add annotations to any content based web page by simply highlighting a paragraph. You can also see and edit other users annotations (also known as Dots). While the extension requires you have an account through DotSpots, it is a powerful extension that can potentially add a lot of value. To download sign-up for an account.


While I am sure there are plenty of other extensions just as useful, if not more useful than the ones listed above, you can be sure that Chrome extensions will start seeing some serious advances in the near future. Keep in mind, these Chrome Extensions are not officially backed by Google and can break. While I have not personally ran into problems with any of the extensions listed above, I am sure some people have.


Make sure if you think there are any Chrome extensions worthy of a future “must have” list you leave them in the comments.




"

YouTube to Live Stream Alicia Keys Concert Worldwide [VIDEO]

YouTube to Live Stream Alicia Keys Concert Worldwide [VIDEO]: "

aliciakeysIn October, YouTube hosted one of the biggest live streaming events ever held: a U2 concert generating more than 10 million streams across 7 continents.


Now YouTube is looking to repeat that success, with an Alicia Keys concert being live streamed on December 1st at 8pm ET.


The concert, to be held at the Nokia Theatre in New York City, aims to draw attention to World AIDS Day; viewers will be encouraged to donate to Alicia’s chosen charity, Keep a Child Alive. You’ll be able to tune in at the Alicia Keys YouTube channel.


Will you watch Alicia Keys live? And will the concert be as big as U2 at the Rose Bowl? Let us know in the comments!



Tags: alicia keys, youtube



"

Tuesday, November 24, 2009

Total security in a PostgreSQL database

Total security in a PostgreSQL database article on IBM DeveloperWorks: "Database security is the single biggest concern with today's Web-based applications. Without control, you risk exposing sensitive information about your company or, worse yet, your valuable customers. In this article, learn about security measures you can take to protect your PostgreSQL database. Be sure to download the sample code listings used in this article."