[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-xh2V4f3LiSC7tZPLj9btncNg6jRmUen8JulPAm0-xPo":3,"sanity-BdVO8CrmXpnb3giEtQ85nsQvcf6INRgZ1dRS8iReDZ4":1343},{"data":4,"sourceMap":-1},{"latestPodcast":5,"latestReleases":14,"post":39,"recent":1318},[6],{"_id":7,"publishedAt":8,"slug":9,"sponsored":12,"title":13},"4d0175f4-40a8-47eb-9bb3-a453b326aa7d","2026-07-03T07:40:00.000Z",{"_type":10,"current":11},"slug","the-good-the-bad-and-the-ai-apps",null,"The good, the bad, and the AI apps",[15,21,27,33],{"_id":16,"publishedAt":17,"slug":18,"title":20},"eb5b66eb-9410-4329-83bb-22bbff39402a","2026-04-28T13:00:00.000Z",{"_type":10,"current":19},"turn-scattered-knowledge-into-trusted-intelligence","Turning scattered knowledge into trusted intelligence: Stack Internal 2026.3",{"_id":22,"publishedAt":23,"slug":24,"title":26},"369c2401-b62e-4a37-8ff8-bf603023ecad","2026-03-02T15:03:00.988Z",{"_type":10,"current":25},"what-s-new-at-stack-overflow-march-2026","What’s new at Stack Overflow: March 2026",{"_id":28,"publishedAt":29,"slug":30,"title":32},"5e9053a4-07ea-447c-91ea-29e0b6228537","2026-02-02T15:00:00.000Z",{"_type":10,"current":31},"what-s-new-at-stack-overflow-february-2026","What’s new at Stack Overflow: February 2026",{"_id":34,"publishedAt":35,"slug":36,"title":38},"a1b538eb-a8a6-46d0-80a1-ac70ec9bb935","2026-01-05T10:00:00.000-05:00",{"_type":10,"current":37},"what-s-new-at-stack-overflow-january-2026","What’s new at Stack Overflow: January 2026",{"_createdAt":40,"_id":41,"_rev":42,"_type":43,"_updatedAt":44,"author":45,"body":61,"comments":1267,"dateUrl":1268,"excerpt":1269,"image":1270,"legacyBody":1273,"product":12,"publishedAt":1276,"slug":1277,"sponsored":12,"tags":1279,"title":1317,"visible":1267},"2023-05-25T09:39:11Z","wp-post-11679","dgl3SCUzppW3U2LvCoSTGG","blogPost","2023-08-29T08:52:26Z",[46],{"_createdAt":47,"_id":48,"_rev":49,"_type":50,"_updatedAt":51,"avatar":52,"employee":57,"name":58,"slug":59},"2023-05-23T16:27:18Z","wp-author-224","dgl3SCUzppW3U2LvCoOzcS","blogAuthor","2023-06-20T15:05:06Z",{"_type":53,"asset":54},"image",{"_ref":55,"_type":56},"image-a553f9db3a2bcff3aa17192e390cc5b1cf7f9653-1024x1024-jpg","reference","none","Felipe Hoffa",{"current":60},"fhoffa",[62,74,79,127,136,144,148,152,160,168,172,180,190,198,206,214,222,230,233,237,246,254,258,266,274,282,290,298,306,314,317,325,333,336,344,347,355,359,389,397,405,409,431,439,471,484,496,508,520,532,544,556,568,580,592,604,616,628,640,652,664,676,688,700,712,724,736,748,760,772,784,796,808,820,832,844,856,868,880,892,904,916,928,940,952,964,976,988,1000,1012,1024,1036,1048,1060,1072,1080,1088,1091,1107,1115,1152,1161,1195,1198,1206,1209,1217],{"_key":63,"_type":64,"children":65,"markDefs":72,"style":73},"8af185966768","block",[66],{"_key":67,"_type":68,"marks":69,"text":71},"8af1859667680","span",[70],"em","How would you group more than 4,000 active Stack Overflow tags into meaningful groups? This is a perfect task for unsupervised learning and k-means clustering — and now you can do all this inside BigQuery. Let’s find out how.",[],"h4",{"_key":75,"_type":53,"alt":12,"asset":76,"caption":78,"markDefs":12},"862365a5fbd6",{"_ref":77,"_type":56},"image-f4bb424ebdde227fa6105149c50163c30778e373-1000x631-png","",{"_key":80,"_type":64,"children":81,"markDefs":116,"style":126},"7523ddecac24",[82,86,90,95,99,104,108,112],{"_key":83,"_type":68,"marks":84,"text":58},"7523ddecac240",[85,70],"4192fdb031a8",{"_key":87,"_type":68,"marks":88,"text":89},"7523ddecac241",[70]," is a Developer Advocate for Google Cloud. In this post he works with ",{"_key":91,"_type":68,"marks":92,"text":94},"7523ddecac242",[93,70],"1295d9a2f408","BigQuery",{"_key":96,"_type":68,"marks":97,"text":98},"7523ddecac243",[70]," - Google's serverless data warehouse - to run k-means clustering over Stack Overflow's published dataset, which is refreshed and uploaded to Google's Cloud once a quarter. You can check out more about working with Stack Overflow data and BigQuery ",{"_key":100,"_type":68,"marks":101,"text":103},"7523ddecac244",[102,70],"d5e2885a3288","here",{"_key":105,"_type":68,"marks":106,"text":107},"7523ddecac245",[70]," and ",{"_key":109,"_type":68,"marks":110,"text":103},"7523ddecac246",[111,70],"08ba3117f4c9",{"_key":113,"_type":68,"marks":114,"text":115},"7523ddecac247",[70],".",[117,120,122,124],{"_key":85,"_type":118,"href":119,"reference":12},"link","https:\u002F\u002Ftwitter.com\u002Ffelipehoffa",{"_key":93,"_type":118,"href":121,"reference":12},"http:\u002F\u002Fcloud.google.com\u002Fbigquery",{"_key":102,"_type":118,"href":123,"reference":12},"https:\u002F\u002Fstackoverflow.blog\u002F2016\u002F12\u002F15\u002Fyou-can-now-play-with-stack-overflow-data-on-googles-bigquery\u002F",{"_key":111,"_type":118,"href":125,"reference":12},"https:\u002F\u002Ftowardsdatascience.com\u002Fbigquery-without-a-credit-card-discover-learn-and-share-199e08d4a064","normal",{"_key":128,"_type":64,"children":129,"markDefs":134,"style":135},"b2b2a6ee746e",[130],{"_key":131,"_type":68,"marks":132,"text":133},"b2b2a6ee746e0",[],"4,000+ tags are a lot",[],"h2",{"_key":137,"_type":64,"children":138,"markDefs":143,"style":126},"42c79b243f3e",[139],{"_key":140,"_type":68,"marks":141,"text":142},"42c79b243f3e0",[],"These are the most active Stack Overflow tags since 2018 — they’re a lot. In this picture I only have 240 tags — how would you group and categorize 4,000+ of them?",[],{"_key":145,"_type":146,"code":147,"markDefs":12},"79e27d85743a","code","# Tags with >180 questions since 2018\nSELECT tag, COUNT(*) questions\nFROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`,\n  UNNEST(SPLIT(tags, '|')) tag\nWHERE creation_date > '2018-01-01'\nGROUP BY 1\nHAVING questions>180\nORDER BY 2 DESC",{"_key":149,"_type":53,"alt":12,"asset":150,"caption":78,"markDefs":12},"a829401c9e8b",{"_ref":151,"_type":56},"image-d0306d5264676a30e3fcc50816ab9effd6865b37-1000x682-png",{"_key":153,"_type":64,"children":154,"markDefs":159,"style":135},"9e84bf247f2f",[155],{"_key":156,"_type":68,"marks":157,"text":158},"9e84bf247f2f0",[],"Hint: Co-occurring tags",[],{"_key":161,"_type":64,"children":162,"markDefs":167,"style":126},"9107558795b4",[163],{"_key":164,"_type":68,"marks":165,"text":166},"9107558795b40",[],"Let’s find tags that usually go together:",[],{"_key":169,"_type":53,"alt":12,"asset":170,"caption":78,"markDefs":12},"171ac9b6ac09",{"_ref":171,"_type":56},"image-dfa22fed5ba6994ae9083d3de43272d739d4d123-1086x469-png",{"_key":173,"_type":64,"children":174,"markDefs":179,"style":126},"e09aefa8e9cf",[175],{"_key":176,"_type":68,"marks":177,"text":178},"e09aefa8e9cf0",[],"These groupings make sense:",[],{"_key":181,"_type":64,"children":182,"level":187,"listItem":188,"markDefs":189,"style":126},"6c179038cb66",[183],{"_key":184,"_type":68,"marks":185,"text":186},"6c179038cb660",[],"‘javascript’ is related to ‘html’.",1,"bullet",[],{"_key":191,"_type":64,"children":192,"level":187,"listItem":188,"markDefs":197,"style":126},"83bafc998315",[193],{"_key":194,"_type":68,"marks":195,"text":196},"83bafc9983150",[],"‘python’ is related to ‘pandas’.",[],{"_key":199,"_type":64,"children":200,"level":187,"listItem":188,"markDefs":205,"style":126},"fba6f06dc670",[201],{"_key":202,"_type":68,"marks":203,"text":204},"fba6f06dc6700",[],"‘c#’ is related to ‘.net’.",[],{"_key":207,"_type":64,"children":208,"level":187,"listItem":188,"markDefs":213,"style":126},"ec38833a30c0",[209],{"_key":210,"_type":68,"marks":211,"text":212},"ec38833a30c00",[],"‘typescript’ is related to ‘angular’.",[],{"_key":215,"_type":64,"children":216,"level":187,"listItem":188,"markDefs":221,"style":126},"f5f0aaad1058",[217],{"_key":218,"_type":68,"marks":219,"text":220},"f5f0aaad10580",[],"etc…",[],{"_key":223,"_type":64,"children":224,"markDefs":229,"style":126},"39ab231a7bae",[225],{"_key":226,"_type":68,"marks":227,"text":228},"39ab231a7bae0",[],"So I’ll take these relationships and I’ll save them on an auxiliary table — plus a percentage of how frequently a relationship happens for each tag.",[],{"_key":231,"_type":146,"code":232,"markDefs":12},"e7dc9db9f833","CREATE OR REPLACE TABLE `deleting.stack_overflow_tag_co_ocurrence`\nAS\nWITH data AS (\n  SELECT * \n  FROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`\n  WHERE creation_date > '2018-01-01'\n), active_tags AS (\n  SELECT tag, COUNT(*) c\n  FROM data, UNNEST(SPLIT(tags, '|')) tag\n  GROUP BY 1\n  HAVING c>180\n)\n\nSELECT *, questions\u002Fquestions_tag1 percent\nFROM (\n    SELECT *, MAX(questions) OVER(PARTITION BY tag1) questions_tag1\n    FROM (\n        SELECT tag1, tag2, COUNT(*) questions\n        FROM data, UNNEST(SPLIT(tags, '|')) tag1, UNNEST(SPLIT(tags, '|')) tag2\n        WHERE tag1 IN (SELECT tag FROM active_tags)\n        AND tag2 IN (SELECT tag FROM active_tags)\n        GROUP BY 1,2\n        HAVING questions>30\n    )\n)",{"_key":234,"_type":53,"alt":12,"asset":235,"caption":78,"markDefs":12},"34ab3eb30d70",{"_ref":236,"_type":56},"image-f835d60195d06950a3423da61bfa7f266a12baa5-599x470-png",{"_key":238,"_type":64,"children":239,"markDefs":244,"style":245},"e8337126b8cd",[240],{"_key":241,"_type":68,"marks":242,"text":243},"e8337126b8cd0",[],"One-hot encoding",[],"h1",{"_key":247,"_type":64,"children":248,"markDefs":253,"style":126},"60ab7e1bf001",[249],{"_key":250,"_type":68,"marks":251,"text":252},"60ab7e1bf0010",[],"Now get ready for some SQL magic. BigQuery ML does a good job of hot-encoding strings, but it doesn’t handle arrays as I wish it did (stay tuned). So I’m going to create a string first that will define all the columns where I want to find co-occurrence. Then I can use that string to get a huge table, with a 1 for every time a tag co-occurs with the main one at least certain % of time. Let’s see first a subset of these results:",[],{"_key":255,"_type":53,"alt":12,"asset":256,"caption":78,"markDefs":12},"c936f1a99600",{"_ref":257,"_type":56},"image-d1417f0f817a1711c13afdcb8ed089827104c32c-621x648-png",{"_key":259,"_type":64,"children":260,"markDefs":265,"style":126},"d65e551ba7e9",[261],{"_key":262,"_type":68,"marks":263,"text":264},"d65e551ba7e90",[],"What you see here is a co-occurrence matrix:",[],{"_key":267,"_type":64,"children":268,"level":187,"listItem":188,"markDefs":273,"style":126},"8584afb600e9",[269],{"_key":270,"_type":68,"marks":271,"text":272},"8584afb600e90",[],"‘javascript’ shows a relation to ‘php’, ‘html’, ‘css’, ‘node.js’, and ‘jquery’.",[],{"_key":275,"_type":64,"children":276,"level":187,"listItem":188,"markDefs":281,"style":126},"d0e08605ccf7",[277],{"_key":278,"_type":68,"marks":279,"text":280},"d0e08605ccf70",[],"‘android’ shows a relation to ‘java’.",[],{"_key":283,"_type":64,"children":284,"level":187,"listItem":188,"markDefs":289,"style":126},"1af6e177105e",[285],{"_key":286,"_type":68,"marks":287,"text":288},"1af6e177105e0",[],"‘machine-learning’ shows a relation to ‘python’, but not the other way around.",[],{"_key":291,"_type":64,"children":292,"level":187,"listItem":188,"markDefs":297,"style":126},"cfc03bc82a79",[293],{"_key":294,"_type":68,"marks":295,"text":296},"cfc03bc82a790",[],"‘multi-threading’ shows a relation to ‘python’, ‘java’, ‘c#’, and ‘android`",[],{"_key":299,"_type":64,"children":300,"level":187,"listItem":188,"markDefs":305,"style":126},"b4bef36d4186",[301],{"_key":302,"_type":68,"marks":303,"text":304},"b4bef36d41860",[],"‘unit-testing’ a relation to almost every column here, except to ‘php’, ‘html’, ‘css’, and ‘jquery’.",[],{"_key":307,"_type":64,"children":308,"markDefs":313,"style":126},"7a800da9d8e3",[309],{"_key":310,"_type":68,"marks":311,"text":312},"7a800da9d8e30",[],"You can reduce or augment the sensibility of these relations with the percent threshold:",[],{"_key":315,"_type":146,"code":316,"markDefs":12},"954e447fdb07","SELECT tag1 \n,IFNULL(ANY_VALUE(IF(tag2='javascript',1,null)),0) Xjavascript\n,IFNULL(ANY_VALUE(IF(tag2='python',1,null)),0 ) Xpython\n,IFNULL(ANY_VALUE(IF(tag2='java',1,null)),0) Xjava\n,IFNULL(ANY_VALUE(IF(tag2='c#',1,null)),0) XcH\n,IFNULL(ANY_VALUE(IF(tag2='android',1,null)),0) Xandroid\n,IFNULL(ANY_VALUE(IF(tag2='php',1,null)),0) Xphp\n,IFNULL(ANY_VALUE(IF(tag2='html',1,null)),0) Xhtml\n,IFNULL(ANY_VALUE(IF(tag2='css',1,null)),0) Xcss\n,IFNULL(ANY_VALUE(IF(tag2='node.js',1,null)),0) XnodeDjs\n,IFNULL(ANY_VALUE(IF(tag2='jquery',1,null)),0) Xjquery\n,SUM(questions) questions_tag1\nFROM `deleting.stack_overflow_tag_co_ocurrence`\nWHERE percent>0.03\nGROUP BY tag1\nORDER BY questions_tag1 DESC \nLIMIT 100",{"_key":318,"_type":64,"children":319,"markDefs":324,"style":135},"8617741783c0",[320],{"_key":321,"_type":68,"marks":322,"text":323},"8617741783c00",[],"K-means clustering time",[],{"_key":326,"_type":64,"children":327,"markDefs":332,"style":126},"35a0709f36d0",[328],{"_key":329,"_type":68,"marks":330,"text":331},"35a0709f36d00",[],"Now — instead of using this small table, let’s use the whole table to compute k-means with BigQuery. With this line, I’m creating a one-hot encoding string that I can use later to define the 4,000+ columns I’ll use for k-means:",[],{"_key":334,"_type":146,"code":335,"markDefs":12},"af8290c1fe77","one_hot_big = client.query(\"\"\"\nSELECT STRING_AGG(\n  FORMAT(\"IFNULL(ANY_VALUE(IF(tag2='%s',1,null)),0)X%s\", tag2, REPLACE(REPLACE(REPLACE(REPLACE(tag2,'-','_'),'.','D'),'#','H'),'+','P')) \n) one_hot\nFROM (\n  SELECT tag2, SUM(questions) questions \n  FROM `deleting.stack_overflow_tag_co_ocurrence`\n  GROUP BY tag2\n  # ORDER BY questions DESC\n  # LIMIT 10\n)\n\"\"\").to_dataframe().iloc[0]['one_hot']",{"_key":337,"_type":64,"children":338,"markDefs":343,"style":126},"df0606c32eb2",[339],{"_key":340,"_type":68,"marks":341,"text":342},"df0606c32eb20",[],"And training a k-means model in BigQuery is really easy:",[],{"_key":345,"_type":146,"code":346,"markDefs":12},"672bdd6040b9","CREATE MODEL `deleting.kmeans_tagsubtag_50_big_a_01`\nOPTIONS ( \n    model_type='kmeans',\n    distance_type='COSINE',\n    num_clusters=50 )\nAS\nWITH tag_and_subtags AS (\n    SELECT tag1, %s\n    FROM `deleting.stack_overflow_tag_co_ocurrence`\n    WHERE percent>0.03\n    GROUP BY tag1\n)\nSELECT * EXCEPT(tag1) \nFROM tag_and_subtags",{"_key":348,"_type":64,"children":349,"markDefs":354,"style":126},"3f01c8a96375",[350],{"_key":351,"_type":68,"marks":352,"text":353},"3f01c8a963750",[],"Now we wait — while BigQuery shows us the progress of our training:",[],{"_key":356,"_type":53,"alt":12,"asset":357,"caption":78,"markDefs":12},"41bec9e6963a",{"_ref":358,"_type":56},"image-86be309dd3d1bbe4f05ddc0f7eeb3b0f459eb013-700x264-png",{"_key":360,"_type":64,"children":361,"markDefs":384,"style":126},"4174525fee7c",[362,366,371,375,380],{"_key":363,"_type":68,"marks":364,"text":365},"4174525fee7c0",[],"And when it’s done, we even get an evaluation of our model:\n\n",{"_key":367,"_type":68,"marks":368,"text":370},"4174525fee7c1",[369],"45a5a7638c31","Davies–Bouldin index",{"_key":372,"_type":68,"marks":373,"text":374},"4174525fee7c2",[],": 1.8530\n",{"_key":376,"_type":68,"marks":377,"text":379},"4174525fee7c3",[378],"f71549ee7408","Mean squared distance",{"_key":381,"_type":68,"marks":382,"text":383},"4174525fee7c4",[],": 0.8174",[385,387],{"_key":369,"_type":118,"href":386,"reference":12},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDavies%E2%80%93Bouldin_index?source=post_page---------------------------",{"_key":378,"_type":118,"href":388,"reference":12},"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Freference\u002Frest\u002Fv2\u002Fmodels?source=post_page---------------------------#clusteringmetrics",{"_key":390,"_type":64,"children":391,"markDefs":396,"style":135},"5f1020b34780",[392],{"_key":393,"_type":68,"marks":394,"text":395},"5f1020b347800",[],"Performance note",[],{"_key":398,"_type":64,"children":399,"markDefs":404,"style":126},"a7e8fb2e65c6",[400],{"_key":401,"_type":68,"marks":402,"text":403},"a7e8fb2e65c60",[],"Do we really need 4,000 one-hot encoded dimensions to obtain better clusters? Turns out that 500 are enough — and I like the results better. It also reduces the time for training the model in BigQuery from 24 minutes to 3. The same with only 30 dimensions lowers the time to 90 seconds — but I like the results better with 500. More on hyper-parameter tuning below.",[],{"_key":406,"_type":53,"alt":12,"asset":407,"caption":78,"markDefs":12},"5abab149c92b",{"_ref":408,"_type":56},"image-a6c07342eb349ae921def0c4c9eabacf9a95bd5f-700x249-png",{"_key":410,"_type":64,"children":411,"markDefs":428,"style":126},"0197f21822b2",[412,416,420,424],{"_key":413,"_type":68,"marks":414,"text":370},"0197f21822b20",[415],"35037d3bd62f",{"_key":417,"_type":68,"marks":418,"text":419},"0197f21822b21",[],": 1.6910\n",{"_key":421,"_type":68,"marks":422,"text":379},"0197f21822b22",[423],"bc05ca4249b6",{"_key":425,"_type":68,"marks":426,"text":427},"0197f21822b23",[],": 0.52332\n",[429,430],{"_key":415,"_type":118,"href":386,"reference":12},{"_key":423,"_type":118,"href":388,"reference":12},{"_key":432,"_type":64,"children":433,"markDefs":438,"style":135},"ec081ae70716",[434],{"_key":435,"_type":68,"marks":436,"text":437},"ec081ae707160",[],"Get ready for the results: The 50 clusters are...",[],{"_key":440,"_type":64,"children":441,"markDefs":470,"style":126},"ba2f77fc0b7c",[442,446,450,454,458,462,466],{"_key":443,"_type":68,"marks":444,"text":445},"ba2f77fc0b7c0",[],"Now it’s time to see our results. I’ll even look out for some tags I'm interested in: How are ",{"_key":447,"_type":68,"marks":448,"text":449},"ba2f77fc0b7c1",[146],"google",{"_key":451,"_type":68,"marks":452,"text":453},"ba2f77fc0b7c2",[],", ",{"_key":455,"_type":68,"marks":456,"text":457},"ba2f77fc0b7c3",[146],"amazon",{"_key":459,"_type":68,"marks":460,"text":461},"ba2f77fc0b7c4",[],", and ",{"_key":463,"_type":68,"marks":464,"text":465},"ba2f77fc0b7c5",[146],"azure",{"_key":467,"_type":68,"marks":468,"text":469},"ba2f77fc0b7c6",[]," represented in each cluster? These are the 50 groups that k-means clustering found — given the 1-hot encoding of related tags we did earlier in this post. Some results make a lot of sense — while others give great insight into what are the prevalent surrounding technologies to any Stack Overflow tag. Naming each centroid is always a challenge. Here I used the top 5 centroid weight vectors — see how below.",[],{"_key":472,"_type":64,"children":473,"markDefs":483,"style":126},"91cbc75d09d0",[474,479],{"_key":475,"_type":68,"marks":476,"text":478},"91cbc75d09d00",[477],"strong","centroid 45: amazon-web-services, aws-lambda, amazon-s3, amazon-ec2, python",{"_key":480,"_type":68,"marks":481,"text":482},"91cbc75d09d01",[],"\n-----\namazon-web-services, amazon-s3, aws-lambda, amazon-ec2, amazon-dynamodb, terraform, aws-sdk, amazon-cloudformation, amazon-redshift, aws-api-gateway, amazon-cognito, boto3, cloud, alexa, amazon-rds, amazon-elastic-beanstalk, amazon-ecs, alexa-skills-kit, amazon-cloudfront, serverless, aws-cli, amazon-iam, amazon-cloudwatch, elastic-beanstalk, amazon-sqs, serverless-framework, amazon-athena, aws-amplify, aws-appsync, amazon-sns, alexa-skill, amazon-route53, amazon, amazon-kinesis, amazon-sagemaker, autoscaling, amazon-elb, amazon-ses, aws-cognito, aws-iot, terraform-provider-aws, api-gateway, amazon-vpc, aws-serverless, aws-codepipeline, aws-codebuild, amazon-rds-aurora, bitnami, amazon-lex, aws-step-functions, aws-code-deploy, aws-iam, aws-fargate, dynamodb-queries, boto\n\namazon: amazon-cognito, amazon-ses, amazon-redshift, aws-lambda, amazon-ecs, amazon-s3, amazon-web-services, amazon-athena, aws-api-gateway, amazon-rds, amazon, amazon-cloudfront, amazon-lex, aws-iot, amazon-elb, aws-code-deploy, amazon-cloudwatch, aws-cli",[],{"_key":485,"_type":64,"children":486,"markDefs":495,"style":126},"492c104a9966",[487,491],{"_key":488,"_type":68,"marks":489,"text":490},"492c104a99660",[477],"centroid 17: android, java, android-layout, android-recyclerview, kotlin",{"_key":492,"_type":68,"marks":493,"text":494},"492c104a99661",[],"\n-----\nandroid, json, xml, kotlin, android-studio, android-recyclerview, android-layout, android-fragments, xslt, serialization, android-intent, retrofit2, android-activity, android-room, nullpointerexception, retrofit, gson, android-volley, textview, android-viewpager, xml-parsing, recycler-adapter, android-edittext, android-sqlite, protocol-buffers, xsd, deserialization, android-constraintlayout, android-asynctask, fragment, android-architecture-components, android-livedata, imageview, scrollview, android-databinding, android-glide, android-animation, xquery, xslt-1.0, android-jetpack, android-manifest, navigation-drawer, adapter, bottomnavigationview, xslt-2.0, android-toolbar, onclicklistener, android-tablayout, android-cardview, android-spinner, android-adapter, picasso, android-linearlayout, transformation, android-drawable, android-architecture-navigation, android-imageview, android-custom-view, json-deserialization, android-view, android-actionbar, searchview, biztalk, android-coordinatorlayout, android-lifecycle, android-softkeyboard, floating-action-button, recyclerview-layout, swipe, android-relativelayout, android-xml, android-collapsingtoolbarlayout, android-button, android-scrollview, saxon, android-nestedscrollview, android-styles, xml-namespaces, xsl-fo, android-fragmentactivity, android-dialogfragment, android-viewholder, xml-serialization",[],{"_key":497,"_type":64,"children":498,"markDefs":507,"style":126},"3e5e6cea0c2e",[499,503],{"_key":500,"_type":68,"marks":501,"text":502},"3e5e6cea0c2e0",[477],"centroid 7: android, java, javascript, ios, python",{"_key":504,"_type":68,"marks":505,"text":506},"3e5e6cea0c2e1",[],"\n-----\nandroid-gradle, bluetooth, rx-java2, build.gradle, dependencies, rx-java, google-play, sdk, android-ndk, corda, video-streaming, android-emulator, libgdx, android-webview, apk, location, java-native-interface, google-play-services, dagger-2, adb, codenameone, android-8.0-oreo, google-places-api, android-notifications, android-studio-3.0, broadcastreceiver, speech-recognition, arcore, sharedpreferences, streaming, gps, android-service, version, coordinates, androidx, native, sms, here-api, android-camera, android-permissions, uri, android-mediaplayer, locale, vert.x, exoplayer, google-maps-markers, settings, alarmmanager, spinner, proguard, okhttp3, text-to-speech, okhttp, updates, android-camera2, android-source, whatsapp, nfc, share, inputstream, google-fabric, xmpp, calculator, manifest, wifi, mpandroidchart, android-9.0-pie, rx-android, call, android-workmanager, mp4, hls, video-processing, release, barcode, android-support-library, alertdialog, android-viewmodel, dji-sdk, barcode-scanner, filepath, sip, google-cloud-messaging, gradle-plugin, android-arrayadapter, screen, payment, toolbar, google-play-console, dagger, mp3, indexoutofboundsexception, ejabberd, httpurlconnection, libraries, android-proguard, coroutine, h.264, simpledateformat, jacoco, background-process, rtsp, offline, root, sensor, splash-screen, android-bluetooth, android-testing, android-resources, android-tv, emulation, android-bitmap, android-listview, multipart, chromecast, android-broadcastreceiver, video-capture, google-maps-android-api-2, pojo, android-canvas, visibility, broadcast, google-play-games, dao, kotlin-android-extensions, avd, lint, android-jobscheduler, android-library, kotlinx.coroutines, firebase-mlkit, expandablelistview, obfuscation, android-contentprovider, appcelerator, mvp, live-streaming, in-app-billing, android-context, audio-streaming, arabic, android-alertdialog, kotlin-coroutines, zxing, android-videoview, fingerprint, braintree, audio-recording, deprecated, job-scheduling, android-wifi, wear-os, bottom-sheet, android-things, device, marker, right-to-left, google-login, mobile-application, media-player, countdowntimer, opengl-es-2.0, nullable, face-detection, exoplayer2.x, android-8.1-oreo, beacon, drawable, gradlew, mapbox-android, classnotfoundexception, parcelable, android-keystore, voice-recognition, toast, aar, google-places, android-theme, android-progressbar, paging, accelerometer, playback, gradle-kotlin-dsl, samsung-mobile, photo, ibeacon, android-appcompat, noclassdeffounderror, branch.io, rtmp, sceneform, foreground-service, google-cast, appcelerator-titanium, android-widget, logcat, android-pendingintent, android-fileprovider, android-gps, sha1, jodatime, android-sensors, android-appbarlayout, surfaceview, mpeg-dash, android-mvvm\n\ngoogle: google-maps-android-api-2, google-play-services, google-fabric, google-places, google-places-api, google-play-console, google-cast, google-login, google-maps-markers, google-play-games, google-play, google-cloud-messaging",[],{"_key":509,"_type":64,"children":510,"markDefs":519,"style":126},"66554f437ab2",[511,515],{"_key":512,"_type":68,"marks":513,"text":514},"66554f437ab20",[477],"centroid 28: angular, typescript, javascript, angular6, angular5",{"_key":516,"_type":68,"marks":517,"text":518},"66554f437ab21",[],"\n-----\nangular, typescript, angular6, angular5, rxjs, angular-material, angular7, service, observable, routing, angular-cli, components, angular-reactive-forms, karma-jasmine, primeng, ag-grid, angularfire2, angular-material2, ngrx, reactive-programming, httpclient, angular-ui-router, angular-routing, lazy-loading, rxjs6, ngfor, angular-forms, angular-httpclient, angular2-routing, angular-components, angular-router, rx-swift, ng-bootstrap, angular2-forms, angular-universal, angular2-template, angular-services, angular-directive, material, angular4-forms, ngx-bootstrap, typescript2.0, angular2-services, ngrx-store, subscription, rxjs5, angular2-directives, ngrx-effects, angular-material-6, angular-cli-v6, angular-http-interceptors, redux-observable, subscribe, angular-pipe, angular-promise, angular2-observables, reactivex, angular-ngmodel, angular-cdk, tsconfig",[],{"_key":521,"_type":64,"children":522,"markDefs":531,"style":126},"dc24d75f5b4b",[523,527],{"_key":524,"_type":68,"marks":525,"text":526},"dc24d75f5b4b0",[477],"centroid 20: apache-spark, java, scala, hadoop, python",{"_key":528,"_type":68,"marks":529,"text":530},"dc24d75f5b4b1",[],"\n-----\napache-spark, scala, pyspark, apache-kafka, hadoop, apache-spark-sql, hive, cassandra, apache-flink, jupyter, hdfs, bigdata, playframework, spark-streaming, sbt, apache-nifi, hiveql, apache-kafka-streams, akka, hbase, pyspark-sql, mapreduce, kafka-consumer-api, rdd, spark-dataframe, amazon-emr, yarn, user-defined-functions, parquet, cassandra-3.0, cluster-computing, avro, databricks, apache-kafka-connect, aws-glue, spark-structured-streaming, flink-streaming, kerberos, apache-zookeeper, sqoop, confluent, presto, kafka-producer-api, impala, akka-stream, hadoop2, apache-spark-mllib, traits, apache-zeppelin, cloudera, datastax, apache-storm, distributed-computing, akka-http, data-modeling, apache-spark-dataset, guice, google-cloud-dataproc, gatling, jmx, hortonworks-data-platform, apache-pig, apache-spark-ml, oozie, azure-databricks, scalatest, cql, playframework-2.6, datastax-enterprise, phoenix, confluent-schema-registry, mesos, implicit, implicit-conversion, ksql, scala-collections, spark-submit, hdinsight, ambari\n\ngoogle: google-cloud-dataproc\namazon: amazon-emr, aws-glue\nazure: azure-databricks",[],{"_key":533,"_type":64,"children":534,"markDefs":543,"style":126},"dd8751060fef",[535,539],{"_key":536,"_type":68,"marks":537,"text":538},"dd8751060fef0",[477],"centroid 12: bash, python, linux, shell, java",{"_key":540,"_type":68,"marks":541,"text":542},"dd8751060fef1",[],"\n-----\nmacos, ubuntu, ansible, ssh, raspberry-pi, terminal, vim, raspberry-pi3, subprocess, environment-variables, centos, console, command-line-interface, pipe, arguments, jq, homebrew, iot, applescript, printf, escaping, sftp, windows-subsystem-for-linux, raspbian, exec, redhat, stdout, zsh, alias, wget, eval, paramiko, filenames, glob, command-line-arguments, stdin, remote-access, sudo, file-permissions, slurm, putty, gpio, tar, tmux, rsync, expect, ksh, jsch, scp, ssh-tunnel, cat, portforwarding, openssh",[],{"_key":545,"_type":64,"children":546,"markDefs":555,"style":126},"7861f10d4b6e",[547,551],{"_key":548,"_type":68,"marks":549,"text":550},"7861f10d4b6e0",[477],"centroid 8: c#, .net, asp.net-core, .net-core, java",{"_key":552,"_type":68,"marks":553,"text":554},"7861f10d4b6e1",[],"\n-----\nlogging, exception, error-handling, azure-functions, reflection, configuration, azure-cosmosdb, f#, logstash, exception-handling, azure-web-sites, elastic-stack, azure-service-fabric, console-application, try-catch, wix, azure-application-insights, nunit, core, autofac, xunit, dapper, nest, nhibernate, dotnet-httpclient, nlog, httpwebrequest, serilog, log4net, inversion-of-control, identity, unity-container, webclient, blazor, .net-standard-2.0, system.reactive, clr, type-inference, asp.net-core-signalr, asp.net-core-identity, app-config, masstransit, fluentd, google-cloud-stackdriver, winston, .net-framework-version, ninject, .net-core-2.0, claims-based-identity, syslog, kestrel-http-server\n\ngoogle: google-cloud-stackdriver\nazure: azure-cosmosdb, azure-web-sites, azure-functions, azure-application-insights, azure-service-fabric",[],{"_key":557,"_type":64,"children":558,"markDefs":567,"style":126},"4950d947684d",[559,563],{"_key":560,"_type":68,"marks":561,"text":562},"4950d947684d0",[477],"centroid 18: c#, asp.net, asp.net-mvc, asp.net-core, entity-framework",{"_key":564,"_type":68,"marks":565,"text":566},"4950d947684d1",[],"\n-----\nc#, asp.net, .net, asp.net-mvc, asp.net-core, .net-core, entity-framework, linq, asp.net-web-api, model-view-controller, iis, entity-framework-core, dependency-injection, razor, asp.net-core-2.0, asp.net-core-mvc, wcf, entity-framework-6, json.net, kendo-ui, asp.net-core-webapi, webforms, asp.net-mvc-5, identityserver4, asp.net-identity, asp.net-web-api2, asp.net-core-2.1, asp.net-mvc-4, signalr, odata, kendo-grid, automapper, c#-4.0, web-config, razor-pages, windows-services, moq, ado.net, aspnetboilerplate, ef-code-first, ef-core-2.0, asp.net-core-2.2, linq-to-sql, asp-classic, umbraco, ef-core-2.1, asp.net-ajax, ef-migrations, iis-8, connection-string, windows-authentication, linq-to-entities, repository-pattern, swashbuckle, npgsql, iis-7, dbcontext, hangfire, iis-10, iis-express, model-binding, ef-core-2.2, windows-server-2012, signalr-hub, iis-7.5, linq-to-xml",[],{"_key":569,"_type":64,"children":570,"markDefs":579,"style":126},"9f692f925db1",[571,575],{"_key":572,"_type":68,"marks":573,"text":574},"9f692f925db10",[477],"centroid 10: c#, azure, python, java, javascript",{"_key":576,"_type":68,"marks":577,"text":578},"9f692f925db11",[],"\n-----\nazure, botframework, azure-sql-database, bots, azure-storage, chatbot, timeout, azure-storage-blobs, report, ssrs-2012, azure-data-factory, telegram-bot, azure-web-app-service, expression, azure-logic-apps, ibm-watson, refactoring, domain-driven-design, azureservicebus, gzip, azure-resource-manager, azure-iot-hub, twilio-api, azure-data-factory-2, azure-data-lake, vpn, azure-virtual-machine, microsoft-teams, luis, string-formatting, game-physics, google-assistant-sdk, ssrs-2008, game-development, ads, mesh, windows-7, virtual-reality, vuforia, microsoft-cognitive, azure-webjobs, azure-keyvault, azure-api-management, credentials, directx, facebook-messenger, collision-detection, arm-template, sprite, rdlc, game-engine, azure-search, azure-eventhub, physics, azure-blob-storage, desktop-application, factory, software-design, hololens, u-sql, installer, collision, azure-cli, reporting, google-home, azure-table-storage, azure-cognitive-services, unityscript, startup, azure-bot-service, mysql-connector, ienumerable, qnamaker, instantiation, builder, ssrs-tablix, azure-cosmosdb-sqlapi, azure-stream-analytics, quaternions, reportviewer, skype, azure-machine-learning-studio, azure-servicebus-queues, skype-for-business, ssrs-2008-r2, azure-virtual-network, win-universal-app, azure-log-analytics, unity5, csom, dialogflow-fulfillment\n\ngoogle: google-assistant-sdk, google-home\nazure: azure-webjobs, azure-log-analytics, azure-virtual-machine, azure-sql-database, azure-api-management, azure-iot-hub, azure-web-app-service, azure-data-factory-2, azure-table-storage, azure-servicebus-queues, azure-bot-service, azure-virtual-network, azure-data-factory, azure-cognitive-services, azure-blob-storage, azure-storage-blobs, azure-logic-apps, azure-resource-manager",[],{"_key":581,"_type":64,"children":582,"markDefs":591,"style":126},"9af8c88a6e65",[583,587],{"_key":584,"_type":68,"marks":585,"text":586},"9af8c88a6e650",[477],"centroid 44: c#, javascript, java, oauth-2.0, php",{"_key":588,"_type":68,"marks":589,"text":590},"9af8c88a6e651",[],"\n-----\napi, authentication, security, facebook, oauth-2.0, spring-security, cookies, jwt, azure-active-directory, cors, postman, microsoft-graph, login, oauth, microservices, active-directory, ldap, jhipster, authorization, passport.js, keycloak, token, azure-ad-b2c, single-sign-on, passwords, sharepoint-online, telegram, spring-security-oauth2, single-page-application, linkedin, google-signin, openid-connect, session-cookies, owin, csrf, auth0, google-oauth2, saml, access-token, linkedin-api, laravel-passport, saml-2.0, google-authentication, xss, azure-powershell, adal, basic-authentication, azure-ad-graph-api, session-variables, msal, oidc, openid, express-session, bearer-token, logout, refresh-token\n\ngoogle: google-authentication, google-signin, google-oauth2\nazure: azure-ad-graph-api, azure-active-directory, azure-powershell, azure-ad-b2c",[],{"_key":593,"_type":64,"children":594,"markDefs":603,"style":126},"0bd19e34162e",[595,599],{"_key":596,"_type":68,"marks":597,"text":598},"0bd19e34162e0",[477],"centroid 19: c#, visual-studio, visual-studio-2017, .net, xamarin.forms",{"_key":600,"_type":68,"marks":601,"text":602},"0bd19e34162e1",[],"\n-----\nvisual-studio, xamarin, xamarin.forms, visual-studio-2017, xaml, uwp, azure-devops, xamarin.android, build, reporting-services, tfs, ssis, xamarin.ios, nuget, visual-studio-2015, msbuild, crystal-reports, windows-installer, nuget-package, mono, cross-platform, azure-pipelines-release-pipeline, .net-standard, mvvmcross, visual-studio-2019, visual-studio-2010, c++-cli, visual-studio-2013, sql-server-data-tools, roslyn, resharper, publish, mstest, .net-assembly, visual-studio-2012, azure-devops-rest-api, tfs2017, azure-pipelines-build-task, visual-studio-mac, tfs2018, tfsbuild, visual-studio-extensions, visual-studio-debugging, visual-studio-app-center, csproj, tfs2015, vsix, azure-mobile-services, picker, tfvc, xamarin.uwp\n\nazure: azure-devops, azure-devops-rest-api, azure-pipelines-release-pipeline, azure-mobile-services, azure-pipelines-build-task",[],{"_key":605,"_type":64,"children":606,"markDefs":615,"style":126},"c2b4b8465b0d",[607,611],{"_key":608,"_type":68,"marks":609,"text":610},"c2b4b8465b0d0",[477],"centroid 36: c#, wpf, winforms, javascript, vb.net",{"_key":612,"_type":68,"marks":613,"text":614},"c2b4b8465b0d1",[],"\n-----\nwpf, vb.net, winforms, user-interface, listview, charts, events, mvvm, datatable, checkbox, data-binding, datagridview, timer, sapui5, gridview, combobox, binding, drag-and-drop, menu, datagrid, knockout.js, popup, window, textbox, styles, treeview, listbox, telerik, uwp-xaml, devexpress, resources, vb6, user-controls, prism, viewmodel, controls, datetimepicker, webbrowser-control, cefsharp, panel, contextmenu, windows-10-universal, wpfdatagrid, windows-forms-designer, custom-controls, wpf-controls, richtextbox, clickonce, observablecollection, picturebox, mvvm-light, gdi+, menuitem, backgroundworker",[],{"_key":617,"_type":64,"children":618,"markDefs":627,"style":126},"2f45be216734",[619,623],{"_key":620,"_type":68,"marks":621,"text":622},"2f45be2167340",[477],"centroid 2: c++, c, python, linux, java",{"_key":624,"_type":68,"marks":625,"text":626},"2f45be2167341",[],"\n-----\nc++, c, c++11, templates, assembly, cmake, gcc, memory, opengl, arduino, makefile, visual-c++, boost, c++17, lua, compiler-errors, x86, linux-kernel, memory-management, compilation, memory-leaks, operating-system, io, c++14, fortran, arm, serial-port, cuda, char, language-lawyer, segmentation-fault, clang, linker, stack, gdb, garbage-collection, macros, stl, g++, kernel, embedded, byte, malloc, shared-libraries, out-of-memory, nodes, processing, usb, x86-64, stm32, double, cython, buffer, pthreads, mips, signals, operator-overloading, runtime, gtk, llvm, driver, include, opengl-es, cygwin, operators, bit-manipulation, structure, overloading, nasm, precision, gnu-make, ros, gstreamer, mingw, const, variadic-templates, eigen, heap, gtk3, embedded-linux, esp8266, linux-device-driver, compiler-construction, warnings, cpu, cross-compiling, clion, qt-creator, profiling, ctypes, std, codeblocks, intel, return-value, system, newline, sdl-2, microcontroller, system-calls, pass-by-reference, valgrind, boost-asio, reverse-engineering, dynamic-memory-allocation, move, linker-errors, googletest, c-preprocessor, heap-memory, static-libraries, function-pointers, sdl, template-meta-programming, benchmarking, arduino-uno, libcurl, interrupt, vtk, x86-16, compiler-optimization, constants, stdvector, 64-bit, binaryfiles, bit, swig, quicksort, shared-memory, eclipse-cdt, constexpr, primes, bitwise-operators, x11, shared-ptr, clang++, glfw, binary-search, header-files, singly-linked-list, arduino-esp8266, ld, i2c, main, multiple-inheritance, gnu, smart-pointers, ram, simd, declaration, esp32, preprocessor, elf, undefined-behavior, bison, qtquick2, sfinae, variadic-functions, mingw-w64, unique-ptr, avr, masm, free, typedef, doubly-linked-list, generic-programming, compiler-warnings, glibc, kernel-module, move-semantics, auto, bootloader, c-strings, inline-assembly, ncurses, mmap, stdmap, glm-math, qmake, bit-shift, endianness, cpu-registers, template-specialization, pid, operator-precedence, memory-address\n\ngoogle: googletest",[],{"_key":629,"_type":64,"children":630,"markDefs":639,"style":126},"4e98407520b3",[631,635],{"_key":632,"_type":68,"marks":633,"text":634},"4e98407520b30",[477],"centroid 24: css, html, javascript, bootstrap-4, angular",{"_key":636,"_type":68,"marks":637,"text":638},"4e98407520b31",[],"\n-----\nhtml, css, jquery, html5, css3, bootstrap-4, twitter-bootstrap, flexbox, sass, datatables, highcharts, html-table, twitter-bootstrap-3, layout, frontend, datepicker, drop-down-menu, css-grid, bootstrap-modal, momentjs, responsive-design, modal-dialog, dropdown, grid, responsive, tabs, font-awesome, navbar, carousel, media-queries, themes, tooltip, alignment, overflow, less, css-position, react-bootstrap, border, accordion, dt, css-transforms, angular-ui-bootstrap, nav, z-index, grid-layout, utc, reactstrap, vertical-alignment, pseudo-element, linear-gradients, mixins, collapse, popover, angular-datatables, angular-flex-layout, centering",[],{"_key":641,"_type":64,"children":642,"markDefs":651,"style":126},"856242144b56",[643,647],{"_key":644,"_type":68,"marks":645,"text":646},"856242144b560",[477],"centroid 31: delphi, c++, c#, winapi, windows",{"_key":648,"_type":68,"marks":649,"text":650},"856242144b561",[],"\n-----\ndelphi, winapi, dll, mfc, com, firemonkey, firebird, c++builder, delphi-10.2-tokyo, pinvoke, pascal, indy",[],{"_key":653,"_type":64,"children":654,"markDefs":663,"style":126},"0af4da510d77",[655,659],{"_key":656,"_type":68,"marks":657,"text":658},"0af4da510d770",[477],"centroid 25: django, python, django-models, django-rest-framework, python-3.x",{"_key":660,"_type":68,"marks":661,"text":662},"0af4da510d771",[],"\n-----\ndjango, django-models, django-rest-framework, django-views, django-forms, django-templates, django-admin, django-queryset, django-orm, django-urls, django-2.0, django-serializer, django-allauth, django-filter, django-class-based-views, django-migrations, serializer",[],{"_key":665,"_type":64,"children":666,"markDefs":675,"style":126},"abbc79159cd2",[667,671],{"_key":668,"_type":68,"marks":669,"text":670},"abbc79159cd20",[477],"centroid 34: docker, kubernetes, python, google-cloud-platform, java",{"_key":672,"_type":68,"marks":673,"text":674},"abbc79159cd21",[],"\n-----\ndocker, go, kubernetes, elasticsearch, google-cloud-platform, docker-compose, google-app-engine, dockerfile, deployment, rabbitmq, google-cloud-storage, yaml, airflow, google-kubernetes-engine, containers, kibana, google-compute-engine, google-cloud-dataflow, drupal, virtual-machine, apache-beam, openshift, prometheus, ibm-cloud, grpc, docker-swarm, kubernetes-helm, grafana, gcloud, traefik, google-cloud-datastore, kubectl, load-balancing, google-cloud-sql, kubernetes-ingress, monitoring, google-cloud-pubsub, istio, minikube, nginx-reverse-proxy, speech-to-text, alpine, docker-machine, filebeat, google-translate, google-speech-api, iptables, stackdriver, docker-volume, docker-container, azure-aks, nginx-ingress, daemon, google-cloud-vision, google-vision, azure-kubernetes, google-cloud-composer, openshift-origin, kubeadm, dataflow, amazon-eks, service-accounts, rancher, docker-registry, docker-image, nfs, google-cloud-speech, kops, jupyterhub, rbac, google-cloud-endpoints, standard-sql, google-cloud-build, docker-networking\n\ngoogle: google-cloud-build, google-cloud-datastore, google-speech-api, google-cloud-dataflow, google-cloud-storage, google-cloud-platform, google-kubernetes-engine, google-cloud-sql, google-cloud-speech, google-compute-engine, google-cloud-composer, google-cloud-endpoints, google-cloud-vision, google-vision, google-cloud-pubsub, google-translate, google-app-engine\namazon: amazon-eks\nazure: azure-aks, azure-kubernetes",[],{"_key":677,"_type":64,"children":678,"markDefs":687,"style":126},"78bad69c7e1d",[679,683],{"_key":680,"_type":68,"marks":681,"text":682},"78bad69c7e1d0",[477],"centroid 21: excel, vba, excel-vba, c#, python",{"_key":684,"_type":68,"marks":685,"text":686},"78bad69c7e1d1",[],"\n-----\nexcel, vba, excel-vba, google-sheets, ms-access, excel-formula, powerbi, outlook, sharepoint, ms-word, access-vba, office365, apache-poi, sap, dax, formatting, pivot-table, office-js, runtime-error, match, powerpoint, outlook-vba, formula, access, row, vsto, ssas, multiple-columns, powerquery, spreadsheet, vlookup, average, extract, userform, unique, ms-office, excel-2010, word-vba, ms-access-2010, excel-2016, rows, ms-access-2016, onedrive, openxml, powerbi-desktop, copy-paste, transpose, conditional-formatting, office-addins, office-interop, epplus, xlsxwriter, interop, phpspreadsheet, paste, shapes, offset, powerpivot, win32com, powerbi-embedded, export-to-excel, python-docx, countif, array-formulas, autofill, powerpoint-vba, activex, ms-access-2013, solver, m, business-intelligence, xls, ado, ssas-tabular, adodb, xlrd, delete-row, sumifs, openxml-sdk, excel-interop, add-in, excel-2013, worksheet, excel-addins\n\ngoogle: google-sheets",[],{"_key":689,"_type":64,"children":690,"markDefs":699,"style":126},"3253b8ca402e",[691,695],{"_key":692,"_type":68,"marks":693,"text":694},"3253b8ca402e0",[477],"centroid 4: git, github, jenkins, python, docker",{"_key":696,"_type":68,"marks":697,"text":698},"3253b8ca402e1",[],"\n-----\ngit, jenkins, github, jenkins-pipeline, gitlab, continuous-integration, sonarqube, bitbucket, jenkins-plugins, gitlab-ci, devops, azure-pipelines, svn, version-control, phpstorm, webhooks, repository, travis-ci, jekyll, artifactory, atom-editor, jira, pipeline, github-pages, teamcity, slack, push, gitlab-ci-runner, git-bash, github-api, continuous-deployment, branch, nexus, circleci, workflow, git-merge, diff, jenkins-groovy, clone, git-submodules, gitignore, atlassian-sourcetree, pull-request, bitbucket-pipelines, patch, commit, git-branch, versioning, mercurial, gnupg, git-commit, gerrit, rebase, open-source, githooks, allure, ssh-keys, git-push\n\nazure: azure-pipelines",[],{"_key":701,"_type":64,"children":702,"markDefs":711,"style":126},"3082062cfd43",[703,707],{"_key":704,"_type":68,"marks":705,"text":706},"3082062cfd430",[477],"centroid 33: java, hibernate, spring, spring-boot, jpa",{"_key":708,"_type":68,"marks":709,"text":710},"3082062cfd431",[],"\n-----\nhibernate, jpa, spring-data-jpa, spring-data, solr, orm, transactions, spring-batch, wildfly, mapping, many-to-many, lucene, h2, entity, liquibase, jpql, ejb, hql, multi-tenant, persistence, spring-data-rest, hibernate-mapping, eclipselink, querydsl, one-to-many, spring-transactions, hikaricp, criteria, hibernate-criteria, gorm, ehcache, jpa-2.0, criteria-api, entitymanager, transactional",[],{"_key":713,"_type":64,"children":714,"markDefs":723,"style":126},"cdbacacf5c32",[715,719],{"_key":716,"_type":68,"marks":717,"text":718},"cdbacacf5c320",[477],"centroid 39: java, python, c#, node.js, android",{"_key":720,"_type":68,"marks":721,"text":722},"cdbacacf5c321",[],"\n-----\nhttp, ssl, sockets, curl, server, networking, websocket, encryption, https, socket.io, proxy, openssl, tcp, ssl-certificate, cryptography, http-headers, certificate, localhost, udp, mqtt, connection, client, ip, reverse-proxy, network-programming, aes, rsa, port, tls1.2, chat, client-server, lets-encrypt, cloudflare, haproxy, real-time, virtualhost, wireshark, keystore, ipc, x509certificate, zeromq, bouncycastle, django-channels, tcpclient, http-proxy, serversocket, telnet, cryptojs, public-key-encryption, private-key, tcp-ip, x509, client-certificates, certbot, tor, multicast",[],{"_key":725,"_type":64,"children":726,"markDefs":735,"style":126},"1f57509336bc",[727,731],{"_key":728,"_type":68,"marks":729,"text":730},"1f57509336bc0",[477],"centroid 30: java, rest, spring, spring-boot, javascript",{"_key":732,"_type":68,"marks":733,"text":734},"1f57509336bc1",[],"\n-----\njava, spring-boot, spring, rest, maven, eclipse, spring-mvc, tomcat, jsp, jdbc, web-services, soap, servlets, swagger, jackson, java-ee, thymeleaf, netbeans, web-applications, apache-camel, architecture, salesforce, spring-webflux, jersey, httprequest, jax-rs, wsdl, http-post, multipartform-data, tomcat8, soapui, response, resttemplate, cxf, httpresponse, rest-assured, api-design, struts2, soap-client, jstl, restsharp, spring-rest, spring-test, spring-restcontroller, jax-ws, put, endpoint, http-status-codes, struts, spring-web",[],{"_key":737,"_type":64,"children":738,"markDefs":747,"style":126},"1b64344c52f4",[739,743],{"_key":740,"_type":68,"marks":741,"text":742},"1b64344c52f40",[477],"centroid 22: java, spring-boot, spring, maven, eclipse",{"_key":744,"_type":68,"marks":745,"text":746},"1b64344c52f41",[],"\n-----\ngradle, intellij-idea, neo4j, jsf, jar, grails, jboss, spring-cloud, spring-integration, jaxb, internationalization, log4j, eclipse-plugin, swagger-ui, jms, websphere, ant, activemq, vaadin, spring-kafka, pom.xml, log4j2, project-reactor, weblogic, java-11, netty, jetty, maven-3, javamail, crud, java-9, spring-cloud-stream, couchbase, ibm-mq, weblogic12c, datasource, glassfish, hazelcast, logback, osgi, hybris, openapi, project, maven-plugin, netflix-eureka, mybatis, cloudfoundry, reactive, eclipse-rcp, swagger-2.0, slf4j, netflix-zuul, quartz-scheduler, jetbrains-ide, spring-boot-actuator, lombok, spring-jdbc, sonarqube-scan, war, cdi, javabeans, tomcat7, interceptor, swt, java-10, freemarker, spring-boot-test, aop, jdbctemplate, dependency-management, spring-cloud-config, aspectj, spring-aop, flyway, amqp, classpath, spring-jms, jackson-databind, spring-cloud-dataflow, spring-websocket, spring-amqp, pivotal-cloud-foundry, spring-cloud-netflix, cucumber-jvm, executable-jar, spring-integration-dsl, swagger-codegen, tomcat9, spring-data-redis, javadoc, jndi, consul, intellij-plugin, dto, maven-surefire-plugin, hystrix, stomp, bean-validation, gateway, mapstruct, birt, spring-tool-suite, properties-file, jackson2, camunda, springfox, spring-data-neo4j, spring-rabbitmq, spring-session, pydev, xtext, servlet-filters, payara, code-formatting, spring-cloud-gateway\n\ngoogle: google-maps",[],{"_key":749,"_type":64,"children":750,"markDefs":759,"style":126},"9f101863f73a",[751,755],{"_key":752,"_type":68,"marks":753,"text":754},"9f101863f73a0",[477],"centroid 15: javascript, angular, android, typescript, visual-studio-code",{"_key":756,"_type":68,"marks":757,"text":758},"9f101863f73a1",[],"\n-----\nionic-framework, npm, visual-studio-code, ionic3, google-maps, cordova, debugging, electron, nativescript, ionic4, ionic2, meteor, autocomplete, geolocation, cordova-plugins, markdown, vscode-settings, phonegap, ide, webstorm, vscode-extensions, decorator, editor, ionic-native, onesignal, keyboard-shortcuts, angular2-nativescript, xdebug, hybrid-mobile-app, intellisense, nativescript-angular, tslint, remote-debugging, html-framework-7, breakpoints, syntax-highlighting, vscode-debugger, pylint, ibm-mobilefirst, jsdoc, nativescript-vue, prettier, windbg, phonegap-plugins, code-snippets, inappbrowser, phonegap-build",[],{"_key":761,"_type":64,"children":762,"markDefs":771,"style":126},"01a15b36cc28",[763,767],{"_key":764,"_type":68,"marks":765,"text":766},"01a15b36cc280",[477],"centroid 42: javascript, html, c#, android, python",{"_key":768,"_type":68,"marks":769,"text":770},"01a15b36cc281",[],"\n-----\nunity3d, image, tkinter, svg, animation, canvas, three.js, chart.js, scroll, 3d, html5-canvas, camera, geometry, css-animations, bitmap, rotation, aframe, icons, glsl, shader, fabricjs, rendering, webgl, css-transitions, transform, png, scrollbar, transition, textures, blender, html2canvas, drawing, mask, linechart, draw, jquery-animate, angular-animations, konvajs, raycasting, webvr",[],{"_key":773,"_type":64,"children":774,"markDefs":783,"style":126},"1c1b9a735e62",[775,779],{"_key":776,"_type":68,"marks":777,"text":778},"1c1b9a735e620",[477],"centroid 43: javascript, html, jquery, css, reactjs",{"_key":780,"_type":68,"marks":781,"text":782},"1c1b9a735e621",[],"\n-----\nd3.js, leaflet, google-maps-api-3, magento, magento2, ethereum, jquery-ui, cakephp, jinja2, primefaces, extjs, ember.js, fullcalendar, maps, ckeditor, mapbox, solidity, materialize, jquery-select2, dialog, angularjs-directive, recaptcha, openlayers, coldfusion, polymer, gis, react-apollo, styled-components, tinymce, progress-bar, geojson, javascript-events, position, apollo-client, undefined, addeventlistener, sharepoint-2013, semantic-ui, amcharts, web-deployment, joomla, settimeout, render, p5.js, openstreetmap, element, instagram-api, parent-child, liquid, mapbox-gl-js, focus, angularjs-ng-repeat, setinterval, react-admin, alert, polygon, dom-events, web-component, textarea, react-select, href, web3, contact-form-7, zoom, facebook-javascript-sdk, refresh, graphql-js, overlay, height, slick, content-security-policy, jqgrid, html5-audio, delay, anchor, blogger, html-select, child-process, jquery-plugins, width, html-lists, kendo-asp.net-mvc, loading, zurb-foundation, id, bind, whitespace, dropzone.js, onchange, semantic-ui-react, owl-carousel, media, video.js, hide, netlify, background-color, sticky, geocoding, native-base, webpage, inline, tampermonkey, slick.js, form-data, padding, ternary-operator, event-listener, facebook-messenger-bot, underscore.js, formik, jquery-validate, quill, dc.js, highlight, react-table, electron-builder, bulma, jquery-selectors, fullscreen, multi-select, innerhtml, slideshow, parallax, draggable, footer, styling, react-component, jquery-mobile, selector, swiper, infinite-scroll, contenteditable, sidebar, jquery-ui-datepicker, mobx-react, form-submit, shadow-dom, backbone.js, each, margin, html-form, mathjax, jquery-ui-autocomplete, viewport, c3.js, adsense, sweetalert2, web-development-server, keypress, jquery-ui-sortable, facebook-php-sdk, sweetalert, center, font-awesome-5, react-proptypes, placeholder, summernote, font-face, react-context, web-frontend, ref, css-float, parent, wysiwyg, getelementbyid, font-size, higher-order-functions, lifecycle, dropzone, partial-views, asyncstorage, wai-aria, spfx, custom-element, jstree, bootstrap-datepicker, line-breaks, react-dom, fancybox, css-tables, stylesheet, react-google-maps, react-leaflet, timepicker, option, facebook-marketing-api, gsap, crossfilter, draftjs, directive, fixed, show-hide\n\ngoogle: react-google-maps, google-maps-api-3",[],{"_key":785,"_type":64,"children":786,"markDefs":795,"style":126},"eea89549ac05",[787,791],{"_key":788,"_type":68,"marks":789,"text":790},"eea89549ac050",[477],"centroid 1: javascript, python, html, java, android",{"_key":792,"_type":68,"marks":793,"text":794},"eea89549ac051",[],"\n-----\nwordpress, woocommerce, javafx, swing, google-bigquery, button, google-api, video, google-analytics, plugins, kivy, youtube, onclick, calendar, dynamics-crm, youtube-api, widget, background, slider, radio-button, event-handling, save, amp-html, compression, google-tag-manager, javafx-8, click, hover, fxml, analytics, display, firebase-analytics, mouseevent, resize, background-image, size, listener, google-analytics-api, cross-domain, toggle, jpeg, google-data-studio, google-adwords, rgb, submit, gif, pixel, crop, gallery, tiff, thumbnails, image-resizing, exif, user-experience, src, pillow\n\ngoogle: google-adwords, google-bigquery, google-api, google-tag-manager, google-data-studio, google-analytics-api, google-analytics",[],{"_key":797,"_type":64,"children":798,"markDefs":807,"style":126},"27ba70cd509f",[799,803],{"_key":800,"_type":68,"marks":801,"text":802},"27ba70cd509f0",[477],"centroid 26: javascript, reactjs, node.js, typescript, react-native",{"_key":804,"_type":68,"marks":805,"text":806},"27ba70cd509f1",[],"\n-----\njavascript, node.js, reactjs, firebase, react-native, flutter, firebase-realtime-database, webpack, dart, redux, google-cloud-firestore, ecmascript-6, react-redux, firebase-authentication, google-cloud-functions, jestjs, promise, async-await, react-router, firebase-cloud-messaging, import, push-notification, dialogflow, material-ui, module, react-navigation, react-native-android, expo, fetch, gulp, mocha, firebase-storage, actions-on-google, create-react-app, enzyme, material-design, jsx, flutter-layout, lodash, babel, navigation, es6-promise, node-modules, apollo, state, npm-install, babeljs, eslint, gatsby, react-native-ios, javascript-objects, react-router-v4, next.js, yarnpkg, webpack-4, react-hooks, redux-form, prestashop, firebase-security-rules, flowtype, react-router-dom, typescript-typings, webpack-dev-server, antd, redux-saga, redux-thunk, router, package.json, react-native-flatlist, firebase-admin, react-props, react-native-navigation, mobx, firebaseui, es6-modules, firebase-hosting, aurelia, pm2, immutability, serverside-rendering, action, setstate, gruntjs, requirejs, ecmascript-5, flutter-dependencies, ssr, react-native-firebase, angular-dart, es6-class, require, laravel-mix, arrow-functions, react-native-maps, npm-scripts, flutter-animation, workbox, firebase-cli, destructuring, babel-loader, immutable.js, minify, browserify, node-sass, nodemon, firebase-security, angularfire, reducers, loader, bower\n\ngoogle: google-cloud-functions, actions-on-google, google-cloud-firestore",[],{"_key":809,"_type":64,"children":810,"markDefs":819,"style":126},"1cd055d3b40c",[811,815],{"_key":812,"_type":68,"marks":813,"text":814},"1cd055d3b40c0",[477],"centroid 13: javascript, selenium, google-chrome, html, selenium-webdriver",{"_key":816,"_type":68,"marks":817,"text":818},"1cd055d3b40c1",[],"\n-----\nselenium, google-chrome, selenium-webdriver, xpath, dom, google-chrome-extension, firefox, caching, automation, iframe, selenium-chromedriver, mobile, browser, internet-explorer, safari, webdriver, css-selectors, google-chrome-devtools, webrtc, progressive-web-apps, service-worker, local-storage, internet-explorer-11, html5-video, microsoft-edge, ignite, phantomjs, chromium, cross-browser, webdriverwait, capybara, screenshot, cpu-architecture, mobile-safari, firefox-addon, webkit, geckodriver, firefox-webextensions, google-chrome-headless, browser-cache, webdriver-io, v8, specflow, selenium-grid, html-agility-pack, memcached, guava, devtools, cucumber-java, headless, domdocument, extentreports, selenium-ide, watir, cache-control, google-chrome-app, browser-automation, rselenium, mozilla\n\ngoogle: google-chrome, google-chrome-headless, google-chrome-devtools, google-chrome-app, google-chrome-extension",[],{"_key":821,"_type":64,"children":822,"markDefs":831,"style":126},"62fecfce49fd",[823,827],{"_key":824,"_type":68,"marks":825,"text":826},"62fecfce49fd0",[477],"centroid 6: javascript, vue.js, vuejs2, vuex, webpack",{"_key":828,"_type":68,"marks":829,"text":830},"62fecfce49fd1",[],"\n-----\nvue.js, express, vuejs2, axios, vue-component, vuex, vuetify.js, xmlhttprequest, vue-router, nuxt.js, fetch-api, vue-cli, vue-cli-3, store, nuxt, bootstrap-vue, vue-test-utils, element-ui, vee-validate",[],{"_key":833,"_type":64,"children":834,"markDefs":843,"style":126},"ccce3704902a",[835,839],{"_key":836,"_type":68,"marks":837,"text":838},"ccce3704902a0",[477],"centroid 40: mongodb, node.js, javascript, python, express",{"_key":840,"_type":68,"marks":841,"text":842},"ccce3704902a1",[],"\n-----\nmongodb, qt, mongoose, graphql, pyqt5, pyqt, mongodb-query, aggregation-framework, discord, qml, qt5, nosql, discord.js, discord.py, aggregate, ejs, handlebars.js, pymongo, backend, schema, mongoose-schema, mean-stack, sails.js, pug, nestjs, loopbackjs, pyqt4, spring-data-mongodb, multer, geospatial, mean, fs, aggregation, lookup, loopback, apollo-server, parse-server, pyside2, bcrypt, mongodb-.net-driver, document, pyside, qt-designer, mongoengine, body-parser, discord.py-rewrite, projection, mern, mongoose-populate, qthread, mlab, joi, passport-local, pyqtgraph, bson, sharding, express-handlebars",[],{"_key":845,"_type":64,"children":846,"markDefs":855,"style":126},"1b8c9044aada",[847,851],{"_key":848,"_type":68,"marks":849,"text":850},"1b8c9044aada0",[477],"centroid 5: multithreading, java, python, concurrency, c++",{"_key":852,"_type":68,"marks":853,"text":854},"1b8c9044aada1",[],"\n-----\nmultithreading, asynchronous, parallel-processing, concurrency, multiprocessing, callback, queue, celery, jvm, task, python-asyncio, synchronization, dask, python-multiprocessing, thread-safety, locking, mpi, openmp, singleton, pickle, python-multithreading, opencl, future, threadpool, mutex, task-parallel-library, tornado, deadlock, aiohttp, atomic, wait, executorservice, semaphore, completable-future, handler, goroutine, channel, race-condition, volatile, pool, runnable, java-threads, synchronous, async.js, producer-consumer, synchronized, java.util.concurrent, blocking",[],{"_key":857,"_type":64,"children":858,"markDefs":867,"style":126},"672fd1dca7b7",[859,863],{"_key":860,"_type":68,"marks":861,"text":862},"672fd1dca7b70",[477],"centroid 11: oracle, sql, plsql, oracle11g, database",{"_key":864,"_type":68,"marks":865,"text":866},"672fd1dca7b71",[],"\n-----\noracle, plsql, stored-procedures, oracle11g, triggers, db2, oracle12c, sql-server-2014, oracle-sqldeveloper, oracle-apex, cursor, database-trigger, apex, oracle10g, sqlplus, oracle-apex-5.1, procedure, dynamic-sql, cx-oracle, oracle-adf, oracleforms, hierarchical-data, plsqldeveloper, oracle-apex-5",[],{"_key":869,"_type":64,"children":870,"markDefs":879,"style":126},"b0eed6e78005",[871,875],{"_key":872,"_type":68,"marks":873,"text":874},"b0eed6e780050",[477],"centroid 38: pdf, html, python, php, c#",{"_key":876,"_type":68,"marks":877,"text":878},"b0eed6e780051",[],"\n-----\npdf, merge, webview, printing, fonts, r-markdown, download, base64, puppeteer, itext, hyperlink, latex, export, blob, imagemagick, ocr, pdf-generation, adobe, jspdf, pdfbox, itext7, embed, docx, digital-signature, wkhtmltopdf, fpdf, mpdf, tcpdf, dompdf, ghostscript, acrobat, pypdf2, reportlab",[],{"_key":881,"_type":64,"children":882,"markDefs":891,"style":126},"a1062857f1aa",[883,887],{"_key":884,"_type":68,"marks":885,"text":886},"a1062857f1aa0",[477],"centroid 9: php, laravel, laravel-5, mysql, javascript",{"_key":888,"_type":68,"marks":889,"text":890},"a1062857f1aa1",[],"\n-----\nphp, laravel, ajax, laravel-5, codeigniter, validation, eloquent, session, file-upload, model, pagination, codeigniter-3, laravel-5.6, controller, laravel-5.5, migration, upload, laravel-5.7, laravel-blade, laravel-5.4, relational-database, laravel-5.2, php-7, relationship, lumen, middleware, php-7.2, octobercms, guzzle, image-uploading, laravel-5.8, algolia, query-builder, phpexcel, jobs, laravel-query-builder, laravel-5.3, roles, artisan, laravel-nova, php-carbon, laravel-4, laravel-5.1, homestead, pusher, laravel-eloquent, blade, laravel-routing, laravel-dusk, relation, shared-hosting, eager-loading",[],{"_key":893,"_type":64,"children":894,"markDefs":903,"style":126},"96f1539afd07",[895,899],{"_key":896,"_type":68,"marks":897,"text":898},"96f1539afd070",[477],"centroid 47: php, wordpress, javascript, woocommerce, python",{"_key":900,"_type":68,"marks":901,"text":902},"96f1539afd071",[],"\n-----\ngoogle-apps-script, email, notifications, google-drive-api, paypal, stripe-payments, gmail, smtp, attributes, wordpress-theming, google-calendar-api, google-visualization, google-oauth, google-sheets-api, product, phpmailer, youtube-data-api, advanced-custom-fields, gmail-api, hook-woocommerce, outlook-addin, metadata, google-sheets-formula, cart, html-email, google-app-maker, hook, exchangewebservices, payment-gateway, custom-post-type, exchange-server, checkout, e-commerce, sendgrid, field, content-management-system, nodemailer, categories, gsuite, google-form, admin, mailchimp, comments, web-hosting, outlook-web-addins, orders, wordpress-rest-api, customization, imap, google-docs, rss, custom-wordpress-pages, custom-taxonomy, shortcode, outlook-restapi, email-attachments, google-sheets-query, mailgun, google-api-php-client, woocommerce-rest-api, wordpress-gutenberg, google-apis-explorer, attachment, gmail-addons, price, sendmail, icalendar, blogs, registration, custom-fields, multisite, google-admin-sdk, shipping, gravity-forms-plugin, google-api-client, archive, pagespeed, smtplib, mime, meta, google-api-nodejs-client, contact-form, taxonomy, google-api-python-client, account, stock\n\ngoogle: google-sheets-api, google-docs, google-oauth, google-apps-script, google-sheets-query, google-sheets-formula, google-api-php-client, google-api-nodejs-client, google-visualization, google-admin-sdk, google-calendar-api, google-apis-explorer, google-api-python-client, google-form, google-app-maker, google-api-client, google-drive-api",[],{"_key":905,"_type":64,"children":906,"markDefs":915,"style":126},"eb803a227c64",[907,911],{"_key":908,"_type":68,"marks":909,"text":910},"eb803a227c640",[477],"centroid 23: postgresql, sql, python, javascript, mysql",{"_key":912,"_type":68,"marks":913,"text":914},"eb803a227c641",[],"\n-----\nsqlite, flask, sqlalchemy, hyperledger-fabric, odoo, hyperledger, elixir, blockchain, hyperledger-composer, flask-sqlalchemy, sequence, couchdb, psycopg2, psql, postgis, pyodbc, knex.js, plpgsql, jsonb, jooq, typeorm, postgresql-9.5, ecto, postgresql-10, marshalling, connection-pooling, postgresql-9.6, database-replication, unmarshalling, pgadmin-4, pgadmin, recursive-query, postgresql-9.4, crosstab, go-gorm, database-backups, postgresql-9.3, rds, heroku-postgres",[],{"_key":917,"_type":64,"children":918,"markDefs":927,"style":126},"df234f722c0a",[919,923],{"_key":920,"_type":68,"marks":921,"text":922},"df234f722c0a0",[477],"centroid 35: python, java, c++, c#, windows",{"_key":924,"_type":68,"marks":925,"text":926},"df234f722c0a1",[],"\n-----\nwindows, powershell, batch-file, ffmpeg, audio, cmd, windows-10, path, stream, directory, process, vbscript, prolog, ftp, time-complexity, copy, command, zip, file-io, ocaml, scheduled-tasks, storage, big-o, binary-search-tree, registry, scheme, binary-tree, text-files, dynamic-programming, rename, exe, echo, command-prompt, hashtable, powershell-v3.0, filereader, batch-processing, wmi, stack-overflow, file-handling, windows-server-2016, windows-server-2012-r2, bufferedreader, taskscheduler, fstream, hyper-v, readfile, depth-first-search, fibonacci, ifstream, backtracking",[],{"_key":929,"_type":64,"children":930,"markDefs":939,"style":126},"2b082d66b062",[931,935],{"_key":932,"_type":68,"marks":933,"text":934},"2b082d66b0620",[477],"centroid 3: python, java, javascript, arrays, c#",{"_key":936,"_type":68,"marks":937,"text":938},"2b082d66b0621",[],"\n-----\narrays, string, list, function, loops, csv, algorithm, dictionary, performance, for-loop, file, sorting, class, object, if-statement, oop, haskell, recursion, pointers, variables, generics, java-8, matrix, rust, filter, optimization, indexing, math, lambda, arraylist, inheritance, input, multidimensional-array, search, random, vector, data-structures, time, struct, types, methods, while-loop, foreach, design-patterns, dynamic, functional-programming, collections, java-stream, sas, parameters, enums, nested, interface, constructor, linked-list, syntax, casting, tree, hashmap, binary, properties, scope, reference, type-conversion, floating-point, iterator, null, tuples, static, format, set, conditional, iteration, range, switch-statement, return, append, numbers, boolean, output, int, concatenation, polymorphism, hex, compare, initialization, namespaces, integer, pattern-matching, grouping, logic, key, filtering, parameter-passing, list-comprehension, apply, subset, global-variables, slice, vectorization, conditional-statements, combinations, scanf, java.util.scanner, character, lapply, comparison, this, 2d, override, counter, numpy-ndarray, permutation, user-input, rounding, nested-loops, abstract-class, instance, reduce, prototype, itertools, global, reverse, subclass, comparator, key-value, increment, min, infinite-loop, contains, do-while, associative-array, mergesort, abstract, indexof, break, bubble-sort",[],{"_key":941,"_type":64,"children":942,"markDefs":951,"style":126},"408f2f66ec4e",[943,947],{"_key":944,"_type":68,"marks":945,"text":946},"408f2f66ec4e0",[477],"centroid 48: python, java, javascript, r, php",{"_key":948,"_type":68,"marks":949,"text":950},"408f2f66ec4e1",[],"\n-----\ntypo3, wso2, clojure, sublimetext3, drupal-8, acumatica, jframe, docusignapi, teradata, emacs, netsuite, karate, verilog, jasper-reports, marklogic, sparql, vhdl, sympy, autodesk-forge, knitr, erlang, yocto, tcl, odoo-11, cakephp-3.0, mule, phoenix-framework, drupal-7, integration, racket, netlogo, autohotkey, uml, drools, node-red, stata, magento-1.9, common-lisp, aem, opencart, abap, line, python-sphinx, jtable, yii, pentaho, wagtail, coq, regex-lookarounds, slack-api, bioinformatics, openstack, perl6, antlr4, awt, rcpp, upgrade, tweepy, jpanel, macos-high-sierra, documentation, jsonschema, actionscript-3, vmware, wildcard, microsoft-dynamics, prestashop-1.7, typo3-8.x, zend-framework, lisp, gwt, elasticsearch-5, distance, smartcontracts, talend, wso2-am, slim, sfml, message-queue, computer-science, scenebuilder, yii2-advanced-app, rdf, inno-setup, fpga, flask-wtforms, bitcoin, clipboard, special-characters, unreal-engine4, hana, preg-replace, gdal, flash, nginx-config, wso2esb, system-verilog, arangodb, wso2is, netbeans-8, uuid, graphviz, liferay, omnet++, spatial, encode, powershell-v4.0, paypal-sandbox, http2, dynamics-365, local, ip-address, servicestack, hdf5, firewall, kdb, executable, linear-programming, add, orientdb, angularjs-scope, cplex, pymysql, xpages, phaser-framework, maya, powershell-v2.0, nginx-location, adfs, limit, abstract-syntax-tree, variable-assignment, elementtree, wav, mouse, splunk, asterisk, pandoc, publish-subscribe, simulink, webassembly, packages, complexity-theory, ansible-2.x, python-decorators, preg-match, regex-negation, minecraft, spotfire, nested-lists, pcre, gfortran, percentage, matching, monads, jbutton, gsub, numba, sitecore, watson-conversation, dropwizard, edit, frequency, vulkan, cdn, mime-types, wrapper, php-curl, jersey-2.0, scapy, converters, zapier, attributeerror, elm, console.log, web3js, kentico, moodle, intervals, anylogic, multilingual, logical-operators, glm, vlc, owl, autodesk-viewer, dojo, z3, arcgis, classloader, pyomo, sybase, antlr, md5, indexeddb, powerapps, data-conversion, http-status-code-403, web-worker, external, alfresco, airflow-scheduler, finance, typo3-9.x, cpu-usage, pouchdb, ibm-midrange, ping, truffle, qemu, dask-distributed, selection, apache-httpclient-4.x, jsonpath, sha256, coding-style, polymer-2.x, zipfile, vps, symbols, mediawiki, calculation, okta, smarty, blueprism, netcdf, zend-framework3, genetic-algorithm, snmp, repeat, plesk, signature, doxygen, qgis, dlib, jena, ckeditor4.x, tortoisesvn, face-recognition, message, number-formatting, dropbox, lm, default, spss, perforce, assert, uart, acl, symlink, suitescript2.0, kendo-ui-angular2, getter-setter, jira-rest-api, crm, sleep, indentation, prompt, analysis, lme4, ironpython, latitude-longitude, grammar, dotnetnuke, cqrs, gaussian, regex-greedy, koa, yum, numerical-methods, haskell-stack, scala-cats, hugo, rpc, priority-queue, openldap, popen, shapefile, var, partition, record, combinatorics, ada, nio, pentaho-data-integration, appium-ios, scheduling, pyautogui, snakemake, production-environment, lwjgl, computational-geometry, scaling, tabulator, lifetime, naming-conventions, jsf-2, lotus-notes, javac, numeric, odoo-8, modeling, salesforce-lightning, silverstripe, bookdown, websphere-liberty, virtualization, wxwidgets, ramda.js, hapijs, reload, marklogic-9, snapshot, hierarchy, server-side, cakephp-3.x, prestashop-1.6, schedule, unix-timestamp, difference, ontology, readline, configuration-files, opendaylight, block, wolfram-mathematica, rpm, logstash-grok, currency, mount, remote-server, destructor, nsis, captcha, feathersjs, code-generation, hardware, django-2.1, suitescript, typoscript, jython, trim, distributed-system, zabbix, vaadin8, nodemcu, magento2.2, string-matching, shuffle, ckeditor5, mixed-models, fedora, ipv6, new-operator, ember-data, llvm-clang, exit, webcam, str-replace, large-data, simplexml, rules, elasticsearch-aggregation, rhel, dsl, ethernet, event-sourcing, vimeo, hashset, date-formatting, zlib, standards, bamboo, converter, liferay-7, file-get-contents, solrcloud, servicenow, logstash-configuration, xhtml, virtual, pywin32, equals, intersection, micronaut, production, cs50, fopen, elasticsearch-6, lazy-evaluation, server-sent-events, extbase, translate, python-module, tabular, libreoffice, sml, private, apostrophe-cms, tostring, bitbake, actionlistener, restore, activiti, mypy, opencart-3, janusgraph, rank, multiplication, keyword, archlinux, optaplanner, imagick, informix, flex-lexer, photoshop, pyaudio, openlayers-3, reset, sentry, umbraco7, messaging, lotus-domino, fiddler, interactive, jlabel, folium, bigcommerce, transparency, nullreferenceexception, operator-keyword, tracking, keyboard-events, twitter-oauth, static-methods, polymer-3.x, prisma, mule-esb, string-comparison, counting, layout-manager, gherkin, inner-classes, docker-for-windows, checksum, imagemagick-convert, connect, php-7.1, sublimetext, wso2carbon, python-telegram-bot, react-native-router-flux, desktop, paypal-rest-sdk, php-5.6, division, typeclass, identityserver3, mapbox-gl, wix-react-native-navigation, sample, point-clouds, web-audio, vertica, java-time, mosquitto, dllimport, dump, covariance, cytoscape.js, cgal, r-package, installshield, eigen3, point-cloud-library, ngx-datatable, sampling, vapor, clojurescript, auto-increment, overlap, ibm-cloud-infrastructure, echarts, web-audio-api, hp-uft, office365api, ngx-translate, shortcut, paho, ember-cli, rfid, applet, swap, predicate, host, detox, cas, jsf-2.2, trigonometry, sandbox, beagleboneblack, filestream, numpy-broadcasting, xsd-validation, fgets, ghc, serenity-bdd, spi, duration, jna, unzip, fiware, rhel7, long-integer, pentaho-spoon, cpython, crystal-lang, assertion, string-concatenation, compatibility, java-module, fluid, meta-tags, wildfly-10, hashicorp-vault, apache-karaf, roblox, gurobi, install4j, development-environment, static-analysis, ffi, h5py, django-authentication, urlencode, directx-11, salt-stack, r-raster, pseudocode, hsqldb, django-celery, fatal-error, pywinauto, peewee, p2p, tinymce-4, mysql-5.7, openlayers-5, vis.js, palindrome, angular-template, resteasy, kable, quickbooks, monaco-editor, rdp, solrj, file-transfer, language-agnostic, mustache, java-7, naudio, velocity, wikidata, copy-constructor, countdown, wtforms, montecarlo, wso2ei, sitemap, stringbuilder, geoserver, joomla3.0, symbolic-math, bytecode, high-availability, sharepoint-2010, assign, semantic-web, rtf, vmware-clarity, odoo-12, informatica, volume, jit, monogame, super, eof, syncfusion, rust-cargo, dataweave, stack-trace, browser-sync, arduino-ide, blogdown, communication, rider, favicon, fill, processbuilder, biginteger, labview, resampling, normal-distribution, linear, angular4-router, hierarchical-clustering, drag, modbus, diagram, word, org-mode, admin-on-rest, equation, webrequest, tinkerpop3, restful-authentication, lib, tizen, user-agent, survival-analysis, point, fragment-shader, tableau-server, ansible-inventory, delete-file, code-injection, clickhouse, text-editor, kettle, angularjs-material, date-range, rpy2, complex-numbers, graphene-python, coded-ui-tests, midi, programming-languages, web-push, pine-script, equality, holoviews, sapply, quotes, jtextfield, emscripten, sas-macro, angular-http, varnish, phalcon, typing, freeze, opentok, password-protection, anonymous-function, resolution, remote-desktop, cryptocurrency, hpc, default-value, tsc, multiline, chromium-embedded, treemap, substitution, arm64, shutil, supervisord, at-command, interpreter, packet, google-search, dynamics-crm-online, can-bus, neo4j-apoc, ranking, httpserver, gsm, freebsd, centos6, yield, c++-winrt, fread, anypoint-studio, jboss7.x, type-hinting, wixcode, epoch, uninstall, autoit, smartcard, wikipedia, angular-service-worker, cosine-similarity, protege, schema.org, typescript-generics, dropbox-api, verification, composition, windows-server, using, hmac, dry, ag-grid-angular, median, messenger, rethinkdb, thingsboard, xilinx, named-pipes, office-ui-fabric, dynamics-crm-365, heroku-cli, date-format, imputation, jfreechart, wiremock, packaging, outliers, target, typo3-7.6.x, ngrok, audit, models, jboss-eap-7, moving-average, 32bit-64bit, strapi, views, silverstripe-4, rasa-core, content-type, event-loop, textinput, smoothing, surface, explode, getusermedia, 7zip, confidence-interval, watch, freertos, zend-framework2, circular-dependency, qliksense, repeater, cjk, clock, django-testing, pic, csrf-protection, shopping-cart, encapsulation, paypal-ipn, json-ld, cobol, key-bindings, relative-path, hashcode, thrift, bing-maps, localdate, dicom, netezza\n\ngoogle: google-search",[],{"_key":953,"_type":64,"children":954,"markDefs":963,"style":126},"3a7362e3ca6e",[955,959],{"_key":956,"_type":68,"marks":957,"text":958},"3a7362e3ca6e0",[477],"centroid 37: python, machine-learning, tensorflow, python-3.x, keras",{"_key":960,"_type":68,"marks":961,"text":962},"3a7362e3ca6e1",[],"\n-----\ntensorflow, numpy, keras, machine-learning, opencv, matlab, deep-learning, scikit-learn, image-processing, neural-network, scipy, nlp, pytorch, computer-vision, conv-neural-network, lstm, data-science, regression, classification, dataset, gpu, nltk, google-colaboratory, linear-regression, artificial-intelligence, object-detection, cluster-analysis, generator, spacy, interpolation, logistic-regression, svm, data-analysis, tesseract, random-forest, tensorflow-datasets, bazel, signal-processing, recurrent-neural-network, opencv3.0, fft, tensorboard, gensim, sparse-matrix, word2vec, cv2, h2o, cross-validation, tensor, caffe, xgboost, reshape, reinforcement-learning, stanford-nlp, linear-algebra, k-means, tensorflow-estimator, prediction, rnn, keras-layer, pca, probability, curve-fitting, decision-tree, text-mining, tensorflow-serving, loss-function, object-detection-api, google-cloud-ml, metrics, mathematical-optimization, image-segmentation, matrix-multiplication, autoencoder, tensorflow-lite, r-caret, text-classification, sentiment-analysis, scikit-image, convolution, training-data, categorical-data, tensorflow.js, knn, mnist, valueerror, sklearn-pandas, gradient-descent, weka, yolo, python-tesseract, word-embedding, feature-extraction, tokenize, emgucv, feature-selection, predict, coreml, similarity, normalization, one-hot-encoding, backpropagation, convolutional-neural-network, ode, lda, tf-idf, openai-gym, image-recognition, theano, naivebayes, rasa-nlu, detection, grid-search, data-mining, differential-equations, layer, torch, roc, mxnet, camera-calibration, topic-modeling, cudnn, kaggle, confusion-matrix, tensorflow2.0, doc2vec, distributed, embedding, tfrecord, recommendation-engine, multilabel-classification, ner\n\ngoogle: google-colaboratory, google-cloud-ml",[],{"_key":965,"_type":64,"children":966,"markDefs":975,"style":126},"6ae51abaef2e",[967,971],{"_key":968,"_type":68,"marks":969,"text":970},"6ae51abaef2e0",[477],"centroid 46: python, php, apache, python-3.x, ubuntu",{"_key":972,"_type":68,"marks":973,"text":974},"6ae51abaef2e1",[],"\n-----\napache, nginx, .htaccess, web, url, pip, anaconda, redirect, pycharm, dns, ubuntu-16.04, permissions, url-rewriting, package, mod-rewrite, installation, conda, centos7, ubuntu-18.04, debian, virtualenv, python-import, install, apache2, url-redirection, vagrant, webserver, virtualbox, cpanel, gunicorn, digital-ocean, http-status-code-404, config, hosting, subdomain, systemd, uwsgi, wamp, nvidia, setuptools, ubuntu-14.04, mod-wsgi, pipenv, url-routing, mamp, httpd.conf, environment, query-string, seo, wsgi, subdirectory, setup.py, wampserver, permalinks, pypi, apache2.4, lamp, apt, http-status-code-301, miniconda, http-redirect",[],{"_key":977,"_type":64,"children":978,"markDefs":987,"style":126},"c34d26eeb5b0",[979,983],{"_key":980,"_type":68,"marks":981,"text":982},"c34d26eeb5b00",[477],"centroid 50: python, python-3.x, python-2.7, pandas, javascript",{"_key":984,"_type":68,"marks":985,"text":986},"c34d26eeb5b01",[],"\n-----\npython, python-3.x, pandas, dataframe, python-2.7, web-scraping, datetime, parsing, beautifulsoup, post, python-requests, scrapy, request, pygame, python-3.6, pandas-groupby, encoding, unicode, get, utf-8, twitter, character-encoding, header, python-3.7, web-crawler, python-imaging-library, pyinstaller, spyder, tags, export-to-csv, typeerror, odoo-10, openpyxl, jsoup, regex-group, python-3.5, ascii, series, urllib, wxpython, lxml, turtle-graphics, xlsx, rvest, nan, argparse, python-2.x, mysql-python, datetime-format, kivy-language, emoji, importerror, screen-scraping, scrapy-spider, pyserial, html-parsing, python-xarray, flask-restful, tkinter-canvas, cheerio, frame, odoo-9, cx-freeze, twisted, tk, python-datetime, python-unicode, decoding, httr, tkinter-entry, timedelta",[],{"_key":989,"_type":64,"children":990,"markDefs":999,"style":126},"c659c71670e4",[991,995],{"_key":992,"_type":68,"marks":993,"text":994},"c659c71670e40",[477],"centroid 16: python, unix, bash, sed, linux",{"_key":996,"_type":68,"marks":997,"text":998},"c659c71670e41",[],"\n-----\nregex, linux, bash, shell, unix, perl, awk, sed, text, replace, split, cron, command-line, grep, scripting, sh, find, substring, filesystems, notepad++, fork, posix, scheduler, cgi, delimiter, text-processing, aix, cut, solaris",[],{"_key":1001,"_type":64,"children":1002,"markDefs":1011,"style":126},"c4667a905f93",[1003,1007],{"_key":1004,"_type":68,"marks":1005,"text":1006},"c4667a905f930",[477],"centroid 29: r, python, ggplot2, plot, matplotlib",{"_key":1008,"_type":68,"marks":1009,"text":1010},"c4667a905f931",[],"\n-----\nr, matplotlib, ggplot2, dplyr, shiny, jupyter-notebook, plot, graph, time-series, statistics, colors, plotly, julia, rstudio, graphics, seaborn, cypher, tidyverse, bokeh, data-visualization, bar-chart, label, networkx, histogram, ipython, purrr, tidyr, visualization, gremlin, gnuplot, influxdb, igraph, shinydashboard, legend, heatmap, octave, graph-theory, simulation, data-manipulation, correlation, raster, plotly-dash, statsmodels, data-cleaning, na, matlab-figure, mutate, scatter-plot, boxplot, multi-index, stringr, dashboard, forecasting, scale, lubridate, r-plotly, missing-data, graph-databases, arima, pie-chart, graph-algorithm, jupyter-lab, axis, geopandas, shiny-server, distribution, breadth-first-search, sparklyr, bayesian, lag, sf, tibble, subplot, matplotlib-basemap, xts, contour, plyr, anova, axis-labels, shortest-path, shiny-reactivity, ggmap, dijkstra, figure, rlang, facet, ggplotly, zoo",[],{"_key":1013,"_type":64,"children":1014,"markDefs":1023,"style":126},"e4e868066a2f",[1015,1019],{"_key":1016,"_type":68,"marks":1017,"text":1018},"e4e868066a2f0",[477],"centroid 49: ruby, ruby-on-rails, ruby-on-rails-5, javascript, activerecord",{"_key":1020,"_type":68,"marks":1021,"text":1022},"e4e868066a2f1",[],"\n-----\nruby-on-rails, postgresql, ruby, heroku, redis, ruby-on-rails-5, yii2, hash, activerecord, routes, shopify, ruby-on-rails-4, rspec, rubygems, devise, chef, ruby-on-rails-3, bundle, rails-activestorage, associations, rails-activerecord, puppet, ruby-on-rails-5.2, metaprogramming, rspec-rails, activeadmin, bundler, coffeescript, shopify-app, sidekiq, carrierwave, passenger, sinatra, simple-form, nokogiri, cloudinary, capistrano, puma, webpacker, mongoid, actioncable, erb, haml, rake, paperclip, factory-bot",[],{"_key":1025,"_type":64,"children":1026,"markDefs":1035,"style":126},"d429a2fc1ac7",[1027,1031],{"_key":1028,"_type":68,"marks":1029,"text":1030},"d429a2fc1ac70",[477],"centroid 41: sql, sql-server, mysql, database, postgresql",{"_key":1032,"_type":68,"marks":1033,"text":1034},"d429a2fc1ac71",[],"\n-----\nsql, mysql, sql-server, database, tsql, date, mysqli, join, select, group-by, mariadb, sequelize.js, pdo, phpmyadmin, sql-server-2008, data.table, count, sql-server-2012, xampp, database-design, duplicates, view, sum, timestamp, pivot, foreign-keys, sql-update, mysql-workbench, timezone, tableau, insert, ssms, odbc, constraints, sql-server-2016, etl, subquery, max, syntax-error, left-join, case, database-connection, decimal, inner-join, prepared-statement, full-text-search, database-migration, sql-order-by, query-optimization, sql-server-2008-r2, sql-server-2017, sql-insert, union, backup, aggregate-functions, where, partitioning, common-table-expression, distinct, query-performance, concat, oledb, innodb, replication, window-functions, sql-injection, mdx, primary-key, greatest-n-per-group, where-clause, database-performance, sql-delete, data-warehouse, rdbms, sql-like, database-administration, ddl, entity-relationship, bulkinsert, ssis-2012, calculated-columns, resultset, derby, database-schema, sql-server-2005, create-table, database-normalization, temp-tables",[],{"_key":1037,"_type":64,"children":1038,"markDefs":1047,"style":126},"372bd1252930",[1039,1043],{"_key":1040,"_type":68,"marks":1041,"text":1042},"372bd12529300",[477],"centroid 14: swift, ios, xcode, objective-c, android",{"_key":1044,"_type":68,"marks":1045,"text":1046},"372bd12529301",[],"\n-----\nios, swift, xcode, objective-c, uitableview, swift4, iphone, uicollectionview, facebook-graph-api, realm, bluetooth-lowenergy, twilio, core-data, cocoa, admob, cocoapods, alamofire, arkit, swift3, crash, uiview, tableview, localization, keyboard, autolayout, sprite-kit, frameworks, uiviewcontroller, augmented-reality, uikit, wkwebview, scenekit, accessibility, closures, in-app-purchase, instagram, xcode10, uinavigationcontroller, avfoundation, uibutton, apple-push-notifications, uiscrollview, uitextfield, delegates, crashlytics, app-store, uicollectionviewcell, ios11, protocols, macos-mojave, ios12, xcode9, storyboard, uinavigationbar, qr-code, uilabel, uiimageview, uitabbarcontroller, ipad, optional, decode, uiimage, cell, metal, segue, mapkit, deep-linking, swift4.2, parse-platform, codable, spotify, uitextview, avplayer, itunesconnect, facebook-login, gradient, touch, audiokit, cocoa-touch, textfield, assets, ios-simulator, uistackview, uisearchbar, uiwebview, grand-central-dispatch, firebase-dynamic-links, watchkit, voip, nslayoutconstraint, fastlane, uiimagepickercontroller, iphone-x, nsattributedstring, interface-builder, viewcontroller, uipickerview, nsuserdefaults, core-bluetooth, decodable, xctest, extension-methods, apple-watch, nsurlsession, core-location, code-signing, navigationbar, uialertcontroller, orientation, uigesturerecognizer, objectmapper, swift-playground, keychain, core-graphics, xib, uisearchcontroller, lldb, swift-protocols, avaudioplayer, tvos, cloudkit, shadow, appdelegate, contacts, statusbar, swift4.1, testflight, mkmapview, ios-autolayout, uibezierpath, gesture, uipageviewcontroller, health-kit, uitabbar, cllocationmanager, calayer, xcuitest, provisioning-profile, icloud, uicollectionviewlayout, geofire, uistoryboard, metalkit, pdfkit, plist, uiviewanimation, swifty-json, collectionview, uibarbuttonitem, ipa, xcode-ui-testing",[],{"_key":1049,"_type":64,"children":1050,"markDefs":1059,"style":126},"38dd782a0ad8",[1051,1055],{"_key":1052,"_type":68,"marks":1053,"text":1054},"38dd782a0ad80",[477],"centroid 32: symfony, php, symfony4, javascript, mysql",{"_key":1056,"_type":68,"marks":1057,"text":1058},"38dd782a0ad81",[],"\n-----\nforms, symfony, symfony4, composer-php, twig, doctrine, annotations, doctrine-orm, phpunit, symfony-3.4, translation, autowired, symfony-forms, sonata-admin, api-platform.com, fosuserbundle, swiftmailer, data-annotations, sonata",[],{"_key":1061,"_type":64,"children":1062,"markDefs":1071,"style":126},"c536ff63c365",[1063,1067],{"_key":1064,"_type":68,"marks":1065,"text":1066},"c536ff63c3650",[477],"centroid 27: testing, java, javascript, unit-testing, automated-tests",{"_key":1068,"_type":68,"marks":1069,"text":1070},"c536ff63c3651",[],"\n-----\nangularjs, unit-testing, testing, groovy, junit, jmeter, protractor, mockito, automated-tests, jasmine, mocking, cucumber, appium, pytest, testng, robotframework, integration-testing, cypress, performance-testing, android-espresso, code-coverage, e2e-testing, junit5, chai, python-unittest, junit4, sinon, karma-runner, ui-automation, load, appium-android, nightwatch.js, load-testing, tdd, katalon-studio, testcafe, jest, bdd, spock, powermockito, powermock, codeception, jmeter-plugins, rpa, qa, cucumberjs, jmeter-4.0, angular-test, robolectric",[],{"_key":1073,"_type":64,"children":1074,"markDefs":1079,"style":135},"76f3793f53ea",[1075],{"_key":1076,"_type":68,"marks":1077,"text":1078},"76f3793f53ea0",[],"Full code",[],{"_key":1081,"_type":64,"children":1082,"markDefs":1087,"style":126},"b7288c3e6c8b",[1083],{"_key":1084,"_type":68,"marks":1085,"text":1086},"b7288c3e6c8b0",[],"The code I used to create and display the previous results:",[],{"_key":1089,"_type":146,"code":1090,"markDefs":12},"e76e8833b0e1","clusters = 50\npercent = '01'\none_hot_dimensions = 50\n\nmodel = 'deleting.kmeans_tagsubtag_%s_big_a_%s_%s' % (clusters, percent,one_hot_dimensions)\nclusters_temp_table = 'deleting.clusters_%s_result_a_%s_%s' % (clusters, percent, one_hot_dimensions)\n\none_hot_p = client.query(\"\"\"\nSELECT STRING_AGG(\n  FORMAT(\"IFNULL(ANY_VALUE(IF(tag2='%%s',1,null)),0)X%%s\", tag2, REPLACE(REPLACE(REPLACE(REPLACE(tag2,'-','_'),'.','D'),'#','H'),'+','P')) \n) one_hot\nFROM (\n  SELECT tag2, SUM(questions) questions \n  FROM `deleting.stack_overflow_tag_co_ocurrence`\n  GROUP BY tag2\n  ORDER BY questions DESC\n  LIMIT %s\n)\"\"\" % one_hot_dimensions).to_dataframe().iloc[0]['one_hot']\n\nclient.query(\"\"\"\nCREATE OR REPLACE MODEL `%s` \nOPTIONS ( \n    model_type='kmeans',\n    distance_type='COSINE',\n    num_clusters=%s )\nAS\nWITH tag_and_subtags AS (\n    SELECT tag1, %s\n    FROM `deleting.stack_overflow_tag_co_ocurrence`\n    WHERE percent>0.%s\n    GROUP BY tag1\n)\nSELECT * EXCEPT(tag1)\nFROM tag_and_subtags\n\"\"\" % (model, clusters, one_hot_p, percent)).to_dataframe()\n\ndf = client.query(\"\"\"\nCREATE OR REPLACE TABLE %s\nAS\nWITH tag_and_subtags AS (\n    SELECT tag1, MAX(questions) questions, %s\n    FROM `deleting.stack_overflow_tag_co_ocurrence`\n    WHERE percent>0.%s\n    GROUP BY tag1\n)\n\nSELECT centroid_id\n , STRING_AGG(tag1, ', ' ORDER BY questions DESC) tags\n , ARRAY_TO_STRING(ARRAY_AGG(IF(tag1 LIKE '%%google%%', tag1, null)  IGNORE nulls LIMIT 18), ', ') google_tags\n , ARRAY_TO_STRING(ARRAY_AGG(IF(tag1 LIKE '%%amazon%%' OR tag1 LIKE '%%aws%%', tag1, null)  IGNORE nulls LIMIT 18), ', ') amazon_tags\n , ARRAY_TO_STRING(ARRAY_AGG(IF(tag1 LIKE '%%azure%%', tag1, null)  IGNORE nulls LIMIT 18), ', ') azure_tags\n , COUNT(*) c\nFROM ML.PREDICT(MODEL `%s` \n  , (SELECT * FROM tag_and_subtags )\n)\nGROUP BY 1\nORDER BY c DESC\n\"\"\" % (clusters_temp_table, one_hot_p, percent, model)).to_dataframe()\n\ndf = client.query(\"\"\"\nSELECT centroid_id, c, yep, tags\n    , IFNULL(google_tags, '') google_tags\n    , IFNULL(amazon_tags, '') amazon_tags\n    , IFNULL(azure_tags, '') azure_tags\nFROM `%s` \nJOIN (\n  SELECT centroid_id\n    , STRING_AGG(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(feature,'_','-'),'D','.'),'H','#'),'P','+'), 'X', ''), ', ' ORDER BY numerical_value DESC  LIMIT 5) yep\n  FROM ML.CENTROIDS(MODEL `%s`\n  )\n  GROUP BY 1\n) \nUSING(centroid_id)\nORDER BY yep\n\"\"\" % (clusters_temp_table, model)).to_dataframe()\n\nfor index, row in df.iterrows():\n    print('centroid %s: %s\\n-----' % (row['centroid_id'],  row['yep']))\n    print(row['tags'])\n    print()\n    if row['google_tags']:\n        print('google: %s' % row['google_tags'])\n    if row['amazon_tags']:\n        print('amazon: %s' % row['amazon_tags'])\n    if row['azure_tags']:\n        print('azure: %s' % row['azure_tags'])\n    print('\\n')",{"_key":1092,"_type":64,"children":1093,"markDefs":1106,"style":126},"28ac60e4a0cd",[1094,1098,1102],{"_key":1095,"_type":68,"marks":1096,"text":1097},"28ac60e4a0cd0",[],"Note that I joined my results with ",{"_key":1099,"_type":68,"marks":1100,"text":1101},"28ac60e4a0cd1",[146],"ML.CENTROIDS()",{"_key":1103,"_type":68,"marks":1104,"text":1105},"28ac60e4a0cd2",[]," — which gives me the top differentiating occurring tags for each centroid — even if they are not part of each cluster.",[],{"_key":1108,"_type":64,"children":1109,"markDefs":1114,"style":135},"dfcc23f55a52",[1110],{"_key":1111,"_type":68,"marks":1112,"text":1113},"dfcc23f55a520",[],"And that’s all it takes",[],{"_key":1116,"_type":64,"children":1117,"markDefs":1147,"style":126},"54aef292b14f",[1118,1122,1126,1130,1135,1139,1144],{"_key":1119,"_type":68,"marks":1120,"text":1121},"54aef292b14f0",[],"Are you surprised by the results? Or surprised by how easy was to run our k-means modeling with BigQuery? Or curious for why I chose ",{"_key":1123,"_type":68,"marks":1124,"text":1125},"54aef292b14f1",[146],"distance-type: 'COSINE'",{"_key":1127,"_type":68,"marks":1128,"text":1129},"54aef292b14f2",[]," for this problem? Now it’s your turn to play :). Check the ",{"_key":1131,"_type":68,"marks":1132,"text":1134},"54aef292b14f3",[1133],"cea47d0fd472","BigQuery docs for creating models",{"_key":1136,"_type":68,"marks":1137,"text":1138},"54aef292b14f4",[]," and the ",{"_key":1140,"_type":68,"marks":1141,"text":1143},"54aef292b14f5",[1142],"56ff6f42344b","k-means tutorial",{"_key":1145,"_type":68,"marks":1146,"text":115},"54aef292b14f6",[],[1148,1150],{"_key":1133,"_type":118,"href":1149,"reference":12},"https:\u002F\u002Fcloud.google.com\u002Fbigquery-ml\u002Fdocs\u002Freference\u002Fstandard-sql\u002Fbigqueryml-syntax-create?source=post_page---------------------------",{"_key":1142,"_type":118,"href":1151,"reference":12},"https:\u002F\u002Fcloud.google.com\u002Fbigquery-ml\u002Fdocs\u002Fkmeans-tutorial?source=post_page---------------------------",{"_key":1153,"_type":64,"children":1154,"markDefs":1159,"style":1160},"1e8fc54ea860",[1155],{"_key":1156,"_type":68,"marks":1157,"text":1158},"1e8fc54ea8600",[],"Lak’s thoughts",[],"h3",{"_key":1162,"_type":64,"children":1163,"markDefs":1190,"style":126},"85a0c9d5bd41",[1164,1168,1173,1177,1182,1186],{"_key":1165,"_type":68,"marks":1166,"text":1167},"85a0c9d5bd410",[],"How would you choose the best parameters? Check ",{"_key":1169,"_type":68,"marks":1170,"text":1172},"85a0c9d5bd411",[1171],"6057721c3f90","Lak Lakshmanan",{"_key":1174,"_type":68,"marks":1175,"text":1176},"85a0c9d5bd412",[]," post for ",{"_key":1178,"_type":68,"marks":1179,"text":1181},"85a0c9d5bd413",[1180],"b141f0c10c27","hyper-parameter tuning",{"_key":1183,"_type":68,"marks":1184,"text":1185},"85a0c9d5bd414",[],". Lak also had some interesting ideas about dimensionality reduction for clustering via matrix factorization — but we’ll leave that for a future post. As an untested preview: ",{"_key":1187,"_type":68,"marks":1188,"text":1189},"85a0c9d5bd415",[70],"Once you have the co-occurrence of tag1 and tag2, treat it as a recommendation problem, i.e. tag2 is what tag1 liked percent of the time. Then, you can do matrix factorization:",[1191,1193],{"_key":1171,"_type":118,"href":1192,"reference":12},"https:\u002F\u002Fmedium.com\u002Fu\u002F247b0630b5d6?source=post_page---------------------------",{"_key":1180,"_type":118,"href":1194,"reference":12},"https:\u002F\u002Ftowardsdatascience.com\u002Fhow-to-do-hyperparameter-tuning-of-a-bigquery-ml-model-29ba273a6563?source=post_page---------------------------",{"_key":1196,"_type":146,"code":1197,"markDefs":12},"f28575de94a5","CREATE OR REPLACE MODEL deleting.tag1_tag2\nOPTIONS ( \n    model_type='matrix_factorization',\n    user_col='tag1', item_col='tag2', rating_col='percent10' )\nAS\nSELECT tag1, tag2, percent*10 AS percent10\nFROM advdata.stack_overflow_tag_co_ocurrence",{"_key":1199,"_type":64,"children":1200,"markDefs":1205,"style":126},"a35021a65dac",[1201],{"_key":1202,"_type":68,"marks":1203,"text":1204},"a35021a65dac0",[70],"From this matrix factorization, you will have tag1_factors and tag2_factors which are essentially an embedding of the tags learned from the data. Concatenate these and cluster it instead …",[],{"_key":1207,"_type":146,"code":1208,"markDefs":12},"a4e7bc3d6979","SELECT feature, factor_weights\nFROM ML.WEIGHTS( MODEL deleting.tag1_tag2 )\nWHERE processed_input = 'tag1' and feature LIKE '%google%'",{"_key":1210,"_type":64,"children":1211,"markDefs":1216,"style":245},"cbe33e9a6e0d",[1212],{"_key":1213,"_type":68,"marks":1214,"text":1215},"cbe33e9a6e0d0",[],"Want more?",[],{"_key":1218,"_type":64,"children":1219,"markDefs":1259,"style":126},"29b55c04b5c9",[1220,1224,1229,1233,1238,1242,1247,1251,1256],{"_key":1221,"_type":68,"marks":1222,"text":1223},"29b55c04b5c90",[],"I'm Felipe Hoffa, a Developer Advocate for Google Cloud. Tweet me ",{"_key":1225,"_type":68,"marks":1226,"text":1228},"29b55c04b5c91",[1227],"89fd4ba17184","@felipehoffa",{"_key":1230,"_type":68,"marks":1231,"text":1232},"29b55c04b5c92",[],", my previous posts on ",{"_key":1234,"_type":68,"marks":1235,"text":1237},"29b55c04b5c93",[1236],"0e23a5c5b35e","medium.com\u002F@hoffa",{"_key":1239,"_type":68,"marks":1240,"text":1241},"29b55c04b5c94",[],", and all about BigQuery on ",{"_key":1243,"_type":68,"marks":1244,"text":1246},"29b55c04b5c95",[1245],"ffba8c4b8b09","reddit.com\u002Fr\u002Fbigquery",{"_key":1248,"_type":68,"marks":1249,"text":1250},"29b55c04b5c96",[]," - including ",{"_key":1252,"_type":68,"marks":1253,"text":1255},"29b55c04b5c97",[1254],"924d38ec1d6e","predicting when will Stack Overflow reply",{"_key":1257,"_type":68,"marks":1258,"text":115},"29b55c04b5c98",[],[1260,1261,1263,1265],{"_key":1227,"_type":118,"href":119,"reference":12},{"_key":1236,"_type":118,"href":1262,"reference":12},"https:\u002F\u002Fmedium.com\u002F@hoffa",{"_key":1245,"_type":118,"href":1264,"reference":12},"https:\u002F\u002Freddit.com\u002Fr\u002Fbigquery",{"_key":1254,"_type":118,"href":1266,"reference":12},"https:\u002F\u002Ftowardsdatascience.com\u002Fwhen-will-stack-overflow-reply-how-to-predict-with-bigquery-553c24b546a3",true,"2019\u002F07\u002F24","Felipe Hoffa, a Developer Advocate for Google Cloud, explains how he used BigQuery to organize Stack Overflow tags into interesting groups. ",{"_type":53,"asset":1271},{"_ref":1272,"_type":56},"image-536c544e4aeec4c1a7ba5be4fd9cdbae8654a55a-1000x631-png",{"code":1274,"language":1275},"\u003C!-- wp:heading {\"level\":4} -->\n\n\u003Ch4>\u003Cem>How would you group more than 4,000 active Stack Overflow tags into meaningful groups? This is a perfect task for unsupervised learning and k-means clustering — and now you can do all this inside BigQuery. Let’s find out how.\u003C\u002Fem>\u003C\u002Fh4>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:image {\"width\":750,\"height\":473} -->\n\u003Cfigure class=\"wp-block-image is-resized\">\u003Cimg src=\"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F1000\u002F1*pSI04ezVMO279Tcmsuh7_A.png\" alt=\"\" width=\"750\" height=\"473\"\u002F>\n\n\u003Cfigcaption>Visualizing a universe of clustered tags.\u003C\u002Ffigcaption>\n\n\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:paragraph -->\n\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ftwitter.com\u002Ffelipehoffa\" target=\"_blank\">\u003Cem>Felipe Hoffa\u003C\u002Fem>\u003C\u002Fa>\u003Cem>&nbsp;is a Developer Advocate for Google Cloud. In this post he works with&nbsp;\u003C\u002Fem>\u003Ca rel=\"noreferrer noopener\" href=\"http:\u002F\u002Fcloud.google.com\u002Fbigquery\" target=\"_blank\">\u003Cem>BigQuery\u003C\u002Fem>\u003C\u002Fa>\u003Cem>&nbsp;- Google's serverless data warehouse - to run k-means clustering over&nbsp;Stack&nbsp;Overflow's published dataset, which is refreshed and uploaded to Google's Cloud once a quarter. You can check out more about working with&nbsp;Stack&nbsp;Overflow&nbsp;data and BigQuery&nbsp;\u003C\u002Fem>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fstackoverflow.blog\u002F2016\u002F12\u002F15\u002Fyou-can-now-play-with-stack-overflow-data-on-googles-bigquery\u002F\" target=\"_blank\">\u003Cem>here\u003C\u002Fem>\u003C\u002Fa>\u003Cem>&nbsp;and&nbsp;\u003C\u002Fem>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ftowardsdatascience.com\u002Fbigquery-without-a-credit-card-discover-learn-and-share-199e08d4a064\" target=\"_blank\">\u003Cem>here\u003C\u002Fem>\u003C\u002Fa>\u003Cem>.\u003C\u002Fem>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2 id=\"0708\">4,000+ tags are a lot\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nThese are the most active Stack Overflow tags since 2018 — they’re a lot. In this picture I only have 240 tags — how would you group and categorize 4,000+ of them?\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\"># Tags with &gt;180 questions since 2018\nSELECT tag, COUNT(*) questions\nFROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`,\n  UNNEST(SPLIT(tags, '|')) tag\nWHERE creation_date &gt; '2018-01-01'\nGROUP BY 1\nHAVING questions&gt;180\nORDER BY 2 DESC\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:image {\"width\":1000,\"height\":681} -->\n\u003Cfigure class=\"wp-block-image is-resized\">\u003Cimg src=\"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F1000\u002F1*_p3SSvQnpVneA5kcFlHlEw.png\" alt=\"\" width=\"1000\" height=\"681\"\u002F>\n\n\u003Cfigcaption>Top Stack Overflow tags by number of questions.\u003C\u002Ffigcaption>\n\n\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2>Hint: Co-occurring tags\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nLet’s find tags that usually go together:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:image {\"id\":11683} -->\n\u003Cfigure class=\"wp-block-image\">\u003Cimg src=\"https:\u002F\u002Fstackoverflow.blog\u002Fwp-content\u002Fuploads\u002F2019\u002F07\u002Fimage.png\" alt=\"\" class=\"wp-image-11683\"\u002F>\n\n\u003Cfigcaption>Co-occurring tags on Stack Overflow questions\u003C\u002Ffigcaption>\n\n\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:paragraph -->\nThese groupings make sense:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:list -->\n\n\u003Cul>\u003Cli>‘javascript’ is related to ‘html’.\u003C\u002Fli>\u003Cli>‘python’ is related to ‘pandas’.\u003C\u002Fli>\u003Cli>‘c#’ is related to ‘.net’.\u003C\u002Fli>\u003Cli>‘typescript’ is related to ‘angular’.\u003C\u002Fli>\u003Cli>etc…\u003C\u002Fli>\u003C\u002Ful>\n\n\u003C!-- \u002Fwp:list -->\n\n\u003C!-- wp:paragraph -->\nSo I’ll take these relationships and I’ll save them on an auxiliary table — plus a percentage of how frequently a relationship happens for each tag.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">CREATE OR REPLACE TABLE `deleting.stack_overflow_tag_co_ocurrence`\nAS\nWITH data AS (\n  SELECT * \n  FROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`\n  WHERE creation_date &gt; '2018-01-01'\n), active_tags AS (\n  SELECT tag, COUNT(*) c\n  FROM data, UNNEST(SPLIT(tags, '|')) tag\n  GROUP BY 1\n  HAVING c&gt;180\n)\n\nSELECT *, questions\u002Fquestions_tag1 percent\nFROM (\n    SELECT *, MAX(questions) OVER(PARTITION BY tag1) questions_tag1\n    FROM (\n        SELECT tag1, tag2, COUNT(*) questions\n        FROM data, UNNEST(SPLIT(tags, '|')) tag1, UNNEST(SPLIT(tags, '|')) tag2\n        WHERE tag1 IN (SELECT tag FROM active_tags)\n        AND tag2 IN (SELECT tag FROM active_tags)\n        GROUP BY 1,2\n        HAVING questions&gt;30\n    )\n)\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:image -->\n\u003Cfigure class=\"wp-block-image\">\u003Cimg src=\"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F599\u002F1*gWKNh4zxGmgLLInwsly2Dg.png\" alt=\"\"\u002F>\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:heading {\"level\":1} -->\n\n\u003Ch1 id=\"15be\">One-hot encoding\u003C\u002Fh1>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nNow get ready for some SQL magic. BigQuery ML does a good job of hot-encoding strings, but it doesn’t handle arrays as I wish it did (stay tuned). So I’m going to create a string first that will define all the columns where I want to find co-occurrence. Then I can use that string to get a huge table, with a 1 for every time a tag co-occurs with the main one at least certain % of time. Let’s see first a subset of these results:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:image {\"id\":11684,\"width\":621,\"height\":648} -->\n\u003Cfigure class=\"wp-block-image is-resized\">\u003Cimg src=\"https:\u002F\u002Fstackoverflow.blog\u002Fwp-content\u002Fuploads\u002F2019\u002F07\u002Fimage-1.png\" alt=\"\" class=\"wp-image-11684\" width=\"621\" height=\"648\"\u002F>\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:paragraph -->\nWhat you see here is a co-occurrence matrix:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:list -->\n\n\u003Cul>\u003Cli>‘javascript’ shows a relation to ‘php’, ‘html’, ‘css’, ‘node.js’, and ‘jquery’.\u003C\u002Fli>\u003Cli>‘android’ shows a relation to ‘java’.\u003C\u002Fli>\u003Cli>‘machine-learning’ shows a relation to ‘python’, but not the other way around.\u003C\u002Fli>\u003Cli>‘multi-threading’ shows a relation to ‘python’, ‘java’, ‘c#’, and ‘android`\u003C\u002Fli>\u003Cli>‘unit-testing’ a relation to almost every column here, except to ‘php’, ‘html’, ‘css’, and ‘jquery’.\u003C\u002Fli>\u003C\u002Ful>\n\n\u003C!-- \u002Fwp:list -->\n\n\u003C!-- wp:paragraph -->\nYou can reduce or augment the sensibility of these relations with the percent threshold:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">SELECT tag1 \n,IFNULL(ANY_VALUE(IF(tag2='javascript',1,null)),0) Xjavascript\n,IFNULL(ANY_VALUE(IF(tag2='python',1,null)),0 ) Xpython\n,IFNULL(ANY_VALUE(IF(tag2='java',1,null)),0) Xjava\n,IFNULL(ANY_VALUE(IF(tag2='c#',1,null)),0) XcH\n,IFNULL(ANY_VALUE(IF(tag2='android',1,null)),0) Xandroid\n,IFNULL(ANY_VALUE(IF(tag2='php',1,null)),0) Xphp\n,IFNULL(ANY_VALUE(IF(tag2='html',1,null)),0) Xhtml\n,IFNULL(ANY_VALUE(IF(tag2='css',1,null)),0) Xcss\n,IFNULL(ANY_VALUE(IF(tag2='node.js',1,null)),0) XnodeDjs\n,IFNULL(ANY_VALUE(IF(tag2='jquery',1,null)),0) Xjquery\n,SUM(questions) questions_tag1\nFROM `deleting.stack_overflow_tag_co_ocurrence`\nWHERE percent&gt;0.03\nGROUP BY tag1\nORDER BY questions_tag1 DESC \nLIMIT 100\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2 id=\"a040\">K-means clustering time\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nNow — instead of using this small table, let’s use the whole table to compute k-means with BigQuery.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\nWith this line, I’m creating a one-hot encoding string that I can use later to define the 4,000+ columns I’ll use for k-means:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">one_hot_big = client.query(\"\"\"\u003Cbr>SELECT STRING_AGG(\u003Cbr>  FORMAT(\"IFNULL(ANY_VALUE(IF(tag2='%s',1,null)),0)X%s\", tag2, REPLACE(REPLACE(REPLACE(REPLACE(tag2,'-','_'),'.','D'),'#','H'),'+','P')) \u003Cbr>) one_hot\u003Cbr>FROM (\u003Cbr>  SELECT tag2, SUM(questions) questions \u003Cbr>  FROM `deleting.stack_overflow_tag_co_ocurrence`\u003Cbr>  GROUP BY tag2\u003Cbr>  # ORDER BY questions DESC\u003Cbr>  # LIMIT 10\u003Cbr>)\u003Cbr>\"\"\").to_dataframe().iloc[0]['one_hot']\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:paragraph -->\nAnd training a k-means model in BigQuery is really easy:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">CREATE MODEL `deleting.kmeans_tagsubtag_50_big_a_01`\nOPTIONS ( \n    model_type='kmeans',\n    distance_type='COSINE',\n    num_clusters=50 )\nAS\nWITH tag_and_subtags AS (\n    SELECT tag1, %s\n    FROM `deleting.stack_overflow_tag_co_ocurrence`\n    WHERE percent&gt;0.03\n    GROUP BY tag1\n)\nSELECT * EXCEPT(tag1) \nFROM tag_and_subtags\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:paragraph -->\nNow we wait — while BigQuery shows us the progress of our training:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:image -->\n\u003Cfigure class=\"wp-block-image\">\u003Cimg src=\"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F700\u002F1*PJw22Qw-QyXU6WBNKZsLNg.png\" alt=\"\"\u002F>\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:paragraph -->\nAnd when it’s done, we even get an evaluation of our model:\u003Cbr>\u003Cbr>\u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDavies%E2%80%93Bouldin_index?source=post_page---------------------------\">Davies–Bouldin index\u003C\u002Fa>: 1.8530\u003Cbr>\u003Ca href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Freference\u002Frest\u002Fv2\u002Fmodels?source=post_page---------------------------#clusteringmetrics\">Mean squared distance\u003C\u002Fa>: 0.8174\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2 id=\"a331\">Performance note\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nDo we really need 4,000 one-hot encoded dimensions to obtain better clusters? Turns out that 500 are enough — and I like the results better. It also reduces the time for training the model in BigQuery from 24 minutes to 3. The same with only 30 dimensions lowers the time to 90 seconds — but I like the results better with 500. More on hyper-parameter tuning below.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:image -->\n\u003Cfigure class=\"wp-block-image\">\u003Cimg src=\"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F700\u002F1*t-70lqtT8Oho-9x1k3QMiQ.png\" alt=\"\"\u002F>\n\n\u003Cfigcaption>500 one-hot encoded dimensions reduces time per iteration to 30 seconds, and a lower loss.\u003C\u002Ffigcaption>\n\n\u003C\u002Ffigure>\n\u003C!-- \u002Fwp:image -->\n\n\u003C!-- wp:paragraph -->\n\u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDavies%E2%80%93Bouldin_index?source=post_page---------------------------\">Davies–Bouldin index\u003C\u002Fa>: 1.6910\u003Cbr>\u003Ca href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Freference\u002Frest\u002Fv2\u002Fmodels?source=post_page---------------------------#clusteringmetrics\">Mean squared distance\u003C\u002Fa>: 0.52332\u003Cbr>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2 id=\"61f9\">Get ready for the results: The 50 clusters are...\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nNow it’s time to see our results. I’ll even look out for some tags I'm interested in: How are \u003Ccode>google\u003C\u002Fcode>,&nbsp;\u003Ccode>amazon\u003C\u002Fcode>, and&nbsp;\u003Ccode>azure\u003C\u002Fcode> represented in each cluster?\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\nThese are the 50 groups that k-means clustering found — given the 1-hot encoding of related tags we did earlier in this post. Some results make a lot of sense — while others give great insight into what are the prevalent surrounding technologies to any Stack Overflow tag.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\nNaming each centroid is always a challenge. Here I used the top 5 centroid weight vectors — see how below.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 45: amazon-web-services, aws-lambda, amazon-s3, amazon-ec2, python\u003C\u002Fstrong>\u003Cbr>-----\u003Cbr>amazon-web-services, amazon-s3, aws-lambda, amazon-ec2, amazon-dynamodb, terraform, aws-sdk, amazon-cloudformation, amazon-redshift, aws-api-gateway, amazon-cognito, boto3, cloud, alexa, amazon-rds, amazon-elastic-beanstalk, amazon-ecs, alexa-skills-kit, amazon-cloudfront, serverless, aws-cli, amazon-iam, amazon-cloudwatch, elastic-beanstalk, amazon-sqs, serverless-framework, amazon-athena, aws-amplify, aws-appsync, amazon-sns, alexa-skill, amazon-route53, amazon, amazon-kinesis, amazon-sagemaker, autoscaling, amazon-elb, amazon-ses, aws-cognito, aws-iot, terraform-provider-aws, api-gateway, amazon-vpc, aws-serverless, aws-codepipeline, aws-codebuild, amazon-rds-aurora, bitnami, amazon-lex, aws-step-functions, aws-code-deploy, aws-iam, aws-fargate, dynamodb-queries, boto\u003Cbr>\u003Cbr>amazon: amazon-cognito, amazon-ses, amazon-redshift, aws-lambda, amazon-ecs, amazon-s3, amazon-web-services, amazon-athena, aws-api-gateway, amazon-rds, amazon, amazon-cloudfront, amazon-lex, aws-iot, amazon-elb, aws-code-deploy, amazon-cloudwatch, aws-cli\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 17: android, java, android-layout, android-recyclerview, kotlin\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>android, json, xml, kotlin, android-studio, android-recyclerview, android-layout, android-fragments, xslt, serialization, android-intent, retrofit2, android-activity, android-room, nullpointerexception, retrofit, gson, android-volley, textview, android-viewpager, xml-parsing, recycler-adapter, android-edittext, android-sqlite, protocol-buffers, xsd, deserialization, android-constraintlayout, android-asynctask, fragment, android-architecture-components, android-livedata, imageview, scrollview, android-databinding, android-glide, android-animation, xquery, xslt-1.0, android-jetpack, android-manifest, navigation-drawer, adapter, bottomnavigationview, xslt-2.0, android-toolbar, onclicklistener, android-tablayout, android-cardview, android-spinner, android-adapter, picasso, android-linearlayout, transformation, android-drawable, android-architecture-navigation, android-imageview, android-custom-view, json-deserialization, android-view, android-actionbar, searchview, biztalk, android-coordinatorlayout, android-lifecycle, android-softkeyboard, floating-action-button, recyclerview-layout, swipe, android-relativelayout, android-xml, android-collapsingtoolbarlayout, android-button, android-scrollview, saxon, android-nestedscrollview, android-styles, xml-namespaces, xsl-fo, android-fragmentactivity, android-dialogfragment, android-viewholder, xml-serialization\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 7: android, java, javascript, ios, python\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>android-gradle, bluetooth, rx-java2, build.gradle, dependencies, rx-java, google-play, sdk, android-ndk, corda, video-streaming, android-emulator, libgdx, android-webview, apk, location, java-native-interface, google-play-services, dagger-2, adb, codenameone, android-8.0-oreo, google-places-api, android-notifications, android-studio-3.0, broadcastreceiver, speech-recognition, arcore, sharedpreferences, streaming, gps, android-service, version, coordinates, androidx, native, sms, here-api, android-camera, android-permissions, uri, android-mediaplayer, locale, vert.x, exoplayer, google-maps-markers, settings, alarmmanager, spinner, proguard, okhttp3, text-to-speech, okhttp, updates, android-camera2, android-source, whatsapp, nfc, share, inputstream, google-fabric, xmpp, calculator, manifest, wifi, mpandroidchart, android-9.0-pie, rx-android, call, android-workmanager, mp4, hls, video-processing, release, barcode, android-support-library, alertdialog, android-viewmodel, dji-sdk, barcode-scanner, filepath, sip, google-cloud-messaging, gradle-plugin, android-arrayadapter, screen, payment, toolbar, google-play-console, dagger, mp3, indexoutofboundsexception, ejabberd, httpurlconnection, libraries, android-proguard, coroutine, h.264, simpledateformat, jacoco, background-process, rtsp, offline, root, sensor, splash-screen, android-bluetooth, android-testing, android-resources, android-tv, emulation, android-bitmap, android-listview, multipart, chromecast, android-broadcastreceiver, video-capture, google-maps-android-api-2, pojo, android-canvas, visibility, broadcast, google-play-games, dao, kotlin-android-extensions, avd, lint, android-jobscheduler, android-library, kotlinx.coroutines, firebase-mlkit, expandablelistview, obfuscation, android-contentprovider, appcelerator, mvp, live-streaming, in-app-billing, android-context, audio-streaming, arabic, android-alertdialog, kotlin-coroutines, zxing, android-videoview, fingerprint, braintree, audio-recording, deprecated, job-scheduling, android-wifi, wear-os, bottom-sheet, android-things, device, marker, right-to-left, google-login, mobile-application, media-player, countdowntimer, opengl-es-2.0, nullable, face-detection, exoplayer2.x, android-8.1-oreo, beacon, drawable, gradlew, mapbox-android, classnotfoundexception, parcelable, android-keystore, voice-recognition, toast, aar, google-places, android-theme, android-progressbar, paging, accelerometer, playback, gradle-kotlin-dsl, samsung-mobile, photo, ibeacon, android-appcompat, noclassdeffounderror, branch.io, rtmp, sceneform, foreground-service, google-cast, appcelerator-titanium, android-widget, logcat, android-pendingintent, android-fileprovider, android-gps, sha1, jodatime, android-sensors, android-appbarlayout, surfaceview, mpeg-dash, android-mvvm\u003Cbr>\u003Cbr>google: google-maps-android-api-2, google-play-services, google-fabric, google-places, google-places-api, google-play-console, google-cast, google-login, google-maps-markers, google-play-games, google-play, google-cloud-messaging\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 28: angular, typescript, javascript, angular6, angular5\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>angular, typescript, angular6, angular5, rxjs, angular-material, angular7, service, observable, routing, angular-cli, components, angular-reactive-forms, karma-jasmine, primeng, ag-grid, angularfire2, angular-material2, ngrx, reactive-programming, httpclient, angular-ui-router, angular-routing, lazy-loading, rxjs6, ngfor, angular-forms, angular-httpclient, angular2-routing, angular-components, angular-router, rx-swift, ng-bootstrap, angular2-forms, angular-universal, angular2-template, angular-services, angular-directive, material, angular4-forms, ngx-bootstrap, typescript2.0, angular2-services, ngrx-store, subscription, rxjs5, angular2-directives, ngrx-effects, angular-material-6, angular-cli-v6, angular-http-interceptors, redux-observable, subscribe, angular-pipe, angular-promise, angular2-observables, reactivex, angular-ngmodel, angular-cdk, tsconfig\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 20: apache-spark, java, scala, hadoop, python\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>apache-spark, scala, pyspark, apache-kafka, hadoop, apache-spark-sql, hive, cassandra, apache-flink, jupyter, hdfs, bigdata, playframework, spark-streaming, sbt, apache-nifi, hiveql, apache-kafka-streams, akka, hbase, pyspark-sql, mapreduce, kafka-consumer-api, rdd, spark-dataframe, amazon-emr, yarn, user-defined-functions, parquet, cassandra-3.0, cluster-computing, avro, databricks, apache-kafka-connect, aws-glue, spark-structured-streaming, flink-streaming, kerberos, apache-zookeeper, sqoop, confluent, presto, kafka-producer-api, impala, akka-stream, hadoop2, apache-spark-mllib, traits, apache-zeppelin, cloudera, datastax, apache-storm, distributed-computing, akka-http, data-modeling, apache-spark-dataset, guice, google-cloud-dataproc, gatling, jmx, hortonworks-data-platform, apache-pig, apache-spark-ml, oozie, azure-databricks, scalatest, cql, playframework-2.6, datastax-enterprise, phoenix, confluent-schema-registry, mesos, implicit, implicit-conversion, ksql, scala-collections, spark-submit, hdinsight, ambari\u003Cbr>\u003Cbr>google: google-cloud-dataproc\u003Cbr>amazon: amazon-emr, aws-glue\u003Cbr>azure: azure-databricks\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 12: bash, python, linux, shell, java\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>macos, ubuntu, ansible, ssh, raspberry-pi, terminal, vim, raspberry-pi3, subprocess, environment-variables, centos, console, command-line-interface, pipe, arguments, jq, homebrew, iot, applescript, printf, escaping, sftp, windows-subsystem-for-linux, raspbian, exec, redhat, stdout, zsh, alias, wget, eval, paramiko, filenames, glob, command-line-arguments, stdin, remote-access, sudo, file-permissions, slurm, putty, gpio, tar, tmux, rsync, expect, ksh, jsch, scp, ssh-tunnel, cat, portforwarding, openssh\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 8: c#, .net, asp.net-core, .net-core, java\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>logging, exception, error-handling, azure-functions, reflection, configuration, azure-cosmosdb, f#, logstash, exception-handling, azure-web-sites, elastic-stack, azure-service-fabric, console-application, try-catch, wix, azure-application-insights, nunit, core, autofac, xunit, dapper, nest, nhibernate, dotnet-httpclient, nlog, httpwebrequest, serilog, log4net, inversion-of-control, identity, unity-container, webclient, blazor, .net-standard-2.0, system.reactive, clr, type-inference, asp.net-core-signalr, asp.net-core-identity, app-config, masstransit, fluentd, google-cloud-stackdriver, winston, .net-framework-version, ninject, .net-core-2.0, claims-based-identity, syslog, kestrel-http-server\u003Cbr>\u003Cbr>google: google-cloud-stackdriver\u003Cbr>azure: azure-cosmosdb, azure-web-sites, azure-functions, azure-application-insights, azure-service-fabric\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 18: c#, asp.net, asp.net-mvc, asp.net-core, entity-framework\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>c#, asp.net, .net, asp.net-mvc, asp.net-core, .net-core, entity-framework, linq, asp.net-web-api, model-view-controller, iis, entity-framework-core, dependency-injection, razor, asp.net-core-2.0, asp.net-core-mvc, wcf, entity-framework-6, json.net, kendo-ui, asp.net-core-webapi, webforms, asp.net-mvc-5, identityserver4, asp.net-identity, asp.net-web-api2, asp.net-core-2.1, asp.net-mvc-4, signalr, odata, kendo-grid, automapper, c#-4.0, web-config, razor-pages, windows-services, moq, ado.net, aspnetboilerplate, ef-code-first, ef-core-2.0, asp.net-core-2.2, linq-to-sql, asp-classic, umbraco, ef-core-2.1, asp.net-ajax, ef-migrations, iis-8, connection-string, windows-authentication, linq-to-entities, repository-pattern, swashbuckle, npgsql, iis-7, dbcontext, hangfire, iis-10, iis-express, model-binding, ef-core-2.2, windows-server-2012, signalr-hub, iis-7.5, linq-to-xml\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 10: c#, azure, python, java, javascript\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>azure, botframework, azure-sql-database, bots, azure-storage, chatbot, timeout, azure-storage-blobs, report, ssrs-2012, azure-data-factory, telegram-bot, azure-web-app-service, expression, azure-logic-apps, ibm-watson, refactoring, domain-driven-design, azureservicebus, gzip, azure-resource-manager, azure-iot-hub, twilio-api, azure-data-factory-2, azure-data-lake, vpn, azure-virtual-machine, microsoft-teams, luis, string-formatting, game-physics, google-assistant-sdk, ssrs-2008, game-development, ads, mesh, windows-7, virtual-reality, vuforia, microsoft-cognitive, azure-webjobs, azure-keyvault, azure-api-management, credentials, directx, facebook-messenger, collision-detection, arm-template, sprite, rdlc, game-engine, azure-search, azure-eventhub, physics, azure-blob-storage, desktop-application, factory, software-design, hololens, u-sql, installer, collision, azure-cli, reporting, google-home, azure-table-storage, azure-cognitive-services, unityscript, startup, azure-bot-service, mysql-connector, ienumerable, qnamaker, instantiation, builder, ssrs-tablix, azure-cosmosdb-sqlapi, azure-stream-analytics, quaternions, reportviewer, skype, azure-machine-learning-studio, azure-servicebus-queues, skype-for-business, ssrs-2008-r2, azure-virtual-network, win-universal-app, azure-log-analytics, unity5, csom, dialogflow-fulfillment\u003Cbr>\u003Cbr>google: google-assistant-sdk, google-home\u003Cbr>azure: azure-webjobs, azure-log-analytics, azure-virtual-machine, azure-sql-database, azure-api-management, azure-iot-hub, azure-web-app-service, azure-data-factory-2, azure-table-storage, azure-servicebus-queues, azure-bot-service, azure-virtual-network, azure-data-factory, azure-cognitive-services, azure-blob-storage, azure-storage-blobs, azure-logic-apps, azure-resource-manager\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 44: c#, javascript, java, oauth-2.0, php\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>api, authentication, security, facebook, oauth-2.0, spring-security, cookies, jwt, azure-active-directory, cors, postman, microsoft-graph, login, oauth, microservices, active-directory, ldap, jhipster, authorization, passport.js, keycloak, token, azure-ad-b2c, single-sign-on, passwords, sharepoint-online, telegram, spring-security-oauth2, single-page-application, linkedin, google-signin, openid-connect, session-cookies, owin, csrf, auth0, google-oauth2, saml, access-token, linkedin-api, laravel-passport, saml-2.0, google-authentication, xss, azure-powershell, adal, basic-authentication, azure-ad-graph-api, session-variables, msal, oidc, openid, express-session, bearer-token, logout, refresh-token\u003Cbr>\u003Cbr>google: google-authentication, google-signin, google-oauth2\u003Cbr>azure: azure-ad-graph-api, azure-active-directory, azure-powershell, azure-ad-b2c\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 19: c#, visual-studio, visual-studio-2017, .net, xamarin.forms\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>visual-studio, xamarin, xamarin.forms, visual-studio-2017, xaml, uwp, azure-devops, xamarin.android, build, reporting-services, tfs, ssis, xamarin.ios, nuget, visual-studio-2015, msbuild, crystal-reports, windows-installer, nuget-package, mono, cross-platform, azure-pipelines-release-pipeline, .net-standard, mvvmcross, visual-studio-2019, visual-studio-2010, c++-cli, visual-studio-2013, sql-server-data-tools, roslyn, resharper, publish, mstest, .net-assembly, visual-studio-2012, azure-devops-rest-api, tfs2017, azure-pipelines-build-task, visual-studio-mac, tfs2018, tfsbuild, visual-studio-extensions, visual-studio-debugging, visual-studio-app-center, csproj, tfs2015, vsix, azure-mobile-services, picker, tfvc, xamarin.uwp\u003Cbr>\u003Cbr>azure: azure-devops, azure-devops-rest-api, azure-pipelines-release-pipeline, azure-mobile-services, azure-pipelines-build-task\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 36: c#, wpf, winforms, javascript, vb.net\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>wpf, vb.net, winforms, user-interface, listview, charts, events, mvvm, datatable, checkbox, data-binding, datagridview, timer, sapui5, gridview, combobox, binding, drag-and-drop, menu, datagrid, knockout.js, popup, window, textbox, styles, treeview, listbox, telerik, uwp-xaml, devexpress, resources, vb6, user-controls, prism, viewmodel, controls, datetimepicker, webbrowser-control, cefsharp, panel, contextmenu, windows-10-universal, wpfdatagrid, windows-forms-designer, custom-controls, wpf-controls, richtextbox, clickonce, observablecollection, picturebox, mvvm-light, gdi+, menuitem, backgroundworker\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 2: c++, c, python, linux, java\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>c++, c, c++11, templates, assembly, cmake, gcc, memory, opengl, arduino, makefile, visual-c++, boost, c++17, lua, compiler-errors, x86, linux-kernel, memory-management, compilation, memory-leaks, operating-system, io, c++14, fortran, arm, serial-port, cuda, char, language-lawyer, segmentation-fault, clang, linker, stack, gdb, garbage-collection, macros, stl, g++, kernel, embedded, byte, malloc, shared-libraries, out-of-memory, nodes, processing, usb, x86-64, stm32, double, cython, buffer, pthreads, mips, signals, operator-overloading, runtime, gtk, llvm, driver, include, opengl-es, cygwin, operators, bit-manipulation, structure, overloading, nasm, precision, gnu-make, ros, gstreamer, mingw, const, variadic-templates, eigen, heap, gtk3, embedded-linux, esp8266, linux-device-driver, compiler-construction, warnings, cpu, cross-compiling, clion, qt-creator, profiling, ctypes, std, codeblocks, intel, return-value, system, newline, sdl-2, microcontroller, system-calls, pass-by-reference, valgrind, boost-asio, reverse-engineering, dynamic-memory-allocation, move, linker-errors, googletest, c-preprocessor, heap-memory, static-libraries, function-pointers, sdl, template-meta-programming, benchmarking, arduino-uno, libcurl, interrupt, vtk, x86-16, compiler-optimization, constants, stdvector, 64-bit, binaryfiles, bit, swig, quicksort, shared-memory, eclipse-cdt, constexpr, primes, bitwise-operators, x11, shared-ptr, clang++, glfw, binary-search, header-files, singly-linked-list, arduino-esp8266, ld, i2c, main, multiple-inheritance, gnu, smart-pointers, ram, simd, declaration, esp32, preprocessor, elf, undefined-behavior, bison, qtquick2, sfinae, variadic-functions, mingw-w64, unique-ptr, avr, masm, free, typedef, doubly-linked-list, generic-programming, compiler-warnings, glibc, kernel-module, move-semantics, auto, bootloader, c-strings, inline-assembly, ncurses, mmap, stdmap, glm-math, qmake, bit-shift, endianness, cpu-registers, template-specialization, pid, operator-precedence, memory-address\u003Cbr>\u003Cbr>google: googletest\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 24: css, html, javascript, bootstrap-4, angular\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>html, css, jquery, html5, css3, bootstrap-4, twitter-bootstrap, flexbox, sass, datatables, highcharts, html-table, twitter-bootstrap-3, layout, frontend, datepicker, drop-down-menu, css-grid, bootstrap-modal, momentjs, responsive-design, modal-dialog, dropdown, grid, responsive, tabs, font-awesome, navbar, carousel, media-queries, themes, tooltip, alignment, overflow, less, css-position, react-bootstrap, border, accordion, dt, css-transforms, angular-ui-bootstrap, nav, z-index, grid-layout, utc, reactstrap, vertical-alignment, pseudo-element, linear-gradients, mixins, collapse, popover, angular-datatables, angular-flex-layout, centering\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 31: delphi, c++, c#, winapi, windows\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>delphi, winapi, dll, mfc, com, firemonkey, firebird, c++builder, delphi-10.2-tokyo, pinvoke, pascal, indy\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 25: django, python, django-models, django-rest-framework, python-3.x\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>django, django-models, django-rest-framework, django-views, django-forms, django-templates, django-admin, django-queryset, django-orm, django-urls, django-2.0, django-serializer, django-allauth, django-filter, django-class-based-views, django-migrations, serializer\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 34: docker, kubernetes, python, google-cloud-platform, java\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>docker, go, kubernetes, elasticsearch, google-cloud-platform, docker-compose, google-app-engine, dockerfile, deployment, rabbitmq, google-cloud-storage, yaml, airflow, google-kubernetes-engine, containers, kibana, google-compute-engine, google-cloud-dataflow, drupal, virtual-machine, apache-beam, openshift, prometheus, ibm-cloud, grpc, docker-swarm, kubernetes-helm, grafana, gcloud, traefik, google-cloud-datastore, kubectl, load-balancing, google-cloud-sql, kubernetes-ingress, monitoring, google-cloud-pubsub, istio, minikube, nginx-reverse-proxy, speech-to-text, alpine, docker-machine, filebeat, google-translate, google-speech-api, iptables, stackdriver, docker-volume, docker-container, azure-aks, nginx-ingress, daemon, google-cloud-vision, google-vision, azure-kubernetes, google-cloud-composer, openshift-origin, kubeadm, dataflow, amazon-eks, service-accounts, rancher, docker-registry, docker-image, nfs, google-cloud-speech, kops, jupyterhub, rbac, google-cloud-endpoints, standard-sql, google-cloud-build, docker-networking\u003Cbr>\u003Cbr>google: google-cloud-build, google-cloud-datastore, google-speech-api, google-cloud-dataflow, google-cloud-storage, google-cloud-platform, google-kubernetes-engine, google-cloud-sql, google-cloud-speech, google-compute-engine, google-cloud-composer, google-cloud-endpoints, google-cloud-vision, google-vision, google-cloud-pubsub, google-translate, google-app-engine\u003Cbr>amazon: amazon-eks\u003Cbr>azure: azure-aks, azure-kubernetes\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 21: excel, vba, excel-vba, c#, python\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>excel, vba, excel-vba, google-sheets, ms-access, excel-formula, powerbi, outlook, sharepoint, ms-word, access-vba, office365, apache-poi, sap, dax, formatting, pivot-table, office-js, runtime-error, match, powerpoint, outlook-vba, formula, access, row, vsto, ssas, multiple-columns, powerquery, spreadsheet, vlookup, average, extract, userform, unique, ms-office, excel-2010, word-vba, ms-access-2010, excel-2016, rows, ms-access-2016, onedrive, openxml, powerbi-desktop, copy-paste, transpose, conditional-formatting, office-addins, office-interop, epplus, xlsxwriter, interop, phpspreadsheet, paste, shapes, offset, powerpivot, win32com, powerbi-embedded, export-to-excel, python-docx, countif, array-formulas, autofill, powerpoint-vba, activex, ms-access-2013, solver, m, business-intelligence, xls, ado, ssas-tabular, adodb, xlrd, delete-row, sumifs, openxml-sdk, excel-interop, add-in, excel-2013, worksheet, excel-addins\u003Cbr>\u003Cbr>google: google-sheets\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 4: git, github, jenkins, python, docker\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>git, jenkins, github, jenkins-pipeline, gitlab, continuous-integration, sonarqube, bitbucket, jenkins-plugins, gitlab-ci, devops, azure-pipelines, svn, version-control, phpstorm, webhooks, repository, travis-ci, jekyll, artifactory, atom-editor, jira, pipeline, github-pages, teamcity, slack, push, gitlab-ci-runner, git-bash, github-api, continuous-deployment, branch, nexus, circleci, workflow, git-merge, diff, jenkins-groovy, clone, git-submodules, gitignore, atlassian-sourcetree, pull-request, bitbucket-pipelines, patch, commit, git-branch, versioning, mercurial, gnupg, git-commit, gerrit, rebase, open-source, githooks, allure, ssh-keys, git-push\u003Cbr>\u003Cbr>azure: azure-pipelines\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 33: java, hibernate, spring, spring-boot, jpa\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>hibernate, jpa, spring-data-jpa, spring-data, solr, orm, transactions, spring-batch, wildfly, mapping, many-to-many, lucene, h2, entity, liquibase, jpql, ejb, hql, multi-tenant, persistence, spring-data-rest, hibernate-mapping, eclipselink, querydsl, one-to-many, spring-transactions, hikaricp, criteria, hibernate-criteria, gorm, ehcache, jpa-2.0, criteria-api, entitymanager, transactional\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 39: java, python, c#, node.js, android\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>http, ssl, sockets, curl, server, networking, websocket, encryption, https, socket.io, proxy, openssl, tcp, ssl-certificate, cryptography, http-headers, certificate, localhost, udp, mqtt, connection, client, ip, reverse-proxy, network-programming, aes, rsa, port, tls1.2, chat, client-server, lets-encrypt, cloudflare, haproxy, real-time, virtualhost, wireshark, keystore, ipc, x509certificate, zeromq, bouncycastle, django-channels, tcpclient, http-proxy, serversocket, telnet, cryptojs, public-key-encryption, private-key, tcp-ip, x509, client-certificates, certbot, tor, multicast\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 30: java, rest, spring, spring-boot, javascript\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>java, spring-boot, spring, rest, maven, eclipse, spring-mvc, tomcat, jsp, jdbc, web-services, soap, servlets, swagger, jackson, java-ee, thymeleaf, netbeans, web-applications, apache-camel, architecture, salesforce, spring-webflux, jersey, httprequest, jax-rs, wsdl, http-post, multipartform-data, tomcat8, soapui, response, resttemplate, cxf, httpresponse, rest-assured, api-design, struts2, soap-client, jstl, restsharp, spring-rest, spring-test, spring-restcontroller, jax-ws, put, endpoint, http-status-codes, struts, spring-web\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 22: java, spring-boot, spring, maven, eclipse\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>gradle, intellij-idea, neo4j, jsf, jar, grails, jboss, spring-cloud, spring-integration, jaxb, internationalization, log4j, eclipse-plugin, swagger-ui, jms, websphere, ant, activemq, vaadin, spring-kafka, pom.xml, log4j2, project-reactor, weblogic, java-11, netty, jetty, maven-3, javamail, crud, java-9, spring-cloud-stream, couchbase, ibm-mq, weblogic12c, datasource, glassfish, hazelcast, logback, osgi, hybris, openapi, project, maven-plugin, netflix-eureka, mybatis, cloudfoundry, reactive, eclipse-rcp, swagger-2.0, slf4j, netflix-zuul, quartz-scheduler, jetbrains-ide, spring-boot-actuator, lombok, spring-jdbc, sonarqube-scan, war, cdi, javabeans, tomcat7, interceptor, swt, java-10, freemarker, spring-boot-test, aop, jdbctemplate, dependency-management, spring-cloud-config, aspectj, spring-aop, flyway, amqp, classpath, spring-jms, jackson-databind, spring-cloud-dataflow, spring-websocket, spring-amqp, pivotal-cloud-foundry, spring-cloud-netflix, cucumber-jvm, executable-jar, spring-integration-dsl, swagger-codegen, tomcat9, spring-data-redis, javadoc, jndi, consul, intellij-plugin, dto, maven-surefire-plugin, hystrix, stomp, bean-validation, gateway, mapstruct, birt, spring-tool-suite, properties-file, jackson2, camunda, springfox, spring-data-neo4j, spring-rabbitmq, spring-session, pydev, xtext, servlet-filters, payara, code-formatting, spring-cloud-gateway\u003Cbr>\u003Cbr>google: google-maps\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 15: javascript, angular, android, typescript, visual-studio-code\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>ionic-framework, npm, visual-studio-code, ionic3, google-maps, cordova, debugging, electron, nativescript, ionic4, ionic2, meteor, autocomplete, geolocation, cordova-plugins, markdown, vscode-settings, phonegap, ide, webstorm, vscode-extensions, decorator, editor, ionic-native, onesignal, keyboard-shortcuts, angular2-nativescript, xdebug, hybrid-mobile-app, intellisense, nativescript-angular, tslint, remote-debugging, html-framework-7, breakpoints, syntax-highlighting, vscode-debugger, pylint, ibm-mobilefirst, jsdoc, nativescript-vue, prettier, windbg, phonegap-plugins, code-snippets, inappbrowser, phonegap-build\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 42: javascript, html, c#, android, python\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>unity3d, image, tkinter, svg, animation, canvas, three.js, chart.js, scroll, 3d, html5-canvas, camera, geometry, css-animations, bitmap, rotation, aframe, icons, glsl, shader, fabricjs, rendering, webgl, css-transitions, transform, png, scrollbar, transition, textures, blender, html2canvas, drawing, mask, linechart, draw, jquery-animate, angular-animations, konvajs, raycasting, webvr\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 43: javascript, html, jquery, css, reactjs\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>d3.js, leaflet, google-maps-api-3, magento, magento2, ethereum, jquery-ui, cakephp, jinja2, primefaces, extjs, ember.js, fullcalendar, maps, ckeditor, mapbox, solidity, materialize, jquery-select2, dialog, angularjs-directive, recaptcha, openlayers, coldfusion, polymer, gis, react-apollo, styled-components, tinymce, progress-bar, geojson, javascript-events, position, apollo-client, undefined, addeventlistener, sharepoint-2013, semantic-ui, amcharts, web-deployment, joomla, settimeout, render, p5.js, openstreetmap, element, instagram-api, parent-child, liquid, mapbox-gl-js, focus, angularjs-ng-repeat, setinterval, react-admin, alert, polygon, dom-events, web-component, textarea, react-select, href, web3, contact-form-7, zoom, facebook-javascript-sdk, refresh, graphql-js, overlay, height, slick, content-security-policy, jqgrid, html5-audio, delay, anchor, blogger, html-select, child-process, jquery-plugins, width, html-lists, kendo-asp.net-mvc, loading, zurb-foundation, id, bind, whitespace, dropzone.js, onchange, semantic-ui-react, owl-carousel, media, video.js, hide, netlify, background-color, sticky, geocoding, native-base, webpage, inline, tampermonkey, slick.js, form-data, padding, ternary-operator, event-listener, facebook-messenger-bot, underscore.js, formik, jquery-validate, quill, dc.js, highlight, react-table, electron-builder, bulma, jquery-selectors, fullscreen, multi-select, innerhtml, slideshow, parallax, draggable, footer, styling, react-component, jquery-mobile, selector, swiper, infinite-scroll, contenteditable, sidebar, jquery-ui-datepicker, mobx-react, form-submit, shadow-dom, backbone.js, each, margin, html-form, mathjax, jquery-ui-autocomplete, viewport, c3.js, adsense, sweetalert2, web-development-server, keypress, jquery-ui-sortable, facebook-php-sdk, sweetalert, center, font-awesome-5, react-proptypes, placeholder, summernote, font-face, react-context, web-frontend, ref, css-float, parent, wysiwyg, getelementbyid, font-size, higher-order-functions, lifecycle, dropzone, partial-views, asyncstorage, wai-aria, spfx, custom-element, jstree, bootstrap-datepicker, line-breaks, react-dom, fancybox, css-tables, stylesheet, react-google-maps, react-leaflet, timepicker, option, facebook-marketing-api, gsap, crossfilter, draftjs, directive, fixed, show-hide\u003Cbr>\u003Cbr>google: react-google-maps, google-maps-api-3\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 1: javascript, python, html, java, android\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>wordpress, woocommerce, javafx, swing, google-bigquery, button, google-api, video, google-analytics, plugins, kivy, youtube, onclick, calendar, dynamics-crm, youtube-api, widget, background, slider, radio-button, event-handling, save, amp-html, compression, google-tag-manager, javafx-8, click, hover, fxml, analytics, display, firebase-analytics, mouseevent, resize, background-image, size, listener, google-analytics-api, cross-domain, toggle, jpeg, google-data-studio, google-adwords, rgb, submit, gif, pixel, crop, gallery, tiff, thumbnails, image-resizing, exif, user-experience, src, pillow\u003Cbr>\u003Cbr>google: google-adwords, google-bigquery, google-api, google-tag-manager, google-data-studio, google-analytics-api, google-analytics\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 26: javascript, reactjs, node.js, typescript, react-native\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>javascript, node.js, reactjs, firebase, react-native, flutter, firebase-realtime-database, webpack, dart, redux, google-cloud-firestore, ecmascript-6, react-redux, firebase-authentication, google-cloud-functions, jestjs, promise, async-await, react-router, firebase-cloud-messaging, import, push-notification, dialogflow, material-ui, module, react-navigation, react-native-android, expo, fetch, gulp, mocha, firebase-storage, actions-on-google, create-react-app, enzyme, material-design, jsx, flutter-layout, lodash, babel, navigation, es6-promise, node-modules, apollo, state, npm-install, babeljs, eslint, gatsby, react-native-ios, javascript-objects, react-router-v4, next.js, yarnpkg, webpack-4, react-hooks, redux-form, prestashop, firebase-security-rules, flowtype, react-router-dom, typescript-typings, webpack-dev-server, antd, redux-saga, redux-thunk, router, package.json, react-native-flatlist, firebase-admin, react-props, react-native-navigation, mobx, firebaseui, es6-modules, firebase-hosting, aurelia, pm2, immutability, serverside-rendering, action, setstate, gruntjs, requirejs, ecmascript-5, flutter-dependencies, ssr, react-native-firebase, angular-dart, es6-class, require, laravel-mix, arrow-functions, react-native-maps, npm-scripts, flutter-animation, workbox, firebase-cli, destructuring, babel-loader, immutable.js, minify, browserify, node-sass, nodemon, firebase-security, angularfire, reducers, loader, bower\u003Cbr>\u003Cbr>google: google-cloud-functions, actions-on-google, google-cloud-firestore\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 13: javascript, selenium, google-chrome, html, selenium-webdriver\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>selenium, google-chrome, selenium-webdriver, xpath, dom, google-chrome-extension, firefox, caching, automation, iframe, selenium-chromedriver, mobile, browser, internet-explorer, safari, webdriver, css-selectors, google-chrome-devtools, webrtc, progressive-web-apps, service-worker, local-storage, internet-explorer-11, html5-video, microsoft-edge, ignite, phantomjs, chromium, cross-browser, webdriverwait, capybara, screenshot, cpu-architecture, mobile-safari, firefox-addon, webkit, geckodriver, firefox-webextensions, google-chrome-headless, browser-cache, webdriver-io, v8, specflow, selenium-grid, html-agility-pack, memcached, guava, devtools, cucumber-java, headless, domdocument, extentreports, selenium-ide, watir, cache-control, google-chrome-app, browser-automation, rselenium, mozilla\u003Cbr>\u003Cbr>google: google-chrome, google-chrome-headless, google-chrome-devtools, google-chrome-app, google-chrome-extension\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 6: javascript, vue.js, vuejs2, vuex, webpack\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>vue.js, express, vuejs2, axios, vue-component, vuex, vuetify.js, xmlhttprequest, vue-router, nuxt.js, fetch-api, vue-cli, vue-cli-3, store, nuxt, bootstrap-vue, vue-test-utils, element-ui, vee-validate\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 40: mongodb, node.js, javascript, python, express\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>mongodb, qt, mongoose, graphql, pyqt5, pyqt, mongodb-query, aggregation-framework, discord, qml, qt5, nosql, discord.js, discord.py, aggregate, ejs, handlebars.js, pymongo, backend, schema, mongoose-schema, mean-stack, sails.js, pug, nestjs, loopbackjs, pyqt4, spring-data-mongodb, multer, geospatial, mean, fs, aggregation, lookup, loopback, apollo-server, parse-server, pyside2, bcrypt, mongodb-.net-driver, document, pyside, qt-designer, mongoengine, body-parser, discord.py-rewrite, projection, mern, mongoose-populate, qthread, mlab, joi, passport-local, pyqtgraph, bson, sharding, express-handlebars\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 5: multithreading, java, python, concurrency, c++\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>multithreading, asynchronous, parallel-processing, concurrency, multiprocessing, callback, queue, celery, jvm, task, python-asyncio, synchronization, dask, python-multiprocessing, thread-safety, locking, mpi, openmp, singleton, pickle, python-multithreading, opencl, future, threadpool, mutex, task-parallel-library, tornado, deadlock, aiohttp, atomic, wait, executorservice, semaphore, completable-future, handler, goroutine, channel, race-condition, volatile, pool, runnable, java-threads, synchronous, async.js, producer-consumer, synchronized, java.util.concurrent, blocking\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 11: oracle, sql, plsql, oracle11g, database\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>oracle, plsql, stored-procedures, oracle11g, triggers, db2, oracle12c, sql-server-2014, oracle-sqldeveloper, oracle-apex, cursor, database-trigger, apex, oracle10g, sqlplus, oracle-apex-5.1, procedure, dynamic-sql, cx-oracle, oracle-adf, oracleforms, hierarchical-data, plsqldeveloper, oracle-apex-5\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 38: pdf, html, python, php, c#\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>pdf, merge, webview, printing, fonts, r-markdown, download, base64, puppeteer, itext, hyperlink, latex, export, blob, imagemagick, ocr, pdf-generation, adobe, jspdf, pdfbox, itext7, embed, docx, digital-signature, wkhtmltopdf, fpdf, mpdf, tcpdf, dompdf, ghostscript, acrobat, pypdf2, reportlab\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 9: php, laravel, laravel-5, mysql, javascript\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>php, laravel, ajax, laravel-5, codeigniter, validation, eloquent, session, file-upload, model, pagination, codeigniter-3, laravel-5.6, controller, laravel-5.5, migration, upload, laravel-5.7, laravel-blade, laravel-5.4, relational-database, laravel-5.2, php-7, relationship, lumen, middleware, php-7.2, octobercms, guzzle, image-uploading, laravel-5.8, algolia, query-builder, phpexcel, jobs, laravel-query-builder, laravel-5.3, roles, artisan, laravel-nova, php-carbon, laravel-4, laravel-5.1, homestead, pusher, laravel-eloquent, blade, laravel-routing, laravel-dusk, relation, shared-hosting, eager-loading\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 47: php, wordpress, javascript, woocommerce, python\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>google-apps-script, email, notifications, google-drive-api, paypal, stripe-payments, gmail, smtp, attributes, wordpress-theming, google-calendar-api, google-visualization, google-oauth, google-sheets-api, product, phpmailer, youtube-data-api, advanced-custom-fields, gmail-api, hook-woocommerce, outlook-addin, metadata, google-sheets-formula, cart, html-email, google-app-maker, hook, exchangewebservices, payment-gateway, custom-post-type, exchange-server, checkout, e-commerce, sendgrid, field, content-management-system, nodemailer, categories, gsuite, google-form, admin, mailchimp, comments, web-hosting, outlook-web-addins, orders, wordpress-rest-api, customization, imap, google-docs, rss, custom-wordpress-pages, custom-taxonomy, shortcode, outlook-restapi, email-attachments, google-sheets-query, mailgun, google-api-php-client, woocommerce-rest-api, wordpress-gutenberg, google-apis-explorer, attachment, gmail-addons, price, sendmail, icalendar, blogs, registration, custom-fields, multisite, google-admin-sdk, shipping, gravity-forms-plugin, google-api-client, archive, pagespeed, smtplib, mime, meta, google-api-nodejs-client, contact-form, taxonomy, google-api-python-client, account, stock\u003Cbr>\u003Cbr>google: google-sheets-api, google-docs, google-oauth, google-apps-script, google-sheets-query, google-sheets-formula, google-api-php-client, google-api-nodejs-client, google-visualization, google-admin-sdk, google-calendar-api, google-apis-explorer, google-api-python-client, google-form, google-app-maker, google-api-client, google-drive-api\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 23: postgresql, sql, python, javascript, mysql\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>sqlite, flask, sqlalchemy, hyperledger-fabric, odoo, hyperledger, elixir, blockchain, hyperledger-composer, flask-sqlalchemy, sequence, couchdb, psycopg2, psql, postgis, pyodbc, knex.js, plpgsql, jsonb, jooq, typeorm, postgresql-9.5, ecto, postgresql-10, marshalling, connection-pooling, postgresql-9.6, database-replication, unmarshalling, pgadmin-4, pgadmin, recursive-query, postgresql-9.4, crosstab, go-gorm, database-backups, postgresql-9.3, rds, heroku-postgres\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 35: python, java, c++, c#, windows\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>windows, powershell, batch-file, ffmpeg, audio, cmd, windows-10, path, stream, directory, process, vbscript, prolog, ftp, time-complexity, copy, command, zip, file-io, ocaml, scheduled-tasks, storage, big-o, binary-search-tree, registry, scheme, binary-tree, text-files, dynamic-programming, rename, exe, echo, command-prompt, hashtable, powershell-v3.0, filereader, batch-processing, wmi, stack-overflow, file-handling, windows-server-2016, windows-server-2012-r2, bufferedreader, taskscheduler, fstream, hyper-v, readfile, depth-first-search, fibonacci, ifstream, backtracking\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 3: python, java, javascript, arrays, c#\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>arrays, string, list, function, loops, csv, algorithm, dictionary, performance, for-loop, file, sorting, class, object, if-statement, oop, haskell, recursion, pointers, variables, generics, java-8, matrix, rust, filter, optimization, indexing, math, lambda, arraylist, inheritance, input, multidimensional-array, search, random, vector, data-structures, time, struct, types, methods, while-loop, foreach, design-patterns, dynamic, functional-programming, collections, java-stream, sas, parameters, enums, nested, interface, constructor, linked-list, syntax, casting, tree, hashmap, binary, properties, scope, reference, type-conversion, floating-point, iterator, null, tuples, static, format, set, conditional, iteration, range, switch-statement, return, append, numbers, boolean, output, int, concatenation, polymorphism, hex, compare, initialization, namespaces, integer, pattern-matching, grouping, logic, key, filtering, parameter-passing, list-comprehension, apply, subset, global-variables, slice, vectorization, conditional-statements, combinations, scanf, java.util.scanner, character, lapply, comparison, this, 2d, override, counter, numpy-ndarray, permutation, user-input, rounding, nested-loops, abstract-class, instance, reduce, prototype, itertools, global, reverse, subclass, comparator, key-value, increment, min, infinite-loop, contains, do-while, associative-array, mergesort, abstract, indexof, break, bubble-sort\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 48: python, java, javascript, r, php\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>typo3, wso2, clojure, sublimetext3, drupal-8, acumatica, jframe, docusignapi, teradata, emacs, netsuite, karate, verilog, jasper-reports, marklogic, sparql, vhdl, sympy, autodesk-forge, knitr, erlang, yocto, tcl, odoo-11, cakephp-3.0, mule, phoenix-framework, drupal-7, integration, racket, netlogo, autohotkey, uml, drools, node-red, stata, magento-1.9, common-lisp, aem, opencart, abap, line, python-sphinx, jtable, yii, pentaho, wagtail, coq, regex-lookarounds, slack-api, bioinformatics, openstack, perl6, antlr4, awt, rcpp, upgrade, tweepy, jpanel, macos-high-sierra, documentation, jsonschema, actionscript-3, vmware, wildcard, microsoft-dynamics, prestashop-1.7, typo3-8.x, zend-framework, lisp, gwt, elasticsearch-5, distance, smartcontracts, talend, wso2-am, slim, sfml, message-queue, computer-science, scenebuilder, yii2-advanced-app, rdf, inno-setup, fpga, flask-wtforms, bitcoin, clipboard, special-characters, unreal-engine4, hana, preg-replace, gdal, flash, nginx-config, wso2esb, system-verilog, arangodb, wso2is, netbeans-8, uuid, graphviz, liferay, omnet++, spatial, encode, powershell-v4.0, paypal-sandbox, http2, dynamics-365, local, ip-address, servicestack, hdf5, firewall, kdb, executable, linear-programming, add, orientdb, angularjs-scope, cplex, pymysql, xpages, phaser-framework, maya, powershell-v2.0, nginx-location, adfs, limit, abstract-syntax-tree, variable-assignment, elementtree, wav, mouse, splunk, asterisk, pandoc, publish-subscribe, simulink, webassembly, packages, complexity-theory, ansible-2.x, python-decorators, preg-match, regex-negation, minecraft, spotfire, nested-lists, pcre, gfortran, percentage, matching, monads, jbutton, gsub, numba, sitecore, watson-conversation, dropwizard, edit, frequency, vulkan, cdn, mime-types, wrapper, php-curl, jersey-2.0, scapy, converters, zapier, attributeerror, elm, console.log, web3js, kentico, moodle, intervals, anylogic, multilingual, logical-operators, glm, vlc, owl, autodesk-viewer, dojo, z3, arcgis, classloader, pyomo, sybase, antlr, md5, indexeddb, powerapps, data-conversion, http-status-code-403, web-worker, external, alfresco, airflow-scheduler, finance, typo3-9.x, cpu-usage, pouchdb, ibm-midrange, ping, truffle, qemu, dask-distributed, selection, apache-httpclient-4.x, jsonpath, sha256, coding-style, polymer-2.x, zipfile, vps, symbols, mediawiki, calculation, okta, smarty, blueprism, netcdf, zend-framework3, genetic-algorithm, snmp, repeat, plesk, signature, doxygen, qgis, dlib, jena, ckeditor4.x, tortoisesvn, face-recognition, message, number-formatting, dropbox, lm, default, spss, perforce, assert, uart, acl, symlink, suitescript2.0, kendo-ui-angular2, getter-setter, jira-rest-api, crm, sleep, indentation, prompt, analysis, lme4, ironpython, latitude-longitude, grammar, dotnetnuke, cqrs, gaussian, regex-greedy, koa, yum, numerical-methods, haskell-stack, scala-cats, hugo, rpc, priority-queue, openldap, popen, shapefile, var, partition, record, combinatorics, ada, nio, pentaho-data-integration, appium-ios, scheduling, pyautogui, snakemake, production-environment, lwjgl, computational-geometry, scaling, tabulator, lifetime, naming-conventions, jsf-2, lotus-notes, javac, numeric, odoo-8, modeling, salesforce-lightning, silverstripe, bookdown, websphere-liberty, virtualization, wxwidgets, ramda.js, hapijs, reload, marklogic-9, snapshot, hierarchy, server-side, cakephp-3.x, prestashop-1.6, schedule, unix-timestamp, difference, ontology, readline, configuration-files, opendaylight, block, wolfram-mathematica, rpm, logstash-grok, currency, mount, remote-server, destructor, nsis, captcha, feathersjs, code-generation, hardware, django-2.1, suitescript, typoscript, jython, trim, distributed-system, zabbix, vaadin8, nodemcu, magento2.2, string-matching, shuffle, ckeditor5, mixed-models, fedora, ipv6, new-operator, ember-data, llvm-clang, exit, webcam, str-replace, large-data, simplexml, rules, elasticsearch-aggregation, rhel, dsl, ethernet, event-sourcing, vimeo, hashset, date-formatting, zlib, standards, bamboo, converter, liferay-7, file-get-contents, solrcloud, servicenow, logstash-configuration, xhtml, virtual, pywin32, equals, intersection, micronaut, production, cs50, fopen, elasticsearch-6, lazy-evaluation, server-sent-events, extbase, translate, python-module, tabular, libreoffice, sml, private, apostrophe-cms, tostring, bitbake, actionlistener, restore, activiti, mypy, opencart-3, janusgraph, rank, multiplication, keyword, archlinux, optaplanner, imagick, informix, flex-lexer, photoshop, pyaudio, openlayers-3, reset, sentry, umbraco7, messaging, lotus-domino, fiddler, interactive, jlabel, folium, bigcommerce, transparency, nullreferenceexception, operator-keyword, tracking, keyboard-events, twitter-oauth, static-methods, polymer-3.x, prisma, mule-esb, string-comparison, counting, layout-manager, gherkin, inner-classes, docker-for-windows, checksum, imagemagick-convert, connect, php-7.1, sublimetext, wso2carbon, python-telegram-bot, react-native-router-flux, desktop, paypal-rest-sdk, php-5.6, division, typeclass, identityserver3, mapbox-gl, wix-react-native-navigation, sample, point-clouds, web-audio, vertica, java-time, mosquitto, dllimport, dump, covariance, cytoscape.js, cgal, r-package, installshield, eigen3, point-cloud-library, ngx-datatable, sampling, vapor, clojurescript, auto-increment, overlap, ibm-cloud-infrastructure, echarts, web-audio-api, hp-uft, office365api, ngx-translate, shortcut, paho, ember-cli, rfid, applet, swap, predicate, host, detox, cas, jsf-2.2, trigonometry, sandbox, beagleboneblack, filestream, numpy-broadcasting, xsd-validation, fgets, ghc, serenity-bdd, spi, duration, jna, unzip, fiware, rhel7, long-integer, pentaho-spoon, cpython, crystal-lang, assertion, string-concatenation, compatibility, java-module, fluid, meta-tags, wildfly-10, hashicorp-vault, apache-karaf, roblox, gurobi, install4j, development-environment, static-analysis, ffi, h5py, django-authentication, urlencode, directx-11, salt-stack, r-raster, pseudocode, hsqldb, django-celery, fatal-error, pywinauto, peewee, p2p, tinymce-4, mysql-5.7, openlayers-5, vis.js, palindrome, angular-template, resteasy, kable, quickbooks, monaco-editor, rdp, solrj, file-transfer, language-agnostic, mustache, java-7, naudio, velocity, wikidata, copy-constructor, countdown, wtforms, montecarlo, wso2ei, sitemap, stringbuilder, geoserver, joomla3.0, symbolic-math, bytecode, high-availability, sharepoint-2010, assign, semantic-web, rtf, vmware-clarity, odoo-12, informatica, volume, jit, monogame, super, eof, syncfusion, rust-cargo, dataweave, stack-trace, browser-sync, arduino-ide, blogdown, communication, rider, favicon, fill, processbuilder, biginteger, labview, resampling, normal-distribution, linear, angular4-router, hierarchical-clustering, drag, modbus, diagram, word, org-mode, admin-on-rest, equation, webrequest, tinkerpop3, restful-authentication, lib, tizen, user-agent, survival-analysis, point, fragment-shader, tableau-server, ansible-inventory, delete-file, code-injection, clickhouse, text-editor, kettle, angularjs-material, date-range, rpy2, complex-numbers, graphene-python, coded-ui-tests, midi, programming-languages, web-push, pine-script, equality, holoviews, sapply, quotes, jtextfield, emscripten, sas-macro, angular-http, varnish, phalcon, typing, freeze, opentok, password-protection, anonymous-function, resolution, remote-desktop, cryptocurrency, hpc, default-value, tsc, multiline, chromium-embedded, treemap, substitution, arm64, shutil, supervisord, at-command, interpreter, packet, google-search, dynamics-crm-online, can-bus, neo4j-apoc, ranking, httpserver, gsm, freebsd, centos6, yield, c++-winrt, fread, anypoint-studio, jboss7.x, type-hinting, wixcode, epoch, uninstall, autoit, smartcard, wikipedia, angular-service-worker, cosine-similarity, protege, schema.org, typescript-generics, dropbox-api, verification, composition, windows-server, using, hmac, dry, ag-grid-angular, median, messenger, rethinkdb, thingsboard, xilinx, named-pipes, office-ui-fabric, dynamics-crm-365, heroku-cli, date-format, imputation, jfreechart, wiremock, packaging, outliers, target, typo3-7.6.x, ngrok, audit, models, jboss-eap-7, moving-average, 32bit-64bit, strapi, views, silverstripe-4, rasa-core, content-type, event-loop, textinput, smoothing, surface, explode, getusermedia, 7zip, confidence-interval, watch, freertos, zend-framework2, circular-dependency, qliksense, repeater, cjk, clock, django-testing, pic, csrf-protection, shopping-cart, encapsulation, paypal-ipn, json-ld, cobol, key-bindings, relative-path, hashcode, thrift, bing-maps, localdate, dicom, netezza\u003Cbr>\u003Cbr>google: google-search\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 37: python, machine-learning, tensorflow, python-3.x, keras\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>tensorflow, numpy, keras, machine-learning, opencv, matlab, deep-learning, scikit-learn, image-processing, neural-network, scipy, nlp, pytorch, computer-vision, conv-neural-network, lstm, data-science, regression, classification, dataset, gpu, nltk, google-colaboratory, linear-regression, artificial-intelligence, object-detection, cluster-analysis, generator, spacy, interpolation, logistic-regression, svm, data-analysis, tesseract, random-forest, tensorflow-datasets, bazel, signal-processing, recurrent-neural-network, opencv3.0, fft, tensorboard, gensim, sparse-matrix, word2vec, cv2, h2o, cross-validation, tensor, caffe, xgboost, reshape, reinforcement-learning, stanford-nlp, linear-algebra, k-means, tensorflow-estimator, prediction, rnn, keras-layer, pca, probability, curve-fitting, decision-tree, text-mining, tensorflow-serving, loss-function, object-detection-api, google-cloud-ml, metrics, mathematical-optimization, image-segmentation, matrix-multiplication, autoencoder, tensorflow-lite, r-caret, text-classification, sentiment-analysis, scikit-image, convolution, training-data, categorical-data, tensorflow.js, knn, mnist, valueerror, sklearn-pandas, gradient-descent, weka, yolo, python-tesseract, word-embedding, feature-extraction, tokenize, emgucv, feature-selection, predict, coreml, similarity, normalization, one-hot-encoding, backpropagation, convolutional-neural-network, ode, lda, tf-idf, openai-gym, image-recognition, theano, naivebayes, rasa-nlu, detection, grid-search, data-mining, differential-equations, layer, torch, roc, mxnet, camera-calibration, topic-modeling, cudnn, kaggle, confusion-matrix, tensorflow2.0, doc2vec, distributed, embedding, tfrecord, recommendation-engine, multilabel-classification, ner\u003Cbr>\u003Cbr>google: google-colaboratory, google-cloud-ml\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 46: python, php, apache, python-3.x, ubuntu\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>apache, nginx, .htaccess, web, url, pip, anaconda, redirect, pycharm, dns, ubuntu-16.04, permissions, url-rewriting, package, mod-rewrite, installation, conda, centos7, ubuntu-18.04, debian, virtualenv, python-import, install, apache2, url-redirection, vagrant, webserver, virtualbox, cpanel, gunicorn, digital-ocean, http-status-code-404, config, hosting, subdomain, systemd, uwsgi, wamp, nvidia, setuptools, ubuntu-14.04, mod-wsgi, pipenv, url-routing, mamp, httpd.conf, environment, query-string, seo, wsgi, subdirectory, setup.py, wampserver, permalinks, pypi, apache2.4, lamp, apt, http-status-code-301, miniconda, http-redirect\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 50: python, python-3.x, python-2.7, pandas, javascript\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>python, python-3.x, pandas, dataframe, python-2.7, web-scraping, datetime, parsing, beautifulsoup, post, python-requests, scrapy, request, pygame, python-3.6, pandas-groupby, encoding, unicode, get, utf-8, twitter, character-encoding, header, python-3.7, web-crawler, python-imaging-library, pyinstaller, spyder, tags, export-to-csv, typeerror, odoo-10, openpyxl, jsoup, regex-group, python-3.5, ascii, series, urllib, wxpython, lxml, turtle-graphics, xlsx, rvest, nan, argparse, python-2.x, mysql-python, datetime-format, kivy-language, emoji, importerror, screen-scraping, scrapy-spider, pyserial, html-parsing, python-xarray, flask-restful, tkinter-canvas, cheerio, frame, odoo-9, cx-freeze, twisted, tk, python-datetime, python-unicode, decoding, httr, tkinter-entry, timedelta\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 16: python, unix, bash, sed, linux\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>regex, linux, bash, shell, unix, perl, awk, sed, text, replace, split, cron, command-line, grep, scripting, sh, find, substring, filesystems, notepad++, fork, posix, scheduler, cgi, delimiter, text-processing, aix, cut, solaris\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 29: r, python, ggplot2, plot, matplotlib\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>r, matplotlib, ggplot2, dplyr, shiny, jupyter-notebook, plot, graph, time-series, statistics, colors, plotly, julia, rstudio, graphics, seaborn, cypher, tidyverse, bokeh, data-visualization, bar-chart, label, networkx, histogram, ipython, purrr, tidyr, visualization, gremlin, gnuplot, influxdb, igraph, shinydashboard, legend, heatmap, octave, graph-theory, simulation, data-manipulation, correlation, raster, plotly-dash, statsmodels, data-cleaning, na, matlab-figure, mutate, scatter-plot, boxplot, multi-index, stringr, dashboard, forecasting, scale, lubridate, r-plotly, missing-data, graph-databases, arima, pie-chart, graph-algorithm, jupyter-lab, axis, geopandas, shiny-server, distribution, breadth-first-search, sparklyr, bayesian, lag, sf, tibble, subplot, matplotlib-basemap, xts, contour, plyr, anova, axis-labels, shortest-path, shiny-reactivity, ggmap, dijkstra, figure, rlang, facet, ggplotly, zoo\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 49: ruby, ruby-on-rails, ruby-on-rails-5, javascript, activerecord\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>ruby-on-rails, postgresql, ruby, heroku, redis, ruby-on-rails-5, yii2, hash, activerecord, routes, shopify, ruby-on-rails-4, rspec, rubygems, devise, chef, ruby-on-rails-3, bundle, rails-activestorage, associations, rails-activerecord, puppet, ruby-on-rails-5.2, metaprogramming, rspec-rails, activeadmin, bundler, coffeescript, shopify-app, sidekiq, carrierwave, passenger, sinatra, simple-form, nokogiri, cloudinary, capistrano, puma, webpacker, mongoid, actioncable, erb, haml, rake, paperclip, factory-bot\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 41: sql, sql-server, mysql, database, postgresql\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>sql, mysql, sql-server, database, tsql, date, mysqli, join, select, group-by, mariadb, sequelize.js, pdo, phpmyadmin, sql-server-2008, data.table, count, sql-server-2012, xampp, database-design, duplicates, view, sum, timestamp, pivot, foreign-keys, sql-update, mysql-workbench, timezone, tableau, insert, ssms, odbc, constraints, sql-server-2016, etl, subquery, max, syntax-error, left-join, case, database-connection, decimal, inner-join, prepared-statement, full-text-search, database-migration, sql-order-by, query-optimization, sql-server-2008-r2, sql-server-2017, sql-insert, union, backup, aggregate-functions, where, partitioning, common-table-expression, distinct, query-performance, concat, oledb, innodb, replication, window-functions, sql-injection, mdx, primary-key, greatest-n-per-group, where-clause, database-performance, sql-delete, data-warehouse, rdbms, sql-like, database-administration, ddl, entity-relationship, bulkinsert, ssis-2012, calculated-columns, resultset, derby, database-schema, sql-server-2005, create-table, database-normalization, temp-tables\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 14: swift, ios, xcode, objective-c, android\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>ios, swift, xcode, objective-c, uitableview, swift4, iphone, uicollectionview, facebook-graph-api, realm, bluetooth-lowenergy, twilio, core-data, cocoa, admob, cocoapods, alamofire, arkit, swift3, crash, uiview, tableview, localization, keyboard, autolayout, sprite-kit, frameworks, uiviewcontroller, augmented-reality, uikit, wkwebview, scenekit, accessibility, closures, in-app-purchase, instagram, xcode10, uinavigationcontroller, avfoundation, uibutton, apple-push-notifications, uiscrollview, uitextfield, delegates, crashlytics, app-store, uicollectionviewcell, ios11, protocols, macos-mojave, ios12, xcode9, storyboard, uinavigationbar, qr-code, uilabel, uiimageview, uitabbarcontroller, ipad, optional, decode, uiimage, cell, metal, segue, mapkit, deep-linking, swift4.2, parse-platform, codable, spotify, uitextview, avplayer, itunesconnect, facebook-login, gradient, touch, audiokit, cocoa-touch, textfield, assets, ios-simulator, uistackview, uisearchbar, uiwebview, grand-central-dispatch, firebase-dynamic-links, watchkit, voip, nslayoutconstraint, fastlane, uiimagepickercontroller, iphone-x, nsattributedstring, interface-builder, viewcontroller, uipickerview, nsuserdefaults, core-bluetooth, decodable, xctest, extension-methods, apple-watch, nsurlsession, core-location, code-signing, navigationbar, uialertcontroller, orientation, uigesturerecognizer, objectmapper, swift-playground, keychain, core-graphics, xib, uisearchcontroller, lldb, swift-protocols, avaudioplayer, tvos, cloudkit, shadow, appdelegate, contacts, statusbar, swift4.1, testflight, mkmapview, ios-autolayout, uibezierpath, gesture, uipageviewcontroller, health-kit, uitabbar, cllocationmanager, calayer, xcuitest, provisioning-profile, icloud, uicollectionviewlayout, geofire, uistoryboard, metalkit, pdfkit, plist, uiviewanimation, swifty-json, collectionview, uibarbuttonitem, ipa, xcode-ui-testing\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 32: symfony, php, symfony4, javascript, mysql\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>forms, symfony, symfony4, composer-php, twig, doctrine, annotations, doctrine-orm, phpunit, symfony-3.4, translation, autowired, symfony-forms, sonata-admin, api-platform.com, fosuserbundle, swiftmailer, data-annotations, sonata\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph {\"backgroundColor\":\"very-light-gray\"} -->\n\n\u003Cp class=\"has-background has-very-light-gray-background-color\">\u003Cstrong>centroid 27: testing, java, javascript, unit-testing, automated-tests\u003Cbr>\u003C\u002Fstrong>-----\u003Cbr>angularjs, unit-testing, testing, groovy, junit, jmeter, protractor, mockito, automated-tests, jasmine, mocking, cucumber, appium, pytest, testng, robotframework, integration-testing, cypress, performance-testing, android-espresso, code-coverage, e2e-testing, junit5, chai, python-unittest, junit4, sinon, karma-runner, ui-automation, load, appium-android, nightwatch.js, load-testing, tdd, katalon-studio, testcafe, jest, bdd, spock, powermockito, powermock, codeception, jmeter-plugins, rpa, qa, cucumberjs, jmeter-4.0, angular-test, robolectric\u003C\u002Fp>\n\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2 id=\"68ff\">Full code\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nThe code I used to create and display the previous results:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">clusters = 50\npercent = '01'\none_hot_dimensions = 50\n\nmodel = 'deleting.kmeans_tagsubtag_%s_big_a_%s_%s' % (clusters, percent,one_hot_dimensions)\nclusters_temp_table = 'deleting.clusters_%s_result_a_%s_%s' % (clusters, percent, one_hot_dimensions)\n\none_hot_p = client.query(\"\"\"\nSELECT STRING_AGG(\n  FORMAT(\"IFNULL(ANY_VALUE(IF(tag2='%%s',1,null)),0)X%%s\", tag2, REPLACE(REPLACE(REPLACE(REPLACE(tag2,'-','_'),'.','D'),'#','H'),'+','P')) \n) one_hot\nFROM (\n  SELECT tag2, SUM(questions) questions \n  FROM `deleting.stack_overflow_tag_co_ocurrence`\n  GROUP BY tag2\n  ORDER BY questions DESC\n  LIMIT %s\n)\"\"\" % one_hot_dimensions).to_dataframe().iloc[0]['one_hot']\n\nclient.query(\"\"\"\nCREATE OR REPLACE MODEL `%s` \nOPTIONS ( \n    model_type='kmeans',\n    distance_type='COSINE',\n    num_clusters=%s )\nAS\nWITH tag_and_subtags AS (\n    SELECT tag1, %s\n    FROM `deleting.stack_overflow_tag_co_ocurrence`\n    WHERE percent&gt;0.%s\n    GROUP BY tag1\n)\nSELECT * EXCEPT(tag1)\nFROM tag_and_subtags\n\"\"\" % (model, clusters, one_hot_p, percent)).to_dataframe()\n\ndf = client.query(\"\"\"\nCREATE OR REPLACE TABLE %s\nAS\nWITH tag_and_subtags AS (\n    SELECT tag1, MAX(questions) questions, %s\n    FROM `deleting.stack_overflow_tag_co_ocurrence`\n    WHERE percent&gt;0.%s\n    GROUP BY tag1\n)\n\nSELECT centroid_id\n , STRING_AGG(tag1, ', ' ORDER BY questions DESC) tags\n , ARRAY_TO_STRING(ARRAY_AGG(IF(tag1 LIKE '%%google%%', tag1, null)  IGNORE nulls LIMIT 18), ', ') google_tags\n , ARRAY_TO_STRING(ARRAY_AGG(IF(tag1 LIKE '%%amazon%%' OR tag1 LIKE '%%aws%%', tag1, null)  IGNORE nulls LIMIT 18), ', ') amazon_tags\n , ARRAY_TO_STRING(ARRAY_AGG(IF(tag1 LIKE '%%azure%%', tag1, null)  IGNORE nulls LIMIT 18), ', ') azure_tags\n , COUNT(*) c\nFROM ML.PREDICT(MODEL `%s` \n  , (SELECT * FROM tag_and_subtags )\n)\nGROUP BY 1\nORDER BY c DESC\n\"\"\" % (clusters_temp_table, one_hot_p, percent, model)).to_dataframe()\n\ndf = client.query(\"\"\"\nSELECT centroid_id, c, yep, tags\n    , IFNULL(google_tags, '') google_tags\n    , IFNULL(amazon_tags, '') amazon_tags\n    , IFNULL(azure_tags, '') azure_tags\nFROM `%s` \nJOIN (\n  SELECT centroid_id\n    , STRING_AGG(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(feature,'_','-'),'D','.'),'H','#'),'P','+'), 'X', ''), ', ' ORDER BY numerical_value DESC  LIMIT 5) yep\n  FROM ML.CENTROIDS(MODEL `%s`\n  )\n  GROUP BY 1\n) \nUSING(centroid_id)\nORDER BY yep\n\"\"\" % (clusters_temp_table, model)).to_dataframe()\n\nfor index, row in df.iterrows():\n    print('centroid %s: %s\\n-----' % (row['centroid_id'],  row['yep']))\n    print(row['tags'])\n    print()\n    if row['google_tags']:\n        print('google: %s' % row['google_tags'])\n    if row['amazon_tags']:\n        print('amazon: %s' % row['amazon_tags'])\n    if row['azure_tags']:\n        print('azure: %s' % row['azure_tags'])\n    print('\\n')\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:paragraph -->\nNote that I joined my results with&nbsp;\u003Ccode>ML.CENTROIDS()\u003C\u002Fcode>&nbsp;— which gives me the top differentiating occurring tags for each centroid — even if they are not part of each cluster.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\n\u003Ch2 id=\"4cba\">And that’s all it takes\u003C\u002Fh2>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nAre you surprised by the results? Or surprised by how easy was to run our k-means modeling with BigQuery? Or curious for why I chose&nbsp;\u003Ccode>distance-type: 'COSINE'\u003C\u002Fcode>&nbsp;for this problem? Now it’s your turn to play :).\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\nCheck the&nbsp;\u003Ca href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery-ml\u002Fdocs\u002Freference\u002Fstandard-sql\u002Fbigqueryml-syntax-create?source=post_page---------------------------\">BigQuery docs for creating models\u003C\u002Fa>&nbsp;and the&nbsp;\u003Ca href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery-ml\u002Fdocs\u002Fkmeans-tutorial?source=post_page---------------------------\">k-means tutorial\u003C\u002Fa>.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading {\"level\":3} -->\n\n\u003Ch3 id=\"fb4c\">Lak’s thoughts\u003C\u002Fh3>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nHow would you choose the best parameters? Check&nbsp;\u003Ca href=\"https:\u002F\u002Fmedium.com\u002Fu\u002F247b0630b5d6?source=post_page---------------------------\">Lak Lakshmanan\u003C\u002Fa>&nbsp;post for&nbsp;\u003Ca href=\"https:\u002F\u002Ftowardsdatascience.com\u002Fhow-to-do-hyperparameter-tuning-of-a-bigquery-ml-model-29ba273a6563?source=post_page---------------------------\">hyper-parameter tuning\u003C\u002Fa>. Lak also had some interesting ideas about dimensionality reduction for clustering via matrix factorization — but we’ll leave that for a future post.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\nAs an untested preview:\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cem>Once you have the co-occurrence of tag1 and tag2, treat it as a recommendation problem, i.e. tag2 is what tag1 liked percent of the time. Then, you can do matrix factorization:\u003C\u002Fem>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">CREATE OR REPLACE MODEL deleting.tag1_tag2\u003Cbr>OPTIONS ( \u003Cbr>    model_type='matrix_factorization',\u003Cbr>    user_col='tag1', item_col='tag2', rating_col='percent10' )\u003Cbr>AS\u003Cbr>SELECT tag1, tag2, percent*10 AS percent10\u003Cbr>FROM advdata.stack_overflow_tag_co_ocurrence\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:paragraph -->\n\u003Cem>From this matrix factorization, you will have tag1_factors and tag2_factors which are essentially an embedding of the tags learned from the data. Concatenate these and cluster it instead …\u003C\u002Fem>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:preformatted -->\n\n\u003Cpre class=\"wp-block-preformatted\">SELECT feature, factor_weights\u003Cbr>FROM ML.WEIGHTS( MODEL deleting.tag1_tag2 )\u003Cbr>WHERE processed_input = 'tag1' and feature LIKE '%google%'\u003C\u002Fpre>\n\n\u003C!-- \u002Fwp:preformatted -->\n\n\u003C!-- wp:heading {\"level\":1} -->\n\n\u003Ch1 id=\"3dd2\">Want more?\u003C\u002Fh1>\n\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\nI'm Felipe Hoffa, a Developer Advocate for Google Cloud. Tweet me \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Ffelipehoffa\">@felipehoffa\u003C\u002Fa>,  my previous posts on \u003Ca href=\"https:\u002F\u002Fmedium.com\u002F@hoffa\">medium.com\u002F@hoffa\u003C\u002Fa>, and all about BigQuery on \u003Ca href=\"https:\u002F\u002Freddit.com\u002Fr\u002Fbigquery\">reddit.com\u002Fr\u002Fbigquery\u003C\u002Fa> - including \u003Ca href=\"https:\u002F\u002Ftowardsdatascience.com\u002Fwhen-will-stack-overflow-reply-how-to-predict-with-bigquery-553c24b546a3\">predicting when will Stack Overflow reply\u003C\u002Fa>.\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\n\u003C!-- \u002Fwp:paragraph -->","html","2019-07-24T14:34:10.000Z",{"current":1278},"making-sense-of-the-metadata-clustering-4000-stack-overflow-tags-with-bigquery-k-means",[1280,1288,1292,1297,1302,1307,1312],{"_createdAt":1281,"_id":1282,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1285,"title":1287},"2023-05-23T16:43:21Z","wp-tagcat-big-data","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":1286},"big-data","big data",{"_createdAt":1281,"_id":1289,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1290,"title":94},"wp-tagcat-bigquery",{"current":1291},"bigquery",{"_createdAt":1281,"_id":1293,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1294,"title":1296},"wp-tagcat-bulletin",{"current":1295},"bulletin","Bulletin",{"_createdAt":1281,"_id":1298,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1299,"title":1301},"wp-tagcat-code-for-a-living",{"current":1300},"code-for-a-living","Code for a Living",{"_createdAt":1281,"_id":1303,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1304,"title":1306},"wp-tagcat-google-cloud",{"current":1305},"google-cloud","google cloud",{"_createdAt":1281,"_id":1308,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1309,"title":1311},"wp-tagcat-k-means-clustering",{"current":1310},"k-means-clustering","k-means clustering",{"_createdAt":1281,"_id":1313,"_rev":1283,"_type":1284,"_updatedAt":1281,"slug":1314,"title":1316},"wp-tagcat-stackoverflow",{"current":1315},"stackoverflow","Stackoverflow","Making Sense of the Metadata: Clustering 4,000 Stack Overflow tags with BigQuery k-means",[1319,1325,1331,1337],{"_id":1320,"publishedAt":1321,"slug":1322,"sponsored":12,"title":1324},"28e560af-f0aa-4d46-bd90-f435ad604aa7","2026-06-26T14:00:27.102Z",{"_type":10,"current":1323},"paging-charity-how-can-engineering-leaders-avoid-becoming-bond-villains","Paging Charity! How can engineering leaders avoid becoming Bond villains?",{"_id":1326,"publishedAt":1327,"slug":1328,"sponsored":12,"title":1330},"4b22c2a3-3779-4966-93eb-5230391dbdce","2026-06-23T14:08:58.595Z",{"_type":10,"current":1329},"your-ai-shipped-a-backend-that-boots-that-is-the-whole-problem","Your AI shipped a backend that boots. That is the whole problem.",{"_id":1332,"publishedAt":1333,"slug":1334,"sponsored":12,"title":1336},"5cf362e1-fe7b-45af-b69c-914731c6a052","2026-06-23T14:00:00.000Z",{"_type":10,"current":1335},"the-2026-developer-survey-is-now-open-for-human-developers-only","The 2026 Developer Survey is now open (for human developers only)!",{"_id":1338,"publishedAt":1339,"slug":1340,"sponsored":12,"title":1342},"30b995f7-7cb9-4dd8-bf71-d0685940a32b","2026-06-19T14:00:00.000Z",{"_type":10,"current":1341},"dispatches-from-o-reilly-from-capabilities-to-responsibilities","Dispatches from O'Reilly: From capabilities to responsibilities",{"data":1344,"sourceMap":-1},{"count":1345,"lastTimestamp":1346},6,"2023-05-25T09:46:48Z"]