Ramblings of a Tampa engineer
Tampa Resists Homepage

To continue filling the Projects tag - I must document before the test of time claims another hobby project. Unfortunately for this site - it has been coasting without updates since 2017 and full of dead and broken links.

This is Tampa Resists and was a recruiting/welcome page to attract folks to play Ingress on the Resistance team in Tampa Florida. The longer you play Ingress the more important is to communicate with your team at a local and regional scale - so you need to trust folks and connect them.

Ingress is 10 years old at this point so it isn't fair to say one specific account was used, but for the most part Google accounts were the method to authenticate against 3rd party sites.

So this site allowed you to do a few things:

  • Sign up with Google
  • View Tips
  • View Lessons
  • View Portal Hotspots (areas with many portals)
  • View Regional Stats
  • Automatically Invite to Slack

So if you were brand new to the game - chances are this link was floating around in chat or online.

Since most newbies had an infinite amount of questions and the official Niantic source of information was bare - this was just a collection of community built lessons and tips.

This commonly answered questions of like:

  • What is the point of a JARVIS Virus?
  • What is a SBUL?

At this point in the game's history official documentation exists for about 90% of this content.

If you were a veteran to Ingress and just traveling to our area. Chances are you probably just wanted to know about the best areas to visit for Ingress, which would be areas with a ton of portals.

hotspots

The hot spots tab would answer that question and provide Intel links and Google map links to all the areas. However, we got frequent complaints that most preferred an interactive map to mark all the locations instead of a table.

Looking back at this list - all those locations are still valid, but the amount of portals has only increased by 1-3 times per area.

If you were verified and trusted you could view stats, which were nothing more than the saved network requests of the regional scoring. I've attached one below which is what the site used to iterate/combine and build some interesting stats.

It seemed like a pretty cool thing to do, but boy doing anything with network calls was so looked down upon - work on it was abandoned. It was associated with cheating and while I believed some harmless stats were harming no one - others thought it was a breach of their privacy.

{
   "result":{
      "card":{
         "cellIdToken":"88c3",
         "regionName":"AM04-KILO-01",
         "scoreCycleTitle":"2017.30",
         "currentScore":{
            "alienScore":"474013",
            "resistanceScore":"926503"
         }
      },
      "regionVertices":[
         "01b33708,fb047bb8",
         "019c69cf,fb047bb8",
         "019b5ae4,fb198035",
         "01b21e38,fb198035"
      ],
      "regionImageUrl":"http://lh4.ggpht.com/O2BwUTw2BTRgJfafQmHPE56pjnj4mH7wCkxtpRQ5JpkmnSalZiuCx2aCfgNJNlYnMj3Jbnq_5Z9TziKHyOUC3P_dN6xtF7pIeLgm-lM",
      "regionImageTopRight":"01b60e2a,fb29d06c",
      "regionImageBottomLeft":"019861da,faf42b83",
      "topAgents":[
         {
            "nickname":"EvoldicA",
            "verifiedLevel":16,
            "team":"RESISTANCE",
            "isViewer":false
         },
         {
            "nickname":"SakataMoonfall",
            "verifiedLevel":16,
            "team":"RESISTANCE",
            "isViewer":false
         },
         {
            "nickname":"hexteria",
            "verifiedLevel":16,
            "team":"ALIENS",
            "isViewer":false
         }
      ],
      "cycleTimelineDetails":{
         "baseCyclesPerDiem":5,
         "baseCycleDurationMs":"18000000",
         "timeLeftInCurrentBaseCycleMs":"4019",
         "multipliers":[
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0,
            1.0
         ],
         "scoreHistory":[
            {
               "alienScore":"495803",
               "resistanceScore":"307084"
            },
            {
               "alienScore":"148234",
               "resistanceScore":"190427"
            },
            {
               "alienScore":"125628",
               "resistanceScore":"270113"
            },
            {
               "alienScore":"1462781",
               "resistanceScore":"317677"
            },
            {
               "alienScore":"118760",
               "resistanceScore":"291743"
            },
            {
               "alienScore":"114716",
               "resistanceScore":"462070"
            },
            {
               "alienScore":"115310",
               "resistanceScore":"420889"
            },
            {
               "alienScore":"103139",
               "resistanceScore":"370832"
            },
            {
               "alienScore":"352190",
               "resistanceScore":"184187"
            },
            {
               "alienScore":"111060",
               "resistanceScore":"368975"
            },
            {
               "alienScore":"109481",
               "resistanceScore":"400416"
            },
            {
               "alienScore":"167913",
               "resistanceScore":"394266"
            },
            {
               "alienScore":"203357",
               "resistanceScore":"172680"
            },
            {
               "alienScore":"523390",
               "resistanceScore":"228240"
            },
            {
               "alienScore":"503335",
               "resistanceScore":"228682"
            },
            {
               "alienScore":"153581",
               "resistanceScore":"224460"
            },
            {
               "alienScore":"145836",
               "resistanceScore":"280716"
            },
            {
               "alienScore":"145661",
               "resistanceScore":"190279"
            },
            {
               "alienScore":"158127",
               "resistanceScore":"189853"
            },
            {
               "alienScore":"165336",
               "resistanceScore":"194587"
            },
            {
               "alienScore":"225049",
               "resistanceScore":"183637"
            },
            {
               "alienScore":"196122",
               "resistanceScore":"200843"
            },
            {
               "alienScore":"194509",
               "resistanceScore":"191651"
            },
            {
               "alienScore":"194853",
               "resistanceScore":"187963"
            },
            {
               "alienScore":"526289",
               "resistanceScore":"191868"
            },
            {
               "alienScore":"164776",
               "resistanceScore":"201287"
            },
            {
               "alienScore":"157481",
               "resistanceScore":"162211"
            },
            {
               "alienScore":"109652",
               "resistanceScore":"136269"
            },
            {
               "alienScore":"142976",
               "resistanceScore":"136140"
            },
            {
               "alienScore":"131424",
               "resistanceScore":"178412"
            },
            {
               "alienScore":"156268",
               "resistanceScore":"193396"
            },
            {
               "alienScore":"144792",
               "resistanceScore":"183301"
            },
            {
               "alienScore":"4301503",
               "resistanceScore":"212618"
            },
            {
               "alienScore":"4303789",
               "resistanceScore":"202049"
            },
            {
               "alienScore":"217358",
               "resistanceScore":"24177790"
            }
         ]
      }
   },
   "gameBasket":{
      "gameEntities":[
         
      ],
      "inventory":[
         
      ],
      "deletedEntityGuids":[
         
      ]
   }
}

As shown in the snippet it was all the properties given to tabulate and produce the images above. You got:

  • All checkpoint scores
  • The top 3 agents
  • The final score
  • The date of that cycle

A bunch of other fields that never ended up being used, but helped show a picture of how Niantic engineered their API.

Finally, if you were an admin you had a special little admin portal that turned the navigation bar red to help you remember.

admin panel

This page did some cool API work with Google and Slack. You could automatically invite the person to our Slack channel via a single button click. It would automatically name them after first name and agent name so the our channel had some organization to the naming of folks.

You could also invite them in one click to a Google Hangout chat, which we used more-so for the visitors. This chat was then automatically synced with a #visitor Slack channel and for a period of a few years - all of these things worked wonderfully.

Until they broke.

  • As Ingress v2 (Prime) came out - the API got a boost in security, which officially ended the stat feature.
  • Google+ shut down which destroyed tons of communities and links and the scopes we used to obtain profile information.
  • Google Hangouts was changed into Google Chat and this broke all the APIs that were using it.
  • Ingress communities migrated away from Slack/Hangouts into Telegram/Discord.

I never actually owned the domain used for this project. It was a subdomain on a popular Ingress themed domain. I forgot who paid or organized it, but they summarized it quite well the purpose of these individual subdomains.

This domain provides subdomains for regional Ingress Resistance groups. We do this to promote community discovery and provide a "nice looking" custom domains to communities that would prefer not to purchase their own domain.
Generally, we try to follow craigslist naming for easy discovery and to avoid collisions and ambiguity.
The individual groups are run by their local communities.

Looking back - I did this same style of site for the Fayetteville, Arkansas and Tampa, Florida communities. I learned a lot from the 1st iteration of Arkansas which led to the additional features on the 2nd try.

For now - just a little Ingress playing here and there.

You’ve successfully subscribed to Connor Tumbleson
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.