To summarize my services in one sentence: I am a problem solver who uses scientific principles to make computer systems work the way you need them to.
Below I detail the benefits of my services, and give examples of the kinds of problems that you can avoid by hiring me. Some of the examples are long, but may sound familiar to you if you have had trouble with software systems in the past. You can go directly to the summary if you want a quick guide.
A company I once worked for in Berkeley had a system that took 8 hours to run each night. They wanted it to be faster, and thought they knew how to fix it. Their idea was to build a custom system to distribute the processing across all their developer's workstations. They even bought a license for a distributed processing system.
It sounded like a good idea, and I was assigned the task of implementing it. Did I eventually implement it? Yes. But what did I find out during the research I did?
The 8 hour processing time should have been about 30 minutes! Why? Because half the time was taken up by a process that decompressed files, and extracted data from them. The data was used to calculate a 20 day average for 100 different sets of numbers. However, an earlier process running continuously had already calculated an average for each day. Instead of storing all of the numbers they could store 20 daily averages. Then instead of processing hundreds of millions of numbers in a compressed file each day, they could process 100 sets of 20. Plus with only 20 items per set they wouldn't need the file compression. Hence the time taken would drop from a few hours, to perhaps a few minutes!
Other portions of the system were similarly improvable, and the entire system was running on old hardware. A combination of an inexpensive new server, and some improved software design would have made their system more reliable, and 10 times faster or more.
A few hours or days of research on my part might save you months of programming and debugging, make your project more reliable, and considerably faster.
If you were the company I just described, how would you make a decisions about what to do with your software? You could assume that you needed more power and more sophisticated job control systems. Or you could hire someone to do the research and get the data you need to make the best decision possible. Do you want your system to be 100 times faster, or 50 times more reliable? Do you want a system that helps your users?
The AMCAS website is the only way for 2002 entering Medical Students to apply to 90% of Medical Schools. In 2001 AMCAS decided to replace all their normal application processes and have online applications only. Did this make everyone's life easier?
Software doesn't automatically make things better. When a good friend of mine filled out her AMCAS application a drop down menu let her select University of California at Berkeley for her transcript information, but automatically filled in an address in Denver Colorado! She had no way of correcting the address thanks to improperly designed software. How many calls and emails did AMCAS receive from Berkeley students who wanted their transcripts sent to Medical Schools?
Was this just one simple bug? Not by a long shot. Five minute waits for pages to load were common for her. She spent 3 nights in a row filling out the application information getting only 3 hours of sleep each night. At the end, when she printed out her supposedly final information it had completely ignored all her coursework at Berkeley, and listed her as never having completed any sort of degree. Furthermore, all the coursework from other schools was out of order. With my help she eventually sent an email detailing 8 major items that were wrong with the final output, even though all of her information had been entered correctly. Still, it doesn't seem likely that she will get into Medical School unless AMCAS fixes these problems. Did AMCAS make a good informed decision to switch over to online only? Not by a long shot.
To quote the AMCAS website:
At times the application may perform slowly or be unavailable
to additional users based on the number of applicants already in the
system. If you experience such problems, we recommend that you try
again at a later time. Based on initial usage, early morning hours may
be most optimal.
Hiring me will help you avoid ever telling this to the people who depend on your software.
Don't believe hype, get the information you need to know what your real options are.
Another company I once worked for hired a subcontractor to create a cryptographic system to transmit financial risk management data between their clients and their central office via email. PGP had been doing this for years, but despite this fact, the company decided to implement their own system. The subcontractor had written a system that encrypted the text but didn't sign it. So there was no way to know if data arriving at the company really came from one of their client banks, or just a random hacker on the internet.
The design requirements called for a Microsoft MAPI compatible mail system on both ends. Try telling a bank that they need to change their entire mail system just so that they can use your startup companies encrypted email system. The company I worked for did try that. Eventually a year after I left, the company folded.
With more options the company I worked for would have realized that SMTP, POP, and HTTP were all readily available data transmission systems for which EXISTING software could be used. Microsoft MAPI was new, and not widely supported. Furthermore, quality cryptographic software existed for UNIX command lines, and free UNIX software was available for commodity PC systems.
PGP could have solved their problem out of the box, and in 1 day, a good UNIX programmer could have made a reliable shell script that encrypted and signed a file, and then sent it via SMTP or HTTP or any standard mail system. Instead this company spent at least $40,000 developing a custom system that never worked.
As a computer scientist, I focus on the aspects of software development that general programmers often ignore. I focus on giving you more options, more information, and the best most reasonable design for your computing system. Whether you want to develop new software, understand how your existing system works, improve your usability, or create training materials, I will help you analyze and improve your software.
Rather than focusing on helping you create code in a given language, I help you find out what kind of code is needed, and help you reduce the amount of code you need. Then, I help you write the code in the most efficient way to minimize time spent developing software, and minimize the time your users spend waiting for your software.
Spending money on software development should get you fast, efficient, reliable software. That is what Endpoint Scientific Computing will do for you.
Throughout my website there are articles, links, and sources of information about technology, techniques, and opinions to teach you more about computing and software development, and the range of tools available to you. Which ones are right for you? contact me to find out.
Developing computing systems isn't about learning java and writing some code, and it isn't about buying software that is one size fits all, and making it fit. Computing systems based equally on your needs, mathematical theory, practical implementation techniques, and quality management decisions will work.
My primary concerns when working on software projects are:
If you take all of the above concerns into account, you will
create custom software that is fast, efficient, reliable, and solves
your problem with a minimum of hassle.
I provide computing system and software development services to help people make decisions about software, and to design or redesign their systems to be better, faster, and more reliable.
If you want software that solves your problem, does it quickly and efficiently, and can be written easily, then hire me to come help you design and analyze your computer systems.
The bullet point list:
Read more examples of how Endpoint services can help you make your software efficient, effective, and reliable.