Showing posts with label website. Show all posts
Showing posts with label website. Show all posts

Tuesday, January 27, 2015

3D Scatterplot Online, XYZ Plot in Javascript


Background

I'm an engineer by trade and by education. In my role I spend large amounts of time summarizing and presenting data to other people, usually engineers. Data comes in a variety of forms, and each form has a different way to be displayed. Information Visualization is an entire field of study on it's own. There are many software packages that have the ability to create charts and graphs. Some of them, like Microsoft Excel, are heavily used in almost every company. Other, more specialized, packages are often bought by a company to provide additional functionality.

One frequent type of data I use is called "xyz" data. I often just want to quickly chart a bunch of points in 3D space. Oddly enough, most standard software does a poor job of graphing "xyz" data. The default format for "xyz" data is a long list of rows where each row represents a point, and each point has three entries; one for each of x, y and z values. Excel won't chart this data unless you "pivot" the data into a different format. Other packages will chart the data from that format, but the chart controls to rotate, resize, zoom in and out, etc are kludgy at best.

The Idea

Since I need the xyz scatter plot so often, and sometimes in unusual places, it would be great to have an online interface to quickly paste some data and present a simple chart that can be rotated and scaled in real-time. Is that really too much to ask?! My Google-Fu is pretty good and I can't find anything online. How has no one done this yet? I've found contingency table calculators online that require a Chi table lookup. Most people in my industry don't even know what that IS despite it's usefulness. I don't want a free download, or an R script or an excel hack. I need to copy and paste my data and look at a plot in under a minute.

So I have to do it myself. Writing something server-side would be the fastest. I really like ColdFusion for this exact purpose, but that's not very common and I'd have to pay for some hosting. Maybe I will someday. My next natural inclination is to use JavaScript since it is client-side and available EVERYWHERE. But JavaScript doesn't have native graphics without using some kind of extension or additional package. Well, that was true until HTML 5, now we can use the canvas element to draw and display graphics natively in the browser.

Progress

01/27/2015 - First I created a static canvas of 2D points. Then I added the ability to import 2D points from a textarea html element. I added functions to project 3D points onto a 2D viewing plane then added buttons to modify the viewing angles. That took me a few hours. Next time I will add automatic scaling and chart annotations to give the chart some perspective. In the future I might add the ability for axis title and data labels, but that is a ways off.

02/10/2015 - Added automatic scaling and centering of chart, and the ability to make manual changes. Added corner points and XYZ reference lines. Once again it took me a few hours. Next I will add back-planes, gridlines and axis value labels.

02/21/2015 - Shading and grids are done. Shading helps a little, but perspective is needed to make the orientation clear. Also, drag to rotate would be helpful. I didn't want this to be a full-blown 3D project, so I'll probably stop here. I have what I needed; quick and simple 3D scatter plot.

Your browser does not support the HTML5 canvas tag.
Rotation Settings
Rotate By:     deg
X Rotation: deg
Y Rotation: deg
Z Rotation: deg
Axis Settings
 MinMax# Intervals
X Axis
Y Axis
Z Axis
View Settings
Marker Size: px
Zoom: %
Paste xyz data below, separated by tabs, commas or spaces, then click "Import".

Tuesday, December 2, 2014

Avatar / Mini Me App

Background

During my Master's studies in Electrical Engineering I took some programming courses. One course that I enjoyed was called, "Visual Interfaces to Computers." It was about the many ways that computers can obtain and use visual data from the real world. Since that time I have had several ideas on novel ways to use visual data.
In a completely unrelated line of thought I often think about pictures that people use to represent themselves in chat windows, gaming icons, Facebook, forums, and the many other virtual worlds. These little self-representations are called avatars. I always have a hard time figuring out what picture to use. I don't like pictures of myself, but I can never think of any one thing I like SO MUCH that I would use that as my avatar.

The Idea

Create a cell phone app (I guess there could be PC / MAC and online options as well) that will take a front and side image of you and create a virtual likeness of yourself. To be clear, this is not a 3D scanning app. This would be something much more rudimentary. The app would identify the location and shape of head, body, arms and legs. It would create a cartoonish figure by matching the shapes from the picture against a database of common shapes. Then it would analyze the head in more detail to get shape and color information on the hair, ears, eyes, nose, mouth, etc. and match those features against the database of features to find matches. The output would be a cartoon, 3D likeness of yourself that could be dressed up, altered, colored, etc. You could rotate and zoom the model and save pictures that could be used as avatars.

The part that makes this idea novel from existing versions is that it creates the avatar based off real-life images.

Progress

12/02/2014 - Some similar ideas already exist, but not in exactly the way I envision.
But I haven't found anything that makes a full 3D avatar from from pictures.

Monday, November 10, 2014

A Study of Adhesion Strength in 3D Printing

Background

I'm having terrible adhesion problems on my new 3D Printer. It's keeping me from making progress on other projects that rely on 3D printed parts. While researching a fix I discovered that this is a universal problem among hobbyists, and everyone has their own solution including glue mixtures, taping schemes, heated beds of varied temperatures, cleaning solutions, various print bed materials, calibration routines, etc. I understand that everyone has a slightly different build, and those builds will add variation. But I think that excuse is over-used because of the lack of usable data. The common theme seems to be people trying one thing after another until they find something that works. Very unscientific.

I really don't want to take a "shotgun" approach to this problem, but I don't really want to use my free time systematically designing and running experiments to collect the necessary scientific data. It would require a force gauge which costs around $100 for a decent unit, and I would rather burn that extra money on something more fun.

As an engineer I get this type of data from companies who are dedicated to performing experiments to collect data on heat capacities, enthalpies, transfer coefficients, etc. etc. etc. We just pay someone else to collect the data. I haven't found an entity in the 3D Printing world that has undertaken the science of all these little problems that hobbyists face.

The Idea

Since I'm losing my job in June 2015 I'll have some free time. I could probably dedicate myself to a systematic study of 3D Printing problems. I'd design and perform experiments on print adhesion using different substrates, temperatures, filaments, surface treatments, etc. Then I could publish and hopefully sell the information to pay for my time and the capitol required to perform the studies.

My big concern is how to distribute the content in a manner that will help pay for the time and capitol invested into the project. I'm a big believer in publishing this stuff for free, but there's so much work to be done I don't think I could afford to go unpaid for that long. Maybe I could get funding up front via KickStarter so I can reduce the risk of recovering a personal investment. That would also help reduce the risk of people just copying and redistributing the content. If it was paid for up front then I could just post the results for free. Otherwise I'd have to look into a distribution method to protect the copyright, like a website or cell phone app.

Progress

 11/10/14 - Just an idea so far. How do I gauge the potential interest from the community?

Monday, July 7, 2014

Life Tracker

Background

I've always liked the idea of keeping a journal, but I wish it could be easier. Putting my thoughts and feelings on paper not only makes them more real to me, but also gives me a chance to reflect on what happened and make decisions for the day to follow. My problem, as I've mentioned before, is that I hate writing. I have a difficult time coming up with the adjectives that accurately describe what I'm feeling and thinking. The time it takes to actually write the words down feels like wasted time, and I don't really enjoy the physical process of writing, I rather abhor it. Finally, even when I get started on a journal, I have a really hard time remembering to stick with it night after night. I think most of my ideas come from my laziness.

 

 The Idea

What if there were a way that I could have a journal without having to sit down and write everything out, and without having to remember to do it every single night? Maybe I could set an alarm that goes off every night to remind me to write? And as long as I'm going to use technology, why don't I type my journal instead? In fact, why don't I just have the computer send me an email that asks me stuff every night, and all I have to do is answer the questions? And what if I could customize the questions? I could track personal goals, feelings, health, wellness, physical fitness, relationships, pretty much anything important that I might want to track on a regular basis. A web form could be used to simplify the entries as much as possible, then spit out an entry using "normal language" (computer-generated).

Now I've got all this data that could easily live in a database. I might as well do something useful with it and apply some statistics to try and find correlations. Does my mood shift seasonally? Is my blood-sugar or well-being affected by my diet? Do I really struggle with meeting my physical fitness goals based on the temperature outside? By drawing correlations the computer can flag me of associations that I should look into. Knowing yourself is one step to improving yourself.

It should all be part of a website with associated mobile apps. You get to choose everything. Notification method (email or app), times, types of questions to fill out. There would have to be a big list of options, and efficient way to present them (maybe a dichotomy). It would be subscription based, and there would be a separate section for analytics.

And of course there must be a script that recommends other adjectives based on the ones you type.

 

Progress

 12/12/2014 - Sometime last year I actually sat down and created a USB drive with a mobile server and WordPress installed. I spent a week trying to figure out the backside of WordPress and decided I hated the whole thing. If I'm going to build a site myself then I'll probably need to write it from scratch. My questions is whether I should invest the time to learn PHP or just stick with ColdFusion. There is probably better front-end support for PHP, but that's a time investment.

I wiped the USB drive and will start fresh with PHP and MySQL. Maybe I should pay someone to help me get started?

Sound Test Website

Background

Back when I was reviewing computer hardware for BenchmarkReviews.com I had the opportunity to learn about audio equipment, performance and files. I only wrote one article that dealt with surround sound, but I quickly learned that it's a format for which there is not a wealth of resources on the internet. At the time I really wanted an objective way to compare the quality of different surround sound formats. I happened across audiocheck.net, a website run by Stephane Pigeon that provides exactly what I wanted, only for stereo sound. I talked to Stephane about adding support for surround sound, but he had a different vision for his site.


The Idea

 What I would like to do is create a website much like his that includes audio files that can be used to test surround sound systems to make sure they are working correctly. I also want a blind test section that plays different audio clips that transitions sounds from one channel to the next (like footsteps, or a driving car or something) and have the user take a test to see if they can correctly identify the motion of the sound. This would provide one objective method to rate different pieces of hardware and different suround sound technologies.


Progress

07/07/2014 - Part of the problem when I first envision such a site was poor audio support by the browsers. Everything had to be performed via download and client-side software. With HTML5 and updated browsers I think this is now a real possibility.

09/13/2015 - It took me a year, but I finally decided on a language to learn. I'm taking the Full Stack Web Developer Nanodegree from Udacity. When I'm done I'll make this page in Python as part of my beginning portfolio...eventually.

Monday, June 23, 2014

What Kind of Tree Are You?

While looking for a new career one of the things I've been researching is different places to live. What kind of climate would I enjoy the most? I love long falls and springs so I started looking for climate data for U.S. cities to give me an idea of where to look for job ideas. As I read the descriptions for various cities, as pitched by the city websites, I noted that they frequently mentioned the types of flora in an attempt to promote their scenery.

I have a neighbor-friend who loves trees and everything about trees. He recites their genus, species, characteristics, climates, you name it. Trees have climates. They typically only grow where conditions are most suitable for that type of tree.

For fun my wife and I sometimes enjoy taking internet quizzes, even the stupid ones on Facebook. We often take them just to make fun of their absurdity. Recently we took a quiz on "What City Should You Actually Live In" which attempts to correlate food, drink and other random categories with ideal living conditions.

Wouldn't it be cool to redo the survey using a correlation that might have some actual chance of being based in reality?

What Kind of Tree Are You? First, take my neighbor's knowledge about trees and record it into a database. Particularly the bits about climate and characteristics, the kind of characteristics that could be related to human traits in a tongue-in-cheek fashion. The quiz will ask you about your personality traits and your climate preferences, and use them to correlate you to a type of tree. At the end of the quiz you get a report containing the tree's name, characteristics, and other pertinent details including the geographic areas where those types of trees thrive. Maybe you'd thrive there too, along with your kindred tree. I think the hardest part of the job would be collecting enough data regarding climate and tree types to give high geographic resolution. If the quiz only considered 15 of the top US cities then I would find it amusing at best, not a useful tool. But if it the database included details down to the county level, well that's a tool I'd actually consider using to make my next career move!