TMC is an independent, primarily volunteer organization that relies on ad revenue to cover its operating costs. Please consider whitelisting TMC on your ad blocker and becoming a Supporting Member. For more info: Support TMC
  1. TMC is currently READ ONLY.
    Click here for more info.

ChargeWeave, the supercharging game (take 4)

Discussion in 'Supercharging & Charging Infrastructure' started by Teefal, Dec 31, 2020.

  1. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    Hi everyone,

    I woke today feeling rested enough to embark on the promised custom app for the TMC supercharging game. My current job has kept me in the role of manager these last three years, which prevents me from doing what I love most .. coding .. something that has otherwise occupied my days for 30 years (this month). Three years is too long away, so this project is a way to do what I love while helping the super-cool Tesla community.

    Since I'm not legally allowed to profit from this undertaking, it will be completely free and open-source. I will donate the hosting and domain fees, along with my time, which isn't a hardship because I have some under-utilized AWS instances that host a few websites I made during my 20 years running my own software company.

    So what are building?

    * web front-end using JavaScript, ReactJS
    * two mobile apps using JavaScript, React Native (Android and iOS)
    * backend using Java, Spring Boot, Hibernate, RabbitMQ, AWS RDS (db)

    We'll build it to full production standards, which means multi-region, load-balancing, fault-tolerant, high-security, etc. We might only have 20 concurrent users, but we'll build it for 20,000.

    So what does it do?

    At heart, the apps allow Tesla drivers to plan and log their visits to superchargers. Our first goal is to replicate the functionality that is now tracked manually in spreadsheets by the dedicated volunteers in the thread linked above. This includes:

    * keep track of which users have visited which superchargers (and when)
    * keep a tallyboard of users with the most visits, viewable by certain criteria
    * allow users to see chargers along their route that they have not visited
    * allow users to log visits using GPS, photos, and log text (like trail journals)

    So why the name ChargeWeave?

    I grew up in an ad agency, so brand names are second nature to me. I've come up with a dozen or so such names, using instinct and Roget's Thesaurus. ChargeWeave was the first name I thought of a few months back, though today I gave it the full Roget's treatment, looking and listing variations for an hour or so. Everything was either cliche or fraught with bad connotations.

    ChargeWeave tells you what it's about ... connecting chargers together with routes and stories. We are collectively weaving our journeys through common waypoints, stitching together a future free of gas stations and smog.

    As any good name, it allows the thing to expand beyond it's original intent, still anchored to charging as the central purpose. But it can grow beyond the current use (gotta catch 'em all) to allow other uses (tell your story for other visitors).

    And, I got the domain names ;) chargeweave.com, chargeweave.net, chargeweave.org

    So what's next?

    I need to set up the infrastructure, which will include AWS, GitHub, Jira, Confluence, and CI/CD. We can then begin building out the backlog of features and even vote on which we want most.

    Please use this topic to discuss your thoughts. This is a community project. I might be the only coder, but the ideas are everyone's.
     
    • Like x 4
    • Love x 3
  2. brkaus

    brkaus Well-Known Member

    Joined:
    Jul 8, 2014
    Messages:
    7,626
    Location:
    Austin, TX
    Sounds like a fun project!
     
    • Love x 1
  3. BM3B

    BM3B “beaver”

    Joined:
    Mar 8, 2019
    Messages:
    697
    Location:
    Los Angeles, CA
    Thanks! I am interested
     
  4. YYZ-IAD

    YYZ-IAD Supporting Member

    Joined:
    Jun 4, 2018
    Messages:
    284
    Location:
    Reston VA, Buffalo NY, Toronto ON
    hope this is fun for you. I will be in. thanks
     
  5. theflyer

    theflyer Active Member

    Joined:
    Feb 1, 2015
    Messages:
    1,020
    Location:
    Northern Virginia
    Awesome. Should be fun. Happy to contribute stuff resources if needed as well.
     
  6. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    Got GitHub and a Hello World app up in time for New Years...

    helloWorld.png
     
  7. lensovet

    lensovet Member

    Joined:
    Sep 23, 2018
    Messages:
    269
    Location:
    NJ
    Any chance the iOS app could be truly native and not react native? Pretty please?
     
  8. Half Dollar Bill

    Half Dollar Bill Traveller, teacher, poet, accountant, innkeeper

    Joined:
    Oct 19, 2013
    Messages:
    1,666
    Location:
    Freeport Maine
    I could read geeky stuff like this all day. Don't understand a word of it; just really fun finding others that enjoy doing what they do. Good luck!
    One thing for certain, you will not have to ask twice for beta-testers. :)
     
  9. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    I'll keep it in mind with the design, but will put that at the end since the RN iOS will be easier. I started learning Swift a year or two back, but I'm not productive with it yet.
     
  10. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    #10 Teefal, Jan 1, 2021
    Last edited: Jan 1, 2021
    English-to-english translation:

    front-end .. the part you see (website or mobile app)
    JavaScript .. programming language in web browsers
    ReactJS .. widget toolkit for web apps (tabs, buttons, etc)
    React Native .. widget toolkit for mobile
    Java .. programming language for back-end (part you don't see)
    Spring Boot .. Java toolkit for making back-end quickly
    Hibernate .. framework for connecting to database
    RabbitMQ .. framework for sending non-human messages
    AWS .. the king of web hosting services (Amazon owned)
    RDS (db) .. AWS database service (where the data will live)

    multi-region .. multiple server copies in different parts of the world
    load-balancing .. California swamps the server? Give some to Virginia
    fault-tolerant .. Virginia goes down? Send everyone to Europe
    high-security .. no Luxemborgish hackers can steal your data

    GitHub .. where the software code lives
    Jira .. an issue tracker (project to-do list)
    Confluence .. project wiki (like wikipedia)
    CI/CD .. push a button and a new version goes live

    Hello World app .. simplest possible program to show the wiring is working
    Swift .. programming language by Apple for iOS & Mac
     
  11. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    DAY 2

    I'll keep a short log as I go, and will try not to spam the board.

    Most of yesterday was the equivalent of digging through a dusty back room that has collected junk for years (both computers and my brain). Was a real trip down memory lane to see so many things that were my daily life just three years ago.

    As with any project, I also have some new things to learn better. Right now, it's Spring Boot. My teams used it in two prior projects, but it's one thing managing and quite another coding.

    I'm also planning the top-level to-do list, what we call "epics". Within epics we have "stories", which are subtasks that do one thing that we can test separately. For example, the "log visit" epic could have stories for backend, web, android, and iOS.

    So far I have:

    * set up infrastructure
    * sync db with spreadsheet
    * sync db with supercharger.info
    * log visit
    * display visits
    * display tallyboard

    This is the MVP (minimum viable product).
     
  12. AmokTime

    AmokTime Member

    Joined:
    Nov 27, 2019
    Messages:
    188
    Location:
    Philly metro
    I’d love to participate in something like this, but the contract I have with my employer says they own everything I do. I will follow closely, though.
     
  13. Half Dollar Bill

    Half Dollar Bill Traveller, teacher, poet, accountant, innkeeper

    Joined:
    Oct 19, 2013
    Messages:
    1,666
    Location:
    Freeport Maine
    Including the foul-ups? ;)
     
  14. AmokTime

    AmokTime Member

    Joined:
    Nov 27, 2019
    Messages:
    188
    Location:
    Philly metro
    We try to look past those.
     
    • Funny x 2
    • Like x 1
  15. benh57

    benh57 Member

    Joined:
    Dec 31, 2013
    Messages:
    91
    Location:
    Westchester, CA
    Looks like a fun project! Something i'll use if i ever get my RWD Y. :D And i'd consider contributing.

    Not sure Java is the best choice of backend if you want to get a lot of contributors, but probably if you're the primary developer, using what you're familiar with is best.
     
  16. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    It's Java or NodeJs, imo. During my last four projects, I used Java for the two multi-million dollar ones and Node for the half-million dollar ones. Before that all Java for decades (except Squeak Smalltalk for a bit).

    Java is by far the champ for $$$ projects. I can find experienced professional devs much more easily with Java. Yes, I can find non-Java volunteers more easily because their motivations are different. But there's a signal-to-noise factor here ... how much time is spent doing code review vs actually coding? How much time fixing/refactoring?

    In the end, it's about testing and production. Before turning things over to the community, everything needs to be bullet-proof, which is easier and less time-consuming to achieve with Java, at least for me.

    And there are plenty of Java open source volunteers. I've known quite a few at high profile projects at Apache/Hibernate/Google/etc.
     
  17. Teefal

    Teefal Member

    Joined:
    Aug 11, 2020
    Messages:
    117
    Location:
    Bethlehem PA USA
    #17 Teefal, Jan 4, 2021
    Last edited: Jan 4, 2021
    DAY 3

    Carving up the work necessary for a software project is its own special art. As fellow Tesla owners, you have some inkling at how hard it is to make accurate estimates. Making and sticking to a plan is essentially my day job as a delivery manager, so I have deep experience in making and keeping promises (or mitigating delays).

    As a developer, it's hard to know how long things take unless you've done everything over and over again. After 40 years, estimates have become second nature, though even the most experienced developer is largely guessing as they rate each task. With enough tasks together, the variances average out if your instincts are good.

    This morning I worked on the backlog (list of tasks needed for the project). Altogether, I have 5 epics, each of which has 4 stories, for a total of 20 stories. I'm spreading these out over 4 sprints (period of dev effort, usually 2 weeks). Since I'll be working nights and weekends, I've doubled the time for sprints, for a total of 16 calendar weeks

    cwCalendar.png

    I also split the stories into 2 releases, each with 2 sprints ... 0.1 for the "thin slice" (March 1st) and 0.2 for the "MVP" (April 25th).

    I estimated each story using "story points", which are a relative measure of effort that are meant to be independent of actual time. This let's you track "velocity" (how productive you are) separately from real time .. a trick to manage around estimate biases. I know myself pretty well, but I'm rusty. Each story I estimated "best case" and doubled it, which gives me a good chance at a high velocity.

    Here's a rough plan for the four sprints, for the purpose of scoping. For the next week, everyone can see this themselves on our Jira board, though it'll go away when the trial ends because I don't want to spend $70/month. (It's otherwise free for 10 people). I do have an older version of Jira I could use, which I might do if the community engages at that level of detail. I could also try to get an open-source-project license.

    Sprint 1

    cwSprint1.png
    Sprint 2

    cwSprint2.png

    Sprint 3

    cwSprint3.png

    Sprint 4

    cwSprint4.png
     
  18. benh57

    benh57 Member

    Joined:
    Dec 31, 2013
    Messages:
    91
    Location:
    Westchester, CA
    Does supercharge.info provide apis / access to their data for all?
     
  19. benh57

    benh57 Member

    Joined:
    Dec 31, 2013
    Messages:
    91
    Location:
    Westchester, CA
    IMO, github issues can be used in place of jira, especially for an open source project.
     
    • Love x 2
  20. lensovet

    lensovet Member

    Joined:
    Sep 23, 2018
    Messages:
    269
    Location:
    NJ
    a lot of this stack is definitely very enterprisey. whether that's good is more of a philosophical question…
     

Share This Page

  • About Us

    Formed in 2006, Tesla Motors Club (TMC) was the first independent online Tesla community. Today it remains the largest and most dynamic community of Tesla enthusiasts. Learn more.
  • Do you value your experience at TMC? Consider becoming a Supporting Member of Tesla Motors Club. As a thank you for your contribution, you'll get nearly no ads in the Community and Groups sections. Additional perks are available depending on the level of contribution. Please visit the Account Upgrades page for more details.


    SUPPORT TMC