Connect Multiple JPA repositories using Static and Dynamic Methods
The JPA Repository is a useful Spring Framework library that provides object-relational mapping for Java web applications to be able to connect to a wide variety of databases. Most applications need to establish a connection with one database to store and retrieve the data though sometimes there could be more than one database to read and write. There could also be some cases where the application needs to choose which database should be used dynamically, based on each request’s parameters. Let’s see how to configure and establish connections for these three cases.
1. Single Static Connection
In order to use JPA the following configurations are required to get the database connection handle and define the interface to map a database table by extending JpaRepository class.
UserRepository.java — this part of the code configures how to map the user table
package com.domain.data;
import com.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository <User, Integer> {
}persistent-context.xml — the dataSourceReadWrite bean class defines the database connection while the entityManagerFactoryReadWrite bean helps …
database java
DNS and BIND Training with MyNIC
This is yet another yesteryear’s story!
I had a chance to attend a DNS/BIND training which was organized by Malaysia’s domain registry (MyNIC). The training took two days and was organized in Bangi, Selangor, Malaysia. Dated November 23 to 24, 2015, the two days’ training was packed with technical training for the Domain Name System (DNS) using BIND software. Our trainer was Mr Amir Haris, who is running his own DNS specialist company named Localhost Sendirian Berhad (Sendirian Berhad is equivalent to “Private Limited”).
Day One
For Day One, the trainer, Mr Amir Haris taught us on the theoretical details of the DNS. For a start, Mr Amir explained to us on the DNS operation, in which he explained the basic of what DNS is and the function of root servers. Later he explained further on the root servers’ functions and locations. It was the followed by the explanation of query process.
Mr Amir also explained to us the difference of DNS implementations across different operating system platforms. As for the training since we were using BIND as the name server’s software, we we exposed to the historical background of BIND.
The concept of master and slave DNS server was also being taught. …
sysadmin
Reflections on Being a Co-working Couple
Over Labor Day weekend I married another End Point employee, David Christensen. I thought I’d take a minute to reflect on life as a co-working couple. In the days before everyone worked in a mad scramble to pay off their student loans, save for their kids’ college, and save for retirement, lots of couples shared in the responsibilities of owning a business or farm. Today for most families those days are long gone and each spouse goes off to a long day at the office to meet back at home in the evening.
David and I are really fortunate to work at End Point and work remotely from our home in Lawrence, Kansas. David is a veteran at End Point starting as an application developer a decade ago and now is a project manager and heads up many of End Point’s larger sales, database, and VR projects. I am brand-new to End Point and serve as the Client Liaison doing billing, client support, sales, and project management.
![]() |
| Our home office in Lawrence |
What I love
Being together all the time
Like any newlywed, I cannot get enough of this guy. He’s easy to talk to, fun to be around, and pretty much makes everything better. But enough of that sappiness…
Getting some real insight on …
company remote-work
8 Simple Steps to Saner Software Development

While these might seem obvious for seasoned developers, many projects, especially legacy software, still fail to follow most of the steps below.
In future posts, I’ll expand on these steps and give more details. For now, here’s an overview of some basic guidelines for making the process of software development smoother (& saner) for both the client and the dev team.
Separate environments:
Ideally there should be Dev, QA, UAT/Staging, and Production environments. And, UAT/Staging should be as close to Production as possible. It’s amazing how many software projects are still done on someone’s local machine and pushed directly to Production.
Use a bug tracking tool:
This is pretty obvious. Bugs need to be logged and labeled so that they can be tracked through stages of development (i.e., To-Do, In Progress, Completed). Using a bug tracking tool like Jira or GitHub also helps the non-technical stakeholders comment on and clarify requirements/issues.
Have a source control strategy:
It doesn’t have to be fancy. For example, if you’re using Git, it should be more than having multiple developers working out of the master branch. Ideally link branches to features or bugs defined in a …
development environment devops
The Happy Path: An Interview with Design Strategist & Gallerist Kelani Nichole

Kelani Nichole is a digital strategist who is also a contemporary art gallerist. Or maybe vice versa.
She works with the Theresa Neil Strategy + Design agency, doing user-centered design research for (mostly) big products at big companies. Her gallery, Transfer, presents internet and computer-based artworks in its Brooklyn, NY location and as pop-up installations around the country and the world.
We spoke about design methodology, client engagement, and salad at El Rey in Manhattan. We got right into it, so don’t expect much prelude.
Kelani Nichole: Existing designs are often based on legacy, opinions, and politics. The methodology I use is all about collaborative design. It’s part of the engagement from the beginning - you get people in a room drawing pictures together. Then when it comes across their desk as we’re building it, they see their own work in what you’re building, and there’s buy in.
It’s really kind of magic the way that it works. They don’t even realize it’s happening. It’s like the film Inception.
Liz Flyntz: When you come on to a new project do you do a presentation? Or are they just buying you on reputation?
KN: No, when I do new business I’ll go pitch the …
development art architecture
Making cross-blogs queries in multi-site WordPress performant
Some time ago I was working on customizing a WordPress system for a client. The system was running in a multi-site mode, being a host of a large number of blogs.
Because some blogs had not been updated in a long while, we wanted to pull information about recent posts from all of the blogs. This in turn was going to be used for pruning any blogs that weren’t considered “active”.
While the above description may sound simple, the scale of the system made the task a bit more involving that it would be usually.
How WordPress handles the “multi-site” scenario
The goal of computing the summary of posts for many blogs residing in the hypotethical blogging platform, in the same database doesn’t seem so complicated. Tasks like that are being performed all the time using relational databases.
The problem in WordPress arises though because of the very unusual way that it organises blogs data. Let’s see how the database tables look like in the “normal” mode first:
It has a number of tables that start with user configurable prefix. In the case of the screenshot above, the prefix was wp_.
We can see there’s a wp_posts table which contains rows related to blog posts. Thinking about …
database mysql php extensions wordpress
Postgres connection service file
Postgres has a wonderfully helpful (but often overlooked) feature called the connection service file (its documentation is quite sparse). In a nutshell, it defines connection aliases you can use from any client. These connections are given simple names, which then map behind the scenes to specific connection parameters, such as host name, Postgres port, username, database name, and many others. This can be an extraordinarily useful feature to have.
The connection service file is named pg_service.conf and is setup in a known location. The entries inside are in the common “INI file” format: a named section, followed by its related entries below it, one per line. To access a named section, just use the service=name string in your application.
## Find the file to access by doing:
$ echo `pg_config --sysconfdir`/pg_service.conf
## Edit the file and add a sections that look like this:
[foobar]
host=ec2-76-113-77-116.compute-2.amazonaws.com
port=8450
user=hammond
dbname=northridge
## Now you can access this database via psql:
$ psql service=foobar
## Or in your Perl code:
my $dbh = DBI->connect('dbi:Pg:service=foobar');
## Other libpq …postgres
Use Java along with Perl
While working with one of our clients, I was tasked with integrating a Java project with a Perl project. The Perl project is a web application which has a specific URL for the Java application to use. To ensure that the URL is called only from the Java application, I wanted to send a special hash value calculated using the request parameters, a timestamp, and a secret value.
The Perl code calculating the hash value looks like this:
use strict;
use warnings;
use LWP::UserAgent;
use Digest::HMAC_SHA1;
use Data::Dumper;
my $uri = 'param1/param2/params3';
my $ua = LWP::UserAgent->new;
my $hmac = Digest::HMAC_SHA1->new('secret_something');
my $ts = time;
$hmac->add($_) for (split (m{/}, $uri));
$hmac->add($ts);
my $calculated_hash = $hmac->hexdigest;My first try for calculating the same hash in the Java code looked something like this (without class/package overhead):
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
public String calculateHash(String[] values) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
java.util.Date date= new java.util.Date …java perl



