Some of my reasons for starting (not always finishing) a project. [Sorry, this post is way too long.]
(I am retired, so earning money is not one of them.)
1. Natural curiosity about how and why things work.
2. I don't like it when I don't know how to do it.
3. Programming is like having superpowers that extend the mind.
4. I love gadgets and technology, electricity is still magic to me.
5. Dissatisfaction with existing solutions - I should be able to do better
(these projects are most likely to be unfinished, since I am often wrong)
6. I come from a long line of toolmakers. I rather make tools than anything else.
7. Working alone with my thoughts fits my social style perfectly.
8. It passes time and avoids boredom (which could get me in trouble).
9. I have always been an aspiring artist. But I can't draw, or sing, or rhyme.
10. Serendipity brings opportunities and challenges that require a response.
Three recent projects:
a. A virtual trainset (I don't have space for a real one)
- A large screen is required, so it is a B4J project
- I start with a Google satellite map of a 100 x 50 KM area (roughly) as a scene model
- I draw the scene using homemade drawing tools for rivers, valleys, mountains, towns, etc.
- I define tracks, trains, trip schedules, tunnels and bridges
- The animation of multiple trains over the tracks is smooth with variable speed
- The trains have sound effects and arrive at and depart from stations
- There is a clock and arrival departure event board
- I have almost completed two scenes (Interlaken and Jalpaiguri)
- The definition of objects and animation is complete and working well
- I am working on tools for drawing towns and mountain textures
b. Two robotic 'actors' that move on a stage and perform a play.
- I use two Makeblock robots as the mobile bases for actors
- Mounted on each bot is a 7" cheap Android tablet that controls its movements though Bluetooth
- The tablet gets its instruction from the desktop Director through MQTT WIFI
- The tablet screen show facial expressions appropriate to the script
- I added an ESP8266 that controls a RFID chip reader (RC522)
- The stage itself has a 16 x 12 grid of 25mm NFC stickers, detectable by the RC522
- As the bot moves on the stage the ESP8266 sends stickers ids to the Director via WIFI
- The orientation of the bot is sensed through an electronic compass (Makeblock sensor)
- Sound is achieved through two small Bluetooth speakers (at the corners of the stage to save weight)
- Sensor control is with B4R, communication and facial expression with B4A, directed by B4J
- I am working on a script for two actors (something like "Waiting for Godot" by Samuel Beckett)
c. A comprehensive statistical analysis system that works on a android tablet.
- Uses B4XPages extensively
- All development work was done on B4J. Implemented with B4A.
- User interactions are minimized, many operations are automatic
- All univariate and some multivariate are implemented
- A custom data grid that spans multiple screens horizontally as well as vertically
- The b4A and B4J versions are nearly the same (some tweaking due to size differences)
- Uses the dMatrix and cMatrix classes that I posted
I was interested in exploring Multivariate Analysis in B4X. This topic includes: covariance, correlations, multivariate analysis of variance (MANOVA), multiple linear regression (MLR), principal component analysis (PCA), factor analysis with factor rotation (VARIMAX)...
www.b4x.com