Archive for Development

Look, if you are going to tokenize your forms (and you should because of CSRF), you also need to have some active JS (or whatever) on the page that at least hides the form after the last valid token expires. For those of us who leave websites that we sign into open, we are tired of logging in twice! Citi.com I’m looking at you.

Your Computer Genius has worked with Strength Productions LLC for a long time. When they needed a web site to support and sell their new product, YCG came through for them. Strength Productions is a training success story — once WordPress was installed, they practically designed and built their own site!

Recently we acquired a new client and set up a new Windows development environment for their project from scratch. Here is a profile of the process we used.

We started working with a small business based in Vancouver, Washington, USA. This was a new client for us, and they desperately needed help with their business processes. (They also requested help with their website, but that is a separate topic for a different day!)

The client was using a mish-mash of common small office/home office software products, including Adobe Professional and Microsoft Office and the processes that were being used in their business were quite convoluted. For example, the order taking process, which was needed for each new order they took, had many repetitive steps across several different programs, involving cutting and pasting and lots of duplication of effort.

For our first step, we had a consultative meeting with the client. This meeting immediately produced a tons of value in the form of actionable insights. These insights showed exactly where we should help them optimize their business processes. This optimization, when complete, will save them lots of time in the order taking process and in following up on orders. This will enable them to spend less time processing the orders. This saves costs on the staff time it takes for each order, reducing the per-order overhead, as well as allowing the order taking process to scale better. This enables them to take more orders and do more business. This a great thing for growing the business!

During the initial meeting we took detailed notes and we identified the key elements in each process. We also began to outline the solutions we would implement at each step.

This is the same basic process development that we have been doing professionally for over a decade.

Since they had a Microsoft Access database in a core role in their internal processes, we outlined a path to step from Access to SQL and then to a web-based app which we would custom develop for them. This is the same basic process development that we have been doing professionally for over a decade. This client’s use case fit nicely with the profile for this kind of work.

In order to facilitate this development process, we immediately provisioned an Amazon EC2 instance with the latest and greatest Microsoft Windows Server. Going this route is much quicker to implement than provisioning local hardware and software, and it is also less expensive, more flexible, and offers better performance out of the box. The required software licenses alone for this development environment and the related production environment would easily be several thousand dollars. Amazon has low recurring fees for their Web Services that are based on usage. Those fees automatically account for the necessary licenses for the software we use.

Since we do so much development work locally, on either Macs or Linux-based machines, I was curious to see what tools we would set up on this Windows based server for our team to share. As I was the one setting this up, I brought along many of my favorites tools. Some of them seem outdated, but they still get the job done. First I installed the truly cross-platform (consistently developed for multi-platform) tools that remain the same across the various dev platforms.

We connected SourceTree to our BitBucket account. With the distributed source tracking, all of the developers on our team are able to program, test, and debug on their local machines and then push and pull accepted changes to and from the central repository.

It’s been a little while since I set up a Windows Server as a Dev environment, and I guess I was a little surprised to see myself using the same old tools. However, it gets the job done, and that’s great!

We just enabled the MSSQL extension via FreeTDS on a Media Temple DV 4 VPS. Here’s a line by line of how we did it, borrowing heavily from http://www.mavrick.id.au/2012/php-5-3-6-mssql-freetds/
, but adding the particulars for the MediaTemple DV and for the particular version of PHP (5.3.5) that we were using:

I compiled the pdo_dblib.so extension… but it looks like PHP is compiled with –disable-pdo. So I went back to mssql_connect as a connection method…

Logging in as the user to the bash shell, I could telnet to the database server’s ip at port 1433.

From the command line as well, I could run tsql (the diagnostic tool that comes with FreeTDS) and connect to the server, where I was able to verify that the hostname, instance, and dbname lookups are correct. I could even run T-SQL statements and query the database successfully from there.

I configured the FreeTDS conf file to have [appname] as a reference to the server, and then accessed via the following code in:

So today we had to make a custom repository so that our composer installs could look for custom changes to a particular package that was causing a problem with one of our client’s production applications.

The only current change in this particular package was a solitary “if” statement added to a single line of code. This statement checks to make sure that the object operated on is indeed an object: in certain situations in the production app it throws a fatal exception claiming a “non-object.”

Once the forking was complete, we cloned the forked package into GitHub for Mac (nice!).

We branched into “missing-object-protection” (the name of the branch will be important later).

We edited the file “lib/PHPPdf/Core/ComplexAttribute/ComplexAttribute.php”, committed the change, and pushed.

Then on to editing composer.json.

We tried to run “composer require” and “composer update” on a development version of the application, after “composer remove” took care of the original psliwa/PHPPdf package. However, we ran into the issue that our newly created PHPPdf branch no longer satisfied the requirements for the PDF Bundle dependencies that was also used by the production app!

Welcome

The Genius Tech Blog is a place for all software developers, network administrators, devops managers, and internet engineers that work with Your Computer Genius to sound off about the tech in their lives. Blog posts cover topics that range from industry news to specific and highly technical project walkthroughs.