I decided to do some research on the subject of privacy. Defining privacy, “the state of being alone, the state of being away from other people, or the state of being away from public attention”, is far more complex than anticipated. I am forming a theory on the nature of privacy, and using a survey to validate (or disprove) the theory.
I have zero desire to know who answers the survey, because some data collected is sensitive personally identifiable information (PII). Since PII data are involved, I wanted to make sure that the data was protected, and protect the identity of the data owners. When taking the survey, you have the option to not answer a question. Giving no response to a question is just as helpful as giving an answer to a question. The survey uses a secure connection, so all responses to the survey are encrypted.
The survey results are collected into a spreadsheet, loaded into a PostgreSQL database, and an R script to process the results. Various statistical tests are executed to find relationships between the responses to the survey, and various demographic data.
I appreciate you taking a moment to read about the research I’m doing on privacy, and hope you will take the Google Forms version of the survey I have created, or the Typeform version embedded in this page.
Jim Willmore – willmorejg [at] gmail.com
The Typeform version of the survey follows …
Java is, in my opinion, an excellent programming language for developing applications. However, when requirements are unstructured or vague, the advantages of Java become difficult to implement. Variables (or class members) that are expected to have values are sometimes found to be null (or absent of data). When a variable is found to be absent of data, a NullPointerException (NPE) is is thrown at runtime when a operation is performed to manipulate the data. The NPE is an unchecked exception, which means that the exception is only realized at runtime, not compile-time. A developer will not know that an operation will fail until the application actually executes and the variable is found to be null.
Continue reading Null Pointer Exceptions in Java – One Person’s View
Imagine traveling to a foreign country and needing directions to your hotel. You are not fluent in the language of the country you are visiting, so you install an application on your mobile device to aid in translating your language into the country’s native language. Now you have a remedial way to take your native language and translate what you say into something that could be understood by the residents of the foreign country. This is an example of what domain specific languages are in the world of computing.
Continue reading Domain Specific Language (or asking for directions in 10 different languages)
It seems that there are some businesses that rely heavily on tacit knowledge (“Tacit knowledge,” 2013) to run their IT services. Documentation is seen as non-value added activity (“non value added activity,” 2013). When there is a problem with an application, there is usually a name associated with the application; a go-to person. This approach places a company at-risk. One of the phrases we used to use at one of my places of employment was: “What if Jim gets hit by a bus, or wins a million dollars?”. Exactly. What happens if the person with all the unspoken, undocumented, knowledge about an application (or process) is away from the office, even if it’s for a sick day? Does the business just simply wait for the return of the Oracle? Is the response to customers, “Oh, you’ll have to wait on that financial application to be fixed, Jim is away on vacation”?
Continue reading The Importance of Software Documentation (“Document … why bother? Just ask Jim, he knows”)
If there is one thing that is certain, doing more with less mentality has killed software development. Having a developer / programmer / analyst / tester / technical writer /etc., instead of multiple people to fill each each role, diminishes the overall role the SDLC (software development life cycle) plays in software development and maintenance. It does not mater what approach or methodology you use in getting software modified, there are defined stages in how software gets changed. I must stress software modifications, because new development in most companies is dead. Once the software is developed, it is maintained. Maybe it’s me, but most of what I read today about the various development methodologies focus on new development. Maybe maintenance is implied, but I think that most company leaders see the approaches as related to new development. This is simply not the case. The SDLC applies to change within the software and its related systems, not just new development.
Continue reading Role-based software development (or everyone has a part to play in getting it done)
I re-learned some important troubleshooting techniques recently that I’d like to share with you. They are rather simple and could save hours of time trying to fix something that’s broken.
Continue reading Programming – Tips for Troubleshooting an Application Issue (or “It’s broke – fix it NOW!”)
I attempted my first release of an open source project today. The application is called Status Reporter and I have some summary information about the application here.
I wrote it because I wanted to keep track of my time at work. I used my home computer and my time to write the application. It took a bit, and I was a bit uncomfortable at first releasing the code for others to see. I’m my own worst critic. Hopefully, others find it useful and are able to track their time in a slightly more efficient manner.
An interface is a way to describe how to interact with a class that implements defined methods. An interface only defines how to interact with an interface or class that implements the interface, not the actual implementation. In other words, an interface exposes what behaviors will be available, not how the behavior is carried out. In the real world, all cars have horns, but each car’s horn may have a distinct volume, pitch, sound, and duration. The interface for each car may be the same (pressing the center of the steering wheel), but the sound produced by each car (the implementation) is different. This allows any driver to know how to use any car horn, not how the sound is produced by the internals of the car.
Continue reading Java – why use interfaces?
I put together a very simplistic way to compare files. The code is not as fancy as diff or other tools, but it gets the job done.
Continue reading Java – simple file comparison