Legacy Moves that never existed in PokemonGo

Elite Fast TM

I couldn’t find a place for this type of content on my website, so I thought I would dust off my wordpress

Im super passionate about Legacy moves and recording them accurately for PokemonGo, And by doing an Elite TM refresh of the data – I’ve finally had enough of all the incorrect Legacy moves that are listed out there on the internet!

With the recent release of Elite TM moves (24-Apr-2020), the Legacy move list (moves that are no longer possible to aquire in PokemonGo) has shrunk immensely. By using the new ultra-rare Elite TMs, Players can now gain access to around ~150 previously un-acquirable special event moves.

But Legacy moves are still a thing, any move-set that isnt possible to obtain in the Main series Games (MSG) remains locked away – due to an unspoken obligation between Niantic, Nintendo and The Pokemon Company – we still have to maintain the list of Illegal moves in the form of a Legacy Move List, these are not recorded in the Elite TM list because they’re not coming back.

Humorously Niantic nearly created a set of new Legacy Moves with the release of Elite TMs by presumably copying the incorrect information already found online (that im going to discuss) these mistakes were quickly corrected before the Elite TM feature went live.

The list of moves Niantic incorrectly had in the pre-release Elite TM List:

24/Apr/2020 | Corrected Moves from the Elite TM List by /u/NianticSucksBooty – https://redd.it/g71uf6

If you’re keen to check out my always updated Legacy move list, feel free to do so – however just for context the remaining Pokemon are on par with: Diglett with Mud Shot, Chansey with Psybeam and Lileep with Bullet Seed. None are really that game breaking balance wise, their only significance is lore related, as they’ve never been possible in any other Pokemon Game.

Now that the true legacy move list sits at around ~18 Pokemon/Move combinations – I’m more inclined to call out all the errors still present on other popular legacy move lists.

In the call-outs below I am going to refer to a file called the GAME_MASTER which is basically a client side list that sits on everyones phones and stores all of all possible move-sets in PokemonGo (alongside other things) and is one of the key files that allows us to gain insight into which Pokemon know what moves, even though almost everything is validated server side within the game.

Incorrect Legacy moves list

Below is a list of Legacy moves that have NEVER existed in PokemonGo

Zapdos with Discharge
This moveset can be seen in the GAME_MASTER file
up until 14-Feb-2017. however on 18-Feb-2017 we see Zapdos have its fast move replaced with CHARGE_BEAM_FAST. Zapdos wasnt officially added into PokemonGo until 6 months later in August of 2017

Moltres with Ember
Moltres with Ember can be seen in the GAME_MASTER file up until 14 Feb 2017. Just like Zapdos, on 18 Feb 2017 – Moltres had its fast move replaced with FIRE_SPIN_FAST. Moltres also wasnt added until August 2017 (6 months later)

Delibird with Ice Shard / Quick Attack
This ones a fun one! Delibird was released 21 Dec 2017 and during its debut it actually DID have these moves listed in the GAME_MASTER file, However; Niantic trialed a new server side configuration that forced the fast move “Present” server side for every Delibird (same with Pikachu) for the entirety of its stay during festive season – and thus it was never possible to get either Ice Shard or Quick Attack on a Delibird in 2017 due to a server restriction gifting you the move Present (and a cool 250 stardust). After Delibird left for the Holidays the GAME_MASTER was aligned, making it seem like a potential Legacy move.

Loudred with Crunch
A seemingly in-consequential move that occured alongside a bunch of other moves – not sure why this one is so prevalent!
Crunch was removed from Loudred on 12 Jan 2018
Loudred was then released 11 days later on 23 Jan 2018

The below listed moves are reported less often – but for completeness sake I will include them for anyone that might be interested.

Kyogre with Dragon Tail
This one was followed closely by the community for a week, as this potential moveset would have been key to defeating Rayquaza in the following month. So naturally people were disappointed when it was removed – and thus it was common knowledge that this move-set was not a possible one. | Removed: 4-Jan-2018 | Official Release: 12-Jan-2018

Milotic with Water Gun
A downgraded move from what it actually got – again occurring before its release.
Removed: 9-Dec-2017 | Official Release: 21-Dec-2017
(No dedicated official Release Post – see hyperlink comments)

Latias with Dragon Claw
Everyone was pretty in-tune with how pre-release balances at this point, also outshone by Latios, this one didnt gain much traction despite how close the change was to release.
Removed: 2-Apr-2018 @ 18:00 UTC |
Official Release: 2-Apr-2018 @ 21:00 UTC

If you have (or know anyone who has) any of these Pokemon – definitively reach out to me on reddit = /u/p337_info

Proof for the Legendary Birds

Game master files were not heavily documented when Zapdos and Moltres had their moves changed, however I have tracked down some old GAME_MASTER files that record their move changes months before their release. See this zip file for decoded files

If you trust my sources – here are some screenshot comparisons of Zapdos and Moltres, you can see a distinct change in decoder patterns between the file dates – I cant remember if I did that – or the decoder I was using was date sensitive.

Zapdos (Above)
Moltres (above)

Userscript for highlighting reposted songs on soundcloud

Download provided at the end of this post.

If there is anything wrong with the script or Soundcloud does a redesign, feel free to reach out to me via my contact form.


Very occasionally I head on over to SoundCloud to check out some local artists or mixes from various artists.

I dont really classify myself as a music nut, I just want to load up my stream page and see a bunch of curated music.

However a couple of years ago I noticed that “reposts” appear to be a trend with the new soundcloud design.

I understand there is a need for artists to bump their music to promote it, and ensure it isnt immediately buried, However it makes finding new music really hard to find – and most of that can be attributed to soundcloud. I cant find any easy way to hide reposts. Maybe an option already exists – or maybe one will get added after I make this post.

Anyway I finally bit the bullet and wrote a really basic user-script that will very in-elegantly differentiate the reposted songs from the newly posted songs.

The script implements a static button that follows you as you scroll through stream page of SoundCloud. Because the stream page lazily loads more content as you reach the end of the page, you will have to press the button each time more content is loaded.

Snapshot of the script in action

What are Userscripts?

Userscripts are almost like modifications for websites that anyone can write (in this case I wrote this one myself) they run java-script on the page after it has finished loading.
WARNING: never install user-scripts from unknown sources (even be careful on pages like mine)

Install TamperMonkey

If you don’t already have TamperMonkey we will need to install it to use this script
Tamper monkey is a plugin that allows you to run Userscripts on webpages.

Chrome: Search “TamperMonkey” on google, or the google Appstore
Firefox: Search for “TamperMonkey” on the Mozilla plugin store

Install the Soundcloud Repost Highlight script

Once you have the required plugins you should just be able to click the link below and the plugin will handle the remaining installation.

Download Soundcloud Repost Highlighter Script

Each time you load the /stream/ page on SoundCloud you should be able to use the new button to colour the reposts.

Best new mute config for CSGO

Ive always been frustrated with the options available to mute other players in CounterStrike: Global Offensive,

Whether you’re getting yelled at in a clutch round or just joined a noisy server where people are spamming their music, you cant be expected to mute and un-mute individual players in dire situations. I found that some of the existing mute functions online are not easy to use, require too many keys, or can be accidentally kept on – leaving you clueless when your team mates are actually communicate to you in future rounds – My bind aims to solve these issues.

Before I show you the bind, lets first look at the current alternatives available for muting all players in CSGO:

The existing solutions
Below are the common techniques of muting players in CSGO:

Block individual players via the UI
Blocking players individually requires you to open up the main menu during a firefight and be vulnerable for at least 2 seconds while you go through and manually mute each noisy teammate.
Set up a voice toggle key using: bind BindToggle “[KEY]” “voice_enable”
This works well, but there is no indication if your toggle bind is on or off, as enabling mute hides the visual popup of a player talking in the server, ive left on for hours using this setting without knowing it, and missed some vital callouts.
configure 2 separate mute / un-mute keys using: voice_scale 0 / voice_scale 1
Including your voice chat button, this solution requires 3 keys, while its one of the better solutions, I would prefer one single mute key, as I always forget which key is mute, and which is unmute.
Autoexec mute scripts
there are many one page scripts you can find online,
but as a developer I want to understand all of the code inside them, especially when I have issues trying to get them to work or modifying them.
I also dont want to have to find all my autoexec code to deploy on any new PC’s I play on
(Tip: with the solution im about to show you, you can just google “best mute config” and this blog post comes up)

The actual code
Today I will be documenting my new mute function I wrote for myself:

bind "KP_UPARROW" "voice_scale 0;";
bind "v" "+voicerecord; voice_scale 1;"

Note: Only copy code from my post seen in the code boxes (like above)
there are issues copying the double quotes into CSGO from anywhere else in this article.

How to enter this mute key bind
You can enter the mute bind seen above by:

– Enabling the developer console (Options > Game Settings > Enable Developer Console – 5th from the top)
– Then Opening the developer console (default “~” key)
– Then Pasting the commands into the console (together, or each line individually) and press Enter.

How to mute people
The above bind sets your mute key to NUMPAD 8 on the right number pad.
it mutes everyone by setting their voice transmit volume to zero,
This means you still get to see when people are talking (eg Fig1)
but you wont’t hear them until you start talking yourself (by pressing the voice key).

Muted preview

Fig.1 – Muted preview

How to unmute people
Once you are ready to hear people again, you just go ahead and press the “push to talk key” which is now set to “V”
The beauty / simplicity of this bind is that using voice chat is also the un-mute key!!

Explanation and Customization
I will go on further to explain how you might want to customize the commands for yourself.
(Eg. if you dont want “V” as your push to talk key)

The first line

bind "KP_UPARROW" "voice_scale 0;"

The first line is a single command, we are binding voice_scale to zero (silencing players) to the NUMPAD 8 key
You can swap “KP_UPARROW” out with any other key such as “K” (especially if your keyboard dosnt have a full numpad)

The second line

bind "v" "+voicerecord; voice_scale 1;"

This is actually 2 commands – which both happen at the same time – when pressing “V”,
– the +voicerecord action (the action of using voice chat)
– then sets everyone’s voice scale (you loudness you hear people at) back to full volume

How to customize
So lets say you want to change your mute key to “M”,
your voice chat key to “K”,
and for some reason you want other peoples voice volume audible to you at 75%
You would customize the binds to read as per below:

bind "M" "voice_scale 0;"
bind "K" "+voicerecord; voice_scale 0.75;"

Upsides to our new solution
– “voice_scale 0” (
which we are using) is a more elegant alternative to “voice_enable 0” because when using “voice_enable 0” you never actually know when people are muted, you dont get the visual reminder on screen (seen above in Fig.1) when a muted person is trying to talk to you.
– No autoexec requirement
– No Aliases (Aliases are stored binds that are removed when you close CSGO)
– Doesn’t require you to remember 3 dedicated keys for “mute”, “unmute” and “voice chat”
– you’ll never have the frustration of playing half a comp game and realizing you haven’t heard your teammates all game because you accidentally had “voice_enable 0″ ages before the  current game even started.

Downsides to this solution
You have to hardcode your “voice_scale” setting(volume at which people speak to you)
If you go into the menu and change this value with the slider, every time you use the voice chat key, it will override that value to 100% voice receive volume.
(not a big deal for me, I always use 100%)
You have to use the push to talk button to un-mute people (small drawback for simplicity)
you may occasional have to quickly tap voice-chat to hear people again during games, which is visible to everyone.
Needs to be configured once on every computer (most mute configs require this anyway)
But you can easily find this bind again by typing into google “Best mute config” and using this post!

This mute option isn’t going to be for everyone,
this is simply the closest I could get a mute config that worked the way I wanted it
a mute config that actually informed you when you had people muted. not requiring 3 pages of auto exec to apply, or multiple keys to manage it.
I hope some others can also get some use out of my new mute binds!


Steam Marketplace script updated!

For years I have been developing a userscript for the steam market, and slowly adding features to it. I’m taking some time out to post about it here!

To use this script, you need to install an addon for userscripts
Greasemonkey (for Firefox) or TamperMonkey (for Chrome)

Lets run through the current features!

– increased visibility for firefox users using enhanced steam
– Be able to hide “My Active Listings” section to reduce clutter if you have heaps of items listed
– Clearly details CSGO skins that have nametags attached on listing pages
– Calculates totals for all your “Active Listings” on the market menu
– Compacts the css theme so more listings fit on the page when searching
– A toggleable feature, for searching CSGO items with nametags, that instantly closes the tab if no items on the page has a nametag

This script is designed to by run along side enhanced steam!

Download Link: [Current version found on my Dropbox]

I may make an instructional video later on some of the features!

Disclaimer #1: Enhanced steam already does some similar things, but I recreated them to suit my personalised taste, also Enhanced steam is no longer supported on firefox,
whereas my script works perfectly fine on firefox
My script also fixes a lot of issues with the abandoned version of enhanced steam for firefox.

Disclaimer #2: Steam inventory helper also shows you which csgo skins have nametags,
but with my script  its much more obvious as it makes it blatantly obvious when the first few items have a name tag on the marketplace.

CSGO Operation Release Order


Operation Shattered Web was the last operation.

The current operation is:
Operation Broken Fang

When I first made this blog post in 2016 it was the longest break between operations after Bloodhound ended. so I decided to made this post to detailing all release information about the previous operations.

Some of the initial data was sourced from the csgo wiki

The Table below shows info on: Release days of the week (PDT), Release Time (PDT) and duration of all of the previous operations

Order Operation Release Date Day Time Duration Extended Gap
1 Payback 25-Apr-13 Thu 4AM 128 Yes
2 Bravo 19-Sep-13 Thu 5PM 139 Yes 19
3 Phoenix 20-Feb-14 Thu 9PM 111 Yes 15
4 Breakout 1-Jul-14 Tue 4PM 93 No 20
5 Vanguard 11-Nov-14 Tue 10PM 140 Yes 40
6 Bloodhound 26-May-15 Tue 4PM 128 No 56
7 Wildfire 17-Feb-16 Wed 7PM 149 No 139
8 Hydra 23-May-17 Tue 3PM 174 No 313
9 Shattered Web 18-Nov-19 Mon 6PM 134 No 735
10 Broken Fang 3-Dec-20 Thu 10PM N/A No 247

I will be updating these details over time as new operations are released.

  • The “Gap” column indicates the time where no operation was active, or the time that operation started after the prior operation ending.
    (Eg. By commencing, Operation Bloodhound ended a 56 day gap in which no operation was active.)
  • The heading “Release Time” is the rough time measured in Pacific Daylight Time (PDT) the update was released, rounded to the nearest half hour
  • Please contact me if there are any errors or outdated data!
  • This page was last updated on 8-Apr-2021

This post was created off the back of an existing page that proved quite popular with people: CSGO Case Release Order – check it out if thats something that interests you!

Operation Release Order FAQ

Which operation took the longest to release:
On the 18th of November 2019 – Operation Shattered Web took the cake for the longest time between releases. It took Valve 909 days to drop Operation Shattered Web after the conclusion of Operation Hydra ending (Operation hydra officially ended on 13-Nov-2017)

What is the average duration of an operation?
From the above table, we can see that the average duration of all Operations is 132 days (or just under 4.5 months) also, the new trend appears to be that operations are no longer extended after their initial end date that gets set at the start of the operation.
This may change in the future if valve decide to shake up the Operation formula.

What is the average time between operations?
Again using the table above we can see that the average gap between operations is 176 days (or 5.8 months) so basically operations occur less frequently than they occur. However this changes if we remove the giant break that occurred before shattered web (only 106 days / 3.5 months between Operations)

Get fitbit steps on your personal website [Revised]

So someone on the /r/fitbit page asked a general question about how to get fitbit steps on your personal website. I had previously asked this question before, and answered it myself. However since then my solution has changed, and I failed to document it. I promised I would update him, and here I go.

Assumptions / Pre-requisites
Here are the things you are going to need to set this up
– A fitbit API key (there are lots of guides like this one to request an API key)
– An understanding in Web Technologies (HTML, CSS, Javascript) and more importantly a web programming language – I will be using PHP
– A web server that supports your languages of choice.
– You have a google account which you can use google drive on

Step 1 – Outsourcing Oauth to Google Drive

Step 1.1 – Information
I am not a web developer, I make websites as something fun to do, so naturally, oAuth scares me. luckily there is a Google Apps script that does all this for me.
All of this step 1 is dedicated to whomever wrote this article http://quantifiedself.com/2013/02/how-to-download-fitbit-data-using-google-spreadsheets/

Step 1.2 – Make a (depreciated) google spreadsheet

We need to make a google drive spreadsheet, but it needs to be the old version of sheets,   you NEED to request an old sheet with this link – https://g.co/oldsheets
This is because the sharing functionality in the older spreadsheets are superior to new spreadsheets. Hopefully google never fully deprecate these spreadsheets styles, because the whole of this process relies on old versions of google sheets.

– Request a new spreadsheet with the URL above (https://g.co/oldsheets)
– Give them a valid reason you are using an old sheet style (they seem to be asking for it now)
– Name the spreadsheet something meaningful
– Save the spreadsheet

Step 1.3 – Add the script to your Google Spreadsheet
Google drive spreadsheets (in this case sheets) have the ability to program back end scripts in javascript, The next few steps will be dealing with what is called “Google Apps Script” which link to our Google Spreadsheet.

Go to your new spreadsheet we made in the last step (Should still be open)
Go to Tools > Script Editor


If the “first time” Google Apps Script menu pops up, cancel making sure you select “Dont show again” and “close” to close all dialog popup boxes, You should now be looking at an empty page, or a blank JavaScript function currently in the script editor.

This is where we need to place the script that will do all the oAuth work for us.
Delete everything in the script box (there should be a blank function – make sure you have a blank script)
Then paste the FitbitDownload.gs script (Found Here: Original GitHuB Source or Rehosted on Pastebin) so that it is the only thing in your new google apps script code area.

Press the save button and name the script if necessary

Step 1.4 – Run the functions to configure the script

From the “Select Function” drop down
You want to run the functions in this order order

1.4.1 – Run the Authorize Function
(Note: This will allow Fitbit access to your google apps data)
Select “authorize” from the drop down
click the button that looks like a “Play” button
(Which is 2 buttons to the left of the “Select Function” drop down)
once you run the function, a popup box will appear.
click authorize and login with your fitbit account to finish this step.

1.4.2 – Run the Setup Function
Next run “setup” function with the same method as the above step
(NOTE: you will have to alt tab back to your Google Drive spreadsheet,
because a popup opens there asking for more details.- see below)

Once you see the above popup on the Spreadsheet tab, Enter:
a. Your API key – This need to be filled out with a valid key – unlike mine seen above.
b. Make sure you enter today’s date, unlike my screenshot above (setting a super old date will result in an error because these details are not longer request-able from fitbit)
c. Make sure you select all of the “Data Elements” by using CTRL when you click.
(Make sure they are highlighted)
Then click “Save Setup”

1.4.3 – Run the Sync Function
After you have successfully configured “Setup”
Go back to your script and run “Sync”

All your data should now be in the spreadsheet.

Step 1.5 – Add an automated trigger to your script
We now need to tell google scripts to run the “sync” function every 15-30 minutes (up to you)
You should still have the script editor open in a tab. Go back to it
(if not, go to Tools > Script Editor on your spreadsheet)
Click on the speech bubble looking icon, when hoevered over the icon will say “Current Projects Triggers”
On the dialog menu, select “Add a new trigger”
And set “Sync” to run every 15 minutes.

Your spreadsheet will now stay updated!

Step 1.6 – Set your spreadsheets share settings to Public
Navigate back to your Google Spreadsheet, (you may close the script editor if you like.)
From the “File” menu, select “Publish to the Web”
A popup should appear, Make sure “All Sheets” is selected before you click “Start Publishing”
You should now be able to “Get a link to the Published Data” which is a web link.
Make sure that link works in a browser. if it does we are ready to do some web coding!

Step 2 – Show the Google Docs Data on your Website

Step 2.1 – Upload my API to your site
Go to pastebin and get my API  – http://pastebin.com/GrA7xUVd
This API basically reads in the google spreadsheet
Using string manipulation, it finds the values for todays step values (using the server date)

Step 2.2 – Configure my PHP API
There are 3 variables you want to configure in my API, I have detailed them pretty clearly.
1. The location to your google spreadsheet, this is obvious, the API needs to know the URL of the spreadsheet we set up earlier.
2. If you want the API to output JSON or not
3. Set your timezone – Setting your timezone is crucial to ensuring you get todays step total.

Step 2.4 – Load the page in a browser
Once you’ve configured the settings,
And uploaded the page to your web server
You should be able to load the page in your browser!
navigate to the URL of where you uploaded the php page
And remember to add ?ddos=1 to the end of the PHP URL address, because that’s how I avoid web crawlers pulling fitbit data accidentally.
an example of your URL would be http://website/directory/fitbit_and_gdocs_api.php?ddos=1

Step 2.3 – Consider application design and page load speed
the API I have provided is not designed for fast page loads.
If you include this code in your homepage, it will slow your site load times down considerably, as you are now not only requesting your homepage, but also loading a google spreadsheet every page load.
I run this page and load the values into a MYSQL table once every 15 minutes.
Because a Mysql table statement is 100 times quicker than loading a google spreadsheet.


In theory we have now included fitbit data on your website!

CSGO Case release dates


When working on my CSGO Skin evaluation site
I noticed there wasn’t a place where I could easily look up the release dates, and order of CSGO cases. Which prompted me to make this blog post

The most recently released case is the
Broken Fang Case

The table below orders all the CSGO cases by release date, and shows how many days it took for valve to release each case.
It also shows the day of the week, and date (in american timezone) that the case was added to the game.

Order Case Release Date Release Day Comments Wait Time
1 CS:GO Weapons Case 14-Aug-13 Wednesday Arms Deal Update
1 ESports 2013 Case 14-Aug-13 Wednesday Arms Deal Update
3 Operation Bravo Case 19-Sep-13 Thursday Operation Bravo 36
4 CS:GO Weapon Case 2 6-Nov-13 Wednesday Arms Deal Collection 2 48
5 eSports 2013 Winter Case 18-Dec-13 Wednesday Winter Offensive Update 42
5 Winter Offensive Weapon Case 18-Dec-13 Wednesday Winter Offensive Update 0
7 CS:GO Weapon Case 3 12-Feb-14 Wednesday Arms Deal Collection 3 56
8 Operation Phoenix Weapon Case 20-Feb-14 Thursday Operation Phoenix 8
9 Huntsman Weapon Case 1-May-14 Thursday   70
10 Operation Breakout Weapon Case 1-Jul-14 Tuesday Operation Breakout 61
11 ESports 2014 Summer Case 10-Jul-14 Thursday   9
12 Operation Vanguard Weapon Case 11-Nov-14 Tuesday Operation Vanguard 124
13 Chroma Case 8-Jan-15 Thursday   58
14 Chroma 2 Case 15-Apr-15 Wednesday   97
15 Falcion Case 26-May-15 Tuesday Operation Bloodhound 41
16 Shadow Case 17-Sep-15 Thursday   114
17 Revolver Case 8-Dec-15 Tuesday R8 Revolver Release 82
18 Operation Wildfire Case 17-Feb-16 Wednesday Operation Wildfire 71
19 Chroma 3 27-Apr-16 Wednesday   70
20 Gamma Case 06/15/16 Wednesday   49
21 Gamma 2 Case 18-Aug-16 Thursday   64
22 Glove Case 28-Nov-16 Monday   102
23 Spectrum Case 15-Mar-17 Wednesday   107
24 Hydra Case 23-May-17 Tuesday Operation Hydra 69
25 Spectrum 2 Case 15-Sep-17 Friday   115
26 Clutch Case 15-Feb-18 Thursday   153
27 Horizon Case 3-Aug-18 Friday Panorama Update 169
28 Danger Zone Case 6-Dec-18 Thursday Danger Zone Update 125
29 Prisima Case 13-Mar-19 Wednesday   97
30 CS20 Case 18-Oct-19 Friday   219
31 Shattered Web Case 18-Nov-19 Monday   31
32 Prisma 2 Case 1-Apr-20 Wednesday Shattered Web End 135
33 Fracture Case 7-Aug-20 Friday   128
34 Broken Fang Case 3-Dec-20 Thursday Broken Fang Steart 118


  • On 2 occasions there were 2 cases released simultaneously, which is reflected in the column named “Order”
  • The heading “Wait Time” is the time it took for Valve to release the case, prior to the release date of the previously newest case.
    (The community waited 114 days for the release of the Shadow Case, meaning for 114 days the Falchion Case was the newest case in CSGO.)
  • Please contact me if this page is out of date!
  • This page was last updated on 8-Apr-2021

People seem to really like this blog post, so I have made a similar blog post about the
CSGO Operation Release Order which outlines similar things like duration and downtime between operations.


When are new cases released in CSGO?
The average wait time between case releases is currently 83 days
Valve regularly shifts priorities within the company so its not possible to know the exact date when new case will come out – this can be seen from the CS20 Case that took 219 days to release in 2018, which is a much longer wait time than the average

Are cases available in every country?
Cases can be considered lootboxes or a form of gambling depending on your countries laws and online regulations. so far there are are some restrictions in European countries.

  • Opening cases is not possible in Netherlands and Belgium
  • Opening cases in France requires a P250 Xray to first view a cases contents, then purchased
  • Also in France, Cases cannot be purchased from the Steam Community Market.

My Current Progress with the CSGO API

Its been a week or so since I launched the CSGO Evaluator site I made, and its died.
Didnt really expect much out of my free hosting, but its something im working on.
I want to grow my web skills and figure whats causing this one myself.

Essentially the error ive been getting is in relation to the PHP function that actually gets the data from the steam API, not reciving any data at all. Hence my site cant talk to steam at all.

I have done some troubleshooting, and there is something wrong with my host.
I still have functional get_file_contents() requests going on with other pages I have made. its just my webhost has decided that steam API requests should be blocked.

I am currently awaiting a response from my web hosting support ticket.

I have attempted to join another free hosting site, to see if I have the same problem on their site with similar code, but I cant get dotabuff get_file_contents calls to work either.  This isnt conclusive however, because I didnt rule out the possibility that they block ALL file_get_contents() requests.

Anyway, thats the updated situation with my downtime at the moment.

Steam Marketplace UserScript

I have since updated this script, Read the newest blog post on this topic here:



So I spent last night trying to combat an issue with the Steam Marketplace,
CS:GO is my new favorite game, and offloading all the sticker capsules and skins has left my marketplace transaction sales list quite long,  Meaning I have 14 items to scroll past before I get to the actual sales items


I don’t know if anyone could actually benefit from my UserScript,
But It adds the ability to hide your listed marketplace items, and additionally load one of the tabs automatically in the “Market Activity” section further down the page. (instead of always loading the “Popular Items” – which rarely changes)


with the settings seen above, my page now loads like the below screenshot without any clicking;
notice That the “My Activity Listings (14)” is collapsed, and “Newly Listed” is already selected by default


This user-script utilises HTML5 localStorage functionality in JavaScript, and at the moment is only compatible with Firefox (now compatible with Chrome if you install Tamper monkey), your Firefox version must be above version 3.5 and “dom.storage.enabled” set to true (you’ll only need to check this for per-historic version of Firefox) and you’ll obviously need Greasemonkey installed to run User-scripts.

Ive been using this script for the last 2 years, and editing as I go, I might make a major update soon.

If you are sceptical about whats inside, you can view the code below on Pastebin
As with any external script, make sure you be careful and know what you’re running.

Current Version

EDIT: This is no longer the way I get fitbit steps in my website,

Please see this new post on how I currently get data on my wesbite


Below is the old post that serves historical purposes only.

Ive had a Fitbit Flex for roughly 3 months now, and enjoying every step and achievement that comes along with the band, and the motivation provided by the web dashboard.

However last month I had decided to give my website a complete redesign, and with my new wristband, I felt that I had the ability to display some personalized dynamic content in the form of my daily step total would be awsome, as I had done a similar things when displaying my “Last online” status with the Steam Web API and PHP. Boy was I in for a surprise.

The process for the Fitbit API was immensely more complicated than that of the Steam Web API, Using an authentication process called OAuth, Essentially the process you see when you “Login with Facebook” on several websites, meaning that your PHP application needs to send the users attention onto Fitbit to authenticate the access to their data.

Not to mention, this required me to install “Oauth” PERL script onto my Website, Which I could not do due to the limitations set by my free web hosting setup. This had me trawling through countless 3rd party OAuth PHP Libraries over the last 3 weeks, Which I understood barely any of.

Eventually I found an Oauth setup utilising Google Spreadsheets and Google Scripts, which allowed me to work around my free web-hosting limitations; technical steps being outlined below

If you’re following everything I’ve said up until now, you’re most likely familiar with API’s and more specifically Want to actually use it. Please note: You will also need an understanding/access to a PHP capable server for the implementation of this.

What to actually do

Step 1: Go and get a API key from their website,
(recommending you get a “Browser” and “Read only” API key – See more at wikihow)

Step 2: Login to your Google Drive Account, (as we will be using a Google Script to retrieve Fitbit data for us) and create a new spreadsheet.

Step 3: Once you’re in your new spreadsheet, we will need to open up the Gogole Script Editor (This will open up in a new browser tab)




Note: Once in the script editor; a “Blank project” will be fine to create if you haven’t ventured into script editor before)

Step 4: I used the script from the following GitHub repository (or additionally copy fitbit.js from here) and paste it in a new Blank Google script (remove any code in the blank project you just created), and paste Fitbit.js into the code area.

Step 5: Select and Run “renderFitbitConfigurationDialog” from the drop down menu on the top toolbar, and press the button with the Play symbol.


Some pop-up windows for google will open; Click accept or next on all of the authentication steps to allow the script access to your newly made Google spreadsheet

Swap browser tabs back into your Spreadsheet; you should see a configure window shown below,


After entering your Consumer and Consumer Secret key like the above screenshot,
Make sure everything else is as you desire, and select “Save Configuration”

Go back into script editor and run the “Authorize” Function

Then proceed to run the “refreshTimeSeries” function to populate your data

Swap back to your spreadsheet, and we should see the below setup.
Cell B3 is the value were interested in as it displays our daily total (and gets replaced each day)


Step 6: We need to make sure that our spreadsheet stays active and our steps get updated regularly, so head back into the Google Script Editor, and click “Current Project’s triggers” button


My triggers look like this


(This will update my spreadsheet from the Fitbit site every 30 minutes)

Step 7: Getting a cell to display on our website
Heres the part where we need to get our value out of the spreadsheet,
Whilst on our spreadsheet = Under “File> Publish to web”, we can extract a cell in a webpage.


Copy your URL seen above, we will need it for our PHP manipulation.
(Open the URL in a new browser window if you want to check it is the right cell)

Step 8: Create a new php function or page, and use some basic sub-stringing to get your “B3 Cell” in a form you can use!

function printFitbitSteps() {
$content = file_get_contents(“PUBLIC URL FOR GOOGLE SPREADSHEET CELL B3”);
$content = substr($content, strpos($content, “<td  class=’s0′>”)+16);
$steps = substr($content, 0, strpos($content, “</tr></table></div>”));
echo $steps;

The above code reads the HTML given to us in the URL as a variable, and splices it with sub-stringing so that only our step total is left over!

You should now be done,
This assuming you can utilize PHP on your website, and have a knowledge of how it works, but the basic steps are in those lines of code above. Its probably considered dirty coding, but it works for me.

Here is the footer from my website, focusing on the “Steps today” value.

Hopefully this can help someone out!!


Special Thanks to Manuel Lemos who put in heaps of effort to try and teach me his Oauth PHP Library (I just wasnt smart enough)