Graphs and Charts with JFreeChart

Have you ever wanted build free graphs or charts using open-source in Java? Well it turns out that you can build free Java graphs and charts with JFreeChart!

Graphs and Charts with JFreeChart: JFree.org website
JFreeChart at http://www.jfree.org/jfreechart/

As the author of marrspoints.com, I have often thought of bringing some of the statistics to life with some graphs and charts. The main issue I faced was they needed to work with Java, and they needed to be free and open-sourced. After considering a few other options, I landed on JFreeChart written by David Gilbert. David maintains a blog but it, like the JFreeChart documentation is somewhat out of date. More on that in a bit – as there must be a reason I still chose it for marrspoints!

I originally developed marrspoints.com in 2015 and have continued to update it with some SEO and then some statistics in April of 2016 and more recently the Bracket Racing program (a very different type of class) in April of 2018. Oddly I am writing this post in April of 2020 (which included the graphs of which I will discuss).

Advantages of Graphs and Charts with JFreeChart

The main advantages I found with JFreeChart were my key requirements:

  • Written for Java and works with Java 8
  • Free and Open-Source
  • It has some documentation (not free and not up to date)
  • It has a huge library of ready-made samples (not free)
  • Works with Java WebApps – specifically Tomcat 8

Since it comes as a Java Jar file, I decided to go ahead and buy the documentation for about $55 USD. The first thing I noticed was that the PDF file was for the 1.0.19 version and not the current 1.5 version. This was worrisome. However, David’s blog pointed out that the documentation also gave you a complete sample set of charts in a jar file, and instructions to run it.

Between the documentation and the sample set of 300 graphs, it was fairly easy to make quick progress. The documentation gave me enough clues to make a Java Servlet that created a PNG with a summary chart. There is a sample app that allows simple clicking through the 300 sample graphs and charts to allow selection of various features for chart type, legend manipulation, axes control, titles, subtitles, etc. Combining these two elements, I was able to pull together four graphs of three different chart types fairly quickly. My first chart follows.

Graphs and Charts with JFreeChart: Unique Drivers per Class per Season

Disadvantages of Graphs and Charts with JFreeChart

As previously mentioned JFreeChart is not totally free if you want the documentation and the sample charts. But to me, they are totally worth $55 USD. Also as mentioned, the documentation is not current for version 1.5 – but it was good enough in the sections I needed to help me create Java Servlets that produced a PNG image. The sample charts are well worth the money and helped me craft custom charts such as the bar chart below.

Graphs and Charts with JFreeChart: Top 3 Ironman past 5 years

It would have been nicer if the documentation was up to date. It also would make me feel a bit better if there were updates post 2017 to this project by David. But it works great and is mostly free. David also has other newer SVG graphs, JS graphs and a whole new charting library. But this one worked well enough for marrspoints.com.

Conclusion of Graphs and Charts with JFreeChart

Hopefully this short article has helped you see that you can build some free Java based graphs and charts with JFreeChart.

Ted Cahall

Amazing or Amazon Web Services (AWS)?

Working with Amazon Web Services (AWS) is actually quite amazing.  It is not just a hosting platform – which is all I initially needed when I launched marrspoints.com.  You know, the mundane, standard bit of Java, Tomcat and MySQL hosting.  After launching the FinTech start-up, TheSubtractor.com, with Scott Scazafavo last year, it has been a fantastic journey into the many application services that they offer as well.

It is so nice that the Route 53 DNS service integrates so seamlessly with their SSL certificates and elastic load balancers.  It makes certificates dead simple and painless.   It feels like the Geico caveman commercials compared to the work of making SSL sites of the past.

Email services are a snap with Simple Email Service (SES).  Standard email client code such as Apache Commons work right out of the box once your account and domain are cleared by Amazon to send.

Email integration is also done so elegantly.  With bounce, complaint, and delivery notifications done in their Simple Notification Service (SNS) via JSON messages.  The costs are crazy low if you do not mind making the glue to your applications and the services.  Even text messaging is super cheap when you move to add texting in addition to email.

Need a CDN?  No problem, start with some S3 buckets as the backing store, put AWS CloudFront in front of it, add in an SSL cert for the secure pages, and your are up and running in minutes!  Again, dead simple to implement.  Want to make the image management of your CDN native to your in-house developed tool set (versus using the AWS S3 console to upload files)?  Use the AWS SDK in the language of your choice to list the files and upload new ones.  It’s a little sad the sub-directories are not real in S3, but with some code you can fake those pretty well.  You might want to break out only the services you need in the SDK, as the Java version all up is over 100MB!

Need to do some AI or Machine Learning?  Amazon has some amazing services that allow you to spin up and only use the compute when you need it.  You do not need to build out a Hadoop cluster on a bunch of ec2 nodes – they take care of all of that for you.  You supply the PySpark or MapReduce code on top of their Elastic Map Reduce (EMR) services.  They are making so many inroads to Big Data as a service that it really lowers the bar of entry for companies to innovate, test and learn with their data strategies.

For a number of reasons, I learned to move to Ubuntu 16.04 for my main version of Linux on AWS.  Too many 3rd party packages were not available in AMI 2 from AWS.  Things like Zabbbix had to be hacked and AMI 2 was way behind on the version of Tomcat in the repo.   Issues with the MySQL client libraries also come to mind.  Just too much fiddling to get a new node to work with my standard development scheme when they work perfectly from the repos with Ubuntu 16.04 (minus the Oracle version of Java of course).

I am sure I am leaving off dozens of items I found along the way of working 100% in AWS for our production site at TheSubtractor.com.  It has been a really enjoyable journey.  So enjoyable I have not written a blog post since July!  We are no longer in Beta and open to all for registration.  I could not be more happy with AWS – it does what it says it does, and it is super easy to implement and integrate with all of its other services.

Ted Cahall

WolkeWerks Alpha Goes Live

Today marks another step along my journey as a co-founder (chief bottle washer?) of a FinTech start-up – we are ready to announce our WolkeWerks Alpha Launch!  It was been an interesting and rewarding experience to say the least.  My co-founder, Scott Scazafavo, and I have spent most week days with at least one video meeting as we hash through the details of our product and the problems it solves for our consumers.  Only two people in the company, and yet we still have multiple locations and a two hour timezone gap.  Flexibility is a key to success.

To me, we have too much polish and too many features for an Alpha.  For Scott, he no longer “cringes” when showing the product to his friends and family.   The joys of being co-founders.

We are really fast, er, not that fast

As usual, things always take longer than one would like or even optimistically estimate.  After Scott and I determined the initial high-level plan, we selected a data provider and I was able to produce a proof-of-concept / prototype in one week.  WE are REALLY fast we thought.  Within a day later, I had skinned the “consumer” version in Bootsrap 3.  OMG we are SUPER fast!  The prototype made it clear we had all of the building blocks we would need (aside from an army of software engineers, designers, research assistants, etc).

If I was able to write a fully functioning, Bootstrap-skinned prototype that was based upon a data service REST API in under two weeks, surely we could get our Alpha product live by April?  May at the very latest.

Where did it all go Blanche?

Hmmm.  Oddly, as we launch today, on July 5th, it is interesting to see where the time went.  Figuring out the features for Alpha took longer than expected as we scoped the ideas down to the bare essentials.  There was over a month spent on looking at technologies and products that we eventually realized would not be used until the MVP phase.  A huge help was the book “The Lean Startup” by Eric Ries.  It helped us focus on much less and testing our way into changes incrementally (and thus an Alpha, Beta, MVP and the major releases).

Of course there is also the fact that we only have one software engineer (me).  I like to think I can code fairly quickly, but in fact, I am also the AWS systems administrator, the Apache and Tomcat administrator, the MySQL DBA, as well as the front-end web developer (JavaScript, jQuery, Bootstrap 4, HTML5, CSS, JSP) and the core services developer (Java).  Oddly, as is the case during my whole career, product management was able to generate more ideas and features than engineering was able to produce at the same pace.  I was doing some product management along with Scott – but again only I was doing any coding or system administration.  Clearly I learned to stop making my own backlog bigger fairly quickly. 😉

In the beginning…

In the early phases we needed to agree on the basic functionality.  We knew the long term product would use distributed processing, AI and machine learning.  These are of great interest to me and so I poured myself into learning them more deeply (and getting them working in my lab) as fast as possible. This was going to be a super cool product and possibly even more fun to build!

A dollop of Hadoop and a sprinkle of Spark

What a dream job!  I was a full-time student again.  One of our product’s main goals is to help a consumer manage their online subscriptions.  My quest for building a Hadoop based AI engine allowed me to add at least five more online subscriptions to my credit cards!  I was a super-user and the product was not even built yet.  Courses from Udemy, Lynda.com, Coursera, Pluralsight were great!  I quickly outpaced the top courses in Treehouse but had fun looking at them. These paid services were in addition to my regular free sites of w3schools.com and others.  I was suddenly an online training expert.  Visions of blogging about the various online training sites and their relative merits sadly danced in my brain.

I took courses about Eclipse, Docker containers, AWS S3, Hadoop, MapReduce, Spark, and stuff I cannot even recall at this point.  All of this while building out and upgrading my Hadoop and Cassandra clusters and testing my various theories on how to make the product sing.  Then a dose of reality hit as I was working my way through “The Lean Startup” book.  Oops.  I had gone way too far down that path when we were not even sure of the core viability of our product.  There were MUCH simpler ways to achieve the product viability testing we would need without the AI engine working day one.  Well that was at least one month of “fun” research that was pointless to our Alpha.  Ouch.  That was a big chunk of time lost – regardless of how much fun it was.

Time for a road trip

Once I realized I had lost my way according to the “start-up bible”, I quickly re-focused my interactions with Scott.  We decided we needed to spend some time in the same city (with a real whiteboard) to flush out the phases of the product roadmap.  Scott and I chose Denver as it was in between Seattle and Minneapolis.  We used Trello (for free) and carved out what the Alpha, Beta, and MVP versions of the product needed to be (knowing even Alpha would shift as we continued to determine feasibility).

Real collaboration – at the code level

The next issues was linking Scott’s product features and design to my coding.  Sounds simple, but we needed to agree on simple things such as a front-end framework and possibly a tool that would allow Scott to design mock-ups that could be implemented with relative ease inside the chosen framework.  With much angst and encouragement, we agreed Scott would learn a little Bootstrap and select a Bootstrap tool to make the “unauthenticated” portion of the Alpha site, since my version was a white page with a login form (I thought it looked great!)

Since Bootstrap 4 was available, Scott picked a tool that generated Bootstrap 4 code.  No worries, Bootstrap 4 is backwards compatible to the Bootstrap 3 code used in the prototype – right?  Um, no. 🙁

I made the mistake of a 5 minutes hack of the consumer site (integrating the authenticated prototype and the new unauthenticated code from Scott).  It produced a hybrid Bootstrap 3/4-ish site that I showed to Scott.  I think I almost killed the company.  It looked OK-ish (to me).  Scott was so depressed at how bad it looked he was on LinkedIn looking at Junior Product Manager roles.

Staying positive and building momentum

I realized that incremental crap-ism might not be the way to encourage Scott along the Bootstrap 3 to 4 migration journey. I quickly researched all the issues with making the site fully Bootstrap 4 and re-coding the prototype so it looked proper in both the authenticated and non-authenticated states.  Slowly I coaxed Scott back off the ledge when he saw his designs working pixel-by-pixel as he had designed them.

Moving from Bootstrap 3 to 4, creating a working rhythm with Scott as he generated pages and updates to the prototype pages took some time, but the pages started looking better and better.  Eventually Scott learned how to use GitHub and started making some UI changes directly himself.  Now we had put down our rocks and sticks and began cooking with gas.

There were some data service issues that we needed to address.  Then some AWS issues we needed to investigate and correct, plus redirects, SSL certs, password standards, and a lot of other things that  were correctly deemed important into a FinTech Alpha.

Then the real fun began.  The product was getting close enough, but there were some key features that we felt would make the product more useful and pleasing to our consumers, and there was an issues with “the browser wars” that was likely to cause confusion with our Alpha users.  Should we add the features and try to fix the browser wars issue?  In the end we decided yes.  The additional features required about a day of coding.  Well worth it.

FireFox, FireFox, why, why, why?

We decided we needed to make a valiant effort to correct an issue where browsers were auto-populating our site’s credentials into a third-party access credentials form.  We allow our consumers to access their own data through our product, but they need to securely pass their credentials onto their banking service.  If the browser auto-populated these fields with our site’s login credentials , the user would likely pass the wrong credentials to the back-end banking service and the connection would fail.  It should be easy to stop a browser from auto-populating a form field you would think.  Unfortunately, again, no.

Here is where the “browser wars” come into play again.  The HTML5 specification says that there is a attribute that can be used on the <form> and <input> tags called “autocomplete”. By setting autocomplete=”off” the browser should know not to populate that password field with the current site credentials.  Perfect.  Except none of the browsers honor it!

Protecting the installed base – of course!

There is a significant hurdle browser companies implement so users are less likely to consider switching browsers.  Many users allow the browser to remember all of their passwords to the many banking, media, and merchant sites they use.  Smart users do not use the same password for their favorite recipe site as their investment or banking sites.  Who can remember all of those passwords?  Let Chrome, Firefox and Edge remember them for you!  But once a user has done that, it is way too much work to start over again with a new browser and migrate all of those passwords (that they really don’t remember) along with them.  Great product management by the Chrome, Firefox and Edge teams in protecting their installed bases.

This is all fine and dandy, until a site needs to be sure the consumer is not confused when a different set of credentials are being requested.  Auto-populating credentials (especially when they should be different than the site they are on) may cause less sophisticated users to submit the wrong credentials.  This further confounds the user experience and frustration levels.

A partial fix for now – and full fix in Beta

Interesting enough, on a blog from the Mozilla Developer Network, there is an article that explains a simple way to stop the browser from auto populating the forms fields.  And guess what?  It works for the latest versions of Chrome and Edge – but NOT FIREFOX!?   Mozilla explained how to correct the issue (autocomplete=”new-password”) – but then explains they ignore that as well.

Why would Mozilla do this?  Because they have been losing market share to Chrome for years – and they need to be more aggressive in their product design to capture and keep new users by storing their password at all costs.  Sad.

So we launch with Firefox users having some confusion when we (securely) need their credentials to their bank services.  There is a complex JavaScript fix that we will eventually implement that randomizes the field names on load, but changes them to “password” and “username” just prior to form submit.  Sad we need to resort to that.  But we will make that part of the Beta and just pre-warn our Firefox Alpha users.  After all, it is Alpha, and we decide who signs up and what issues we are asking them to avoid.

A curvy roadmap – and then a right turn

So after a month’s travel down a wrong road along the course of developing our roadmap, we have finally gotten to the day of our Alpha release.  We need to remind ourselves it is not an MVP or a Beta – it is just an Alpha.  But to me, an Alpha that is pretty slick and does a lot of what we will need it to do as we roll towards Beta and the MVP.

There are many features left for Beta and the MVP as well as dusting off the machine learning and AI code – but we are on our way!

Ted Cahall

 

Home Storage? Back-up? Instant File Sync? Synology!

Synology NAS Servers

One of the most important components of my home data center, are my Network Attached Storage (NAS) servers.

Synology 1517+ Consumer NAS

I have had my old NetGear ReadyNAS unit for at least 9 or 10 years now. It has a whopping 1.3TB of storage across 3 drives in a RAID 5 configuration.  NAS units are great for storing my racing videos that no one will ever watch, old photos now that everyone with a phone collects thousands of photos a year, and copies of my important tax, mortgage, and legal documents.  Some of my friends store TBs of pirated videos from the dark web.  I am a NetFlix and AppleTV guy so that saves me a few TBs.

Goodbye NetGear, hello Synology

While the ReadyNAS served me well, it was long in the tooth and short on TBs.  It also was missing some of the interesting new features that I did not even know I was living without until I bought my first Synology NAS back in 2015- the DS1515+. These guys really have done the whole consumer NAS thing really well.

Main attraction

The main feature I use and like is the immediate file sync of Linux directories on my Linux servers (and one of my Windows 10 desktops as well).  Once I configured this option and selected the directories I wanted synced, all of those files continue to be safely stored on the NAS.  No backups – it copies the files immediately upon edit or save to the NAS file system.  It is also a nice way to grab files from one machine to the other as the systems can all see the disk replicas across the servers.

This does not mean I do not do backups.  I have Amazon Glacier storage and I have those critical legal, tax, mortgage files sent out to Glacier storage once a week from the Synology NAS.  The great thing about that is Synology provides the service that runs on the NAS to do the Glacier backup.  Really simple integration.

Built-in Servers (services)

The disk drives are even “hot swappable“.  No downtime if you have a drive go bad.  Aside from rock solid hardware technology, another amazing thing about Synology is the application ecosystem they provide on the NAS server.  They want you to make this your “server” for everything and anything you do in your home.  Want a VPN sever?  It has that.  DNS? Yep.  Connect with my Macs, Windows, and Linux in their native network protocols? Of course.  It has email servers, video security servers (I bought two cameras to test and they are great), video, photo, audio servers.  There are Active Directory, Email, Network Management, Print, Content Management, WordPress, WikiMedia, E-Commerce, Docker, Git, Web, Plex, Application (Tomcat) and Database servers!  These all run Native on the NAS.  Not just as the disk – but in the memory and on the quad core CPU.

I cannot possibly list all of the features and servers these new Synology NAS units supply.  I have tested many of them, and they are rock solid and dependable.  I never envisioned using my NAS as a “server” other than as a network attached storage server.  Now it can work as so much more.

The more the merrier

The Synology product has me so hooked, I bought my second unit!  A DS1517+ with 8GM of main memory and 30TB of storage (5 disks @ 6TB each).  I used this for the security video storage and as a snap backup of the first unit.  Had I planned it better, I could have arranged these two Synology units in an active-passive mirrored configuration.  This would allow one to take over if the other crashed.  Clearly I do not need that at home.  But it is nice to know that a simple consumer grade products offer these features now.

These really are a great compliment to my home data center’s NUC-based Linux servers.  But I do not use the NAS for Cassandra or Hadoop storage.  That all lives on the SSD drives in each of the NUC units for performance reasons.  I back them up to the NAS off hours.

Highly Recommend Synology NAS

I fully and highly recommend these Synology NAS products.  They do not sell direct.  I recommend finding them on Amazon after you spend hours like I did on their product site comparing models and features.

[Update] One cool thing I forgot to mention before I hit “publish”, is that this unit of course runs Linux.  It is a 3.10 kernel version modified by Synology.  This is the reason so many of these services (servers) are available as a stock part of the unit.  Synology chose to make Linux the engine to run the NAS and  brought along many of the Linux services.  With simple configuration, you can ‘ssh’ into the NAS and work on it as though it were a plain old Linux box.  It is really well done.

Ted Cahall

 

Surfing to the end of the Internet

Keeping (too) busy

Since I left Digital River at the end of February, I have been working closely with Scott Scazafavo on a stealth start-up idea we had been kicking around.   Most mornings I hit my office early and attempt to further the research or  code base.  I worked on some Java REST API code I wanted to improve from its early usage at marrspoints.com.  I remembered there was a simple test site that gave canned responses to HTTP GET, POST requests along with cookies and the likes.  After a tad of searching, I found it again: httpbin.org – what a nice tool.  Simple yet elegant – and great for testing out HTTP code samples where you just need a simple endpoint.  Tutorials on the Internet should just use this site in their examples – as it likely will not change much.

The dangers of the Internet

This is where the danger began…  As I was done using it for the simple testing I was doing, and was ready to move onto the next phase, I noticed that it had the authors name with a hyperlink.  Since I wished I had written such a useful “demo” or example.com website, I wanted to see a tad more about him.  Through Kenneth Reitz, I learned that I comparatively don’t have many cool hobbies or talents (I am not that great of an auto racer and I have not written books, published music, been a professional speaker or even amateur photographer).   That is all on top of his enormous contribution to the Open Source space.  This guy is REALLY talented. Through his link on his personal values, I saw another link stating that “Life is not a Race, but it has No Speed Limits”.  Of course that deserved a click!

Through Kenneth and that link, I met (online so to speak) Derek Sivers and read his axiom – that “Life Has No Speed Limits“.  And though that story, the life of Kimo Williams and why focus matters.  Focus?  On the Internet with so many lessons to learn?

Saying “Hell Yeah!”

It was great to “meet” three SUPER TALENTED people on the Internet this morning.  People I will likely never meet in person or even exchange emails.  Yet, people from whom I have already learned.  While perusing Derek’s site, I found another life lesson to which I truly try to adhere.   No “yes.” Either “HELL YEAH!” or “no.”

OK- back to that focus thing and getting some work done.

Ted Cahall

Using Postman for API consumption

Being a caveman

So what is wrong with curl?  Nothing.  But Postman (at getpostman.com) is simply one of the best tools I have used while developing code that consumes APIs.  This is another case where I was using caveman tech (curl) to do a job so elegantly managed by a service that makes a desktop app that runs on Linux, MacOS, and Windows (and syncs across them).

Sometimes you just need an API

My coding and racing adventures led me to develop and win an award for the marrspoints.com application.  The app consumes two different APIs: race-monitor.com and motorsportreg.com.  I used curl to do the testing dirty work for these as one of them did not publish their response formats that I needed for my JSON parser.

I have been playing with a stock/equities “demo app” for my Cassandra cluster.  The app required me to replace the old Yahoo quotes feed.  I had to do testing on the new feed I chose, and I was still doing it with curl.

Even a stealth API…

Currently, I am now working on a stealth start-up idea with an even more stealth cohort of mine in the financial space.  The data company we have tentatively selected (and their API documentation) pointed me to Postman.  It is awesome.  I have deeply tested the financial access, accounts, instruments, etc.  This was accomplished on my own accounts in only a couple hours of work and research.  Postman is script-able, has variable replacement, etc.  Oh, and the best part, a single developer license is FREE.  My favorite price.

To think Sam Morris at Digital River talked about Postman dozens of times. It never occurred to me to go look at it.  That cost me a lot of wasted time. Especially since I know Sam is “the man”.  Thank you Sam – the second time I heard of it, I knew to go get a copy and learn it quickly.

Ted Cahall

Gnome desktop coming to Ubuntu :-(

Unity vs Gnome

I hate to think of myself as a tech Luddite.  Being an Ubuntu Linux fan has caused familiarization with the Unity desktop.  Recently, I have been playing with 17.10 to see what is coming in 18.04 LTS.  I never thought I would defend the Unity desktop as my earliest Linux days were split between the Gnome and KDE desktops.  But I wish I had my old Unity back. Yes, I know I can return to it in 17.10 – but it is becoming mostly unsupported.  Incremental scaling is essential with today’s 4K monitors.  Or I need Lasik.  Uber-Lasik in my case.

Why I like LTS.1

I never actually run the first point release of an LTS version.  I waited for 16.04.1 to get anything real live on 16.04 LTS.  It seems the Gnome desktop has a big memory leak and it likely will not be fixed in the 18.04 LTS initial release in April.

OK, scratch moving to 18.04 LTS in April on anything I need.  I already am a desktop memory hog as it is and finally upgraded my new desktop machine to 32GB of RAM.

A Gnome future in Ubuntu

I know this is all for the good.  That change thing.  Moving to Gnome in this case.  It is far more widely supported and used across more variants of Linux.   I used to be a CentOS champion as I loosened the evil grip of RedHat subscription fees back in my AOL cost cutting days.  I have since become almost an exclusive Ubuntu home data center.  Seems I will be straddling Gnome and Unity for a year or so.  One other word of caution, the Gnome 3.26 desktop (used in 17.10) does not truly support incremental UI scaling yet.  This is a problem for people like me with a 4K laptop screen or large 4K desktops.  There is a workaround.   However, it is not clear if fractional scaling will make it into Gnome 3.28 which ships with  18.04 LTS.

Happy times.  It is really hard to see my shell windows in a non-scaled up Gnome desktop on a 4K laptop screen.

Ted Cahall

Intel NUCs make a perfect home cluster

Getting my latest NUC

I am pretty psyched to get my latest Intel NUC.  The NUC7i7DNKE has an 8th generation Intel® Core™ i7 vPro™ 4.2 GHz “Turbo”, quad core processor with 32GB of DDR4 2400 MHz RAM and a 1TGB SSD drive.  Not to mention built in 4K UHD video with HDMI ports and USB 3.0.

My home data center NUC cluster
My home data center NUC cluster

I will use this as my main development machine.  It is crazy that I tend to run out of RAM on my 16GB machines running Ubuntu.

This will be my 9th NUC.  Maybe I am a little too in love with these things.  They make great clusters for home research and development on distributed technologies such as Cassandra and Hadoop.  I have three nodes running Cassandra and Hadoop today – and am looking to add a 4th node when I free up my current development machine NUC.

Quiet, Low Power, great for clustering!

They are whisper quiet and use very low power.  There are 5 in a stack sitting on my desk next to me as I write this, and they make less noise than a single standard PC.  In fact, they seem to make no noise at all.

I also run Windows 10 on one as a home theater type of PC connected to a Samsung UHD TV via HDMI.  These NUCs are awesome.  I gave my old i3 core media NUC to my younger brother as a gift.

Here is an old picture of my early stack of NUCs.  They are each 4″ x 4″.

Ted Cahall

Ted Cahall’s “new” tech blog

New Blog along with some old content

As a past media executive at companies such as CNET Networks, Microsoft’s MSN, AOL and the early social network Classmates.com, I have operated a  blog here and there over the years.  Mostly to test out SEO ideas and cross link my sites, etc.

Started on LiveJournal in 2004

One of my unfortunate SEO decisions was using LiveJournal.com for my tech postings.  In 2004 as CTO of CNET Networks, I was fortunate enough to meet Brad Fitzpatrick who invented LiveJournal (as well as memcached).  Since we made a (failed) bid to buy the site, I decided I should use it and get to know it a bit.  I had used it to blog about some of my non-proprietary experiences with technology and software from time to time.

My last post there was almost two years ago to the day.  I was musing at the intersection of my auto racing hobby and my technology hobby.  It was through a lack of automation of the points standing of my auto racing league that I had finally brought these two passions together.  This was all enabled by Open Source, the Intel NUC computers (home data center), and Amazon’s AWS hosting facility.   Resulting in the creation of the marrspoints.com race points tracking web application.

LiveJournal did not seem to get the SEO juice

Compared to modern blogging sites such as WordPress (which this blog is built on), LiveJournal never got the great SEO features that it deserved. Therefore today, I am moving my LiveJournal information over to a new home here at cahall-labs.com.   All of the posts have been successfully moved here as of this post.

Open Source and my Home Data Center

I have a few tech topics that are of interest to me. They include:

Cassandra and Hadoop

The marrspoints.com site was simple to build, but the back end tools to ingest all of the race data was a lot more work.  I occasionally look at ways to change the data ingestion or analytics.  Therefore I play with tools such as Cassandra and Hadoop on my NUC cluster in my home data center.  In general, I will try NOT to blog about racing in this blog.  That will move to a blog at either cahallracing.com or cahall.com.

Thank you LiveJournal – hello WordPress

So thank you to LiveJournal for the tools and time.  It was a good 14 year run.  There is also an old, outdated racing blog on WordPress.  It will likely be moving to a new home in the next month or two.  It will be good to get back to using the tool Matt Mullenweg built (WordPress).  I had the opportunity to work with Matt at CNET when he spent time there for a year on his way to becoming famous.  Clearly I wish I had made a blog tool.  Some day I may even blog about Gavin Hall and Alex Rudloff.  They built blogsmith.  Blogsmith powers TMZ.com and most of the AOL blogs.  I guess I met most of the people that built blogs…  Very, very smart and talented people.

Ted Cahall

Ted Cahall receives SCCA Award

Regional Exec Award

Ted Cahall receives Regional Executive Award
Paul Anderson, Regional Executive of the Washinton DC Region of the SCCA, presents Ted Cahall with the Regional Executive Award for the development of the marrspoints.com web application.

This month I was awarded the Washington DC Region – SCCA Regional Executive’s Award by Paul Anderson for the development and management of the marrspoints.com web application.  Building marrspoints was such a great way to join my two hobbies: auto racing and software development.

It really gave me something useful to work on through which other racers could also benefit.

Standing on the shoulders of giants

What an honor to be recognized.  But these things do not happen in isolation.  I could not have done it without the help and guidance of Lin Toland.  Lin was there providing the feature requests and feedback on the design and functionality.  He also did a lot of unpaid QA for my early roll-out.  You are a first class leader Lin – thank you.

Lin still helps navigate the WDCR SCCA region for me and helps me look at new feature requests including Bracket Racing with Chuck Edmondson.

Thank you for the start!

I would also like to thank Mike Collins of Meathead Racing for getting me involved in racing with the SCCA.  It’s like putting cash in a coffee can and lighting it on fire!

Ted Cahall