From a14db9b3719f7774f5b799513f9b72cea99308c9 Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Sun, 13 Aug 2023 15:16:23 -0400 Subject: [PATCH] Cleaned up Tweet fetch to include preview images (#85) --- .../Models/SampleTweets.json | 1 + src/TagzApp.Providers.Twitter/Models/Tweet.cs | 71 +++++++++-------- .../TagzApp.Providers.Twitter.csproj | 8 ++ .../TwitterProvider.cs | 78 +++++-------------- 4 files changed, 65 insertions(+), 93 deletions(-) create mode 100644 src/TagzApp.Providers.Twitter/Models/SampleTweets.json diff --git a/src/TagzApp.Providers.Twitter/Models/SampleTweets.json b/src/TagzApp.Providers.Twitter/Models/SampleTweets.json new file mode 100644 index 00000000..5efa52da --- /dev/null +++ b/src/TagzApp.Providers.Twitter/Models/SampleTweets.json @@ -0,0 +1 @@ +{"data":[{"author_id":"1677619435212001280","created_at":"2023-08-13T18:44:37.000Z","text":"The current state of Hywe demonstrating a slider driven prototype of a hexagrid based composition of clusters anchored about and growing around a host cluster with a change in orientation of clusters. #browserBased #fsharp #dotnet #fsbolero #wasm #hywe https://t.co/xnRGC3JY24","entities":{"urls":[{"start":253,"end":276,"url":"https://t.co/xnRGC3JY24","expanded_url":"https://twitter.com/_hywe_/status/1690796516821397504/photo/1","display_url":"pic.twitter.com/xnRGC3JY24","media_key":"16_1690796476954460160"}],"hashtags":[{"start":201,"end":214,"tag":"browserBased"},{"start":215,"end":222,"tag":"fsharp"},{"start":223,"end":230,"tag":"dotnet"},{"start":231,"end":240,"tag":"fsbolero"},{"start":241,"end":246,"tag":"wasm"},{"start":247,"end":252,"tag":"hywe"}]},"edit_history_tweet_ids":["1690796516821397504"],"attachments":{"media_keys":["16_1690796476954460160"]},"id":"1690796516821397504"},{"author_id":"1110598515615547392","created_at":"2023-08-13T18:22:00.000Z","text":"Tu jefe te va a hacer migrar las #pruebasunitarias que tienes en moq? Aquí te muestro una introduccion sus mejores alternativas, NSusbstitute y FakeItEasy donde puedes familiarizarte y comparar la sintaxis! #unittesting #dotnet \nhttps://t.co/w2aoCHN6Bx","entities":{"urls":[{"start":229,"end":252,"url":"https://t.co/w2aoCHN6Bx","expanded_url":"https://www.netmentor.es/entrada/mock-nsubstitute-fakeiteasy","display_url":"netmentor.es/entrada/mock-n…","images":[{"url":"https://pbs.twimg.com/news_img/1690276849962610688/hVo3H-Qf?format=png&name=orig","width":880,"height":490},{"url":"https://pbs.twimg.com/news_img/1690276849962610688/hVo3H-Qf?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Mock en C# con Nsubstitute y FakeItEasy","description":"https://www.netmentor.es/En este post vamos a ver como crear mocks en c# utilizando las librerías Nsubstitute y FakeItEasy","unwound_url":"https://www.netmentor.es/entrada/mock-nsubstitute-fakeiteasy"}],"annotations":[{"start":129,"end":140,"probability":0.7845,"type":"Other","normalized_text":"NSusbstitute"},{"start":144,"end":153,"probability":0.7743,"type":"Other","normalized_text":"FakeItEasy"},{"start":221,"end":226,"probability":0.6462,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":33,"end":50,"tag":"pruebasunitarias"},{"start":207,"end":219,"tag":"unittesting"},{"start":220,"end":227,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690790822847909888"],"id":"1690790822847909888"},{"author_id":"43045391","created_at":"2023-08-13T18:00:02.000Z","text":"ICYMI: Embracing Records in C#: The Pros and Cons: https://t.co/mv7GTvjn0d #Dev #Dotnet #development #Csharp #softwaredevelopment","entities":{"urls":[{"start":53,"end":76,"url":"https://t.co/mv7GTvjn0d","expanded_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/","display_url":"globalgeeknews.com/2023/08/09/emb…","images":[{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=orig","width":1024,"height":384},{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Embracing Records in C#: The Pros and Cons - Global Geek News","description":"Are you a .NET software developer that wants to up their C# game? Then you need to know about the language feature, Records in C#!","unwound_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/"}],"hashtags":[{"start":77,"end":81,"tag":"Dev"},{"start":82,"end":89,"tag":"Dotnet"},{"start":90,"end":102,"tag":"development"},{"start":103,"end":110,"tag":"Csharp"},{"start":111,"end":131,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690785294390579200"],"id":"1690785294390579200"},{"author_id":"10370632","created_at":"2023-08-13T18:00:01.000Z","text":"ICYMI: Embracing Records in C#: The Pros and Cons: https://t.co/t3alYcWZpv #Dev #Dotnet #development #Csharp #softwaredevelopment","entities":{"urls":[{"start":53,"end":76,"url":"https://t.co/t3alYcWZpv","expanded_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/","display_url":"globalgeeknews.com/2023/08/09/emb…","images":[{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=orig","width":1024,"height":384},{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Embracing Records in C#: The Pros and Cons - Global Geek News","description":"Are you a .NET software developer that wants to up their C# game? Then you need to know about the language feature, Records in C#!","unwound_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/"}],"hashtags":[{"start":77,"end":81,"tag":"Dev"},{"start":82,"end":89,"tag":"Dotnet"},{"start":90,"end":102,"tag":"development"},{"start":103,"end":110,"tag":"Csharp"},{"start":111,"end":131,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690785292146597888"],"id":"1690785292146597888"},{"author_id":"1433020305979723778","created_at":"2023-08-13T17:43:35.000Z","text":"Dear #dotnet friends, \n\nI'm almost at 30K followers on LinkedIn. \nPlease consider following me or sending me a connection request \uD83D\uDE0A ...\n\nhttps://t.co/EGFEhQrgBC","entities":{"urls":[{"start":139,"end":162,"url":"https://t.co/EGFEhQrgBC","expanded_url":"https://www.linkedin.com/in/davidcallan/","display_url":"linkedin.com/in/davidcallan/","images":[{"url":"https://pbs.twimg.com/news_img/1690781202754543618/KaDiF631?format=jpg&name=orig","width":800,"height":800},{"url":"https://pbs.twimg.com/news_img/1690781202754543618/KaDiF631?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Dave Callan | LinkedIn","description":"Full stack .NET software engineer and architect who has worked on this stack for over 18 years. I've also 6 years PHP experience but most contracts recently have been .NET based. Extensive use of best practice technologies and methodologies. Proud holder of 1st class honours higher diploma in psychology (2012-2014). In this course I acquired a lot of skills in modules such as spss/stats, research methods, research project, behavioural analysis, developmental, cognitive (lots of UX related stuff), org, abnormal and social psychology etc. Keen interest in application of SW developed with reference to psychological principles and research. My research dissertation was titled 'Moderating effect of personality on the relationship between affective organisational commitment and organisational citizenship behaviour' Although I'm not involved commercially anymore I also have significant understanding of online marketing concepts such as SEO, PPC (Google Adwords), CRO (Conversion Rate Optimisat","unwound_url":"https://ie.linkedin.com/in/davidcallan"}],"annotations":[{"start":6,"end":11,"probability":0.5113,"type":"Organization","normalized_text":"dotnet"},{"start":55,"end":62,"probability":0.7717,"type":"Other","normalized_text":"LinkedIn"}],"hashtags":[{"start":5,"end":12,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690781156835278848"],"id":"1690781156835278848"},{"author_id":"1612396986887544832","created_at":"2023-08-13T16:50:58.000Z","text":"Updates for https://t.co/W9jNkNva9x\n+ Rebrand thoughtleaders -> techfolk \n+ Social filters \n+ Profile count \n+ Youtube subscriber count \n+ Improved tag search layout \n+ Lots of new faces! \n#typescript #React #Dotnet #developer #javascript #architecture #threejs #Agile #Azure https://t.co/F7nQyEzDWc","entities":{"urls":[{"start":12,"end":35,"url":"https://t.co/W9jNkNva9x","expanded_url":"https://techfolk.dev","display_url":"techfolk.dev","status":200,"title":"Tech Folk","description":"Discover authoritative and influential individuals in the tech community.","unwound_url":"https://techfolk.dev"},{"start":280,"end":303,"url":"https://t.co/F7nQyEzDWc","expanded_url":"https://twitter.com/Timmoth_j/status/1690767914339540993/photo/1","display_url":"pic.twitter.com/F7nQyEzDWc","media_key":"3_1690767829954392065"}],"annotations":[{"start":114,"end":120,"probability":0.9769,"type":"Other","normalized_text":"Youtube"},{"start":194,"end":203,"probability":0.5446,"type":"Other","normalized_text":"typescript"},{"start":213,"end":218,"probability":0.7888,"type":"Other","normalized_text":"Dotnet"},{"start":232,"end":241,"probability":0.7536,"type":"Other","normalized_text":"javascript"},{"start":274,"end":278,"probability":0.8278,"type":"Other","normalized_text":"Azure"}],"hashtags":[{"start":193,"end":204,"tag":"typescript"},{"start":205,"end":211,"tag":"React"},{"start":212,"end":219,"tag":"Dotnet"},{"start":220,"end":230,"tag":"developer"},{"start":231,"end":242,"tag":"javascript"},{"start":243,"end":256,"tag":"architecture"},{"start":257,"end":265,"tag":"threejs"},{"start":266,"end":272,"tag":"Agile"},{"start":273,"end":279,"tag":"Azure"}]},"edit_history_tweet_ids":["1690767914339540993"],"attachments":{"media_keys":["3_1690767829954392065"]},"id":"1690767914339540993"},{"author_id":"1459954664158412801","created_at":"2023-08-13T16:18:27.000Z","text":"Connect .NET Core Web API to REDIS on Docker\n\n#docker #redis #dotnet #webapi\n\nhttps://t.co/N9wrbE7UMf","entities":{"urls":[{"start":78,"end":101,"url":"https://t.co/N9wrbE7UMf","expanded_url":"https://youtu.be/GwLCHQz7gyY","display_url":"youtu.be/GwLCHQz7gyY","images":[{"url":"https://pbs.twimg.com/news_img/1690759730925383683/DSLDlHhQ?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690759730925383683/DSLDlHhQ?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":".NET Core Web Api Connected to Redis on Docker Locally","description":"C# .NET Core Web Api Connected to Redis on Docker Locally","unwound_url":"https://www.youtube.com/watch?v=GwLCHQz7gyY&feature=youtu.be"}],"annotations":[{"start":9,"end":24,"probability":0.6795,"type":"Other","normalized_text":"NET Core Web API"},{"start":29,"end":33,"probability":0.5626,"type":"Other","normalized_text":"REDIS"},{"start":38,"end":43,"probability":0.9079,"type":"Other","normalized_text":"Docker"},{"start":47,"end":52,"probability":0.5749,"type":"Other","normalized_text":"docker"},{"start":55,"end":59,"probability":0.617,"type":"Other","normalized_text":"redis"},{"start":62,"end":67,"probability":0.4892,"type":"Other","normalized_text":"dotnet"},{"start":70,"end":75,"probability":0.6481,"type":"Other","normalized_text":"webapi"}],"hashtags":[{"start":46,"end":53,"tag":"docker"},{"start":54,"end":60,"tag":"redis"},{"start":61,"end":68,"tag":"dotnet"},{"start":69,"end":76,"tag":"webapi"}]},"edit_history_tweet_ids":["1690759730573025280"],"id":"1690759730573025280"},{"author_id":"1649821256576012288","created_at":"2023-08-13T15:50:08.000Z","text":"Hello Developers \nLets Connect, Comment your Field and why you like it.\nI am a Backend Developer (C# and Java) and I like to Code. \n#Developer #Coding #webdevelopment #webdeveloper #Dotnet #MVC #HTML #programming","edit_history_tweet_ids":["1690752603528024064"],"entities":{"annotations":[{"start":106,"end":109,"probability":0.8756,"type":"Other","normalized_text":"Java"},{"start":184,"end":189,"probability":0.693,"type":"Other","normalized_text":"Dotnet"},{"start":197,"end":200,"probability":0.8369,"type":"Other","normalized_text":"HTML"}],"hashtags":[{"start":133,"end":143,"tag":"Developer"},{"start":144,"end":151,"tag":"Coding"},{"start":152,"end":167,"tag":"webdevelopment"},{"start":169,"end":182,"tag":"webdeveloper"},{"start":183,"end":190,"tag":"Dotnet"},{"start":191,"end":195,"tag":"MVC"},{"start":196,"end":201,"tag":"HTML"},{"start":202,"end":214,"tag":"programming"}]},"id":"1690752603528024064"},{"author_id":"121547986","created_at":"2023-08-13T15:49:11.000Z","text":"Fiz uma coisa hoje, C# segue lutando e resistindo na #rinhadebackend. Estou tentando não me distanciar tanto do mundo real. Estou usando recursos de fila do redis e cache, assim consigo acessar os registros em todas a API #dotnet #bolhadev https://t.co/1uAgcHaNaa","entities":{"urls":[{"start":240,"end":263,"url":"https://t.co/1uAgcHaNaa","expanded_url":"https://twitter.com/MarcosCostaDev/status/1690752365954023424/photo/1","display_url":"pic.twitter.com/1uAgcHaNaa","media_key":"3_1690750405821583360"},{"start":240,"end":263,"url":"https://t.co/1uAgcHaNaa","expanded_url":"https://twitter.com/MarcosCostaDev/status/1690752365954023424/photo/1","display_url":"pic.twitter.com/1uAgcHaNaa","media_key":"3_1690751257965711361"}],"annotations":[{"start":20,"end":21,"probability":0.62,"type":"Other","normalized_text":"C#"},{"start":54,"end":67,"probability":0.5285,"type":"Other","normalized_text":"rinhadebackend"},{"start":218,"end":220,"probability":0.7353,"type":"Other","normalized_text":"API"},{"start":223,"end":228,"probability":0.7124,"type":"Other","normalized_text":"dotnet"},{"start":231,"end":238,"probability":0.5073,"type":"Other","normalized_text":"bolhadev"}],"hashtags":[{"start":53,"end":68,"tag":"rinhadebackend"},{"start":222,"end":229,"tag":"dotnet"},{"start":230,"end":239,"tag":"bolhadev"}]},"edit_history_tweet_ids":["1690752365954023424"],"attachments":{"media_keys":["3_1690750405821583360","3_1690751257965711361"]},"id":"1690752365954023424"},{"author_id":"175627617","created_at":"2023-08-13T15:47:19.000Z","text":"What's Coming in VS 2022 v17.7 for Productivity, .NET/Cloud, C++ and More | #NetInsight #DotNet https://t.co/kBtLcifvbg","entities":{"urls":[{"start":96,"end":119,"url":"https://t.co/kBtLcifvbg","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kkqLo8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","images":[{"url":"https://pbs.twimg.com/news_img/1690751901896413184/JWscS3c0?format=jpg&name=orig","width":647,"height":450},{"url":"https://pbs.twimg.com/news_img/1690751901896413184/JWscS3c0?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"What's Coming in VS 2022 v17.7 for Productivity, .NET/Cloud, C++ and More -- Visual Studio Magazine","description":"With Visual Studio v17.6 becoming generally available recently, Microsoft provided a peek at what's coming up in the next iteration, VS 2022 v17.7","unwound_url":"https://visualstudiomagazine.com/articles/2023/06/02/vs-17-7-preview-1.aspx?oly_enc_id=7243B2866912D7R"}],"hashtags":[{"start":76,"end":87,"tag":"NetInsight"},{"start":88,"end":95,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751895307235328"],"id":"1690751895307235328"},{"author_id":"175627617","created_at":"2023-08-13T15:47:17.000Z","text":"Visual Studio 2022 Previews Instant Pull Requests, Better File Comparisons | #NetInsight #DotNet https://t.co/UxKhEug7Za","entities":{"urls":[{"start":97,"end":120,"url":"https://t.co/UxKhEug7Za","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kkq6o8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","images":[{"url":"https://pbs.twimg.com/news_img/1690751893189128192/12dHEN8U?format=jpg&name=orig","width":647,"height":450},{"url":"https://pbs.twimg.com/news_img/1690751893189128192/12dHEN8U?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Visual Studio 2022 Previews Instant Pull Requests, Better File Comparisons -- Visual Studio Magazine","description":"Visual Studio 2022 17.7 Preview 2 has shipped with a raft of improvements that include community-driven features such as improved file comparisons and instant pull requests from within the IDE.","unwound_url":"https://visualstudiomagazine.com/articles/2023/06/21/vs-2022-17-7-preview-2.aspx?oly_enc_id=7243B2866912D7R"}],"annotations":[{"start":0,"end":12,"probability":0.7035,"type":"Other","normalized_text":"Visual Studio"},{"start":90,"end":95,"probability":0.3995,"type":"Other","normalized_text":"DotNet"}],"hashtags":[{"start":77,"end":88,"tag":"NetInsight"},{"start":89,"end":96,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751888822820864"],"id":"1690751888822820864"},{"author_id":"175627617","created_at":"2023-08-13T15:47:16.000Z","text":"Trust our 20+ years of reporting experience | #NetInsight #DotNet https://t.co/CLvC6E6HQU","entities":{"urls":[{"start":66,"end":89,"url":"https://t.co/CLvC6E6HQU","expanded_url":"https://info.1105edata.com/default.aspx?id=221176","display_url":"info.1105edata.com/default.aspx?i…","images":[{"url":"https://pbs.twimg.com/news_img/1690751908083109888/prK-DmIp?format=png&name=orig","width":359,"height":402},{"url":"https://pbs.twimg.com/news_img/1690751908083109888/prK-DmIp?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Reporting and documents creation library for .NET 7 - Fast Reports","description":"Reporting and documents creation library for .NET 7, .NET Core, ASP.NET, MVC and Windows Forms. Supports .NET Framework 4.x and newer, ,NET Core. Includes online report designer and source code","unwound_url":"https://www.fast-report.com/en/product/fast-report-net/?utm_source=vsm&utm_medium=newsleter&utm_campaign=july_23"}],"hashtags":[{"start":46,"end":57,"tag":"NetInsight"},{"start":58,"end":65,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751882246156288"],"id":"1690751882246156288"},{"author_id":"386830764","created_at":"2023-08-13T15:47:09.000Z","text":"Microsoft Updates Dev Box Cloud Service for GA in July | #NetInsight #DotNet https://t.co/ABR4AHcjsY","entities":{"urls":[{"start":77,"end":100,"url":"https://t.co/ABR4AHcjsY","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kk%5Eqo8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","images":[{"url":"https://pbs.twimg.com/news_img/1690751861702512640/1Dn4w8qN?format=jpg&name=orig","width":647,"height":450},{"url":"https://pbs.twimg.com/news_img/1690751861702512640/1Dn4w8qN?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Microsoft Updates Dev Box Cloud Service for GA in July -- Visual Studio Magazine","description":"At Build 2023, Microsoft revealed updates for Dev Box, a cloud-based developer workstation service.","unwound_url":"https://visualstudiomagazine.com/articles/2023/05/23/build-dev-box.aspx?oly_enc_id=7243B2866912D7R"}],"annotations":[{"start":0,"end":8,"probability":0.9384,"type":"Organization","normalized_text":"Microsoft"},{"start":18,"end":24,"probability":0.52,"type":"Other","normalized_text":"Dev Box"},{"start":44,"end":45,"probability":0.3681,"type":"Other","normalized_text":"GA"},{"start":70,"end":75,"probability":0.4299,"type":"Other","normalized_text":"DotNet"}],"hashtags":[{"start":57,"end":68,"tag":"NetInsight"},{"start":69,"end":76,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751856879038464"],"id":"1690751856879038464"},{"author_id":"386830764","created_at":"2023-08-13T15:47:08.000Z","text":"Build 2023: What Are New Dev Home, Dev Drive and Dev Box? | #NetInsight #DotNet https://t.co/nVHTfkrHoN","entities":{"urls":[{"start":80,"end":103,"url":"https://t.co/nVHTfkrHoN","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kks6o8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","images":[{"url":"https://pbs.twimg.com/news_img/1690751854349783041/F1YId6Q5?format=jpg&name=orig","width":647,"height":450},{"url":"https://pbs.twimg.com/news_img/1690751854349783041/F1YId6Q5?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Build 2023: What Are New Dev Home, Dev Drive and Dev Box? -- Visual Studio Magazine","description":"Emphasizing its 'dev' focus, Microsoft trumpeted its Dev Home, Dev Drive and Dev Box offerings at its Build 2023 developer conference this week.","unwound_url":"https://visualstudiomagazine.com/articles/2023/05/25/build-23-devs.aspx?oly_enc_id=7243B2866912D7R"}],"hashtags":[{"start":60,"end":71,"tag":"NetInsight"},{"start":72,"end":79,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751849853558784"],"id":"1690751849853558784"},{"author_id":"386830764","created_at":"2023-08-13T15:47:06.000Z","text":"Mads Kristensen's Advanced Visual Studio Tips & Tricks | #NetInsight #DotNet https://t.co/f36dqG4bpV","entities":{"urls":[{"start":81,"end":104,"url":"https://t.co/f36dqG4bpV","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kkrqo8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","images":[{"url":"https://pbs.twimg.com/news_img/1690751883391188992/465NzxnS?format=jpg&name=orig","width":647,"height":450},{"url":"https://pbs.twimg.com/news_img/1690751883391188992/465NzxnS?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Mads Kristensen's Advanced Visual Studio Tips & Tricks -- Visual Studio Magazine","description":"Microsoft's Mads Kristensen showed off some advanced Visual Studio tips and tricks ranging from layouts to dev tunnels to solution colors and more.","unwound_url":"https://visualstudiomagazine.com/articles/2023/05/30/mads-tips.aspx?oly_enc_id=7243B2866912D7R"}],"hashtags":[{"start":61,"end":72,"tag":"NetInsight"},{"start":73,"end":80,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751841062338560"],"id":"1690751841062338560"},{"author_id":"386830764","created_at":"2023-08-13T15:47:03.000Z","text":"Developer Feedback Shapes New Visual Studio 'Welcome Experience' | #NetInsight #DotNet https://t.co/r6qYLOQeFU","entities":{"urls":[{"start":87,"end":110,"url":"https://t.co/r6qYLOQeFU","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kkrao8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","images":[{"url":"https://pbs.twimg.com/news_img/1690751833843900416/xUi7yX6R?format=jpg&name=orig","width":647,"height":450},{"url":"https://pbs.twimg.com/news_img/1690751833843900416/xUi7yX6R?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Developer Feedback Shapes New Visual Studio 'Welcome Experience' -- Visual Studio Magazine","description":"Dev team shows how Welcome revamp was first presented and then how it was shaped by community feedback.","unwound_url":"https://visualstudiomagazine.com/articles/2023/06/02/vs-welcome.aspx?oly_enc_id=7243B2866912D7R"}],"hashtags":[{"start":67,"end":78,"tag":"NetInsight"},{"start":79,"end":86,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690751829213319168"],"id":"1690751829213319168"},{"author_id":"3701184373","created_at":"2023-08-13T15:15:05.000Z","text":"Announcing @dotnet_maui in @dotnet 8 Preview 7: Keyboard Accelerators \nDetails and resources: https://t.co/BYzpEXJ3ia\n// @davidortinau\n#dotnet #dotnetdevelopers #maui https://t.co/Jpy9wv9Vm9","entities":{"urls":[{"start":94,"end":117,"url":"https://t.co/BYzpEXJ3ia","expanded_url":"https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-preview-7/","display_url":"devblogs.microsoft.com/dotnet/announc…","images":[{"url":"https://pbs.twimg.com/news_img/1688961734738907147/9WKX_GO0?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1688961734738907147/9WKX_GO0?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Announcing .NET MAUI in .NET 8 Preview 7: Keyboard Accelerators - .NET Blog","description":".NET MAUI in .NET 8 Preview 7 has more new quality improvements for developers, experimental new AOT for iOS, and exciting new Visual Studio support.","unwound_url":"https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-preview-7/"},{"start":167,"end":190,"url":"https://t.co/Jpy9wv9Vm9","expanded_url":"https://twitter.com/dotnet__news/status/1690743785238458368/photo/1","display_url":"pic.twitter.com/Jpy9wv9Vm9","media_key":"3_1690743783229435904"}],"annotations":[{"start":136,"end":141,"probability":0.5271,"type":"Other","normalized_text":"dotnet"},{"start":144,"end":159,"probability":0.5154,"type":"Other","normalized_text":"dotnetdevelopers"},{"start":162,"end":165,"probability":0.4659,"type":"Other","normalized_text":"maui"}],"hashtags":[{"start":135,"end":142,"tag":"dotnet"},{"start":143,"end":160,"tag":"dotnetdevelopers"},{"start":161,"end":166,"tag":"maui"}],"mentions":[{"start":11,"end":23,"username":"dotnet_maui","id":"1313454565786890240"},{"start":27,"end":34,"username":"dotnet","id":"757891106"},{"start":121,"end":134,"username":"davidortinau","id":"14682500"}]},"edit_history_tweet_ids":["1690743785238458368"],"attachments":{"media_keys":["3_1690743783229435904"]},"id":"1690743785238458368"},{"author_id":"1582757073665810435","created_at":"2023-08-13T15:12:14.000Z","text":"Checkout the blog post for: Integrate ChatGPT OpenAI API in .NET Core Console Application from scratch.\n\nhttps://t.co/JygkMF9iD9\n\n#Microsoft #chatgpt4 #ChatGPT账号 #ChatGPT注册 #OpenAIChatGPT #openai #Dotnet #core","entities":{"urls":[{"start":105,"end":128,"url":"https://t.co/JygkMF9iD9","expanded_url":"https://www.dotnetgyaan.in/2023/08/integrate-chatgpt-openai-api-in-net.html","display_url":"dotnetgyaan.in/2023/08/integr…","images":[{"url":"https://pbs.twimg.com/news_img/1690743110194618368/DFPEPD7B?format=jpg&name=orig","width":480,"height":360},{"url":"https://pbs.twimg.com/news_img/1690743110194618368/DFPEPD7B?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Integrate ChatGPT OpenAI API in .NET Core Console Application from scratch.","description":"demonstration of the Integrate ChatGPT OpenAI API in .NET Core Console Application from scratch.","unwound_url":"https://www.dotnetgyaan.in/2023/08/integrate-chatgpt-openai-api-in-net.html"}],"annotations":[{"start":38,"end":51,"probability":0.5218,"type":"Other","normalized_text":"ChatGPT OpenAI"},{"start":61,"end":76,"probability":0.568,"type":"Other","normalized_text":"NET Core Console"},{"start":131,"end":139,"probability":0.7633,"type":"Organization","normalized_text":"Microsoft"}],"hashtags":[{"start":130,"end":140,"tag":"Microsoft"},{"start":141,"end":150,"tag":"chatgpt4"},{"start":151,"end":161,"tag":"ChatGPT账号"},{"start":162,"end":172,"tag":"ChatGPT注册"},{"start":173,"end":187,"tag":"OpenAIChatGPT"},{"start":188,"end":195,"tag":"openai"},{"start":196,"end":203,"tag":"Dotnet"},{"start":204,"end":209,"tag":"core"}]},"edit_history_tweet_ids":["1690743067660185600"],"id":"1690743067660185600"},{"author_id":"175627617","created_at":"2023-08-13T14:47:10.000Z","text":"Microsoft Introduces 'Dev Box' Service for Cloud Workstations | #NetInsight #DotNet https://t.co/d5ba6srVN1","entities":{"urls":[{"start":84,"end":107,"url":"https://t.co/d5ba6srVN1","expanded_url":"https://1105newsletters.com/portal/wts/ue%5EcmQek%5E9mbcEkga7kk%5E6o8EMEP%7C%7Cn%5ENOASD9OyRd","display_url":"1105newsletters.com/portal/wts/ue%…","status":200,"title":"Microsoft Introduces 'Dev Box' Service for Cloud Workstations -- Visual Studio Magazine","description":"Developers will be able to hook into a new cloud service that provides secure, ready-to-code developer workstations for hybrid teams of any size, called Microsoft Dev Box.","unwound_url":"https://visualstudiomagazine.com/articles/2022/05/24/dev-box.aspx?oly_enc_id=7243B2866912D7R"}],"annotations":[{"start":0,"end":8,"probability":0.9841,"type":"Organization","normalized_text":"Microsoft"},{"start":22,"end":28,"probability":0.6925,"type":"Other","normalized_text":"Dev Box"},{"start":77,"end":82,"probability":0.4286,"type":"Organization","normalized_text":"DotNet"}],"hashtags":[{"start":64,"end":75,"tag":"NetInsight"},{"start":76,"end":83,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690736761364795392"],"id":"1690736761364795392"},{"author_id":"18240757","created_at":"2023-08-13T14:44:31.000Z","text":"Every #csharp Type is private / internal and sealed until proven otherwise. #dotnet","edit_history_tweet_ids":["1690736092985626624"],"entities":{"annotations":[{"start":7,"end":12,"probability":0.9576,"type":"Other","normalized_text":"csharp"},{"start":77,"end":82,"probability":0.7457,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":6,"end":13,"tag":"csharp"},{"start":76,"end":83,"tag":"dotnet"}]},"id":"1690736092985626624"},{"author_id":"878214183002583040","created_at":"2023-08-13T14:11:33.000Z","text":"Conduct Virtual Classroom, Anytime Anywhere!\nKnow More: https://t.co/94U2UjO4i2\n\n#virtualclassroom #webdesign #mobileapps #wordpress #shopify #newjersey #lms #logodesign #PHP #DOTNET #KMCBlog #SEO #SEOOPTIMIZATION #websiteoptimization #ecommerce https://t.co/ngmNz8g2lo","entities":{"urls":[{"start":56,"end":79,"url":"https://t.co/94U2UjO4i2","expanded_url":"https://webdesign.kmcconsulting.org/lms-virtual-classroom","display_url":"webdesign.kmcconsulting.org/lms-virtual-cl…","images":[{"url":"https://pbs.twimg.com/news_img/1690727845633380353/wSpg1dTb?format=jpg&name=orig","width":1920,"height":686},{"url":"https://pbs.twimg.com/news_img/1690727845633380353/wSpg1dTb?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Learning Management System, Classroom for Live Collaboration, Integrated Virtual Classroom Fort Mill","description":"We provide learning management system, classroom for live collaboration and integrated virtual classroom in Fort Mill. Contact us now!!","unwound_url":"https://webdesign.kmcconsulting.org/lms-virtual-classroom/"},{"start":246,"end":269,"url":"https://t.co/ngmNz8g2lo","expanded_url":"https://twitter.com/KMCconsulting_/status/1690727798032248833/photo/1","display_url":"pic.twitter.com/ngmNz8g2lo","media_key":"3_1690727795712831488"}],"annotations":[{"start":111,"end":120,"probability":0.5732,"type":"Other","normalized_text":"mobileapps"},{"start":134,"end":140,"probability":0.6902,"type":"Other","normalized_text":"shopify"},{"start":171,"end":173,"probability":0.7677,"type":"Other","normalized_text":"PHP"},{"start":176,"end":181,"probability":0.7153,"type":"Other","normalized_text":"DOTNET"},{"start":184,"end":190,"probability":0.6627,"type":"Other","normalized_text":"KMCBlog"},{"start":193,"end":195,"probability":0.4447,"type":"Other","normalized_text":"SEO"}],"hashtags":[{"start":81,"end":98,"tag":"virtualclassroom"},{"start":99,"end":109,"tag":"webdesign"},{"start":110,"end":121,"tag":"mobileapps"},{"start":122,"end":132,"tag":"wordpress"},{"start":133,"end":141,"tag":"shopify"},{"start":142,"end":152,"tag":"newjersey"},{"start":153,"end":157,"tag":"lms"},{"start":158,"end":169,"tag":"logodesign"},{"start":170,"end":174,"tag":"PHP"},{"start":175,"end":182,"tag":"DOTNET"},{"start":183,"end":191,"tag":"KMCBlog"},{"start":192,"end":196,"tag":"SEO"},{"start":197,"end":213,"tag":"SEOOPTIMIZATION"},{"start":214,"end":234,"tag":"websiteoptimization"},{"start":235,"end":245,"tag":"ecommerce"}]},"edit_history_tweet_ids":["1690727798032248833"],"attachments":{"media_keys":["3_1690727795712831488"]},"id":"1690727798032248833"},{"author_id":"4827584351","created_at":"2023-08-13T13:16:19.000Z","text":"Want to know what's next on the PeachPie roadmap? \uD83D\uDD0D\uD83D\uDCDD Learn about the future of #PHP on .NET and how to get started! \uD83E\uDD1D https://t.co/LgqiJeHq0r \uD83E\uDD13 #peachpie #opensource #oss #dotnet #programming https://t.co/24ZrXiqacJ","entities":{"urls":[{"start":118,"end":141,"url":"https://t.co/LgqiJeHq0r","expanded_url":"https://docs.peachpie.io/roadmap/","display_url":"docs.peachpie.io/roadmap/","status":200,"title":"Roadmap - PeachPie Documentation","description":"PeachPie - PHP Compiler for .NET - Documentation","unwound_url":"https://docs.peachpie.io/roadmap/"},{"start":192,"end":215,"url":"https://t.co/24ZrXiqacJ","expanded_url":"https://twitter.com/pchpcompiler/status/1690713897764782081/photo/1","display_url":"pic.twitter.com/24ZrXiqacJ","media_key":"3_1690713894757580801"}],"annotations":[{"start":32,"end":47,"probability":0.7132,"type":"Other","normalized_text":"PeachPie roadmap"},{"start":80,"end":82,"probability":0.7877,"type":"Other","normalized_text":"PHP"}],"hashtags":[{"start":79,"end":83,"tag":"PHP"},{"start":144,"end":153,"tag":"peachpie"},{"start":154,"end":165,"tag":"opensource"},{"start":166,"end":170,"tag":"oss"},{"start":171,"end":178,"tag":"dotnet"},{"start":179,"end":191,"tag":"programming"}]},"edit_history_tweet_ids":["1690713897764782081"],"attachments":{"media_keys":["3_1690713894757580801"]},"id":"1690713897764782081"},{"author_id":"18672349","created_at":"2023-08-13T13:15:54.000Z","text":"I just published a new version of https://t.co/qTzwrXJcl2 featuring a new generator to implement the properties of an interface inside a class/record/struct, with or without implementing the interface.\n#csharp #dotnet #productivity","entities":{"urls":[{"start":34,"end":57,"url":"https://t.co/qTzwrXJcl2","expanded_url":"https://www.nuget.org/packages/SpeedyGenerators","display_url":"nuget.org/packages/Speed…","images":[{"url":"https://pbs.twimg.com/news_img/1690713794723364864/DkPcwI2M?format=png&name=orig","width":128,"height":128},{"url":"https://pbs.twimg.com/news_img/1690713794723364864/DkPcwI2M?format=png&name=150x150","width":128,"height":128}],"status":200,"title":"SpeedyGenerators 1.1.0","description":"A collection of C# Code generators. Currently implementing INotifyPropertyChanged on various flavors.","unwound_url":"https://www.nuget.org/packages/SpeedyGenerators"}],"annotations":[{"start":203,"end":208,"probability":0.9491,"type":"Other","normalized_text":"csharp"},{"start":211,"end":216,"probability":0.5792,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":202,"end":209,"tag":"csharp"},{"start":210,"end":217,"tag":"dotnet"},{"start":218,"end":231,"tag":"productivity"}]},"edit_history_tweet_ids":["1690713789853757441"],"id":"1690713789853757441"},{"author_id":"107456636","created_at":"2023-08-13T13:12:25.000Z","text":"Samples of #AspNet, #Blazor, #Api with #Net7 y #Net8\nhttps://t.co/bhFx86GxRF\n#dotnet #developer","entities":{"urls":[{"start":53,"end":76,"url":"https://t.co/bhFx86GxRF","expanded_url":"https://github.com/dodyg/practical-aspnetcore","display_url":"github.com/dodyg/practica…","images":[{"url":"https://pbs.twimg.com/news_img/1690382330668474368/e7Ru8Nst?format=jpg&name=orig","width":1200,"height":600},{"url":"https://pbs.twimg.com/news_img/1690382330668474368/e7Ru8Nst?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"GitHub - dodyg/practical-aspnetcore: Practical samples of ASP.NET Core 2.1, 2.2, 3.1, 5.0, 6.0, 7.0 and 8.0 preview 7 projects you can use. Readme contains explanations on all projects.","description":"Practical samples of ASP.NET Core 2.1, 2.2, 3.1, 5.0, 6.0, 7.0 and 8.0 preview 7 projects you can use. Readme contains explanations on all projects. - GitHub - dodyg/practical-aspnetcore: Practical...","unwound_url":"https://github.com/dodyg/practical-aspnetcore"}],"annotations":[{"start":12,"end":17,"probability":0.7479,"type":"Other","normalized_text":"AspNet"},{"start":21,"end":26,"probability":0.8183,"type":"Other","normalized_text":"Blazor"},{"start":30,"end":32,"probability":0.5396,"type":"Other","normalized_text":"Api"},{"start":40,"end":43,"probability":0.5373,"type":"Product","normalized_text":"Net7"},{"start":48,"end":51,"probability":0.5541,"type":"Product","normalized_text":"Net8"},{"start":78,"end":83,"probability":0.3459,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":11,"end":18,"tag":"AspNet"},{"start":20,"end":27,"tag":"Blazor"},{"start":29,"end":33,"tag":"Api"},{"start":39,"end":44,"tag":"Net7"},{"start":47,"end":52,"tag":"Net8"},{"start":77,"end":84,"tag":"dotnet"},{"start":85,"end":95,"tag":"developer"}]},"edit_history_tweet_ids":["1690712913340776448"],"id":"1690712913340776448"},{"author_id":"1660236153151455232","created_at":"2023-08-13T12:36:24.000Z","text":"@dotnet #dotnet #blazor\nhttps://t.co/9L2Jq5Lnl5","entities":{"urls":[{"start":24,"end":47,"url":"https://t.co/9L2Jq5Lnl5","expanded_url":"https://www.fiverr.com/s/vD6zoW?utm_source=Twitter_Mobile","display_url":"fiverr.com/s/vD6zoW?utm_s…","status":200,"title":"Umairtahir786: I will be your expert blazor developer for $150 on fiverr.com","description":"For only $150, Umairtahir786 will be your expert blazor developer. | Crafting Powerful Blazor Web Apps Just for You!Are you ready to bring your web app dreams to life? Look no further! I'm your dedicated Blazor | Fiverr","unwound_url":"https://www.fiverr.com/umairtahir786/be-your-expert-blazor-developer?utm_medium=shared&utm_source=copy_link&utm_campaign=gig&utm_term=vD6zoW"}],"hashtags":[{"start":8,"end":15,"tag":"dotnet"},{"start":16,"end":23,"tag":"blazor"}],"mentions":[{"start":0,"end":7,"username":"dotnet","id":"757891106"}]},"edit_history_tweet_ids":["1690703850775138304"],"id":"1690703850775138304"},{"author_id":"1614046806769557504","created_at":"2023-08-13T12:02:54.000Z","text":"Happy Sunday, friends! Check this out:\n\nBreaking Free From Exceptions – A Different Way Forward\nhttps://t.co/DITzpnCioI\n\n#dotnet #programming #coding #csharp","entities":{"urls":[{"start":96,"end":119,"url":"https://t.co/DITzpnCioI","expanded_url":"https://devleader.substack.com/p/breaking-free-from-exceptions","display_url":"devleader.substack.com/p/breaking-fre…","images":[{"url":"https://pbs.twimg.com/news_img/1690695427505754112/pgxM5VO6?format=jpg&name=orig","width":1200,"height":600},{"url":"https://pbs.twimg.com/news_img/1690695427505754112/pgxM5VO6?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Breaking Free From Exceptions","description":"A Different Way Forward","unwound_url":"https://devleader.substack.com/p/breaking-free-from-exceptions"}],"hashtags":[{"start":121,"end":128,"tag":"dotnet"},{"start":129,"end":141,"tag":"programming"},{"start":142,"end":149,"tag":"coding"},{"start":150,"end":157,"tag":"csharp"}]},"edit_history_tweet_ids":["1690695422317387776"],"id":"1690695422317387776"},{"author_id":"1189051714709512192","created_at":"2023-08-13T10:10:12.000Z","text":"https://t.co/0omSldWBSN\n#ADONET #aspnetcore #ASPNET #aspnetmvc #DotNet #visualstudiocode #vs2022 #database #mssqlserver #MSSQL #webdevelopment #webdeveloper #MVC #core #modelviewcontroller #procedures","entities":{"urls":[{"start":0,"end":23,"url":"https://t.co/0omSldWBSN","expanded_url":"https://youtu.be/6MLLzFZ6P2w","display_url":"youtu.be/6MLLzFZ6P2w","images":[{"url":"https://pbs.twimg.com/news_img/1690667060907692033/4RlpxtoT?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690667060907692033/4RlpxtoT?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"How To Implement CRUD Operations in ASP.NET Using ADO.NET - Complete Guide","description":"Master the art of CRUD (Create, Read, Update, Delete) operations in ASP.NET MVC with our concise ADO.NET tutorial. Learn to seamlessly interact with database...","unwound_url":"https://www.youtube.com/watch?v=6MLLzFZ6P2w&feature=youtu.be"}],"hashtags":[{"start":24,"end":31,"tag":"ADONET"},{"start":32,"end":43,"tag":"aspnetcore"},{"start":44,"end":51,"tag":"ASPNET"},{"start":52,"end":62,"tag":"aspnetmvc"},{"start":63,"end":70,"tag":"DotNet"},{"start":71,"end":88,"tag":"visualstudiocode"},{"start":89,"end":96,"tag":"vs2022"},{"start":97,"end":106,"tag":"database"},{"start":107,"end":119,"tag":"mssqlserver"},{"start":120,"end":126,"tag":"MSSQL"},{"start":127,"end":142,"tag":"webdevelopment"},{"start":143,"end":156,"tag":"webdeveloper"},{"start":157,"end":161,"tag":"MVC"},{"start":162,"end":167,"tag":"core"},{"start":168,"end":188,"tag":"modelviewcontroller"},{"start":189,"end":200,"tag":"procedures"}]},"edit_history_tweet_ids":["1690667060601495552"],"id":"1690667060601495552"},{"author_id":"92782367","created_at":"2023-08-13T10:01:50.000Z","text":"Here's how to create a service class to interact with #Azure Blob Storage in #dotnet\nIf you enjoyed this, you might want to subscribe to my #YouTube channel: https://t.co/ICtyhhMoOd https://t.co/wo8wmLyK8g","entities":{"urls":[{"start":158,"end":181,"url":"https://t.co/ICtyhhMoOd","expanded_url":"https://www.youtube.com/c/Codewrinkles","display_url":"youtube.com/c/Codewrinkles","images":[{"url":"https://pbs.twimg.com/news_img/1688436537136955392/5BFjPUSz?format=jpg&name=orig","width":900,"height":900},{"url":"https://pbs.twimg.com/news_img/1688436537136955392/5BFjPUSz?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Codewrinkles","description":"Your daily does of #DotNet videos. We cover a wide variety of topics like #AspNetCore, #Blazor, EntityFramework Core, software architecture and so much more. You'll also find here regular live coding sessions.","unwound_url":"https://www.youtube.com/c/Codewrinkles"},{"start":182,"end":205,"url":"https://t.co/wo8wmLyK8g","expanded_url":"https://twitter.com/danpdc/status/1690664954544754688/video/1","display_url":"pic.twitter.com/wo8wmLyK8g","media_key":"7_1690664659106340864"}],"annotations":[{"start":55,"end":72,"probability":0.7789,"type":"Other","normalized_text":"Azure Blob Storage"},{"start":78,"end":83,"probability":0.7056,"type":"Other","normalized_text":"dotnet"},{"start":141,"end":147,"probability":0.9672,"type":"Other","normalized_text":"YouTube"}],"hashtags":[{"start":54,"end":60,"tag":"Azure"},{"start":77,"end":84,"tag":"dotnet"},{"start":140,"end":148,"tag":"YouTube"}]},"edit_history_tweet_ids":["1690664954544754688"],"attachments":{"media_keys":["7_1690664659106340864"]},"id":"1690664954544754688"},{"author_id":"1689980569445076992","created_at":"2023-08-13T09:59:25.000Z","text":"What is the output of the following C# code? Explain in the comments \uD83D\uDC47\n\n#coding #developer #csharp #dotnet #engineering #codinglife #development #frontend #programming #engineering #java #python #backend #frontend #javascript #developers #webdeveloper https://t.co/CCzYYTlt09","entities":{"urls":[{"start":252,"end":275,"url":"https://t.co/CCzYYTlt09","expanded_url":"https://twitter.com/CodingxGuru/status/1690664342843232256/photo/1","display_url":"pic.twitter.com/CCzYYTlt09","media_key":"3_1690664073283715072"}],"annotations":[{"start":36,"end":37,"probability":0.5249,"type":"Other","normalized_text":"C#"},{"start":92,"end":97,"probability":0.9284,"type":"Other","normalized_text":"csharp"},{"start":100,"end":105,"probability":0.4893,"type":"Other","normalized_text":"dotnet"},{"start":188,"end":193,"probability":0.6383,"type":"Other","normalized_text":"python"},{"start":215,"end":224,"probability":0.7032,"type":"Other","normalized_text":"javascript"}],"hashtags":[{"start":72,"end":79,"tag":"coding"},{"start":80,"end":90,"tag":"developer"},{"start":91,"end":98,"tag":"csharp"},{"start":99,"end":106,"tag":"dotnet"},{"start":107,"end":119,"tag":"engineering"},{"start":120,"end":131,"tag":"codinglife"},{"start":132,"end":144,"tag":"development"},{"start":145,"end":154,"tag":"frontend"},{"start":155,"end":167,"tag":"programming"},{"start":168,"end":180,"tag":"engineering"},{"start":181,"end":186,"tag":"java"},{"start":187,"end":194,"tag":"python"},{"start":195,"end":203,"tag":"backend"},{"start":204,"end":213,"tag":"frontend"},{"start":214,"end":225,"tag":"javascript"},{"start":226,"end":237,"tag":"developers"},{"start":238,"end":251,"tag":"webdeveloper"}]},"edit_history_tweet_ids":["1690664342843232256"],"attachments":{"media_keys":["3_1690664073283715072"]},"id":"1690664342843232256"},{"author_id":"937366240061984768","created_at":"2023-08-13T07:44:13.000Z","text":"What is Middleware in .NET Core?\n#dotnet, #netcore, .NET https://t.co/yyIkHxpoJP","entities":{"urls":[{"start":57,"end":80,"url":"https://t.co/yyIkHxpoJP","expanded_url":"https://twitter.com/urskksv/status/1690630321262542848/photo/1","display_url":"pic.twitter.com/yyIkHxpoJP","media_key":"3_1690630143382028288"}],"annotations":[{"start":8,"end":17,"probability":0.6247,"type":"Other","normalized_text":"Middleware"},{"start":23,"end":30,"probability":0.7171,"type":"Other","normalized_text":"NET Core"},{"start":34,"end":39,"probability":0.4714,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":33,"end":40,"tag":"dotnet"},{"start":42,"end":50,"tag":"netcore"}]},"edit_history_tweet_ids":["1690630321262542848"],"attachments":{"media_keys":["3_1690630143382028288"]},"id":"1690630321262542848"},{"author_id":"1689980569445076992","created_at":"2023-08-13T07:39:53.000Z","text":"What is the default access modifier for a class in C#?\n\n#developers #codinglife #csharp #dotnet #engineering #development #backend #frontend #javascript #typescript #python","edit_history_tweet_ids":["1690629229635837953"],"entities":{"annotations":[{"start":51,"end":52,"probability":0.7429,"type":"Other","normalized_text":"C#"},{"start":81,"end":86,"probability":0.9512,"type":"Other","normalized_text":"csharp"},{"start":89,"end":94,"probability":0.627,"type":"Other","normalized_text":"dotnet"},{"start":142,"end":151,"probability":0.776,"type":"Other","normalized_text":"javascript"},{"start":154,"end":163,"probability":0.6643,"type":"Other","normalized_text":"typescript"},{"start":166,"end":171,"probability":0.7127,"type":"Other","normalized_text":"python"}],"hashtags":[{"start":56,"end":67,"tag":"developers"},{"start":68,"end":79,"tag":"codinglife"},{"start":80,"end":87,"tag":"csharp"},{"start":88,"end":95,"tag":"dotnet"},{"start":96,"end":108,"tag":"engineering"},{"start":109,"end":121,"tag":"development"},{"start":122,"end":130,"tag":"backend"},{"start":131,"end":140,"tag":"frontend"},{"start":141,"end":152,"tag":"javascript"},{"start":153,"end":164,"tag":"typescript"},{"start":165,"end":172,"tag":"python"}]},"id":"1690629229635837953"},{"author_id":"377897280","created_at":"2023-08-13T07:28:21.000Z","text":"Let's all agree with this \uD83D\uDC4D\uD83D\uDCAF\n\n#github #git #DevOps #programmers #SoftwareDevelopers #python #DataScience Flutter #dotnet #dotnetmaui #blazor ReactJS React Native Javascript https://t.co/81DgvKtUfs","entities":{"urls":[{"start":173,"end":196,"url":"https://t.co/81DgvKtUfs","expanded_url":"https://twitter.com/muhdamean/status/1690626326774816768/photo/1","display_url":"pic.twitter.com/81DgvKtUfs","media_key":"3_1690626322186321920"}],"annotations":[{"start":122,"end":131,"probability":0.5659,"type":"Other","normalized_text":"dotnetmaui"},{"start":134,"end":139,"probability":0.4841,"type":"Other","normalized_text":"blazor"}],"hashtags":[{"start":30,"end":37,"tag":"github"},{"start":38,"end":42,"tag":"git"},{"start":43,"end":50,"tag":"DevOps"},{"start":51,"end":63,"tag":"programmers"},{"start":64,"end":83,"tag":"SoftwareDevelopers"},{"start":84,"end":91,"tag":"python"},{"start":92,"end":104,"tag":"DataScience"},{"start":113,"end":120,"tag":"dotnet"},{"start":121,"end":132,"tag":"dotnetmaui"},{"start":133,"end":140,"tag":"blazor"}]},"edit_history_tweet_ids":["1690626326774816768"],"attachments":{"media_keys":["3_1690626322186321920"]},"id":"1690626326774816768"},{"author_id":"233838645","created_at":"2023-08-13T07:12:50.000Z","text":"Enable and view logs from cosmos db.\n#Azure #dotnet #cosmosdb \n\nhttps://t.co/1nYgq8ccKA","entities":{"urls":[{"start":64,"end":87,"url":"https://t.co/1nYgq8ccKA","expanded_url":"https://harshmatharu.com/blog/how-to-enable-and-view-logs-from-cosmos-db","display_url":"harshmatharu.com/blog/how-to-en…","images":[{"url":"https://pbs.twimg.com/news_img/1690622432481271808/zGqYlXWb?format=jpg&name=orig","width":1381,"height":691},{"url":"https://pbs.twimg.com/news_img/1690622432481271808/zGqYlXWb?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"How to enable and view logs from Cosmos DB","description":"Learn how to enable and view logs from Cosmos DB with this step-by-step guide. Understand the process of creating a Log Analytics Workspace, configuring diagnostic settings, and accessing Cosmos-specific log tables for effective monitoring and analysis.","unwound_url":"https://harshmatharu.com/blog/how-to-enable-and-view-logs-from-cosmos-db"}],"hashtags":[{"start":37,"end":43,"tag":"Azure"},{"start":44,"end":51,"tag":"dotnet"},{"start":52,"end":61,"tag":"cosmosdb"}]},"edit_history_tweet_ids":["1690622422628843521"],"id":"1690622422628843521"},{"author_id":"986417932606427136","created_at":"2023-08-13T07:12:13.000Z","text":"\uD83D\uDDB1️ Fluent Auto Clicker\n\n\uD83D\uDD28 A project I've been working on for a while now.\n\n\uD83D\uDCCC Simple, easy-to-use, open source, fluent design auto clicker.\n\n\uD83D\uDD17 Still in development: https://t.co/FJpGggtzYI\n\n#autoclicker #csharp #dotnet #FluentUI #Windows #WindowsDev #Windows11 #WinUI https://t.co/J4ykiIbFL5","entities":{"urls":[{"start":164,"end":187,"url":"https://t.co/FJpGggtzYI","expanded_url":"https://github.com/RyanLua/FluentAutoClicker","display_url":"github.com/RyanLua/Fluent…","images":[{"url":"https://pbs.twimg.com/news_img/1690622280081305600/NU79k6zH?format=jpg&name=orig","width":1280,"height":640},{"url":"https://pbs.twimg.com/news_img/1690622280081305600/NU79k6zH?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"GitHub - RyanLua/FluentAutoClicker: \uD83D\uDDB1️ A beautifully designed fluent auto clicker for Windows 10 & 11.","description":"\uD83D\uDDB1️ A beautifully designed fluent auto clicker for Windows 10 & 11. - GitHub - RyanLua/FluentAutoClicker: \uD83D\uDDB1️ A beautifully designed fluent auto clicker for Windows 10 & 11.","unwound_url":"https://github.com/RyanLua/FluentAutoClicker"},{"start":267,"end":290,"url":"https://t.co/J4ykiIbFL5","expanded_url":"https://twitter.com/RaenLua/status/1690622267301232641/photo/1","display_url":"pic.twitter.com/J4ykiIbFL5","media_key":"3_1690622262238724096"},{"start":267,"end":290,"url":"https://t.co/J4ykiIbFL5","expanded_url":"https://twitter.com/RaenLua/status/1690622267301232641/photo/1","display_url":"pic.twitter.com/J4ykiIbFL5","media_key":"3_1690622264499417088"}],"hashtags":[{"start":189,"end":201,"tag":"autoclicker"},{"start":202,"end":209,"tag":"csharp"},{"start":210,"end":217,"tag":"dotnet"},{"start":218,"end":227,"tag":"FluentUI"},{"start":228,"end":236,"tag":"Windows"},{"start":237,"end":248,"tag":"WindowsDev"},{"start":249,"end":259,"tag":"Windows11"},{"start":260,"end":266,"tag":"WinUI"}]},"edit_history_tweet_ids":["1690622267301232641"],"attachments":{"media_keys":["3_1690622262238724096","3_1690622264499417088"]},"id":"1690622267301232641"},{"author_id":"945968262193356800","created_at":"2023-08-13T06:20:40.000Z","text":"What is Delegates in C# .NET? \nWhat is Delegates? https://t.co/C6AcKQnb7v via @CsharpCorner #CSharp #DotNet https://t.co/VNXrevhnrX","entities":{"urls":[{"start":51,"end":74,"url":"https://t.co/C6AcKQnb7v","expanded_url":"https://www.c-sharpcorner.com/article/what-is-delegates-in-c-sharp-net/","display_url":"c-sharpcorner.com/article/what-i…","images":[{"url":"https://pbs.twimg.com/news_img/1690609299322761216/x5co5xEr?format=png&name=orig","width":600,"height":314},{"url":"https://pbs.twimg.com/news_img/1690609299322761216/x5co5xEr?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"What is Delegates in C# .NET?","description":"Delegates in C# act as method pointers, enabling dynamic invocation of methods. They enhance code modularity and flexibility, finding use in event handling, callbacks, and asynchronous programming.","unwound_url":"https://www.c-sharpcorner.com/article/what-is-delegates-in-c-sharp-net/"},{"start":110,"end":133,"url":"https://t.co/VNXrevhnrX","expanded_url":"https://twitter.com/harishchand314/status/1690609294302191616/photo/1","display_url":"pic.twitter.com/VNXrevhnrX","media_key":"3_1690609290896359424"}],"hashtags":[{"start":94,"end":101,"tag":"CSharp"},{"start":102,"end":109,"tag":"DotNet"}],"mentions":[{"start":79,"end":92,"username":"CsharpCorner","id":"241007239"}]},"edit_history_tweet_ids":["1690609294302191616"],"attachments":{"media_keys":["3_1690609290896359424"]},"id":"1690609294302191616"},{"author_id":"4488655693","created_at":"2023-08-13T05:25:25.000Z","text":"Object Oriented Programming (OOP) In C++\nhttps://t.co/nr3trckhXs\n\n#cpp #GCC #Python #php #idle #git #java #javascript #coding #NodeJS #reactjs #DotNet #AI #docker #Rust #Angular #AWS #Azure #SQL #DataScience #HTML #js #Linux #ios #csharp #bash #UNIX #GitHub #programming #udemy","entities":{"urls":[{"start":41,"end":64,"url":"https://t.co/nr3trckhXs","expanded_url":"http://coursegalaxy.com/course/object-oriented-programming-oop-cpp.html","display_url":"coursegalaxy.com/course/object-…","status":200,"title":"Object Oriented Programming (OOP) In C++","description":"Object Oriented Programming (OOP) In C++. Learn Object Oriented Programming (OOP) In C++ to provide flexible, robust and efficient solutions.","unwound_url":"http://coursegalaxy.com/course/object-oriented-programming-oop-cpp.html"}],"annotations":[{"start":72,"end":74,"probability":0.5689,"type":"Other","normalized_text":"GCC"},{"start":77,"end":82,"probability":0.9149,"type":"Other","normalized_text":"Python"},{"start":101,"end":104,"probability":0.6408,"type":"Other","normalized_text":"java"},{"start":107,"end":116,"probability":0.8687,"type":"Other","normalized_text":"javascript"},{"start":127,"end":132,"probability":0.7282,"type":"Other","normalized_text":"NodeJS"},{"start":135,"end":141,"probability":0.5244,"type":"Other","normalized_text":"reactjs"},{"start":144,"end":149,"probability":0.6931,"type":"Other","normalized_text":"DotNet"},{"start":152,"end":153,"probability":0.4328,"type":"Other","normalized_text":"AI"},{"start":170,"end":176,"probability":0.5169,"type":"Other","normalized_text":"Angular"},{"start":184,"end":188,"probability":0.6558,"type":"Other","normalized_text":"Azure"},{"start":191,"end":193,"probability":0.8541,"type":"Other","normalized_text":"SQL"},{"start":196,"end":206,"probability":0.6141,"type":"Other","normalized_text":"DataScience"},{"start":209,"end":212,"probability":0.8525,"type":"Other","normalized_text":"HTML"},{"start":215,"end":216,"probability":0.5798,"type":"Other","normalized_text":"js"},{"start":219,"end":223,"probability":0.9157,"type":"Other","normalized_text":"Linux"},{"start":226,"end":228,"probability":0.7567,"type":"Other","normalized_text":"ios"},{"start":231,"end":236,"probability":0.8247,"type":"Other","normalized_text":"csharp"},{"start":239,"end":242,"probability":0.5197,"type":"Other","normalized_text":"bash"},{"start":245,"end":248,"probability":0.813,"type":"Other","normalized_text":"UNIX"},{"start":251,"end":256,"probability":0.7149,"type":"Other","normalized_text":"GitHub"},{"start":272,"end":276,"probability":0.5379,"type":"Other","normalized_text":"udemy"}],"hashtags":[{"start":66,"end":70,"tag":"cpp"},{"start":71,"end":75,"tag":"GCC"},{"start":76,"end":83,"tag":"Python"},{"start":84,"end":88,"tag":"php"},{"start":89,"end":94,"tag":"idle"},{"start":95,"end":99,"tag":"git"},{"start":100,"end":105,"tag":"java"},{"start":106,"end":117,"tag":"javascript"},{"start":118,"end":125,"tag":"coding"},{"start":126,"end":133,"tag":"NodeJS"},{"start":134,"end":142,"tag":"reactjs"},{"start":143,"end":150,"tag":"DotNet"},{"start":151,"end":154,"tag":"AI"},{"start":155,"end":162,"tag":"docker"},{"start":163,"end":168,"tag":"Rust"},{"start":169,"end":177,"tag":"Angular"},{"start":178,"end":182,"tag":"AWS"},{"start":183,"end":189,"tag":"Azure"},{"start":190,"end":194,"tag":"SQL"},{"start":195,"end":207,"tag":"DataScience"},{"start":208,"end":213,"tag":"HTML"},{"start":214,"end":217,"tag":"js"},{"start":218,"end":224,"tag":"Linux"},{"start":225,"end":229,"tag":"ios"},{"start":230,"end":237,"tag":"csharp"},{"start":238,"end":243,"tag":"bash"},{"start":244,"end":249,"tag":"UNIX"},{"start":250,"end":257,"tag":"GitHub"},{"start":258,"end":270,"tag":"programming"},{"start":271,"end":277,"tag":"udemy"}]},"edit_history_tweet_ids":["1690595390167351296"],"id":"1690595390167351296"},{"author_id":"14078289","created_at":"2023-08-13T05:15:05.000Z","text":"The Adapter design pattern is one of the most common and useful patterns you'll use as a #dotnet developer. Learn when and how to apply it in this short (24 minutes) Pluralsight course:\nhttps://t.co/xQSAUwQn0F","entities":{"urls":[{"start":186,"end":209,"url":"https://t.co/xQSAUwQn0F","expanded_url":"https://bit.ly/426bd5j","display_url":"bit.ly/426bd5j","images":[{"url":"https://pbs.twimg.com/news_img/1690592800063045632/wbnaz1JB?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690592800063045632/wbnaz1JB?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"C# Design Patterns: Adapter","description":"Design patterns help you solve common software problems with known, proven approaches. The adapter design pattern is one of the most common and useful patterns you'll encounter. This course shows you when and how to apply the adapter pattern in C#.","unwound_url":"https://www.pluralsight.com/courses/c-sharp-design-patterns-adapter#sq_hee0t0duo6"}],"annotations":[{"start":90,"end":95,"probability":0.489,"type":"Other","normalized_text":"dotnet"},{"start":166,"end":176,"probability":0.7699,"type":"Other","normalized_text":"Pluralsight"}],"hashtags":[{"start":89,"end":96,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690592790483243008"],"id":"1690592790483243008"},{"author_id":"1678670289196990465","created_at":"2023-08-13T05:09:35.000Z","text":"Why do not you use IPipelineBehavior ?!\nhttps://t.co/yOErufs7cV \n\nYoutube :\nhttps://t.co/a6qeSCyU9K\n\nGitHub :\nhttps://t.co/2wZBPX23e2\n\nTags :\n#cqrs #webapi #aspdotnet #csharp #dotnet #mediatR https://t.co/SkAAEx9sPl","entities":{"urls":[{"start":40,"end":63,"url":"https://t.co/yOErufs7cV","expanded_url":"https://bugandfix.com/why-do-not-you-use-ipipelinebehavior?ref=twitter-share","display_url":"bugandfix.com/why-do-not-you…","images":[{"url":"https://pbs.twimg.com/news_img/1690591407898087425/iNO95AAs?format=jpg&name=orig","width":1200,"height":630},{"url":"https://pbs.twimg.com/news_img/1690591407898087425/iNO95AAs?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Why do not you use IPipelineBehavior ?!","description":"IPipelineBehavior mediatR","unwound_url":"https://bugandfix.com/why-do-not-you-use-ipipelinebehavior?ref=twitter-share"},{"start":76,"end":99,"url":"https://t.co/a6qeSCyU9K","expanded_url":"https://youtu.be/z6ZKAoUL4QE","display_url":"youtu.be/z6ZKAoUL4QE","images":[{"url":"https://pbs.twimg.com/news_img/1690591407663149057/MXS2dw8X?format=jpg&name=orig","width":480,"height":360},{"url":"https://pbs.twimg.com/news_img/1690591407663149057/MXS2dw8X?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Why do not you use IPipelineBehavior ?!","description":"Why do not you use IPipelineBehavior ?!bugandfix.comGitHub :github.com/bugandfix/CQRS-PipelineBehaviour","unwound_url":"https://www.youtube.com/watch?v=z6ZKAoUL4QE&feature=youtu.be"},{"start":110,"end":133,"url":"https://t.co/2wZBPX23e2","expanded_url":"https://github.com/bugandfix/CQRS-PipelineBehaviour","display_url":"github.com/bugandfix/CQRS…","status":200,"title":"GitHub - bugandfix/CQRS-PipelineBehaviour","description":"Contribute to bugandfix/CQRS-PipelineBehaviour development by creating an account on GitHub.","unwound_url":"https://github.com/bugandfix/CQRS-PipelineBehaviour"},{"start":192,"end":215,"url":"https://t.co/SkAAEx9sPl","expanded_url":"https://twitter.com/bugandfixes/status/1690591405368807424/photo/1","display_url":"pic.twitter.com/SkAAEx9sPl","media_key":"3_1690591168373874688"}],"annotations":[{"start":19,"end":35,"probability":0.9523,"type":"Other","normalized_text":"IPipelineBehavior"},{"start":66,"end":72,"probability":0.9755,"type":"Other","normalized_text":"Youtube"},{"start":101,"end":106,"probability":0.8923,"type":"Other","normalized_text":"GitHub"},{"start":143,"end":146,"probability":0.5062,"type":"Other","normalized_text":"cqrs"},{"start":149,"end":154,"probability":0.696,"type":"Other","normalized_text":"webapi"},{"start":157,"end":165,"probability":0.6457,"type":"Other","normalized_text":"aspdotnet"},{"start":168,"end":173,"probability":0.9411,"type":"Other","normalized_text":"csharp"},{"start":176,"end":181,"probability":0.6029,"type":"Other","normalized_text":"dotnet"},{"start":184,"end":190,"probability":0.6327,"type":"Other","normalized_text":"mediatR"}],"hashtags":[{"start":142,"end":147,"tag":"cqrs"},{"start":148,"end":155,"tag":"webapi"},{"start":156,"end":166,"tag":"aspdotnet"},{"start":167,"end":174,"tag":"csharp"},{"start":175,"end":182,"tag":"dotnet"},{"start":183,"end":191,"tag":"mediatR"}]},"edit_history_tweet_ids":["1690591405368807424"],"attachments":{"media_keys":["3_1690591168373874688"]},"id":"1690591405368807424"},{"author_id":"1614046806769557504","created_at":"2023-08-12T23:53:58.000Z","text":"Plugins In #aspnetcore And Other #dotnet Applications!\n\nhttps://t.co/aofcVArkaM\n\n#programming #coding #softwareengineering #softwaredevelopment","entities":{"urls":[{"start":56,"end":79,"url":"https://t.co/aofcVArkaM","expanded_url":"https://www.youtube.com/watch?v=lXsWwWuIiRM","display_url":"youtube.com/watch?v=lXsWwW…","images":[{"url":"https://pbs.twimg.com/news_img/1690511985333481473/y8cARdVh?format=jpg&name=orig","width":480,"height":360},{"url":"https://pbs.twimg.com/news_img/1690511985333481473/y8cARdVh?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Plugins In #aspnetcore And Other #dotnet Applications!","unwound_url":"https://www.youtube.com/watch?v=lXsWwWuIiRM"}],"annotations":[{"start":12,"end":21,"probability":0.7729,"type":"Other","normalized_text":"aspnetcore"},{"start":34,"end":39,"probability":0.5973,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":11,"end":22,"tag":"aspnetcore"},{"start":33,"end":40,"tag":"dotnet"},{"start":81,"end":93,"tag":"programming"},{"start":94,"end":101,"tag":"coding"},{"start":102,"end":122,"tag":"softwareengineering"},{"start":123,"end":143,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690511980216332288"],"id":"1690511980216332288"},{"author_id":"419768306","created_at":"2023-08-12T23:49:50.000Z","text":"Somehow publishing a net6.0/net7.0 app as Portable fails to run on win-x86. weird. #dotnet","edit_history_tweet_ids":["1690510939181731840"],"entities":{"annotations":[{"start":84,"end":89,"probability":0.5946,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":83,"end":90,"tag":"dotnet"}]},"id":"1690510939181731840"},{"author_id":"1115659846496342016","created_at":"2023-08-12T23:42:00.000Z","text":"Trek through the untold wilderness of a .NET API service!\n\n#DEVCommunity #dotNET\nhttps://t.co/YQwJxltRFj","entities":{"urls":[{"start":81,"end":104,"url":"https://t.co/YQwJxltRFj","expanded_url":"https://dev.to/josemariairiarte/navigating-a-standard-net-api-service-a-real-estate-example-1heb","display_url":"dev.to/josemariairiar…","images":[{"url":"https://pbs.twimg.com/news_img/1689656730907709440/bldYoCg4?format=jpg&name=orig","width":1000,"height":500},{"url":"https://pbs.twimg.com/news_img/1689656730907709440/bldYoCg4?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Navigating a Standard .NET API Service: A Real Estate Example","description":"The Buenos Aires Real Estate API Service is a a cutting-edge .NET 7 / EFCore supported API that...","unwound_url":"https://dev.to/josemariairiarte/navigating-a-standard-net-api-service-a-real-estate-example-1heb"}],"annotations":[{"start":45,"end":47,"probability":0.3523,"type":"Other","normalized_text":"API"},{"start":60,"end":71,"probability":0.4268,"type":"Other","normalized_text":"DEVCommunity"},{"start":74,"end":79,"probability":0.4516,"type":"Other","normalized_text":"dotNET"}],"hashtags":[{"start":59,"end":72,"tag":"DEVCommunity"},{"start":73,"end":80,"tag":"dotNET"}]},"edit_history_tweet_ids":["1690508968433532929"],"id":"1690508968433532929"},{"author_id":"348682973","created_at":"2023-08-12T23:12:58.000Z","text":"How objects are stored on heap #dotnet https://t.co/LjRD7RBhqq","entities":{"urls":[{"start":39,"end":62,"url":"https://t.co/LjRD7RBhqq","expanded_url":"https://twitter.com/madnan_rafiq/status/1690501660190064640/photo/1","display_url":"pic.twitter.com/LjRD7RBhqq","media_key":"3_1690501655253377024"}],"annotations":[{"start":32,"end":37,"probability":0.7877,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":31,"end":38,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690501660190064640"],"attachments":{"media_keys":["3_1690501655253377024"]},"id":"1690501660190064640"},{"author_id":"1089089886949265408","created_at":"2023-08-12T21:05:16.000Z","text":"It’s going to be interesting when AOT in #dotnet becomes a thing, and everybody realizes how much ORMs depend on reflection\nI’m considering writing a library that returns data as a dictionary and has abstractions for two-way streaming of data. I did this in Dart and it works well","edit_history_tweet_ids":["1690469524079050752"],"entities":{"hashtags":[{"start":41,"end":48,"tag":"dotnet"}]},"id":"1690469524079050752"},{"author_id":"2355503190","created_at":"2023-08-12T20:39:41.000Z","text":"Novo post no meu blog -> C# 12 - Guia de Referência: artigos, dicas, vídeos e exemplos de utilização -- Link: https://t.co/I3eaChomDf\n\n#csharp12 #csharp #dotnet #dotnet8 #aspnetcore #microsoft https://t.co/Yw1xeujB37","entities":{"urls":[{"start":113,"end":136,"url":"https://t.co/I3eaChomDf","expanded_url":"https://renatogroffe.medium.com/c-12-guia-de-refer%C3%AAncia-artigos-dicas-v%C3%ADdeos-e-exemplos-de-utiliza%C3%A7%C3%A3o-1e113bf4f9e2","display_url":"renatogroffe.medium.com/c-12-guia-de-r…","images":[{"url":"https://pbs.twimg.com/news_img/1690463130520809473/wXMY7enI?format=jpg&name=orig","width":1200,"height":675},{"url":"https://pbs.twimg.com/news_img/1690463130520809473/wXMY7enI?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"C# 12 - Guia de Referência: artigos, dicas, vídeos e exemplos de utilização","description":"O objetivo deste post é agrupar conteúdos gratuitos como artigos, dicas, vídeos e exemplos de utilização que venho produzindo sobre as…","unwound_url":"https://renatogroffe.medium.com/c-12-guia-de-refer%C3%AAncia-artigos-dicas-v%C3%ADdeos-e-exemplos-de-utiliza%C3%A7%C3%A3o-1e113bf4f9e2"},{"start":196,"end":219,"url":"https://t.co/Yw1xeujB37","expanded_url":"https://twitter.com/RenatoGroff/status/1690463085604020224/photo/1","display_url":"pic.twitter.com/Yw1xeujB37","media_key":"3_1690462892221452290"}],"annotations":[{"start":139,"end":146,"probability":0.878,"type":"Other","normalized_text":"csharp12"},{"start":149,"end":154,"probability":0.8937,"type":"Other","normalized_text":"csharp"},{"start":157,"end":162,"probability":0.6871,"type":"Other","normalized_text":"dotnet"},{"start":165,"end":171,"probability":0.6524,"type":"Other","normalized_text":"dotnet8"},{"start":174,"end":183,"probability":0.6095,"type":"Other","normalized_text":"aspnetcore"},{"start":186,"end":194,"probability":0.5324,"type":"Other","normalized_text":"microsoft"}],"hashtags":[{"start":138,"end":147,"tag":"csharp12"},{"start":148,"end":155,"tag":"csharp"},{"start":156,"end":163,"tag":"dotnet"},{"start":164,"end":172,"tag":"dotnet8"},{"start":173,"end":184,"tag":"aspnetcore"},{"start":185,"end":195,"tag":"microsoft"}]},"edit_history_tweet_ids":["1690463085604020224"],"attachments":{"media_keys":["3_1690462892221452290"]},"id":"1690463085604020224"},{"author_id":"52390333","created_at":"2023-08-12T20:34:02.000Z","text":"For those like me affected by recent Moq events, I've taken a first pass at a conversion tool: https://t.co/uIUVXlGMXs\n\nI can handle many scenarios, but there are others to address. I wanted to share, so that you can provide feedback and code samples to help #dotnet #moq","entities":{"urls":[{"start":95,"end":118,"url":"https://t.co/uIUVXlGMXs","expanded_url":"https://MoqToNSubstitute.azurewebsites.net/","display_url":"MoqToNSubstitute.azurewebsites.net","status":200,"title":"Home - Moq to NSubstitute","unwound_url":"https://MoqToNSubstitute.azurewebsites.net/"}],"annotations":[{"start":37,"end":39,"probability":0.7258,"type":"Other","normalized_text":"Moq"},{"start":260,"end":265,"probability":0.4822,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":259,"end":266,"tag":"dotnet"},{"start":267,"end":271,"tag":"moq"}]},"edit_history_tweet_ids":["1690461662065655808"],"id":"1690461662065655808"},{"author_id":"10370632","created_at":"2023-08-12T20:00:00.000Z","text":"Why .NET MAUI is an Upgrade over Xamarin Forms: https://t.co/AtXSxkxDO9 #MAUI #dotnet #dotnetmaui #Xamarin #dev #softwaredevelopment","entities":{"urls":[{"start":49,"end":72,"url":"https://t.co/AtXSxkxDO9","expanded_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/","display_url":"globalgeeknews.com/2023/08/11/why…","status":200,"title":"Why .NET MAUI is an Upgrade over Xamarin Forms - Global Geek News","description":".NET developers looking to take their application UI to the next level need to find out how .NET MAUI is an upgrade to Xamarin Forms.","unwound_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/"}],"annotations":[{"start":5,"end":7,"probability":0.4039,"type":"Other","normalized_text":"NET"},{"start":9,"end":12,"probability":0.2302,"type":"Other","normalized_text":"MAUI"},{"start":33,"end":39,"probability":0.7973,"type":"Other","normalized_text":"Xamarin"},{"start":74,"end":77,"probability":0.5068,"type":"Other","normalized_text":"MAUI"},{"start":80,"end":85,"probability":0.4889,"type":"Other","normalized_text":"dotnet"},{"start":88,"end":97,"probability":0.621,"type":"Other","normalized_text":"dotnetmaui"},{"start":100,"end":106,"probability":0.688,"type":"Other","normalized_text":"Xamarin"}],"hashtags":[{"start":73,"end":78,"tag":"MAUI"},{"start":79,"end":86,"tag":"dotnet"},{"start":87,"end":98,"tag":"dotnetmaui"},{"start":99,"end":107,"tag":"Xamarin"},{"start":108,"end":112,"tag":"dev"},{"start":113,"end":133,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690453097682771969"],"id":"1690453097682771969"},{"author_id":"43045391","created_at":"2023-08-12T20:00:00.000Z","text":"Why .NET MAUI is an Upgrade over Xamarin Forms: https://t.co/Dd5bluRQeq #MAUI #dotnet #dotnetmaui #Xamarin #dev #softwaredevelopment","entities":{"urls":[{"start":49,"end":72,"url":"https://t.co/Dd5bluRQeq","expanded_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/","display_url":"globalgeeknews.com/2023/08/11/why…","status":200,"title":"Why .NET MAUI is an Upgrade over Xamarin Forms - Global Geek News","description":".NET developers looking to take their application UI to the next level need to find out how .NET MAUI is an upgrade to Xamarin Forms.","unwound_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/"}],"annotations":[{"start":5,"end":7,"probability":0.4039,"type":"Other","normalized_text":"NET"},{"start":9,"end":12,"probability":0.2302,"type":"Other","normalized_text":"MAUI"},{"start":33,"end":39,"probability":0.7973,"type":"Other","normalized_text":"Xamarin"},{"start":74,"end":77,"probability":0.5068,"type":"Other","normalized_text":"MAUI"},{"start":80,"end":85,"probability":0.4889,"type":"Other","normalized_text":"dotnet"},{"start":88,"end":97,"probability":0.621,"type":"Other","normalized_text":"dotnetmaui"},{"start":100,"end":106,"probability":0.688,"type":"Other","normalized_text":"Xamarin"}],"hashtags":[{"start":73,"end":78,"tag":"MAUI"},{"start":79,"end":86,"tag":"dotnet"},{"start":87,"end":98,"tag":"dotnetmaui"},{"start":99,"end":107,"tag":"Xamarin"},{"start":108,"end":112,"tag":"dev"},{"start":113,"end":133,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690453097364262912"],"id":"1690453097364262912"},{"author_id":"1524065307777814529","created_at":"2023-08-12T19:28:09.000Z","text":"Found this little gem https://t.co/ReRSJZjmAh\n#dotnet #csharp #sparkframework\nGonna look at this","entities":{"urls":[{"start":22,"end":45,"url":"https://t.co/ReRSJZjmAh","expanded_url":"https://spark-framework.net/","display_url":"spark-framework.net","images":[{"url":"https://pbs.twimg.com/news_img/1690445086226604032/Ci9X6_9B?format=png&name=orig","width":854,"height":665},{"url":"https://pbs.twimg.com/news_img/1690445086226604032/Ci9X6_9B?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"The .NET Web Framework for Makers","description":"Build production ready, full-stack web applications fast without sweating the small stuff. Spark's open-source web framework is simple to get started with: C:\\code > dotnet tool install --global Spark.CLI You now have a full stack ASP.NET app with authentication, authorization, database, mail, scheduled jobs, and lots more! Spark embraces convention, freeing developers to build instead of deliberating mundane details. Spark comes with features like auth, mail, and logging already setup. Freeing you to","unwound_url":"https://spark-framework.net/"}],"annotations":[{"start":47,"end":52,"probability":0.7235,"type":"Other","normalized_text":"dotnet"},{"start":55,"end":60,"probability":0.9692,"type":"Other","normalized_text":"csharp"},{"start":63,"end":76,"probability":0.8181,"type":"Other","normalized_text":"sparkframework"}],"hashtags":[{"start":46,"end":53,"tag":"dotnet"},{"start":54,"end":61,"tag":"csharp"},{"start":62,"end":77,"tag":"sparkframework"}]},"edit_history_tweet_ids":["1690445083785433088"],"id":"1690445083785433088"},{"author_id":"248547864","created_at":"2023-08-12T19:10:34.000Z","text":"\uD83D\uDE80 'Reactive Extensions (RX): A Comprehensive Guide to Asynchronous Programming in JavaScript and .NET'. Dive into the transformative power of #RX and elevate your event-driven apps! \uD83D\uDD17 https://t.co/fXUt53wYUs #AsynchronousProgramming #JavaScript #DotNET #Observables","entities":{"urls":[{"start":184,"end":207,"url":"https://t.co/fXUt53wYUs","expanded_url":"https://www.learninternetgrow.com/mastering-reactive-extensions-asynchronous-programming-js-net/","display_url":"learninternetgrow.com/mastering-reac…","images":[{"url":"https://pbs.twimg.com/news_img/1690440512522555393/uaDZ-WqA?format=jpg&name=orig","width":1155,"height":562},{"url":"https://pbs.twimg.com/news_img/1690440512522555393/uaDZ-WqA?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Mastering Reactive Extensions (RX)","description":"Unlock the power of RX with our comprehensive guide. Dive into asynchronous programming techniques across JavaScript and .NET, and discover the potential of event-driven applications.","unwound_url":"https://www.learninternetgrow.com/mastering-reactive-extensions-asynchronous-programming-js-net/"}],"annotations":[{"start":82,"end":91,"probability":0.8662,"type":"Other","normalized_text":"JavaScript"},{"start":143,"end":144,"probability":0.6734,"type":"Other","normalized_text":"RX"},{"start":209,"end":231,"probability":0.5049,"type":"Other","normalized_text":"AsynchronousProgramming"},{"start":234,"end":243,"probability":0.9178,"type":"Other","normalized_text":"JavaScript"},{"start":246,"end":251,"probability":0.7269,"type":"Other","normalized_text":"DotNET"}],"hashtags":[{"start":142,"end":145,"tag":"RX"},{"start":208,"end":232,"tag":"AsynchronousProgramming"},{"start":233,"end":244,"tag":"JavaScript"},{"start":245,"end":252,"tag":"DotNET"},{"start":253,"end":265,"tag":"Observables"}]},"edit_history_tweet_ids":["1690440658094264320"],"id":"1690440658094264320"},{"author_id":"3105433476","created_at":"2023-08-12T19:09:59.000Z","text":"\uD83D\uDE80 Mastering Reactive Extensions (RX): A Comprehensive Guide to Asynchronous Programming in JavaScript and .NET'. Dive into the transformative power of #RX and elevate your event-driven apps! \uD83D\uDD17 https://t.co/gB011t9beT #AsynchronousProgramming #JavaScript #DotNET #Observables","entities":{"urls":[{"start":193,"end":216,"url":"https://t.co/gB011t9beT","expanded_url":"https://www.learninternetgrow.com/mastering-reactive-extensions-asynchronous-programming-js-net/","display_url":"learninternetgrow.com/mastering-reac…","images":[{"url":"https://pbs.twimg.com/news_img/1690440512522555393/uaDZ-WqA?format=jpg&name=orig","width":1155,"height":562},{"url":"https://pbs.twimg.com/news_img/1690440512522555393/uaDZ-WqA?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Mastering Reactive Extensions (RX)","description":"Unlock the power of RX with our comprehensive guide. Dive into asynchronous programming techniques across JavaScript and .NET, and discover the potential of event-driven applications.","unwound_url":"https://www.learninternetgrow.com/mastering-reactive-extensions-asynchronous-programming-js-net/"}],"annotations":[{"start":63,"end":74,"probability":0.4674,"type":"Other","normalized_text":"Asynchronous"},{"start":91,"end":100,"probability":0.8998,"type":"Other","normalized_text":"JavaScript"},{"start":152,"end":153,"probability":0.6993,"type":"Other","normalized_text":"RX"},{"start":218,"end":240,"probability":0.5356,"type":"Other","normalized_text":"AsynchronousProgramming"},{"start":243,"end":252,"probability":0.9363,"type":"Other","normalized_text":"JavaScript"},{"start":255,"end":260,"probability":0.7392,"type":"Other","normalized_text":"DotNET"}],"hashtags":[{"start":151,"end":154,"tag":"RX"},{"start":217,"end":241,"tag":"AsynchronousProgramming"},{"start":242,"end":253,"tag":"JavaScript"},{"start":254,"end":261,"tag":"DotNET"},{"start":262,"end":274,"tag":"Observables"}]},"edit_history_tweet_ids":["1690440510635159552"],"id":"1690440510635159552"},{"author_id":"1678670289196990465","created_at":"2023-08-12T18:21:20.000Z","text":"NET 8 web API from A to Z\nSection 19 - The Story of Repository\n\nRead Full in : \nhttps://t.co/MaKaQcMxuN\n\nYoutube Video :\nhttps://t.co/75ct4zyVmX\n\nRelated link :\nhttps://t.co/B3lzZmifGW\n\nTags :\n#dotnet\n#aspdotnet\n#csharp\n#rest\n#webapi https://t.co/R3gSnthzW8","entities":{"urls":[{"start":80,"end":103,"url":"https://t.co/MaKaQcMxuN","expanded_url":"https://bugandfix.com/net-8-web-api-the-story-of-repository","display_url":"bugandfix.com/net-8-web-api-…","status":200,"title":".NET 8 Web API - The Story of Repository","description":"https://youtu.be/iI1oKIBq3Rw The Repository Pattern - Click to view","unwound_url":"https://bugandfix.com/net-8-web-api-the-story-of-repository"},{"start":121,"end":144,"url":"https://t.co/75ct4zyVmX","expanded_url":"https://youtu.be/iI1oKIBq3Rw","display_url":"youtu.be/iI1oKIBq3Rw","images":[{"url":"https://pbs.twimg.com/news_img/1690428309832605697/UQf6wJEk?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690428309832605697/UQf6wJEk?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":".NET 8 web API - Section 19 - The Story of Repository","description":"Section 19 - The Story of Repository","unwound_url":"https://www.youtube.com/watch?v=iI1oKIBq3Rw&feature=youtu.be"},{"start":161,"end":184,"url":"https://t.co/B3lzZmifGW","expanded_url":"https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff649690(v=pandp.10)","display_url":"learn.microsoft.com/en-us/previous…","images":[{"url":"https://pbs.twimg.com/news_img/1690428269458280448/taVotew3?format=png&name=orig","width":1201,"height":630},{"url":"https://pbs.twimg.com/news_img/1690428269458280448/taVotew3?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"The Repository Pattern","description":"This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. In many applications, the business logic accesses data from data stores such as databases, SharePoint lists, or Web services. Directly accessing the data can result in the following: You want to maximize the amount of code that can be tested with automation and to isolate the data layer to support unit testing. You access the data source from many locations and","unwound_url":"https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff649690(v=pandp.10)"},{"start":234,"end":257,"url":"https://t.co/R3gSnthzW8","expanded_url":"https://twitter.com/bugandfixes/status/1690428266903977985/photo/1","display_url":"pic.twitter.com/R3gSnthzW8","media_key":"3_1690428264479625216"}],"annotations":[{"start":0,"end":4,"probability":0.6042,"type":"Other","normalized_text":"NET 8"},{"start":10,"end":12,"probability":0.7067,"type":"Other","normalized_text":"API"},{"start":26,"end":32,"probability":0.4975,"type":"Other","normalized_text":"Section"},{"start":39,"end":61,"probability":0.7349,"type":"Other","normalized_text":"The Story of Repository"},{"start":105,"end":111,"probability":0.9399,"type":"Other","normalized_text":"Youtube"},{"start":194,"end":199,"probability":0.5561,"type":"Other","normalized_text":"dotnet"},{"start":202,"end":210,"probability":0.5778,"type":"Other","normalized_text":"aspdotnet"},{"start":213,"end":218,"probability":0.8979,"type":"Other","normalized_text":"csharp"},{"start":227,"end":232,"probability":0.5033,"type":"Other","normalized_text":"webapi"}],"hashtags":[{"start":193,"end":200,"tag":"dotnet"},{"start":201,"end":211,"tag":"aspdotnet"},{"start":212,"end":219,"tag":"csharp"},{"start":220,"end":225,"tag":"rest"},{"start":226,"end":233,"tag":"webapi"}]},"edit_history_tweet_ids":["1690428266903977985"],"attachments":{"media_keys":["3_1690428264479625216"]},"id":"1690428266903977985"},{"author_id":"260316346","created_at":"2023-08-12T18:09:27.000Z","text":"Amid talks on OSS sustainability, let's touch on sponsor perks.\n\nWe rolled out our VSCode extension exclusively for sponsors. However, 78% of the signups have never sponsored the project. \n\nFood for thought. \n#dotnet","edit_history_tweet_ids":["1690425277959098368"],"entities":{"annotations":[{"start":0,"end":3,"probability":0.4536,"type":"Other","normalized_text":"Amid"},{"start":14,"end":16,"probability":0.6006,"type":"Other","normalized_text":"OSS"},{"start":83,"end":88,"probability":0.7215,"type":"Other","normalized_text":"VSCode"},{"start":210,"end":215,"probability":0.3273,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":209,"end":216,"tag":"dotnet"}]},"id":"1690425277959098368"},{"author_id":"43045391","created_at":"2023-08-12T18:00:00.000Z","text":"Embracing Records in C#: The Pros and Cons: https://t.co/mv7GTvjn0d #Dev #Dotnet #development #Csharp #softwaredevelopment","entities":{"urls":[{"start":45,"end":68,"url":"https://t.co/mv7GTvjn0d","expanded_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/","display_url":"globalgeeknews.com/2023/08/09/emb…","images":[{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=orig","width":1024,"height":384},{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Embracing Records in C#: The Pros and Cons - Global Geek News","description":"Are you a .NET software developer that wants to up their C# game? Then you need to know about the language feature, Records in C#!","unwound_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/"}],"annotations":[{"start":21,"end":22,"probability":0.5797,"type":"Other","normalized_text":"C#"},{"start":25,"end":41,"probability":0.6455,"type":"Other","normalized_text":"The Pros and Cons"},{"start":70,"end":72,"probability":0.5424,"type":"Other","normalized_text":"Dev"},{"start":75,"end":80,"probability":0.6754,"type":"Other","normalized_text":"Dotnet"},{"start":96,"end":101,"probability":0.9518,"type":"Other","normalized_text":"Csharp"}],"hashtags":[{"start":69,"end":73,"tag":"Dev"},{"start":74,"end":81,"tag":"Dotnet"},{"start":82,"end":94,"tag":"development"},{"start":95,"end":102,"tag":"Csharp"},{"start":103,"end":123,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690422900153860097"],"id":"1690422900153860097"},{"author_id":"10370632","created_at":"2023-08-12T18:00:00.000Z","text":"Embracing Records in C#: The Pros and Cons: https://t.co/t3alYcWZpv #Dev #Dotnet #development #Csharp #softwaredevelopment","entities":{"urls":[{"start":45,"end":68,"url":"https://t.co/t3alYcWZpv","expanded_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/","display_url":"globalgeeknews.com/2023/08/09/emb…","images":[{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=orig","width":1024,"height":384},{"url":"https://pbs.twimg.com/news_img/1689669285516619777/1COgWgi2?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Embracing Records in C#: The Pros and Cons - Global Geek News","description":"Are you a .NET software developer that wants to up their C# game? Then you need to know about the language feature, Records in C#!","unwound_url":"https://www.globalgeeknews.com/2023/08/09/embracing-records-in-c-the-pros-and-cons/"}],"annotations":[{"start":21,"end":22,"probability":0.5797,"type":"Other","normalized_text":"C#"},{"start":25,"end":41,"probability":0.6455,"type":"Other","normalized_text":"The Pros and Cons"},{"start":70,"end":72,"probability":0.5424,"type":"Other","normalized_text":"Dev"},{"start":75,"end":80,"probability":0.6754,"type":"Other","normalized_text":"Dotnet"},{"start":96,"end":101,"probability":0.9518,"type":"Other","normalized_text":"Csharp"}],"hashtags":[{"start":69,"end":73,"tag":"Dev"},{"start":74,"end":81,"tag":"Dotnet"},{"start":82,"end":94,"tag":"development"},{"start":95,"end":102,"tag":"Csharp"},{"start":103,"end":123,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690422898467688448"],"id":"1690422898467688448"},{"author_id":"14284977","created_at":"2023-08-12T17:26:59.000Z","text":"https://t.co/v6jJ57QZiV - Finally, my #dotnet library v3.0.0 now supports running cross-platform on Windows, OSX and Linux using minimum postgres binaries around 10mb for use in unit tests.","entities":{"urls":[{"start":0,"end":23,"url":"https://t.co/v6jJ57QZiV","expanded_url":"https://github.com/mysticmind/mysticmind-postgresembed/releases/tag/3.0.0","display_url":"github.com/mysticmind/mys…","images":[{"url":"https://pbs.twimg.com/news_img/1690414593519271936/z6lDyrWa?format=jpg&name=orig","width":1200,"height":600},{"url":"https://pbs.twimg.com/news_img/1690414593519271936/z6lDyrWa?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Release 3.0.0 · mysticmind/mysticmind-postgresembed","description":"What's Changed Add support to use a different minimum embedded postgres by @mysticmind in #26 Add support to run the tool cross-platform and multi-arch supporting Windows, Linux and OSX (inclu...","unwound_url":"https://github.com/mysticmind/mysticmind-postgresembed/releases/tag/3.0.0"}],"annotations":[{"start":39,"end":52,"probability":0.6261,"type":"Other","normalized_text":"dotnet library"},{"start":100,"end":106,"probability":0.9729,"type":"Other","normalized_text":"Windows"},{"start":109,"end":111,"probability":0.8568,"type":"Other","normalized_text":"OSX"},{"start":117,"end":121,"probability":0.9645,"type":"Other","normalized_text":"Linux"}],"hashtags":[{"start":38,"end":45,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690414589765439488"],"id":"1690414589765439488"},{"author_id":"241007239","created_at":"2023-08-12T16:30:27.000Z","text":"We are going live in 30 mins. Stay tuned!!! \n\nDon't miss the opportunity to engage with our guest. Feel free to ask your questions during the live session.\n\nLive streaming at https://t.co/tG9Yb07USj\n\n#LiveShow #Dotnetdave #dotnetforall #CsharpDotTv #DOTNET #RockinCodeWorld… https://t.co/82vANhCttY https://t.co/mnnh5oQEAO","entities":{"urls":[{"start":175,"end":198,"url":"https://t.co/tG9Yb07USj","expanded_url":"http://csharp.tv","display_url":"csharp.tv","unwound_url":"http://csharp.tv"},{"start":275,"end":298,"url":"https://t.co/82vANhCttY","expanded_url":"https://twitter.com/i/web/status/1690400362228850688","display_url":"twitter.com/i/web/status/1…"},{"start":299,"end":322,"url":"https://t.co/mnnh5oQEAO","expanded_url":"https://twitter.com/CSharpDotTV/status/1690265473429180416","display_url":"twitter.com/CSharpDotTV/st…"}],"annotations":[{"start":211,"end":220,"probability":0.649,"type":"Other","normalized_text":"Dotnetdave"},{"start":223,"end":234,"probability":0.6153,"type":"Other","normalized_text":"dotnetforall"},{"start":237,"end":247,"probability":0.842,"type":"Other","normalized_text":"CsharpDotTv"},{"start":250,"end":255,"probability":0.6167,"type":"Other","normalized_text":"DOTNET"},{"start":258,"end":272,"probability":0.4888,"type":"Other","normalized_text":"RockinCodeWorld"}],"hashtags":[{"start":200,"end":209,"tag":"LiveShow"},{"start":210,"end":221,"tag":"Dotnetdave"},{"start":222,"end":235,"tag":"dotnetforall"},{"start":236,"end":248,"tag":"CsharpDotTv"},{"start":249,"end":256,"tag":"DOTNET"},{"start":257,"end":273,"tag":"RockinCodeWorld"}]},"edit_history_tweet_ids":["1690400362228850688"],"id":"1690400362228850688"},{"author_id":"1394990462725918724","created_at":"2023-08-12T16:29:30.000Z","text":"I programmed my Resume to be as an application using .Net framework \n\n#Dotnet #developer #programming #Resume #cv #jobreceh #Jobs #jobsearch #maui #SoftwareEngineering #softwaredevelopment https://t.co/PiAdjbSdaZ","entities":{"urls":[{"start":189,"end":212,"url":"https://t.co/PiAdjbSdaZ","expanded_url":"https://twitter.com/skullsameh1/status/1690400125489758209/video/1","display_url":"pic.twitter.com/PiAdjbSdaZ","media_key":"7_1690400079297859584"}],"annotations":[{"start":71,"end":76,"probability":0.5439,"type":"Other","normalized_text":"Dotnet"}],"hashtags":[{"start":70,"end":77,"tag":"Dotnet"},{"start":78,"end":88,"tag":"developer"},{"start":89,"end":101,"tag":"programming"},{"start":102,"end":109,"tag":"Resume"},{"start":110,"end":113,"tag":"cv"},{"start":114,"end":123,"tag":"jobreceh"},{"start":124,"end":129,"tag":"Jobs"},{"start":130,"end":140,"tag":"jobsearch"},{"start":141,"end":146,"tag":"maui"},{"start":147,"end":167,"tag":"SoftwareEngineering"},{"start":168,"end":188,"tag":"softwaredevelopment"}]},"edit_history_tweet_ids":["1690400125489758209"],"attachments":{"media_keys":["7_1690400079297859584"]},"id":"1690400125489758209"},{"author_id":"347196451","created_at":"2023-08-12T15:51:47.000Z","text":".NET .gcdump Internals. Learn what the .NET CLR does behind the… | by Christophe Nasarre | Aug, 2023 | Medium https://t.co/h5pkAt4usG #dotnet #GCInternals","entities":{"urls":[{"start":110,"end":133,"url":"https://t.co/h5pkAt4usG","expanded_url":"https://chnasarre.medium.com/net-gcdump-internals-fcce5d327be7","display_url":"chnasarre.medium.com/net-gcdump-int…","images":[{"url":"https://pbs.twimg.com/news_img/1690066955552849923/NB-2DMiT?format=jpg&name=orig","width":1200,"height":668},{"url":"https://pbs.twimg.com/news_img/1690066955552849923/NB-2DMiT?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":".NET .gcdump Internals","description":"Learn what the .NET CLR does behind the scene to help the tools to generate a .gcdump!","unwound_url":"https://chnasarre.medium.com/net-gcdump-internals-fcce5d327be7"}],"annotations":[{"start":44,"end":46,"probability":0.3627,"type":"Other","normalized_text":"CLR"},{"start":70,"end":87,"probability":0.9236,"type":"Person","normalized_text":"Christophe Nasarre"}],"hashtags":[{"start":134,"end":141,"tag":"dotnet"},{"start":142,"end":154,"tag":"GCInternals"}]},"edit_history_tweet_ids":["1690390634933182464"],"id":"1690390634933182464"},{"author_id":"33592476","created_at":"2023-08-12T15:30:12.000Z","text":"Running into issues finding your NuGet packages? If you're missing the default NuGet feed, @KyleMcMaster blogged how to fix that missing default NuGet feed. Check it out here: https://t.co/yj5F2LzfbZ #PackageManagement #dotnet #NuGet https://t.co/zGTWfxo8HS","entities":{"urls":[{"start":176,"end":199,"url":"https://t.co/yj5F2LzfbZ","expanded_url":"https://bit.ly/43qW5AM","display_url":"bit.ly/43qW5AM","images":[{"url":"https://pbs.twimg.com/news_img/1690385203502383106/CMYGlwX4?format=png&name=orig","width":667,"height":334},{"url":"https://pbs.twimg.com/news_img/1690385203502383106/CMYGlwX4?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Fix Missing Default NuGet Feed","description":"Fix missing default NuGet feed","unwound_url":"https://blog.nimblepros.com/blogs/fix-missing-default-nuget-feed/#sq_her43cyb5n"},{"start":234,"end":257,"url":"https://t.co/zGTWfxo8HS","expanded_url":"https://twitter.com/nimblepros/status/1690385200360931330/photo/1","display_url":"pic.twitter.com/zGTWfxo8HS","media_key":"3_1690385198695743488"}],"annotations":[{"start":33,"end":37,"probability":0.7915,"type":"Other","normalized_text":"NuGet"},{"start":79,"end":83,"probability":0.823,"type":"Other","normalized_text":"NuGet"},{"start":145,"end":149,"probability":0.7939,"type":"Other","normalized_text":"NuGet"},{"start":220,"end":225,"probability":0.4466,"type":"Other","normalized_text":"dotnet"},{"start":228,"end":232,"probability":0.4666,"type":"Other","normalized_text":"NuGet"}],"hashtags":[{"start":200,"end":218,"tag":"PackageManagement"},{"start":219,"end":226,"tag":"dotnet"},{"start":227,"end":233,"tag":"NuGet"}],"mentions":[{"start":91,"end":104,"username":"KyleMcMaster","id":"45497638"}]},"edit_history_tweet_ids":["1690385200360931330"],"attachments":{"media_keys":["3_1690385198695743488"]},"id":"1690385200360931330"},{"author_id":"239538962","created_at":"2023-08-12T15:20:48.000Z","text":"is there still a reason to NOT use containers, serverless, docker infrastructure in 2023? Who still uses IIS, Manual Deployments, Virtual Machines for greenfield projects? Would anyone make something new with .NET Framework? #dotnet #docker #k8s #serverless #coding #programming","edit_history_tweet_ids":["1690382835809427456"],"entities":{"annotations":[{"start":105,"end":107,"probability":0.6589,"type":"Other","normalized_text":"IIS"},{"start":210,"end":222,"probability":0.5875,"type":"Other","normalized_text":"NET Framework"},{"start":226,"end":231,"probability":0.5426,"type":"Other","normalized_text":"dotnet"},{"start":242,"end":244,"probability":0.5203,"type":"Other","normalized_text":"k8s"}],"hashtags":[{"start":225,"end":232,"tag":"dotnet"},{"start":233,"end":240,"tag":"docker"},{"start":241,"end":245,"tag":"k8s"},{"start":246,"end":257,"tag":"serverless"},{"start":258,"end":265,"tag":"coding"},{"start":266,"end":278,"tag":"programming"}]},"id":"1690382835809427456"},{"author_id":"783281111262695424","created_at":"2023-08-12T15:18:08.000Z","text":"\uD83C\uDF93 Seeking knowledge vibes! \uD83E\uDD13 Ready to dive into the world of #Microservices in #DotNet. \uD83D\uDE80 Any seasoned devs out there with must-watch @YouTube tutorials or helpful resources? Drop those links below and let's level up together! \uD83D\uDCDA\uD83D\uDCBB #CodingCommunity #LearnWithMe","edit_history_tweet_ids":["1690382164003622912"],"entities":{"annotations":[{"start":80,"end":85,"probability":0.6232,"type":"Other","normalized_text":"DotNet"}],"hashtags":[{"start":61,"end":75,"tag":"Microservices"},{"start":79,"end":86,"tag":"DotNet"},{"start":230,"end":246,"tag":"CodingCommunity"},{"start":247,"end":259,"tag":"LearnWithMe"}],"mentions":[{"start":134,"end":142,"username":"YouTube","id":"10228272"}]},"id":"1690382164003622912"},{"author_id":"160736645","created_at":"2023-08-12T15:06:56.000Z","text":"\uD83D\uDD25 Estamos Online\uD83D\uDD25\n\nhttps://t.co/cvnAlP7FYz\n\n#Blazor #Dotnet #MVPBuzz https://t.co/2o0ow04QVb","entities":{"urls":[{"start":19,"end":42,"url":"https://t.co/cvnAlP7FYz","expanded_url":"https://www.youtube.com/watch?v=FN8a2I7tN4k","display_url":"youtube.com/watch?v=FN8a2I…","images":[{"url":"https://pbs.twimg.com/news_img/1689652879013928960/WVVzTGaQ?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1689652879013928960/WVVzTGaQ?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Evento: Blazor For All 2023 \uD83D\uDD25","unwound_url":"https://www.youtube.com/watch?v=FN8a2I7tN4k"},{"start":69,"end":92,"url":"https://t.co/2o0ow04QVb","expanded_url":"https://twitter.com/latinonetonline/status/1690355355107065856","display_url":"twitter.com/latinonetonlin…"}],"annotations":[{"start":45,"end":50,"probability":0.395,"type":"Other","normalized_text":"Blazor"},{"start":53,"end":58,"probability":0.3858,"type":"Other","normalized_text":"Dotnet"}],"hashtags":[{"start":44,"end":51,"tag":"Blazor"},{"start":52,"end":59,"tag":"Dotnet"},{"start":60,"end":68,"tag":"MVPBuzz"}]},"edit_history_tweet_ids":["1690379344496017410"],"id":"1690379344496017410"},{"author_id":"2944865614","created_at":"2023-08-12T15:02:06.000Z","text":"The first opensource #blazor UI library that reach 5 million NuGet downloads. Congratulations @MudBlazor. #dotnet https://t.co/WEWftGFJCc","entities":{"urls":[{"start":114,"end":137,"url":"https://t.co/WEWftGFJCc","expanded_url":"https://twitter.com/KaragozMCan/status/1690378129288699904/photo/1","display_url":"pic.twitter.com/WEWftGFJCc","media_key":"3_1690377538986459136"}],"annotations":[{"start":22,"end":27,"probability":0.686,"type":"Other","normalized_text":"blazor"},{"start":29,"end":30,"probability":0.2718,"type":"Other","normalized_text":"UI"},{"start":61,"end":65,"probability":0.8085,"type":"Other","normalized_text":"NuGet"},{"start":107,"end":112,"probability":0.5655,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":21,"end":28,"tag":"blazor"},{"start":106,"end":113,"tag":"dotnet"}],"mentions":[{"start":94,"end":104,"username":"MudBlazor","id":"1337114731551797253"}]},"edit_history_tweet_ids":["1690378129288699904"],"attachments":{"media_keys":["3_1690377538986459136"]},"id":"1690378129288699904"},{"author_id":"84602512","created_at":"2023-08-12T15:00:01.000Z","text":"I've got a good memory . . . but it's short!!\n\n#javascript #WordPress #PHP #CSharp #DotNet #women #WomenWhoCode #womenintech #WomenInSTEM #AI #MachineLearning #100DaysOfCode #tech #Coding","edit_history_tweet_ids":["1690377606515003394"],"entities":{"annotations":[{"start":48,"end":57,"probability":0.816,"type":"Other","normalized_text":"javascript"},{"start":60,"end":68,"probability":0.857,"type":"Other","normalized_text":"WordPress"},{"start":71,"end":73,"probability":0.8378,"type":"Other","normalized_text":"PHP"},{"start":76,"end":81,"probability":0.7477,"type":"Other","normalized_text":"CSharp"},{"start":84,"end":89,"probability":0.5695,"type":"Other","normalized_text":"DotNet"},{"start":139,"end":140,"probability":0.509,"type":"Organization","normalized_text":"AI"}],"hashtags":[{"start":47,"end":58,"tag":"javascript"},{"start":59,"end":69,"tag":"WordPress"},{"start":70,"end":74,"tag":"PHP"},{"start":75,"end":82,"tag":"CSharp"},{"start":83,"end":90,"tag":"DotNet"},{"start":91,"end":97,"tag":"women"},{"start":98,"end":111,"tag":"WomenWhoCode"},{"start":112,"end":124,"tag":"womenintech"},{"start":125,"end":137,"tag":"WomenInSTEM"},{"start":138,"end":141,"tag":"AI"},{"start":142,"end":158,"tag":"MachineLearning"},{"start":159,"end":173,"tag":"100DaysOfCode"},{"start":174,"end":179,"tag":"tech"},{"start":180,"end":187,"tag":"Coding"}]},"id":"1690377606515003394"},{"author_id":"84602512","created_at":"2023-08-12T14:45:00.000Z","text":"Make the rest of your life the best of your life.\n\n#javascript #WordPress #PHP #CSharp #DotNet #women #WomenWhoCode #womenintech #WomenInSTEM #AI #MachineLearning #100DaysOfCode #tech #Coding","edit_history_tweet_ids":["1690373825249034240"],"entities":{"annotations":[{"start":52,"end":61,"probability":0.6561,"type":"Other","normalized_text":"javascript"},{"start":64,"end":72,"probability":0.8433,"type":"Other","normalized_text":"WordPress"},{"start":75,"end":77,"probability":0.7446,"type":"Other","normalized_text":"PHP"},{"start":80,"end":85,"probability":0.5776,"type":"Other","normalized_text":"CSharp"},{"start":88,"end":93,"probability":0.4499,"type":"Other","normalized_text":"DotNet"},{"start":143,"end":144,"probability":0.667,"type":"Organization","normalized_text":"AI"}],"hashtags":[{"start":51,"end":62,"tag":"javascript"},{"start":63,"end":73,"tag":"WordPress"},{"start":74,"end":78,"tag":"PHP"},{"start":79,"end":86,"tag":"CSharp"},{"start":87,"end":94,"tag":"DotNet"},{"start":95,"end":101,"tag":"women"},{"start":102,"end":115,"tag":"WomenWhoCode"},{"start":116,"end":128,"tag":"womenintech"},{"start":129,"end":141,"tag":"WomenInSTEM"},{"start":142,"end":145,"tag":"AI"},{"start":146,"end":162,"tag":"MachineLearning"},{"start":163,"end":177,"tag":"100DaysOfCode"},{"start":178,"end":183,"tag":"tech"},{"start":184,"end":191,"tag":"Coding"}]},"id":"1690373825249034240"},{"author_id":"122122818","created_at":"2023-08-12T14:00:48.000Z","text":"What’s Next in C# https://t.co/O3dgw014tE #csharp #dotnet","entities":{"urls":[{"start":18,"end":41,"url":"https://t.co/O3dgw014tE","expanded_url":"https://buff.ly/449aUHM","display_url":"buff.ly/449aUHM","images":[{"url":"https://pbs.twimg.com/news_img/1690030324732891137/iN1qKGIo?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690030324732891137/iN1qKGIo?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"What’s Next in C#","description":"Join Dustin and Mads on a tour of recent and upcoming language features in C#. While still very much in the works, C# 12 is starting to take shape. We touch ...","unwound_url":"https://www.youtube.com/watch?v=D8-jIdLKCdA"}],"annotations":[{"start":15,"end":15,"probability":0.4479,"type":"Other","normalized_text":"C"},{"start":43,"end":48,"probability":0.9788,"type":"Other","normalized_text":"csharp"},{"start":51,"end":56,"probability":0.7937,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":42,"end":49,"tag":"csharp"},{"start":50,"end":57,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690362704488194048"],"id":"1690362704488194048"},{"author_id":"84602512","created_at":"2023-08-12T14:00:01.000Z","text":"\"One important key to success is self-confidence. An important key to self-confidence is preparation.\" -Arthur Ashe\n\n#javascript #WordPress #PHP #CSharp #DotNet #women #WomenWhoCode #womenintech #WomenInSTEM #AI #MachineLearning #100DaysOfCode #tech #Coding","edit_history_tweet_ids":["1690362504378306560"],"entities":{"annotations":[{"start":104,"end":114,"probability":0.9662,"type":"Person","normalized_text":"Arthur Ashe"},{"start":118,"end":127,"probability":0.5719,"type":"Other","normalized_text":"javascript"},{"start":130,"end":138,"probability":0.7554,"type":"Other","normalized_text":"WordPress"},{"start":141,"end":143,"probability":0.6659,"type":"Other","normalized_text":"PHP"},{"start":146,"end":151,"probability":0.586,"type":"Other","normalized_text":"CSharp"},{"start":154,"end":159,"probability":0.447,"type":"Other","normalized_text":"DotNet"},{"start":209,"end":210,"probability":0.4753,"type":"Organization","normalized_text":"AI"}],"hashtags":[{"start":117,"end":128,"tag":"javascript"},{"start":129,"end":139,"tag":"WordPress"},{"start":140,"end":144,"tag":"PHP"},{"start":145,"end":152,"tag":"CSharp"},{"start":153,"end":160,"tag":"DotNet"},{"start":161,"end":167,"tag":"women"},{"start":168,"end":181,"tag":"WomenWhoCode"},{"start":182,"end":194,"tag":"womenintech"},{"start":195,"end":207,"tag":"WomenInSTEM"},{"start":208,"end":211,"tag":"AI"},{"start":212,"end":228,"tag":"MachineLearning"},{"start":229,"end":243,"tag":"100DaysOfCode"},{"start":244,"end":249,"tag":"tech"},{"start":250,"end":257,"tag":"Coding"}]},"id":"1690362504378306560"},{"author_id":"1238468750921412609","created_at":"2023-08-12T13:31:36.000Z","text":"\uD83D\uDD25 Hoy celebramos el evento #BlazorForAll2023 \uD83D\uDD25\n\nEl unico evento dedicado a #Blazor hecho por la comunidad\uD83D\uDE09\n\n5 Charlas \uD83D\uDCAA\n5 Speakers \uD83C\uDFA4\n5 Cursos que se van a sortear \uD83C\uDF81\n\nhttps://t.co/6ayvRQhq4N\n\nLos esperamos \uD83D\uDE09\n\n#Dotnet #MVPBuzz https://t.co/IopBPwPSof","entities":{"urls":[{"start":166,"end":189,"url":"https://t.co/6ayvRQhq4N","expanded_url":"https://www.youtube.com/watch?v=FN8a2I7tN4k","display_url":"youtube.com/watch?v=FN8a2I…","images":[{"url":"https://pbs.twimg.com/news_img/1689652879013928960/WVVzTGaQ?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1689652879013928960/WVVzTGaQ?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Evento: Blazor For All 2023 \uD83D\uDD25","unwound_url":"https://www.youtube.com/watch?v=FN8a2I7tN4k"},{"start":225,"end":248,"url":"https://t.co/IopBPwPSof","expanded_url":"https://twitter.com/latinonetonline/status/1690355355107065856/photo/1","display_url":"pic.twitter.com/IopBPwPSof","media_key":"3_1690355106611339265"}],"annotations":[{"start":28,"end":43,"probability":0.5999,"type":"Other","normalized_text":"BlazorForAll2023"},{"start":76,"end":81,"probability":0.4481,"type":"Other","normalized_text":"Blazor"},{"start":108,"end":116,"probability":0.5363,"type":"Other","normalized_text":"5 Charlas"},{"start":209,"end":214,"probability":0.3607,"type":"Organization","normalized_text":"Dotnet"},{"start":217,"end":223,"probability":0.5058,"type":"Other","normalized_text":"MVPBuzz"}],"hashtags":[{"start":27,"end":44,"tag":"BlazorForAll2023"},{"start":75,"end":82,"tag":"Blazor"},{"start":208,"end":215,"tag":"Dotnet"},{"start":216,"end":224,"tag":"MVPBuzz"}]},"edit_history_tweet_ids":["1690355355107065856"],"attachments":{"media_keys":["3_1690355106611339265"]},"id":"1690355355107065856"},{"author_id":"230294475","created_at":"2023-08-12T13:24:51.000Z","text":"Do you know about tuple types in C#? Tuples are an extremely versatile and convenient way of working with lightweight record-like data structures, they support equality operators out-of-the-box and can even be used as dictionary keys!\n\n#dotnet #csharp https://t.co/O10t0lXx9p","entities":{"urls":[{"start":252,"end":275,"url":"https://t.co/O10t0lXx9p","expanded_url":"https://twitter.com/lesterbotello/status/1690353655013158913/photo/1","display_url":"pic.twitter.com/O10t0lXx9p","media_key":"3_1690353581860237313"},{"start":252,"end":275,"url":"https://t.co/O10t0lXx9p","expanded_url":"https://twitter.com/lesterbotello/status/1690353655013158913/photo/1","display_url":"pic.twitter.com/O10t0lXx9p","media_key":"3_1690353593906327552"},{"start":252,"end":275,"url":"https://t.co/O10t0lXx9p","expanded_url":"https://twitter.com/lesterbotello/status/1690353655013158913/photo/1","display_url":"pic.twitter.com/O10t0lXx9p","media_key":"3_1690353605050585090"}],"annotations":[{"start":33,"end":35,"probability":0.8696,"type":"Other","normalized_text":"C#?"},{"start":37,"end":42,"probability":0.3933,"type":"Other","normalized_text":"Tuples"},{"start":237,"end":242,"probability":0.7359,"type":"Other","normalized_text":"dotnet"},{"start":245,"end":250,"probability":0.9538,"type":"Other","normalized_text":"csharp"}],"hashtags":[{"start":236,"end":243,"tag":"dotnet"},{"start":244,"end":251,"tag":"csharp"}]},"edit_history_tweet_ids":["1690353655013158913"],"attachments":{"media_keys":["3_1690353581860237313","3_1690353593906327552","3_1690353605050585090"]},"id":"1690353655013158913"},{"author_id":"1328381603777826817","created_at":"2023-08-12T12:32:21.000Z","text":"People bag on the #dotnet (msbuild) project files. But like most things the more you work with it the saner it becomes. Heck it's just XML. And it is loaded with capability that you _will_ find useful. These days, I actually love them and (shh) usually just manage them manually.","edit_history_tweet_ids":["1690340445866336256"],"entities":{"annotations":[{"start":19,"end":24,"probability":0.5968,"type":"Other","normalized_text":"dotnet"},{"start":135,"end":137,"probability":0.5809,"type":"Other","normalized_text":"XML"}],"hashtags":[{"start":18,"end":25,"tag":"dotnet"}]},"id":"1690340445866336256"},{"author_id":"1435992676256473094","created_at":"2023-08-12T12:31:23.000Z","text":"แก้บัค ปรับตาม Requirement เตรียม Deploy API ขึ้น Server\nมาเจอกันได้นะ มารับชมนกงม Code/Infra ได้ ณ เวลา 22:00 UTC+07:00 ค่ะ #HimawariWhiteOwlLive #VtuberTH #VtuberCoding #Vtuber #VtuberDev #VtuberProgrammer #Dotnet https://t.co/NMJh5HrEyd","entities":{"urls":[{"start":217,"end":240,"url":"https://t.co/NMJh5HrEyd","expanded_url":"https://twitter.com/VT_Himawari_Owl/status/1690340201787465728/photo/1","display_url":"pic.twitter.com/NMJh5HrEyd","media_key":"3_1690340121718251521"}],"hashtags":[{"start":126,"end":147,"tag":"HimawariWhiteOwlLive"},{"start":148,"end":157,"tag":"VtuberTH"},{"start":158,"end":171,"tag":"VtuberCoding"},{"start":172,"end":179,"tag":"Vtuber"},{"start":180,"end":190,"tag":"VtuberDev"},{"start":191,"end":208,"tag":"VtuberProgrammer"},{"start":209,"end":216,"tag":"Dotnet"}]},"edit_history_tweet_ids":["1690340201787465728"],"attachments":{"media_keys":["3_1690340121718251521"]},"id":"1690340201787465728"},{"author_id":"1614046806769557504","created_at":"2023-08-12T12:03:24.000Z","text":"Hey folks! Happy Saturday! Resharing this:\n\nHow to Read HUUUGE Files in C# - Designing a Segmented Stream\nhttps://t.co/wzPPAB3xhb\n\n#dotnet #programming #coding #csharp","entities":{"urls":[{"start":106,"end":129,"url":"https://t.co/wzPPAB3xhb","expanded_url":"https://youtu.be/E2qmXPeACBM","display_url":"youtu.be/E2qmXPeACBM","images":[{"url":"https://pbs.twimg.com/news_img/1690333201687097344/4Sx4D33b?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690333201687097344/4Sx4D33b?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"How to Read HUUUGE Files in C# - Designing a Segmented Stream","description":"This video walks through an initial design for a segmented stream in C#. We jump between the digital whiteboard and then into Visual Studio to discuss some d...","unwound_url":"https://www.youtube.com/watch?v=E2qmXPeACBM&feature=youtu.be"}],"annotations":[{"start":56,"end":61,"probability":0.6361,"type":"Other","normalized_text":"HUUUGE"},{"start":72,"end":73,"probability":0.6239,"type":"Other","normalized_text":"C#"},{"start":132,"end":137,"probability":0.4973,"type":"Other","normalized_text":"dotnet"},{"start":161,"end":166,"probability":0.9407,"type":"Other","normalized_text":"csharp"}],"hashtags":[{"start":131,"end":138,"tag":"dotnet"},{"start":139,"end":151,"tag":"programming"},{"start":152,"end":159,"tag":"coding"},{"start":160,"end":167,"tag":"csharp"}]},"edit_history_tweet_ids":["1690333158942924800"],"id":"1690333158942924800"},{"author_id":"491684234","created_at":"2023-08-12T10:52:35.000Z","text":"How do you enforce the Software Architecture you choose?\n\nDid you hear about Architecture Tests? \uD83D\uDCA1\n\nWhat is architecture testing?\n\nIf you want to learn, be sure not to miss that.\n\nJoin 5300+ engineers here: https://t.co/9p4ri3lNoR\n\n#Dotnet https://t.co/cwJJM5HzLh","entities":{"urls":[{"start":207,"end":230,"url":"https://t.co/9p4ri3lNoR","expanded_url":"https://stefandjokic.tech/","display_url":"stefandjokic.tech","status":200,"title":".NET Pro Guide | Stefan Đokić","description":"Stefan Djokic, a seasoned .NET professional, shares insights, tutorials, and tips for aspiring C# and .NET developers. Subscribe for weekly content updates.","unwound_url":"https://stefandjokic.tech/"},{"start":240,"end":263,"url":"https://t.co/cwJJM5HzLh","expanded_url":"https://twitter.com/TheCodeMan__/status/1690315335910514689/photo/1","display_url":"pic.twitter.com/cwJJM5HzLh","media_key":"3_1690315287353061376"}],"annotations":[{"start":233,"end":238,"probability":0.6356,"type":"Other","normalized_text":"Dotnet"}],"hashtags":[{"start":232,"end":239,"tag":"Dotnet"}]},"edit_history_tweet_ids":["1690315335910514689"],"attachments":{"media_keys":["3_1690315287353061376"]},"id":"1690315335910514689"},{"author_id":"743186361784606721","created_at":"2023-08-12T10:29:11.000Z","text":"Check out what is new in Blazor with .NET 8.0 What's the Blazor Web App template and what does it have? How to bring the power of Blazor Server and Wasm into the same project And more #blazor #dotnet #microsoft #development #web \nhttps://t.co/KjTWjICqGa https://t.co/kyLF2CBPlB","entities":{"urls":[{"start":231,"end":254,"url":"https://t.co/KjTWjICqGa","expanded_url":"https://youtu.be/B9zHW2vG7qI","display_url":"youtu.be/B9zHW2vG7qI","images":[{"url":"https://pbs.twimg.com/news_img/1690304407773036547/ay_dYaWL?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1690304407773036547/ay_dYaWL?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Blazor is Getting Revolutionized In .NET 8.0","description":"Master Blazor through my new book \"Mastering Blazor WebAssembly\" https://packt.link/OO44AJoin our Discord Server: https://discord.gg/GPrGJRuXJbRequest a quot...","unwound_url":"https://www.youtube.com/watch?v=B9zHW2vG7qI&feature=youtu.be"},{"start":255,"end":278,"url":"https://t.co/kyLF2CBPlB","expanded_url":"https://twitter.com/AhmadMozaffar99/status/1690309446763745280/photo/1","display_url":"pic.twitter.com/kyLF2CBPlB","media_key":"3_1690309420956221440"}],"annotations":[{"start":25,"end":30,"probability":0.6543,"type":"Other","normalized_text":"Blazor"},{"start":57,"end":70,"probability":0.7791,"type":"Other","normalized_text":"Blazor Web App"},{"start":130,"end":142,"probability":0.8367,"type":"Other","normalized_text":"Blazor Server"},{"start":148,"end":151,"probability":0.602,"type":"Other","normalized_text":"Wasm"},{"start":186,"end":191,"probability":0.6171,"type":"Other","normalized_text":"blazor"},{"start":194,"end":199,"probability":0.4612,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":185,"end":192,"tag":"blazor"},{"start":193,"end":200,"tag":"dotnet"},{"start":201,"end":211,"tag":"microsoft"},{"start":212,"end":224,"tag":"development"},{"start":225,"end":229,"tag":"web"}]},"edit_history_tweet_ids":["1690309446763745280"],"attachments":{"media_keys":["3_1690309420956221440"]},"id":"1690309446763745280"},{"author_id":"1115659846496342016","created_at":"2023-08-12T09:59:00.000Z","text":"Sometimes you need to know how many times a method has been called on testing mocks. Here's how to figure it out.\n\n{ author: @ant_f_dev } #DEVCommunity #dotNET\nhttps://t.co/cOeFcC0fYy","entities":{"urls":[{"start":160,"end":183,"url":"https://t.co/cOeFcC0fYy","expanded_url":"https://dev.to/ant_f_dev/how-to-check-how-many-times-mocked-methods-are-called-in-unit-tests-1oi4","display_url":"dev.to/ant_f_dev/how-…","status":200,"title":"How to Check How Many Times Mocked Methods Are Called in Unit Tests","description":"In last week’s part, we looked at two ways to check that methods on our Moq testing mocks were called...","unwound_url":"https://dev.to/ant_f_dev/how-to-check-how-many-times-mocked-methods-are-called-in-unit-tests-1oi4"}],"annotations":[{"start":153,"end":158,"probability":0.5252,"type":"Other","normalized_text":"dotNET"}],"hashtags":[{"start":138,"end":151,"tag":"DEVCommunity"},{"start":152,"end":159,"tag":"dotNET"}],"mentions":[{"start":125,"end":135,"username":"ant_f_dev","id":"1556729301613027334"}]},"edit_history_tweet_ids":["1690301851525160961"],"id":"1690301851525160961"},{"author_id":"21281558","created_at":"2023-08-12T09:55:01.000Z","text":"Mit den Veröffentlichungsfunktionen in #VisualStudio 2022 können auf Azure gehostete ASP .NET Core-Webanwendungen bereitgestellt und verwaltet werden. \uD83D\uDCA5 \nDen kostenlosen Lernpfad findest du hier: https://t.co/VHUDCTm18t\n#dotNET #AzureAppService https://t.co/NEGL4TFqSF","entities":{"urls":[{"start":196,"end":219,"url":"https://t.co/VHUDCTm18t","expanded_url":"http://msft.it/60119J2yU","display_url":"msft.it/60119J2yU","images":[{"url":"https://pbs.twimg.com/news_img/1690300849812127744/UWSLH-5T?format=png&name=orig","width":200,"height":200},{"url":"https://pbs.twimg.com/news_img/1690300849812127744/UWSLH-5T?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Publish a web app to Azure with Visual Studio - Training","description":"Learn how to use Azure App Service to create a new ASP.NET-based web app, then publish and update directly from Visual Studio.","unwound_url":"https://learn.microsoft.com/en-us/training/modules/publish-azure-web-app-with-visual-studio/?ocid=AID3060364_TWITTER_oo_spl100004465874947"},{"start":245,"end":268,"url":"https://t.co/NEGL4TFqSF","expanded_url":"https://twitter.com/msdev_de/status/1690300847870091264/photo/1","display_url":"pic.twitter.com/NEGL4TFqSF","media_key":"3_1690300845210935296"}],"hashtags":[{"start":39,"end":52,"tag":"VisualStudio"},{"start":220,"end":227,"tag":"dotNET"},{"start":228,"end":244,"tag":"AzureAppService"}]},"edit_history_tweet_ids":["1690300847870091264"],"attachments":{"media_keys":["3_1690300845210935296"]},"id":"1690300847870091264"},{"author_id":"51530400","created_at":"2023-08-12T09:12:00.000Z","text":"I just published a blog post about writing unit tests with the new AI Assistant in @JetBrainsRider https://t.co/PnZeYznnB3 #Dotnet","entities":{"urls":[{"start":99,"end":122,"url":"https://t.co/PnZeYznnB3","expanded_url":"https://www.johansmarius.dev/2023/08/using-ai-tooling-for-unit-testing-in.html","display_url":"johansmarius.dev/2023/08/using-…","images":[{"url":"https://pbs.twimg.com/news_img/1690290024577703936/1agygH2w?format=png&name=orig","width":529,"height":126},{"url":"https://pbs.twimg.com/news_img/1690290024577703936/1agygH2w?format=png&name=150x150","width":126,"height":126}],"status":200,"title":"Using AI tooling for unit testing in JetBrains Rider","description":"Blog about .NET and C# development","unwound_url":"https://www.johansmarius.dev/2023/08/using-ai-tooling-for-unit-testing-in.html"}],"annotations":[{"start":124,"end":129,"probability":0.5614,"type":"Other","normalized_text":"Dotnet"}],"hashtags":[{"start":123,"end":130,"tag":"Dotnet"}],"mentions":[{"start":83,"end":98,"username":"JetBrainsRider","id":"4233812783"}]},"edit_history_tweet_ids":["1690290023671775232"],"id":"1690290023671775232"},{"author_id":"15749760","created_at":"2023-08-12T09:08:33.000Z","text":"New Video: Coding with JoeG: Learning Kubernetes - Part 1 https://t.co/RHJV03SXfm #dotnet #csharp #dotnetcore","entities":{"urls":[{"start":59,"end":82,"url":"https://t.co/RHJV03SXfm","expanded_url":"https://jjg.me/446aMJc","display_url":"jjg.me/446aMJc","images":[{"url":"https://pbs.twimg.com/news_img/1689752033623265281/XDM_UWEW?format=jpg&name=orig","width":1280,"height":720},{"url":"https://pbs.twimg.com/news_img/1689752033623265281/XDM_UWEW?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Coding with JoeG: Learning Kubernetes - Part 1","description":"Join me and Rich Dudley as we learn how to use Kubernetes together. Agenda :Local Development* Demo the sample application* Create a new repository for it* ...","unwound_url":"https://www.youtube.com/watch?v=LX_2xPVDCNY"}],"annotations":[{"start":24,"end":27,"probability":0.7097,"type":"Other","normalized_text":"JoeG"},{"start":84,"end":89,"probability":0.7409,"type":"Other","normalized_text":"dotnet"},{"start":92,"end":97,"probability":0.9601,"type":"Other","normalized_text":"csharp"},{"start":100,"end":109,"probability":0.8096,"type":"Other","normalized_text":"dotnetcore"}],"hashtags":[{"start":83,"end":90,"tag":"dotnet"},{"start":91,"end":98,"tag":"csharp"},{"start":99,"end":110,"tag":"dotnetcore"}]},"edit_history_tweet_ids":["1690289157577547776"],"id":"1690289157577547776"},{"author_id":"1320779906226266113","created_at":"2023-08-12T08:34:11.000Z","text":"Step 1. Figure out what's new in Blazor in #dotnet 8\nStep 2. Install the #Umbraco 14 Preview version.\nStep 3. Figure out if we can use Blazor webcomponents in the new back-office\nStep 4. ...\nStep 5. World domination?","edit_history_tweet_ids":["1690280505575374849"],"entities":{"annotations":[{"start":33,"end":38,"probability":0.8455,"type":"Other","normalized_text":"Blazor"},{"start":44,"end":49,"probability":0.7031,"type":"Other","normalized_text":"dotnet"},{"start":74,"end":80,"probability":0.7198,"type":"Other","normalized_text":"Umbraco"},{"start":135,"end":140,"probability":0.8445,"type":"Other","normalized_text":"Blazor"}],"hashtags":[{"start":43,"end":50,"tag":"dotnet"},{"start":73,"end":81,"tag":"Umbraco"}]},"id":"1690280505575374849"},{"author_id":"84275426","created_at":"2023-08-12T08:26:11.000Z","text":"The entiltlement that some are showing in the #dotNET community is crazy. #OSS #FOSS . https://t.co/5Er5eqn9DS","entities":{"urls":[{"start":88,"end":111,"url":"https://t.co/5Er5eqn9DS","expanded_url":"https://twitter.com/Aaronontheweb/status/1689980580505559040","display_url":"twitter.com/Aaronontheweb/…"}],"annotations":[{"start":47,"end":52,"probability":0.7869,"type":"Other","normalized_text":"dotNET"},{"start":76,"end":78,"probability":0.4309,"type":"Organization","normalized_text":"OSS"},{"start":81,"end":84,"probability":0.5695,"type":"Other","normalized_text":"FOSS"}],"hashtags":[{"start":46,"end":53,"tag":"dotNET"},{"start":75,"end":79,"tag":"OSS"},{"start":80,"end":85,"tag":"FOSS"}]},"edit_history_tweet_ids":["1690278493785935872"],"id":"1690278493785935872"},{"author_id":"1459954664158412801","created_at":"2023-08-12T08:20:13.000Z","text":"Spin up REDIS on Docker and learn some basic commands. Don't forget to subscribe for more videos\n\n#docker #redis #rediscache #Dotnet\n\nhttps://t.co/1IExd1HtAL","entities":{"urls":[{"start":134,"end":157,"url":"https://t.co/1IExd1HtAL","expanded_url":"https://youtu.be/ObFVUvHtGQM","display_url":"youtu.be/ObFVUvHtGQM","images":[{"url":"https://pbs.twimg.com/news_img/1690265551291949057/K9joNlLw?format=jpg&name=orig","width":480,"height":360},{"url":"https://pbs.twimg.com/news_img/1690265551291949057/K9joNlLw?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Spin up Redis on Docker with basic commands","description":"Dive into redis on docker with basic commands. #docker #redis #dockerrun","unwound_url":"https://www.youtube.com/watch?v=ObFVUvHtGQM&feature=youtu.be"}],"annotations":[{"start":8,"end":12,"probability":0.8564,"type":"Other","normalized_text":"REDIS"},{"start":17,"end":22,"probability":0.944,"type":"Other","normalized_text":"Docker"},{"start":99,"end":104,"probability":0.5811,"type":"Other","normalized_text":"docker"},{"start":107,"end":111,"probability":0.567,"type":"Other","normalized_text":"redis"},{"start":114,"end":123,"probability":0.689,"type":"Other","normalized_text":"rediscache"},{"start":126,"end":131,"probability":0.7269,"type":"Other","normalized_text":"Dotnet"}],"hashtags":[{"start":98,"end":105,"tag":"docker"},{"start":106,"end":112,"tag":"redis"},{"start":113,"end":124,"tag":"rediscache"},{"start":125,"end":132,"tag":"Dotnet"}]},"edit_history_tweet_ids":["1690276990522150913"],"id":"1690276990522150913"},{"author_id":"105079425","created_at":"2023-08-12T08:03:29.000Z","text":"Globally Exception Handling using Exception Filters vs Middleware\n\nhttps://t.co/4kpGNSIvnO\n\n\uD83D\uDCCC\uD835\uDDE3.\uD835\uDDE6:- To stay updated on the latest news and insights, make sure to follow my account where I share posts every week.\n\n#dotnet #middleware #filters #exceptionhandling","entities":{"urls":[{"start":67,"end":90,"url":"https://t.co/4kpGNSIvnO","expanded_url":"https://dev.to/ipazooki/globally-exception-handling-using-exception-filters-vs-middleware-2cc1","display_url":"dev.to/ipazooki/globa…","images":[{"url":"https://pbs.twimg.com/news_img/1690272782561476610/g6Ii53vO?format=jpg&name=orig","width":1128,"height":598},{"url":"https://pbs.twimg.com/news_img/1690272782561476610/g6Ii53vO?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Globally Exception Handling using Exception Filters vs Middleware","description":"In this blog post, I want to talk about using IExceptionFilter(IAsyncExceptionFilter) for globally...","unwound_url":"https://dev.to/ipazooki/globally-exception-handling-using-exception-filters-vs-middleware-2cc1"}],"annotations":[{"start":44,"end":50,"probability":0.565,"type":"Other","normalized_text":"Filters"},{"start":55,"end":64,"probability":0.5408,"type":"Other","normalized_text":"Middleware"}],"hashtags":[{"start":212,"end":219,"tag":"dotnet"},{"start":220,"end":231,"tag":"middleware"},{"start":232,"end":240,"tag":"filters"},{"start":241,"end":259,"tag":"exceptionhandling"}]},"edit_history_tweet_ids":["1690272780263022592"],"id":"1690272780263022592"},{"author_id":"110541370","created_at":"2023-08-12T07:56:17.000Z","text":"In this article, we’ll take a look at a new feature of #cisharp 12 and #dotnet 8 for classes and structs called primary constructors. https://t.co/I0c1iH46Vh https://t.co/WmuCf8vwC4","entities":{"urls":[{"start":135,"end":158,"url":"https://t.co/I0c1iH46Vh","expanded_url":"https://buff.ly/3qrohVV","display_url":"buff.ly/3qrohVV","images":[{"url":"https://pbs.twimg.com/news_img/1690270981921579008/C0PG8G7o?format=jpg&name=orig","width":1100,"height":620},{"url":"https://pbs.twimg.com/news_img/1690270981921579008/C0PG8G7o?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Primary Constructors for Classes and Structs - Code Maze","description":"In this article, we'll take a look at a new feature of C# 12 and .NET 8 for classes and structs called primary constructors.","unwound_url":"https://code-maze.com/csharp-primary-constructors-for-classes-and-structs/"},{"start":159,"end":182,"url":"https://t.co/WmuCf8vwC4","expanded_url":"https://twitter.com/CodeMazeBlog/status/1690270969523245056/photo/1","display_url":"pic.twitter.com/WmuCf8vwC4","media_key":"3_1690270966687924224"}],"annotations":[{"start":56,"end":65,"probability":0.8669,"type":"Other","normalized_text":"cisharp 12"},{"start":72,"end":77,"probability":0.7994,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":55,"end":63,"tag":"cisharp"},{"start":71,"end":78,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690270969523245056"],"attachments":{"media_keys":["3_1690270966687924224"]},"id":"1690270969523245056"},{"author_id":"103907630","created_at":"2023-08-12T07:44:53.000Z","text":"I have no idea how or why this hasn't been thrown out after 4 house moves! #dotnet #devlife https://t.co/cRztnkd7Gt","entities":{"urls":[{"start":92,"end":115,"url":"https://t.co/cRztnkd7Gt","expanded_url":"https://twitter.com/MartinTaylor80/status/1690268100833247232/photo/1","display_url":"pic.twitter.com/cRztnkd7Gt","media_key":"3_1690268097884635137"}],"annotations":[{"start":76,"end":81,"probability":0.5544,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":75,"end":82,"tag":"dotnet"},{"start":83,"end":91,"tag":"devlife"}]},"edit_history_tweet_ids":["1690268100833247232"],"attachments":{"media_keys":["3_1690268097884635137"]},"id":"1690268100833247232"},{"author_id":"1327296775409999872","created_at":"2023-08-12T07:34:27.000Z","text":"Join @realDotNetDave with @RobBogue, today at 10:00 AM (PST) for the next episode of Rockin' The Code World - a weekly live show focused on .NET technology.\n\nLive streaming at https://t.co/NX65QdgjEj\n\n#LiveShow #RockinCodeWorld #dotnetforall #DOTNET #DOTNET8 https://t.co/TJp2jmIM1C","entities":{"urls":[{"start":176,"end":199,"url":"https://t.co/NX65QdgjEj","expanded_url":"http://csharp.tv","display_url":"csharp.tv","unwound_url":"http://csharp.tv"},{"start":259,"end":282,"url":"https://t.co/TJp2jmIM1C","expanded_url":"https://twitter.com/CSharpDotTV/status/1690265473429180416/photo/1","display_url":"pic.twitter.com/TJp2jmIM1C","media_key":"3_1690265470027321344"}],"annotations":[{"start":85,"end":91,"probability":0.7196,"type":"Other","normalized_text":"Rockin'"},{"start":93,"end":106,"probability":0.8583,"type":"Other","normalized_text":"The Code World"},{"start":229,"end":240,"probability":0.5311,"type":"Other","normalized_text":"dotnetforall"},{"start":243,"end":248,"probability":0.7357,"type":"Other","normalized_text":"DOTNET"},{"start":251,"end":257,"probability":0.7104,"type":"Other","normalized_text":"DOTNET8"}],"hashtags":[{"start":201,"end":210,"tag":"LiveShow"},{"start":211,"end":227,"tag":"RockinCodeWorld"},{"start":228,"end":241,"tag":"dotnetforall"},{"start":242,"end":249,"tag":"DOTNET"},{"start":250,"end":258,"tag":"DOTNET8"}],"mentions":[{"start":5,"end":20,"username":"realDotNetDave","id":"1658046319"},{"start":26,"end":35,"username":"RobBogue","id":"24459880"}]},"edit_history_tweet_ids":["1690265473429180416"],"attachments":{"media_keys":["3_1690265470027321344"]},"id":"1690265473429180416"},{"author_id":"17221835","created_at":"2023-08-12T07:33:26.000Z","text":"The next #UnhandledException podcast is now live! \uD83C\uDF89\uD83C\uDF99️ I was joined by @ayende to chat about database internals in @RavenDB! https://t.co/HPnoQB5MiZ #dotnet #ravendb","entities":{"urls":[{"start":124,"end":147,"url":"https://t.co/HPnoQB5MiZ","expanded_url":"https://unhandledexceptionpodcast.com/posts/0055-oreneini-databaseinternals/","display_url":"unhandledexceptionpodcast.com/posts/0055-ore…","images":[{"url":"https://pbs.twimg.com/news_img/1690265318810177536/-kR1ST-0?format=jpg&name=orig","width":2764,"height":2377},{"url":"https://pbs.twimg.com/news_img/1690265318810177536/-kR1ST-0?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Episode 55: RavenDB and Database Internals - with Oren Eini","description":"In this episode, I had the pleasure of speaking with Oren Eini about RavenDB and diving deep into the world of database internals. We explore the intricacies of how databases work under the hood and discuss the challenges - especially around performance. Oren Eini, also known as Ayende Rahien, is the Founder and CEO of RavenDB, a leading NoSQL document database management platform, empowering both startups and Fortune 500 companies. With over 20 years of software development experience and business leadership, Oren is an internationally acclaimed presenter, a thought leader and an author, committed to continue and lead innovation of quality software and best practices.","unwound_url":"https://unhandledexceptionpodcast.com/posts/0055-oreneini-databaseinternals/"}],"annotations":[{"start":10,"end":27,"probability":0.6126,"type":"Other","normalized_text":"UnhandledException"},{"start":149,"end":154,"probability":0.5856,"type":"Other","normalized_text":"dotnet"},{"start":157,"end":163,"probability":0.5192,"type":"Other","normalized_text":"ravendb"}],"hashtags":[{"start":9,"end":28,"tag":"UnhandledException"},{"start":148,"end":155,"tag":"dotnet"},{"start":156,"end":164,"tag":"ravendb"}],"mentions":[{"start":70,"end":77,"username":"ayende","id":"14454642"},{"start":114,"end":122,"username":"RavenDB","id":"331695242"}]},"edit_history_tweet_ids":["1690265219979776000"],"id":"1690265219979776000"},{"author_id":"69070124","created_at":"2023-08-12T07:21:36.000Z","text":"Generate arbitrary strings with FsCheck + SharpX for property-based testing\n\nhttps://t.co/dJhen67AlN\n\n#CSharp #Testing #DotNet #Functional https://t.co/ZfVJNK48QC","entities":{"urls":[{"start":77,"end":100,"url":"https://t.co/dJhen67AlN","expanded_url":"https://github.com/gsscoder/sharpx","display_url":"github.com/gsscoder/sharpx","images":[{"url":"https://pbs.twimg.com/news_img/1690262288433807360/GtdDpp3i?format=jpg&name=orig","width":1200,"height":600},{"url":"https://pbs.twimg.com/news_img/1690262288433807360/GtdDpp3i?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"GitHub - gsscoder/sharpx: .NET functional programming and other utilities","description":".NET functional programming and other utilities. Contribute to gsscoder/sharpx development by creating an account on GitHub.","unwound_url":"https://github.com/gsscoder/sharpx"},{"start":139,"end":162,"url":"https://t.co/ZfVJNK48QC","expanded_url":"https://twitter.com/coder6_/status/1690262240757211136/photo/1","display_url":"pic.twitter.com/ZfVJNK48QC","media_key":"3_1690261300557881346"},{"start":139,"end":162,"url":"https://t.co/ZfVJNK48QC","expanded_url":"https://twitter.com/coder6_/status/1690262240757211136/photo/1","display_url":"pic.twitter.com/ZfVJNK48QC","media_key":"3_1690261613213802498"}],"annotations":[{"start":32,"end":38,"probability":0.9316,"type":"Other","normalized_text":"FsCheck"},{"start":42,"end":47,"probability":0.7819,"type":"Other","normalized_text":"SharpX"},{"start":103,"end":108,"probability":0.6658,"type":"Other","normalized_text":"CSharp"},{"start":120,"end":125,"probability":0.5201,"type":"Other","normalized_text":"DotNet"}],"hashtags":[{"start":102,"end":109,"tag":"CSharp"},{"start":110,"end":118,"tag":"Testing"},{"start":119,"end":126,"tag":"DotNet"},{"start":127,"end":138,"tag":"Functional"}]},"edit_history_tweet_ids":["1690262240757211136"],"attachments":{"media_keys":["3_1690261300557881346","3_1690261613213802498"]},"id":"1690262240757211136"},{"author_id":"43944239","created_at":"2023-08-12T07:17:01.000Z","text":"Programmatically Create SAS tokens in #dotnet https://t.co/yMyd77ZYaH https://t.co/Zqg8xnbiTV","entities":{"urls":[{"start":46,"end":69,"url":"https://t.co/yMyd77ZYaH","expanded_url":"https://buff.ly/3OpPCjq","display_url":"buff.ly/3OpPCjq","images":[{"url":"https://pbs.twimg.com/news_img/1690261097092124672/aL2rnez6?format=jpg&name=orig","width":1432,"height":886},{"url":"https://pbs.twimg.com/news_img/1690261097092124672/aL2rnez6?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"Programmatically Create SAS tokens in .Net","description":"    var blobServiceClient = new BlobServiceClient(connectionString); var containerClient =..","unwound_url":"https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/programmatically-create-sas-tokens-in-net/ba-p/3889848"},{"start":70,"end":93,"url":"https://t.co/Zqg8xnbiTV","expanded_url":"https://twitter.com/bvrhovnik/status/1690261089416552448/photo/1","display_url":"pic.twitter.com/Zqg8xnbiTV","media_key":"3_1690261086480556032"}],"annotations":[{"start":24,"end":26,"probability":0.4074,"type":"Other","normalized_text":"SAS"},{"start":39,"end":44,"probability":0.6077,"type":"Other","normalized_text":"dotnet"}],"hashtags":[{"start":38,"end":45,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690261089416552448"],"attachments":{"media_keys":["3_1690261086480556032"]},"id":"1690261089416552448"},{"author_id":"2580399614","created_at":"2023-08-12T04:30:09.000Z","text":"#Hiring for Software Engineer (Angular + .net)\nLocation: Ahmedabad (Iskon Cross Road)\nExperience: 1 - 3 Year(s)\nSalary: Upto 4.80 LPA\nShare your #resume to\nShiv.sankhla@mantras2success.com\nOR\nClick to Apply\nhttps://t.co/so9Rb5pyH8\n#Mantras2Success\n#dotnetdeveloper #dotnet","entities":{"urls":[{"start":207,"end":230,"url":"https://t.co/so9Rb5pyH8","expanded_url":"http://careers.mantras2success.com/jobseeker/62237/software-engineer-angular-net","display_url":"careers.mantras2success.com/jobseeker/6223…","images":[{"url":"https://pbs.twimg.com/news_img/1688407198597005312/tCNA-umY?format=png&name=orig","width":250,"height":100},{"url":"https://pbs.twimg.com/news_img/1688407198597005312/tCNA-umY?format=png&name=150x150","width":100,"height":100}],"status":200,"title":"Software Engineer (Angular .net) Ahmedabad : Mantras2Success","description":"Software Engineer (Angular .net) Use of technologies like C#, SQL Server, Angular .net, .net core and Microsoft Workflow to develop technical solutions to complex problems that require the regular use of ingenuity and creativity. Design, code, test, debug and document software according to the functional requirements Develop, maintain and support programs/tools for internal and external clients Analyse, diagnose and resolve errors related to their applications Provide technical and project management expertise across multiple areas of application development Provide ad hoc reporting and analysis as required Investigate operational or systematic problems and user queries as required ASP.Net,.net,c#,angular,Sql Server,GIT Experience: 1.0 Year(s)-3.0 Year(s) Location: Ahmedabad","unwound_url":"http://careers.mantras2success.com/jobseeker/62237/software-engineer-angular-net"}],"annotations":[{"start":57,"end":65,"probability":0.4581,"type":"Organization","normalized_text":"Ahmedabad"},{"start":68,"end":78,"probability":0.4617,"type":"Other","normalized_text":"Iskon Cross"}],"hashtags":[{"start":0,"end":7,"tag":"Hiring"},{"start":145,"end":152,"tag":"resume"},{"start":231,"end":247,"tag":"Mantras2Success"},{"start":248,"end":264,"tag":"dotnetdeveloper"},{"start":265,"end":272,"tag":"dotnet"}]},"edit_history_tweet_ids":["1690219094493081601"],"id":"1690219094493081601"},{"author_id":"935061076214824960","created_at":"2023-08-12T03:56:29.000Z","text":"\uD83D\uDCA5 Learn .NET from Experts Practical Hands on Training With Projec\n\uD83D\uDCA5 Punjab Rank 1 IT Company CBA INFOTECH. \n\uD83D\uDCBB Job Oriented Training\n\uD83D\uDCBB Dedicated Placemnent\n\uD83D\uDCBB Experienced & Qualified Faculties\n#dotnet #programming #csharp #javascript #java #programmer #gurdaspur #cbainfotech https://t.co/9AEsAvfnZ3","entities":{"urls":[{"start":278,"end":301,"url":"https://t.co/9AEsAvfnZ3","expanded_url":"https://twitter.com/CbaInfotech/status/1690210622766530561/photo/1","display_url":"pic.twitter.com/9AEsAvfnZ3","media_key":"3_1690210605347577856"}],"annotations":[{"start":68,"end":78,"probability":0.6665,"type":"Other","normalized_text":"Punjab Rank"},{"start":217,"end":222,"probability":0.8177,"type":"Other","normalized_text":"csharp"},{"start":225,"end":234,"probability":0.5702,"type":"Other","normalized_text":"javascript"},{"start":255,"end":263,"probability":0.3547,"type":"Other","normalized_text":"gurdaspur"}],"hashtags":[{"start":195,"end":202,"tag":"dotnet"},{"start":203,"end":215,"tag":"programming"},{"start":216,"end":223,"tag":"csharp"},{"start":224,"end":235,"tag":"javascript"},{"start":236,"end":241,"tag":"java"},{"start":242,"end":253,"tag":"programmer"},{"start":254,"end":264,"tag":"gurdaspur"},{"start":265,"end":277,"tag":"cbainfotech"}]},"edit_history_tweet_ids":["1690210622766530561"],"attachments":{"media_keys":["3_1690210605347577856"]},"id":"1690210622766530561"},{"author_id":"1089089886949265408","created_at":"2023-08-12T03:16:41.000Z","text":"@BitBender1 The background is the latest #dotnet OSS drama\n\nOpen source is unsustainable in the current state.\n\nI’m just thinking of hypotheticals around a reversion to the paid models of the past.\n\nNobody really wants it, but what are the alternatives moving forward?","edit_history_tweet_ids":["1690200607909728256"],"entities":{"annotations":[{"start":42,"end":47,"probability":0.7054,"type":"Other","normalized_text":"dotnet"},{"start":49,"end":51,"probability":0.6676,"type":"Other","normalized_text":"OSS"}],"hashtags":[{"start":41,"end":48,"tag":"dotnet"}],"mentions":[{"start":0,"end":11,"username":"BitBender1","id":"2796910367"}]},"id":"1690200607909728256"},{"author_id":"1089089886949265408","created_at":"2023-08-12T01:38:38.000Z","text":"Spitting \uD83D\uDD25 about the latest #dotnet #OSS debacle on threads \uD83D\uDC47","edit_history_tweet_ids":["1690175931544133633"],"entities":{"annotations":[{"start":29,"end":34,"probability":0.5841,"type":"Other","normalized_text":"dotnet"},{"start":37,"end":39,"probability":0.6235,"type":"Other","normalized_text":"OSS"}],"hashtags":[{"start":28,"end":35,"tag":"dotnet"},{"start":36,"end":40,"tag":"OSS"}]},"id":"1690175931544133633"},{"author_id":"377897280","created_at":"2023-08-12T01:08:53.000Z","text":"Why should I use .Net as a developer?\n\nDoes it sucks?\n\n#dotnet #dotnetmaui #dotnetcore\n#microsoft","edit_history_tweet_ids":["1690168442064601088"],"entities":{"annotations":[{"start":18,"end":20,"probability":0.4223,"type":"Organization","normalized_text":"Net"},{"start":56,"end":61,"probability":0.5935,"type":"Other","normalized_text":"dotnet"},{"start":64,"end":73,"probability":0.6595,"type":"Other","normalized_text":"dotnetmaui"},{"start":76,"end":85,"probability":0.6729,"type":"Other","normalized_text":"dotnetcore"}],"hashtags":[{"start":55,"end":62,"tag":"dotnet"},{"start":63,"end":74,"tag":"dotnetmaui"},{"start":75,"end":86,"tag":"dotnetcore"},{"start":87,"end":97,"tag":"microsoft"}]},"id":"1690168442064601088"},{"author_id":"30930870","created_at":"2023-08-12T01:03:06.000Z","text":"Check out my coverage of last night's #WatchROH show at #DotNet\nhttps://t.co/Z9EEB9odrH","entities":{"urls":[{"start":64,"end":87,"url":"https://t.co/Z9EEB9odrH","expanded_url":"https://prowrestling.net/site/2023/08/11/roh-on-honorclub-results-8-10-robinsons-review-of-shane-taylor-vs-gravity-in-the-roh-tv-title-tournament-finals-roh-womens-champ-athena-vs-rachael-ellering-in-a-proving-ground-match-work-hor/","display_url":"prowrestling.net/site/2023/08/1…","status":200,"title":"ROH on HonorClub results (8/10): Robinson's review of Shane Taylor vs. Gravity in the ROH TV Title tournament finals, ROH Women's Champ Athena vs Rachael Ellering in a Proving Ground match, Work Horsemen vs. Gates of Agony - Pro Wrestling Dot Net","description":"By Sam Robinson, ProWrestling.net Contributor...","unwound_url":"https://prowrestling.net/site/2023/08/11/roh-on-honorclub-results-8-10-robinsons-review-of-shane-taylor-vs-gravity-in-the-roh-tv-title-tournament-finals-roh-womens-champ-athena-vs-rachael-ellering-in-a-proving-ground-match-work-hor/"}],"annotations":[{"start":39,"end":46,"probability":0.7228,"type":"Other","normalized_text":"WatchROH"},{"start":57,"end":62,"probability":0.5786,"type":"Other","normalized_text":"DotNet"}],"hashtags":[{"start":38,"end":47,"tag":"WatchROH"},{"start":56,"end":63,"tag":"DotNet"}]},"edit_history_tweet_ids":["1690166986972577792"],"id":"1690166986972577792"},{"author_id":"10370632","created_at":"2023-08-12T01:00:01.000Z","text":"Why .NET MAUI is an Upgrade over Xamarin Forms: https://t.co/AtXSxkxDO9 #MAUI #dotnet #dotnetmaui","entities":{"urls":[{"start":49,"end":72,"url":"https://t.co/AtXSxkxDO9","expanded_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/","display_url":"globalgeeknews.com/2023/08/11/why…","status":200,"title":"Why .NET MAUI is an Upgrade over Xamarin Forms - Global Geek News","description":".NET developers looking to take their application UI to the next level need to find out how .NET MAUI is an upgrade to Xamarin Forms.","unwound_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/"}],"annotations":[{"start":9,"end":12,"probability":0.2505,"type":"Place","normalized_text":"MAUI"},{"start":33,"end":39,"probability":0.7579,"type":"Other","normalized_text":"Xamarin"},{"start":74,"end":77,"probability":0.4453,"type":"Other","normalized_text":"MAUI"},{"start":80,"end":85,"probability":0.4371,"type":"Other","normalized_text":"dotnet"},{"start":88,"end":97,"probability":0.5401,"type":"Other","normalized_text":"dotnetmaui"}],"hashtags":[{"start":73,"end":78,"tag":"MAUI"},{"start":79,"end":86,"tag":"dotnet"},{"start":87,"end":98,"tag":"dotnetmaui"}]},"edit_history_tweet_ids":["1690166213165436928"],"id":"1690166213165436928"},{"author_id":"43045391","created_at":"2023-08-12T01:00:00.000Z","text":"Why .NET MAUI is an Upgrade over Xamarin Forms: https://t.co/Dd5bluRioS #MAUI #dotnet #dotnetmaui","entities":{"urls":[{"start":49,"end":72,"url":"https://t.co/Dd5bluRioS","expanded_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/","display_url":"globalgeeknews.com/2023/08/11/why…","status":200,"title":"Why .NET MAUI is an Upgrade over Xamarin Forms - Global Geek News","description":".NET developers looking to take their application UI to the next level need to find out how .NET MAUI is an upgrade to Xamarin Forms.","unwound_url":"https://www.globalgeeknews.com/2023/08/11/why-net-maui-is-an-upgrade-over-xamarin-forms/"}],"annotations":[{"start":9,"end":12,"probability":0.2505,"type":"Place","normalized_text":"MAUI"},{"start":33,"end":39,"probability":0.7579,"type":"Other","normalized_text":"Xamarin"},{"start":74,"end":77,"probability":0.4453,"type":"Other","normalized_text":"MAUI"},{"start":80,"end":85,"probability":0.4371,"type":"Other","normalized_text":"dotnet"},{"start":88,"end":97,"probability":0.5401,"type":"Other","normalized_text":"dotnetmaui"}],"hashtags":[{"start":73,"end":78,"tag":"MAUI"},{"start":79,"end":86,"tag":"dotnet"},{"start":87,"end":98,"tag":"dotnetmaui"}]},"edit_history_tweet_ids":["1690166207486275584"],"id":"1690166207486275584"},{"author_id":"1384241114278887427","created_at":"2023-08-12T00:49:47.000Z","text":"#csharp #dotnet #microsoft #windowsformsapp\n\nhttps://t.co/TXgMCNKVz8","entities":{"urls":[{"start":45,"end":68,"url":"https://t.co/TXgMCNKVz8","expanded_url":"https://youtube.com/shorts/K9n9deGhQd0?feature=share","display_url":"youtube.com/shorts/K9n9deG…","images":[{"url":"https://pbs.twimg.com/news_img/1690163636415889409/5c0-fW28?format=jpg&name=orig","width":480,"height":360},{"url":"https://pbs.twimg.com/news_img/1690163636415889409/5c0-fW28?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"C# .NET WindowsFormsApp Example #code #csharp #dotnet #windowsformsapp #microsoft #jetbrains #rider","unwound_url":"https://www.youtube.com/shorts/K9n9deGhQd0?feature=share"}],"hashtags":[{"start":0,"end":7,"tag":"csharp"},{"start":8,"end":15,"tag":"dotnet"},{"start":16,"end":26,"tag":"microsoft"},{"start":27,"end":43,"tag":"windowsformsapp"}]},"edit_history_tweet_ids":["1690163636193632256"],"id":"1690163636193632256"},{"author_id":"946463573609467904","created_at":"2023-08-12T00:27:40.000Z","text":"@WayUpCrypto After 2.5 years of growth, since this tweet, $DOT has returned to $5. Isn’t it logical to have 1000 dot now again?\n\n#Polkadot #PolkadotNetwork #PolkaDotArmy #PolkaDotEcosystem \n#dot #dotwork #dotnet #dotworkmandala","edit_history_tweet_ids":["1690158071878721536"],"entities":{"annotations":[{"start":59,"end":61,"probability":0.4924,"type":"Other","normalized_text":"DOT"},{"start":140,"end":154,"probability":0.5116,"type":"Other","normalized_text":"PolkadotNetwork"},{"start":157,"end":168,"probability":0.5186,"type":"Other","normalized_text":"PolkaDotArmy"},{"start":171,"end":187,"probability":0.5662,"type":"Other","normalized_text":"PolkaDotEcosystem"}],"hashtags":[{"start":129,"end":138,"tag":"Polkadot"},{"start":139,"end":155,"tag":"PolkadotNetwork"},{"start":156,"end":169,"tag":"PolkaDotArmy"},{"start":170,"end":188,"tag":"PolkaDotEcosystem"},{"start":190,"end":194,"tag":"dot"},{"start":195,"end":203,"tag":"dotwork"},{"start":204,"end":211,"tag":"dotnet"},{"start":212,"end":227,"tag":"dotworkmandala"}],"cashtags":[{"start":58,"end":62,"tag":"DOT"}],"mentions":[{"start":0,"end":12,"username":"WayUpCrypto","id":"351685997"}]},"id":"1690158071878721536"},{"author_id":"20187433","created_at":"2023-08-12T00:13:05.000Z","text":"Using ActiveReports .NET to design, customize, and generate RDL reports enhances integration, performance, and UX of the reporting capabilities within enterprise software.\n\nGet started with ActiveReports .NET in our latest blog: https://t.co/4f2HO3m46D\n\n#dotnet #reporting #rdl https://t.co/CsgpTuEgZX","entities":{"urls":[{"start":229,"end":252,"url":"https://t.co/4f2HO3m46D","expanded_url":"https://bit.ly/3Yx6rO8","display_url":"bit.ly/3Yx6rO8","images":[{"url":"https://pbs.twimg.com/news_img/1690154411178459136/UFFyHsfE?format=jpg&name=orig","width":800,"height":510},{"url":"https://pbs.twimg.com/news_img/1690154411178459136/UFFyHsfE?format=jpg&name=150x150","width":150,"height":150}],"status":200,"title":"How to Create an RDL Report in .NET C# Code | ActiveReports","description":"Learn how to create an RDL report in .NET C# code. See more from ActiveReports today.","unwound_url":"https://www.grapecity.com/blogs/how-to-create-rdl-report-net-c-sharp-code?utm_source=Twitter&utm_medium=Organic&utm_campaign=arnet-how-to-create-an-rdl-report-in-dotnet-csharp-code_blog_08/11/2023"},{"start":278,"end":301,"url":"https://t.co/CsgpTuEgZX","expanded_url":"https://twitter.com/GrapeCityUS/status/1690154401762361344/photo/1","display_url":"pic.twitter.com/CsgpTuEgZX","media_key":"3_1690154380765343744"}],"annotations":[{"start":6,"end":18,"probability":0.8293,"type":"Other","normalized_text":"ActiveReports"},{"start":60,"end":62,"probability":0.6851,"type":"Other","normalized_text":"RDL"},{"start":111,"end":112,"probability":0.5438,"type":"Other","normalized_text":"UX"},{"start":190,"end":202,"probability":0.8095,"type":"Other","normalized_text":"ActiveReports"},{"start":255,"end":260,"probability":0.4328,"type":"Other","normalized_text":"dotnet"},{"start":274,"end":276,"probability":0.5628,"type":"Other","normalized_text":"rdl"}],"hashtags":[{"start":254,"end":261,"tag":"dotnet"},{"start":262,"end":272,"tag":"reporting"},{"start":273,"end":277,"tag":"rdl"}]},"edit_history_tweet_ids":["1690154401762361344"],"attachments":{"media_keys":["3_1690154380765343744"]},"id":"1690154401762361344"},{"author_id":"15034526","created_at":"2023-08-12T00:12:19.000Z","text":"https://t.co/eWLdNGn3hD\n\n#dotnet #k8s","entities":{"urls":[{"start":0,"end":23,"url":"https://t.co/eWLdNGn3hD","expanded_url":"https://andrewlock.net/series/deploying-asp-net-core-applications-to-kubernetes/","display_url":"andrewlock.net/series/deployi…","images":[{"url":"https://pbs.twimg.com/news_img/1690154208408805376/R9pMqQHb?format=png&name=orig","width":1920,"height":1280},{"url":"https://pbs.twimg.com/news_img/1690154208408805376/R9pMqQHb?format=png&name=150x150","width":150,"height":150}],"status":200,"title":"Deploying ASP.NET Core applications to Kubernetes","description":"In this series I'll cover a variety of topics and things I've learned in deploying ASP.NET Core applications to Kubernetes.","unwound_url":"https://andrewlock.net/series/deploying-asp-net-core-applications-to-kubernetes/"}],"hashtags":[{"start":25,"end":32,"tag":"dotnet"},{"start":33,"end":37,"tag":"k8s"}]},"edit_history_tweet_ids":["1690154206827610112"],"id":"1690154206827610112"}],"includes":{"media":[{"media_key":"16_1690796476954460160","preview_image_url":"https://pbs.twimg.com/tweet_video_thumb/F3bqcARaQAAiqXs.jpg","type":"animated_gif"},{"media_key":"3_1690767829954392065","type":"photo"},{"media_key":"3_1690750405821583360","type":"photo"},{"media_key":"3_1690751257965711361","type":"photo"},{"media_key":"3_1690743783229435904","type":"photo"},{"media_key":"3_1690727795712831488","type":"photo"},{"media_key":"3_1690713894757580801","type":"photo"},{"media_key":"7_1690664659106340864","preview_image_url":"https://pbs.twimg.com/ext_tw_video_thumb/1690664659106340864/pu/img/J0jxCHNtnE6C10kJ.jpg","type":"video"},{"media_key":"3_1690664073283715072","type":"photo"},{"media_key":"3_1690630143382028288","type":"photo"},{"media_key":"3_1690626322186321920","type":"photo"},{"media_key":"3_1690622262238724096","type":"photo"},{"media_key":"3_1690622264499417088","type":"photo"},{"media_key":"3_1690609290896359424","type":"photo"},{"media_key":"3_1690591168373874688","type":"photo"},{"media_key":"3_1690501655253377024","type":"photo"},{"media_key":"3_1690462892221452290","type":"photo"},{"media_key":"3_1690428264479625216","type":"photo"},{"media_key":"7_1690400079297859584","preview_image_url":"https://pbs.twimg.com/ext_tw_video_thumb/1690400079297859584/pu/img/BNrxmGkkPJJBCvCs.jpg","type":"video"},{"media_key":"3_1690385198695743488","type":"photo"},{"media_key":"3_1690377538986459136","type":"photo"},{"media_key":"3_1690355106611339265","type":"photo"},{"media_key":"3_1690353581860237313","type":"photo"},{"media_key":"3_1690353593906327552","type":"photo"},{"media_key":"3_1690353605050585090","type":"photo"},{"media_key":"3_1690340121718251521","type":"photo"},{"media_key":"3_1690315287353061376","type":"photo"},{"media_key":"3_1690309420956221440","type":"photo"},{"media_key":"3_1690300845210935296","type":"photo"},{"media_key":"3_1690270966687924224","type":"photo"},{"media_key":"3_1690268097884635137","type":"photo"},{"media_key":"3_1690265470027321344","type":"photo"},{"media_key":"3_1690261300557881346","type":"photo"},{"media_key":"3_1690261613213802498","type":"photo"},{"media_key":"3_1690261086480556032","type":"photo"},{"media_key":"3_1690210605347577856","type":"photo"},{"media_key":"3_1690154380765343744","type":"photo"}],"users":[{"profile_image_url":"https://pbs.twimg.com/profile_images/1677628913890234368/uedpaUVR_normal.jpg","username":"_hywe_","name":"HYWE","id":"1677619435212001280"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1488661217057124355/rdfOlJ2a_normal.jpg","username":"NetMentorTW","name":"Ivan Abad","id":"1110598515615547392"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1724897700/150x150_normal.png","username":"globalgeeknews","name":"Global Geek News","id":"43045391"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1663913002142248964/GI8iniLf_normal.jpg","username":"pcnerd37","name":"Jeremy \uD83D\uDCBB\uD83C\uDFAE\uD83D\uDD2D","id":"10370632"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1538166477743919105/duZ2oBrg_normal.jpg","username":"Dave_DotNet","name":"Dave Callan | dotnet","id":"1433020305979723778"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1628154235924713474/mXApTZWy_normal.jpg","username":"Timmoth_j","name":"Timmoth","id":"1612396986887544832"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1672653524415414273/m9Mzginv_normal.jpg","username":"ponkay100","name":"Women in Tech","id":"1459954664158412801"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690752938044452864/7cDfAhTf_normal.jpg","username":"developer_avg","name":"Meebi","id":"1649821256576012288"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690584229036355584/njFWb8gJ_normal.jpg","username":"MarcosCostaDev","name":"Marcos Costa","id":"121547986"},{"profile_image_url":"https://pbs.twimg.com/profile_images/937091164951289856/tfIoqXYr_normal.jpg","username":"imabit_inc","name":"Imabit Inc","id":"175627617"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1052285678342438912/V6LP8BoX_normal.jpg","username":"hasdid","name":"Yohan J. Rodríguez","id":"386830764"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1572677612400517127/Lns-SZzk_normal.jpg","username":"dotnet__news","name":".NET Developers","id":"3701184373"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1582759397209640960/ausiRBJR_normal.jpg","username":"dotnetgyaan","name":"DotnetGyaan India","id":"1582757073665810435"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1268049901964926978/vd-DWT3C_normal.jpg","username":"marcjacobi","name":"IYKYK \uD83C\uDDF3\uD83C\uDDF1 MMXXIII","id":"18240757"},{"profile_image_url":"https://pbs.twimg.com/profile_images/990982337931264000/RlAdSmao_normal.jpg","username":"KMCconsulting_","name":"KMC Consulting","id":"878214183002583040"},{"profile_image_url":"https://pbs.twimg.com/profile_images/922484990251814912/CybC-qgy_normal.jpg","username":"pchpcompiler","name":"PeachPie Compiler","id":"4827584351"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1272892133352054785/6FoGToM0_normal.jpg","username":"raffaeler","name":"Raffaele Rialdi","id":"18672349"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1651054639960276993/b20Cpdbe_normal.jpg","username":"_maurobernal","name":"Mauro Bernal","id":"107456636"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1660237448994234369/t2rtdfeh_normal.jpg","username":"theumairtahir","name":"Umair Tahir","id":"1660236153151455232"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1614047023610888192/zcaYPHhJ_normal.jpg","username":"DevLeaderCa","name":"devleader","id":"1614046806769557504"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1465253429815570432/sHSW-xMT_normal.jpg","username":"DTechjoint","name":"Digital TechJoint","id":"1189051714709512192"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1259867736731275265/ZfE0epIj_normal.jpg","username":"danpdc","name":"Dan Patrascu","id":"92782367"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1689982222147678208/ZPDXa-Gn_normal.jpg","username":"CodingxGuru","name":"Coding Guru","id":"1689980569445076992"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690672280899330048/rPg5zQj1_normal.jpg","username":"urskksv","name":"KK","id":"937366240061984768"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1155415603806658561/za1zlnNG_normal.jpg","username":"muhdamean","name":"Muhammad Aminu Aliyu","id":"377897280"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690728549173661696/tIKIuc3I_normal.jpg","username":"Honey_Ramgarhia","name":"Harsh Matharu","id":"233838645"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1622018386594234369/ZPhPVmL8_normal.jpg","username":"RaenLua","name":"Raen","id":"986417932606427136"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1597836054895423490/QdvzDPuo_normal.jpg","username":"harishchand314","name":"Harish Chand","id":"945968262193356800"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1330797664980537345/qvhCTXLz_normal.jpg","username":"CourseGalaxy","name":"CourseGalaxy","id":"4488655693"},{"profile_image_url":"https://pbs.twimg.com/profile_images/738068168137048065/jU9eXmoG_normal.jpg","username":"ardalis","name":"Steve \"ardalis\" Smith","id":"14078289"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1679068197528403968/ZlR9HlxB_normal.png","username":"bugandfixes","name":"Bug & Fix","id":"1678670289196990465"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690449121973329921/JZN6CXC-_normal.jpg","username":"peymanr34","name":"Shleemypants #MahsaAmini","id":"419768306"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1613200626418159617/6TKMf-WO_normal.jpg","username":"TheDotNetDev","name":"The .NET Dev","id":"1115659846496342016"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1483556563679862786/O1J2lM-h_normal.jpg","username":"madnan_rafiq","name":"adnan","id":"348682973"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1280251228191027200/2KJ-2WUg_normal.jpg","username":"CFDevelop","name":"Christian Findlay","id":"1089089886949265408"},{"profile_image_url":"https://pbs.twimg.com/profile_images/437025596736946177/Y-jKqEvt_normal.png","username":"RenatoGroff","name":"Renato Groff","id":"2355503190"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1549766117031399424/Re9c6g4G_normal.jpg","username":"samsmithnz","name":"Sam Smith","id":"52390333"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1654128307666055168/baM-iSXk_normal.jpg","username":"xorzulp","name":"Geoffrey","id":"1524065307777814529"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1001250799366877185/ghGCeLnH_normal.jpg","username":"DimaL_number9","name":"Dmitri L","id":"248547864"},{"profile_image_url":"https://pbs.twimg.com/profile_images/607371246288826368/LdHXz_XN_normal.png","username":"LearnNetGrow","name":"Learn Internet Grow","id":"3105433476"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1605597905078960130/P6yIP_Zh_normal.jpg","username":"MikeCodesDotNET","name":"Mike James","id":"260316346"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1629744893978644481/SaOsG93D_normal.jpg","username":"mysticmindB","name":"Babu Annamalai","id":"14284977"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1369176506170150913/52ihTsBz_normal.jpg","username":"CsharpCorner","name":"C# Corner","id":"241007239"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690401482292490240/88ufRgno_normal.jpg","username":"skullsameh1","name":"skullsameh","id":"1394990462725918724"},{"profile_image_url":"https://pbs.twimg.com/profile_images/723073161240162304/fA6OO9Xs_normal.jpg","username":"MircoVanini","name":"Mirco Vanini","id":"347196451"},{"profile_image_url":"https://pbs.twimg.com/profile_images/355446711/nimblepros-profile-image_normal.png","username":"nimblepros","name":"NimblePros","id":"33592476"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1634303738948009989/rVVjzZVO_normal.jpg","username":"PatrickMageez","name":"Patrick Magee","id":"239538962"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1336940144297852928/4LFC7gXf_normal.jpg","username":"jaygurudev890","name":"ajjubhai.js","id":"783281111262695424"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1255228082287411201/9QYJNHg4_normal.jpg","username":"LauchaCarro","name":"Lautaro Carro ⭐⭐⭐","id":"160736645"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1471027265068748805/MmiYbfmq_normal.jpg","username":"KaragozMCan","name":"Mehmet Can Karagöz","id":"2944865614"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1333289483/Ramona_Zune2_normal.png","username":"RamonaEid","name":"Ramona Eid","id":"84602512"},{"profile_image_url":"https://pbs.twimg.com/profile_images/378800000592282043/b59c0ce84df76e778085fd418022d04e_normal.jpeg","username":"JoeIngeno","name":"Joe Ingeno","id":"122122818"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1238483125140893703/Dz96vaSW_normal.jpg","username":"latinonetonline","name":"Latino .NET Online","id":"1238468750921412609"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1515380154490671104/oXGcYoDf_normal.jpg","username":"lesterbotello","name":"\uD83C\uDDE9\uD83C\uDDF4 \uD83D\uDC68\uD83C\uDFFB‍\uD83D\uDCBB\uD83C\uDDE8\uD83C\uDDE6","id":"230294475"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1391371827306549248/jCFuT0am_normal.jpg","username":"pim_brouwers","name":"pim","id":"1328381603777826817"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1522197565131063296/B2a2sy2R_normal.jpg","username":"VT_Himawari_Owl","name":"Hoshimura Himawari","id":"1435992676256473094"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1565011872033693698/yzzpv74A_normal.jpg","username":"TheCodeMan__","name":"Stefan Đokić","id":"491684234"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1602255783508541440/-CLa8GUX_normal.jpg","username":"AhmadMozaffar99","name":"Ahmad Mozaffar (AK)","id":"743186361784606721"},{"profile_image_url":"https://pbs.twimg.com/profile_images/879615572568363008/4B03TzEr_normal.jpg","username":"msdev_de","name":"Microsoft Developer","id":"21281558"},{"profile_image_url":"https://pbs.twimg.com/profile_images/3055998355/fa1728744a1715fbb1435ba2318797d6_normal.jpeg","username":"JohanSmarius","name":"Johan Smarius","id":"51530400"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1458947665857712129/t3pDSiJG_normal.jpg","username":"jguadagno","name":"Joe Guadagno","id":"15749760"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1618666048756015104/7TJgFHWe_normal.jpg","username":"CorneHoskam","name":"Corné Hoskam","id":"1320779906226266113"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1637164093625835521/Bo0T06hb_normal.jpg","username":"cmendibl3","name":"Carlos Mendible","id":"84275426"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1690795165307256833/wothweB-_normal.jpg","username":"iPazooki","name":"Mo","id":"105079425"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1484887712381427713/up8FTXD3_normal.jpg","username":"CodeMazeBlog","name":"Marinko (Code Maze)","id":"110541370"},{"profile_image_url":"https://pbs.twimg.com/profile_images/692019670/033_normal.gif","username":"MartinTaylor80","name":"Martin Taylor","id":"103907630"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1369176375333056514/FUUJPm6B_normal.jpg","username":"CSharpDotTV","name":"CSharp TV","id":"1327296775409999872"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1139412460769697792/J5u3T_ci_normal.png","username":"dracan","name":"Dan Clarke \uD83C\uDF99 mstdn.social/@danclarke","id":"17221835"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1594333397295538177/aEJUEfXN_normal.jpg","username":"coder6_","name":"coder (π, π)","id":"69070124"},{"profile_image_url":"https://pbs.twimg.com/profile_images/746246185518829568/N36MlNm7_normal.jpg","username":"bvrhovnik","name":"Bojan Vrhovnik","id":"43944239"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1659078491982434310/XrwWHPua_normal.jpg","username":"Mantras2Success","name":"Mantras2Success","id":"2580399614"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1399988701292236803/VaOJwTiw_normal.jpg","username":"CbaInfotech","name":"Cba Infotech Gurdaspur","id":"935061076214824960"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1649434723775574021/zrfSXbUm_normal.jpg","username":"Altaine","name":"Sam Robinson","id":"30930870"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1592360086823129089/b8_iiHPZ_normal.jpg","username":"CodeInvest_","name":"Ilyas Khan","id":"1384241114278887427"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1688979172658401280/U0YvbM_6_normal.jpg","username":"TomK3rridge","name":"Tomk3rridge","id":"946463573609467904"},{"profile_image_url":"https://pbs.twimg.com/profile_images/900087380278824960/AFcc9ORV_normal.jpg","username":"GrapeCityUS","name":"GrapeCityUS","id":"20187433"},{"profile_image_url":"https://pbs.twimg.com/profile_images/1242994611603353600/ZP5V8gxj_normal.jpg","username":"zeqk","name":"zeqk","id":"15034526"}]},"meta":{"newest_id":"1690796516821397504","oldest_id":"1690154206827610112","result_count":100,"next_token":"b26v89c19zqg8o3fqkrxjh7so3xwl7qh5qm0gomz8k6m5"}} diff --git a/src/TagzApp.Providers.Twitter/Models/Tweet.cs b/src/TagzApp.Providers.Twitter/Models/Tweet.cs index 090ab660..bac6b191 100644 --- a/src/TagzApp.Providers.Twitter/Models/Tweet.cs +++ b/src/TagzApp.Providers.Twitter/Models/Tweet.cs @@ -1,6 +1,7 @@ namespace TagzApp.Providers.Twitter.Models; + public class TwitterData { public Tweet[] data { get; set; } @@ -10,26 +11,26 @@ public class TwitterData public class Includes { - public User[] users { get; set; } public Medium[] media { get; set; } + public User[] users { get; set; } } -public class User +public class Medium { - public string id { get; set; } - public string name { get; set; } - public string username { get; set; } + public string media_key { get; set; } + public string? preview_image_url { get; set; } + public string type { get; set; } + public string? alt_text { get; set; } + public int? height { get; set; } + public int? width { get; set; } } -public class Medium +public class User { - public string url { get; set; } - public string type { get; set; } - public int width { get; set; } - public string media_key { get; set; } - public int height { get; set; } - public string alt_text { get; set; } - public string preview_image_url { get; set; } + public string profile_image_url { get; set; } + public string username { get; set; } + public string name { get; set; } + public string id { get; set; } } public class Meta @@ -43,38 +44,23 @@ public class Meta public class Tweet { public string author_id { get; set; } - public string id { get; set; } - public Entities entities { get; set; } - public string[] edit_history_tweet_ids { get; set; } public DateTime created_at { get; set; } public string text { get; set; } + public Entities entities { get; set; } + public string[] edit_history_tweet_ids { get; set; } public Attachments attachments { get; set; } + public string id { get; set; } } public class Entities { - public Mention[] mentions { get; set; } - public Hashtag[] hashtags { get; set; } public Url[] urls { get; set; } + public Hashtag[] hashtags { get; set; } public Annotation[] annotations { get; set; } + public Mention[] mentions { get; set; } public Cashtag[] cashtags { get; set; } } -public class Mention -{ - public int start { get; set; } - public int end { get; set; } - public string username { get; set; } - public string id { get; set; } -} - -public class Hashtag -{ - public int start { get; set; } - public int end { get; set; } - public string tag { get; set; } -} - public class Url { public int start { get; set; } @@ -82,12 +68,12 @@ public class Url public string url { get; set; } public string expanded_url { get; set; } public string display_url { get; set; } + public string media_key { get; set; } public Image[] images { get; set; } public int status { get; set; } public string title { get; set; } public string description { get; set; } public string unwound_url { get; set; } - public string media_key { get; set; } } public class Image @@ -97,6 +83,13 @@ public class Image public int height { get; set; } } +public class Hashtag +{ + public int start { get; set; } + public int end { get; set; } + public string tag { get; set; } +} + public class Annotation { public int start { get; set; } @@ -106,6 +99,14 @@ public class Annotation public string normalized_text { get; set; } } +public class Mention +{ + public int start { get; set; } + public int end { get; set; } + public string username { get; set; } + public string id { get; set; } +} + public class Cashtag { public int start { get; set; } @@ -117,5 +118,3 @@ public class Attachments { public string[] media_keys { get; set; } } - - diff --git a/src/TagzApp.Providers.Twitter/TagzApp.Providers.Twitter.csproj b/src/TagzApp.Providers.Twitter/TagzApp.Providers.Twitter.csproj index c2ea9d50..4023d08a 100644 --- a/src/TagzApp.Providers.Twitter/TagzApp.Providers.Twitter.csproj +++ b/src/TagzApp.Providers.Twitter/TagzApp.Providers.Twitter.csproj @@ -6,6 +6,14 @@ enable + + + + + + + + diff --git a/src/TagzApp.Providers.Twitter/TwitterProvider.cs b/src/TagzApp.Providers.Twitter/TwitterProvider.cs index 4f762800..7738a8c8 100644 --- a/src/TagzApp.Providers.Twitter/TwitterProvider.cs +++ b/src/TagzApp.Providers.Twitter/TwitterProvider.cs @@ -1,4 +1,6 @@ -using System.Text.Json; +using System.Net.Http.Json; +using System.Reflection; +using System.Text.Json; using System.Web; using TagzApp.Providers.Twitter.Models; @@ -46,7 +48,16 @@ public async Task> GetContentForHashtag(Common.Hashtag tag, _NewestId = recentTweets.meta.newest_id ?? _NewestId; #else - recentTweets = JsonSerializer.Deserialize("{\"data\":[{\"id\":\"1687094100091170816\",\"entities\":{\"hashtags\":[{\"start\":129,\"end\":140,\"tag\":\"dotnetmaui\"},{\"start\":141,\"end\":148,\"tag\":\"blazor\"},{\"start\":149,\"end\":156,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":104,\"end\":127,\"url\":\"https://t.co/Yz8IWFyYWe\",\"expanded_url\":\"https://share.transistor.fm/s/78ade0bf\",\"display_url\":\"share.transistor.fm/s/78ade0bf\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687094105547952129/ay2vB-I_?format=jpg&name=orig\",\"width\":800,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1687094105547952129/ay2vB-I_?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"130. Är .NET framtiden för webb- och apputveckling? | Developers! - mer än bara kod | Episode 130\",\"description\":\"I detta spännande avsnitt tar vi oss an en klurig fråga om .NET och dess plats i webb- och apputvecklingsvärlden. Med oss har vi ingen mindre än Daniel Hindrikes, en äkta expert på ämnet.Vi tar en titt på vad som är nytt med .NET 8, vilka möjligheter och utmaningar som finns inom webb- och...\",\"unwound_url\":\"https://share.transistor.fm/s/78ade0bf\"}],\"mentions\":[{\"start\":47,\"end\":60,\"username\":\"soffilicious\",\"id\":\"93051755\"}]},\"author_id\":\"262571495\",\"edit_history_tweet_ids\":[\"1687094100091170816\"],\"created_at\":\"2023-08-03T13:32:32.000Z\",\"text\":\"I senaste avsnittet av Developers! gästade jag @soffilicious och Madde och pratade om Maui och Blazor!\\n\\nhttps://t.co/Yz8IWFyYWe\\n\\n#dotnetmaui #blazor #dotnet\"},{\"id\":\"1687093463433510913\",\"entities\":{\"hashtags\":[{\"start\":85,\"end\":100,\"tag\":\"jetbrainsrider\"},{\"start\":101,\"end\":108,\"tag\":\"dotnet\"},{\"start\":109,\"end\":116,\"tag\":\"csharp\"},{\"start\":117,\"end\":120,\"tag\":\"ai\"},{\"start\":121,\"end\":124,\"tag\":\"ux\"},{\"start\":125,\"end\":131,\"tag\":\"rider\"},{\"start\":132,\"end\":142,\"tag\":\"jetbrains\"},{\"start\":143,\"end\":156,\"tag\":\"Productivity\"}],\"urls\":[{\"start\":158,\"end\":181,\"url\":\"https://t.co/mqwcueH9Gg\",\"expanded_url\":\"https://blog.jetbrains.com/dotnet/2023/08/02/rider-2023-2-release/\",\"display_url\":\"blog.jetbrains.com/dotnet/2023/08…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686950357677522944/YTgYLuUV?format=jpg&name=orig\",\"width\":2560,\"height\":1440},{\"url\":\"https://pbs.twimg.com/news_img/1686950357677522944/YTgYLuUV?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Rider 2023.2: Better C# Support, UX/UI Enhancements, AI-Powered Features, and More | The .NET Tools Blog\",\"description\":\"A new major update for Rider has just been published! You can download the 2023.2 release build from our website, install it via the Toolbox App, or use this snap package from the Snapсraft store (if\",\"unwound_url\":\"https://blog.jetbrains.com/dotnet/2023/08/02/rider-2023-2-release/\"}],\"annotations\":[{\"start\":0,\"end\":11,\"probability\":0.5697,\"type\":\"Other\",\"normalized_text\":\"Rider 2023.2\"},{\"start\":33,\"end\":34,\"probability\":0.4685,\"type\":\"Other\",\"normalized_text\":\"UX\"},{\"start\":102,\"end\":107,\"probability\":0.4576,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":110,\"end\":115,\"probability\":0.7601,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":122,\"end\":123,\"probability\":0.4208,\"type\":\"Other\",\"normalized_text\":\"ux\"}]},\"author_id\":\"6832532\",\"edit_history_tweet_ids\":[\"1687093463433510913\"],\"created_at\":\"2023-08-03T13:30:01.000Z\",\"text\":\"Rider 2023.2: Better C# Support, UX/UI Enhancements, AI-Powered Features, and More.\\n\\n#jetbrainsrider #dotnet #csharp #ai #ux #rider #jetbrains #Productivity \\nhttps://t.co/mqwcueH9Gg\"},{\"id\":\"1687089148631355392\",\"entities\":{\"hashtags\":[{\"start\":33,\"end\":40,\"tag\":\"dotNET\"},{\"start\":42,\"end\":46,\"tag\":\"IoT\"},{\"start\":77,\"end\":85,\"tag\":\"Bristol\"}],\"urls\":[{\"start\":98,\"end\":121,\"url\":\"https://t.co/ff7m4A8hAg\",\"expanded_url\":\"https://www.meetup.com/dotnetsouthwest/events/295066920\",\"display_url\":\"meetup.com/dotnetsouthwes…\",\"status\":200,\"title\":\".NET, IoT and Hedgehogs!, Tue, Aug 15, 2023, 6:30 PM | Meetup\",\"description\":\"[In-person \\uD83C\\uDFEB] During August, as it's the summer holidays, we're getting a fun talk from the fantastic Mike Irving! **.NET, Hedgehogs and IoT** \\\\- Mike Irving Using C# /\",\"unwound_url\":\"https://www.meetup.com/dotnetsouthwest/events/295066920\"}],\"mentions\":[{\"start\":57,\"end\":73,\"username\":\"dotnetsouthwest\",\"id\":\"4151544111\"}],\"annotations\":[{\"start\":34,\"end\":39,\"probability\":0.42,\"type\":\"Other\",\"normalized_text\":\"dotNET\"},{\"start\":43,\"end\":45,\"probability\":0.4964,\"type\":\"Other\",\"normalized_text\":\"IoT\"},{\"start\":78,\"end\":84,\"probability\":0.9677,\"type\":\"Place\",\"normalized_text\":\"Bristol\"}]},\"author_id\":\"47569339\",\"edit_history_tweet_ids\":[\"1687089148631355392\"],\"created_at\":\"2023-08-03T13:12:52.000Z\",\"text\":\"I'm heading south ⬇️ to bring my #dotNET, #IoT \\uD83E\\uDD94 talk to @dotnetsouthwest in #Bristol on Aug 15th https://t.co/ff7m4A8hAg\"},{\"id\":\"1687087594939744256\",\"entities\":{\"hashtags\":[{\"start\":140,\"end\":150,\"tag\":\"developer\"},{\"start\":151,\"end\":158,\"tag\":\"Coding\"},{\"start\":159,\"end\":173,\"tag\":\"100DaysOfCode\"},{\"start\":174,\"end\":191,\"tag\":\"programminghumor\"},{\"start\":192,\"end\":199,\"tag\":\"Dotnet\"}]},\"author_id\":\"1417194061362974726\",\"edit_history_tweet_ids\":[\"1687087594939744256\"],\"created_at\":\"2023-08-03T13:06:41.000Z\",\"text\":\"Why do developers always look so calm and composed?\\n\\nBecause they know that behind every bug, there's a \\\"feature\\\" waiting to be discovered!\\n#developer #Coding #100DaysOfCode #programminghumor #Dotnet\"},{\"id\":\"1687086067449475073\",\"entities\":{\"hashtags\":[{\"start\":24,\"end\":31,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":0,\"end\":23,\"url\":\"https://t.co/fpi4PaF1lJ\",\"expanded_url\":\"https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.user-secrets\",\"display_url\":\"marketplace.visualstudio.com/items?itemName…\",\"status\":200,\"title\":\".NET Core User Secrets - Visual Studio Marketplace\",\"description\":\"Extension for Visual Studio Code - Extension mimicking Visual Studio's \\\"Manage User Secrets\\\" functionality.\",\"unwound_url\":\"https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.user-secrets\"}]},\"author_id\":\"193457446\",\"edit_history_tweet_ids\":[\"1687086067449475073\"],\"created_at\":\"2023-08-03T13:00:37.000Z\",\"text\":\"https://t.co/fpi4PaF1lJ\\n#dotnet\"},{\"id\":\"1687084837998342144\",\"entities\":{\"hashtags\":[{\"start\":34,\"end\":41,\"tag\":\"dotnet\"},{\"start\":137,\"end\":151,\"tag\":\"TheDotNetShow\"}],\"urls\":[{\"start\":53,\"end\":76,\"url\":\"https://t.co/qePaWwoJqg\",\"expanded_url\":\"https://youtu.be/RgpVqlNwCNc\",\"display_url\":\"youtu.be/RgpVqlNwCNc\",\"status\":200,\"title\":\"Automating Browser UI: The .NET Show with Carl Franklin Ep 46\",\"description\":\"Carl writes a .NET Framework utility to read portions of the screen with OCR, click, and send text to automate interactions in the browser.⚡️⚡️⚡️ Register yo...\",\"unwound_url\":\"https://www.youtube.com/watch?v=RgpVqlNwCNc&feature=youtu.be\"},{\"start\":186,\"end\":209,\"url\":\"https://t.co/8rtQgMrOim\",\"expanded_url\":\"https://twitter.com/carlfranklin/status/1687084837998342144/photo/1\",\"display_url\":\"pic.twitter.com/8rtQgMrOim\",\"media_key\":\"3_1687084322921095168\"}],\"annotations\":[{\"start\":35,\"end\":40,\"probability\":0.8143,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":138,\"end\":150,\"probability\":0.7667,\"type\":\"Other\",\"normalized_text\":\"TheDotNetShow\"}]},\"attachments\":{\"media_keys\":[\"3_1687084322921095168\"]},\"author_id\":\"14638790\",\"edit_history_tweet_ids\":[\"1687084837998342144\"],\"created_at\":\"2023-08-03T12:55:44.000Z\",\"text\":\"Automate UI in a browser with the #dotnet Framework! https://t.co/qePaWwoJqg Read text on the screen, click, and send text. Learn how on #TheDotNetShow Premieres Friday, Aug 4 at 2PM ET https://t.co/8rtQgMrOim\"},{\"id\":\"1687081775271727104\",\"entities\":{\"hashtags\":[{\"start\":59,\"end\":63,\"tag\":\"job\"},{\"start\":102,\"end\":109,\"tag\":\"Dotnet\"},{\"start\":124,\"end\":140,\"tag\":\"Machinelearning\"}],\"urls\":[{\"start\":201,\"end\":224,\"url\":\"https://t.co/EQLK7laX43\",\"expanded_url\":\"https://marvel-inc.com/\",\"display_url\":\"marvel-inc.com\",\"status\":200,\"title\":\"marvel-inc – Marvel-Tech\",\"description\":\"Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated. 411 University St, Seattle, USA World-class Talent for your success Want to build a talented and competent workforce that scales up and down based on your business? Contact us now to hire onsite, offshore and remote professional talents for your team with strong technical and communication skills. //Marvel Inc LEARN MORE END-TO-END DEVELOPMENT We are 100+ professional\",\"unwound_url\":\"https://marvel-inc.com/\"},{\"start\":267,\"end\":290,\"url\":\"https://t.co/UxAnaBOO4u\",\"expanded_url\":\"https://twitter.com/MarvelTechnolo2/status/1687081775271727104/photo/1\",\"display_url\":\"pic.twitter.com/UxAnaBOO4u\",\"media_key\":\"3_1687081761841483776\"}],\"annotations\":[{\"start\":103,\"end\":108,\"probability\":0.5429,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1687081761841483776\"]},\"author_id\":\"1550081142300491776\",\"edit_history_tweet_ids\":[\"1687081775271727104\"],\"created_at\":\"2023-08-03T12:43:34.000Z\",\"text\":\"Hirings are on!\\n\\nWe are looking for the best in profession #job aspirants for our open positions of - #Dotnet Developer and #Machinelearning Engineer.\\n\\nHurry up, Connect with us now.\\n\\nConnect with us:\\nhttps://t.co/EQLK7laX43\\nContactus@marvel-inc.com\\n+1(248)-500-7181 https://t.co/UxAnaBOO4u\"},{\"id\":\"1687078450970890240\",\"entities\":{\"hashtags\":[{\"start\":2,\"end\":7,\"tag\":\"Chef\"},{\"start\":17,\"end\":37,\"tag\":\"TechnicoFonctionnel\"},{\"start\":40,\"end\":51,\"tag\":\"Strasbourg\"},{\"start\":91,\"end\":108,\"tag\":\"cahierdescharges\"},{\"start\":173,\"end\":179,\"tag\":\"sites\"},{\"start\":186,\"end\":199,\"tag\":\"applications\"},{\"start\":229,\"end\":234,\"tag\":\"Java\"},{\"start\":236,\"end\":243,\"tag\":\"DotNet\"},{\"start\":245,\"end\":249,\"tag\":\"PHP\"}],\"urls\":[{\"start\":257,\"end\":280,\"url\":\"https://t.co/eAqnIHIIFx\",\"expanded_url\":\"https://www.sully-group.com/fr/w/chef-de-projet-technico-fonctionnel-strasbourg\",\"display_url\":\"sully-group.com/fr/w/chef-de-p…\",\"status\":200,\"title\":\"Chef de projet technico-fonctionnel (H/F) à Strasbourg\",\"description\":\"Accueil chevron_right Offres d'emploi Le Centre de services de Strasbourg intervient sur des projets de développement de sites et d’applications de gestion sur différentes technologies (Java, .Net, PHP, etc.). Avec le démarrage de nouveaux projets, nous avons besoin de renforcer nos équipes: nous recrutons un chef de projets technico-fonctionnel ! Vous avez envie de rejoindre des projets à fort impact ? Nous avons ce qu’il vous faut ! Vous êtes l'interlocuteur unique du client, du cahier des charges à la\",\"unwound_url\":\"https://www.sully-group.com/fr/w/chef-de-projet-technico-fonctionnel-strasbourg\"},{\"start\":281,\"end\":304,\"url\":\"https://t.co/vUairUQhtr\",\"expanded_url\":\"https://twitter.com/SullyGroup/status/1687078450970890240/photo/1\",\"display_url\":\"pic.twitter.com/vUairUQhtr\",\"media_key\":\"3_1687078448534089728\"}]},\"attachments\":{\"media_keys\":[\"3_1687078448534089728\"]},\"author_id\":\"817299432899301376\",\"edit_history_tweet_ids\":[\"1687078450970890240\"],\"created_at\":\"2023-08-03T12:30:21.000Z\",\"text\":\"\\uD83D\\uDC4B #Chef deProjet #TechnicoFonctionnel à #Strasbourg \\n\\n◾ Interlocuteur unique du client, du #cahierdescharges à la livraison\\n◾ Intervenir sur des projets de développement de #sites & #applications sur différentes technologies #Java, #DotNet, #PHP ...\\n\\n\\uD83D\\uDCAC https://t.co/eAqnIHIIFx https://t.co/vUairUQhtr\"},{\"id\":\"1687076160000212992\",\"entities\":{\"hashtags\":[{\"start\":24,\"end\":31,\"tag\":\"efcore\"},{\"start\":32,\"end\":39,\"tag\":\"dotnet\"},{\"start\":40,\"end\":56,\"tag\":\"entityframework\"}],\"urls\":[{\"start\":0,\"end\":23,\"url\":\"https://t.co/wNEf3JAXwn\",\"expanded_url\":\"https://dotnetcoretutorials.com/a-cleaner-way-to-do-entity-configuration-with-ef-core/?expand_article=1\",\"display_url\":\"dotnetcoretutorials.com/a-cleaner-way-…\",\"status\":200,\"title\":\"A Cleaner Way To Do Entity Configuration With EF Core - .NET Core Tutorials\",\"description\":\"Entity Framework Core is one of the best .NET technologies for data access. But what if you want to configure entities? In this article, we'll explore how to do so using the same API surface as EF Core.\",\"unwound_url\":\"https://dotnetcoretutorials.com/a-cleaner-way-to-do-entity-configuration-with-ef-core/?expand_article=1\"}]},\"author_id\":\"193457446\",\"edit_history_tweet_ids\":[\"1687076160000212992\"],\"created_at\":\"2023-08-03T12:21:15.000Z\",\"text\":\"https://t.co/wNEf3JAXwn\\n#efcore #dotnet #entityframework\"},{\"id\":\"1687075341636861952\",\"entities\":{\"hashtags\":[{\"start\":244,\"end\":255,\"tag\":\"aspnetcore\"},{\"start\":256,\"end\":263,\"tag\":\"dotnet\"},{\"start\":264,\"end\":275,\"tag\":\"dotnetcore\"}],\"urls\":[{\"start\":219,\"end\":242,\"url\":\"https://t.co/7ndZAiSKpR\",\"expanded_url\":\"https://buff.ly/3UwpBju\",\"display_url\":\"buff.ly/3UwpBju\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687075399807766528/9TfRv17K?format=jpg&name=orig\",\"width\":2213,\"height\":2775},{\"url\":\"https://pbs.twimg.com/news_img/1687075399807766528/9TfRv17K?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"ASP.NET Core in Action, Third Edition\",\"description\":\"Build professional-grade full-stack web applications using C# and ASP.NET Core. In ASP.NET Core in Action, Third Edition you’ll learn how to: Build minimal APIs for serving JSON to client-side applications Create dynamic, server-side rendered applications using Razor Pages User authentication and authorization Store data using Entity Framework Core Unit and integration tests for ASP.NET Core applications Write custom middleware and components Fully updated to ASP.NET Core 7.0! In ASP.NET Core in Action, Third Edition Microsoft MVP Andrew Lock teaches you how you can use your C# and .NET skills to build amazing cross-platform web applications. This revised bestseller reveals the latest .NET patterns, including minimal APIs and minimal hosting. Even if you've never worked with ASP.NET, you'll start creating productive cross-platform web apps fast. Illustrations and annotated code make learning visual and easy.\",\"unwound_url\":\"https://www.manning.com/books/asp-net-core-in-action-third-edition?utm_source=twitter&utm_medium=author&utm_campaign=book_lock3_asp_9_29_22\"}],\"mentions\":[{\"start\":204,\"end\":217,\"username\":\"ManningBooks\",\"id\":\"24914741\"}],\"annotations\":[{\"start\":44,\"end\":80,\"probability\":0.6902,\"type\":\"Other\",\"normalized_text\":\"ASP​ .NET Core in Action, Third Editi\"},{\"start\":243,\"end\":252,\"probability\":0.5231,\"type\":\"Other\",\"normalized_text\":\"\\n#aspnetco\"},{\"start\":255,\"end\":260,\"probability\":0.5133,\"type\":\"Other\",\"normalized_text\":\" #dotn\"},{\"start\":263,\"end\":272,\"probability\":0.5722,\"type\":\"Other\",\"normalized_text\":\" #dotnetco\"}]},\"author_id\":\"731590382153269248\",\"edit_history_tweet_ids\":[\"1687075341636861952\"],\"created_at\":\"2023-08-03T12:18:00.000Z\",\"text\":\"\\uD83D\\uDDE3I'm excited to announce that my new book \\uD83D\\uDCD5 ASP​ .NET Core in Action, Third Edition \\uD83D\\uDCD5 has been published and is available in print \\uD83C\\uDF89\\uD83D\\uDCDA\\n\\nWhat's more, today only (August 3rd), you can get 45% off my book at @ManningBooks\\n\\nhttps://t.co/7ndZAiSKpR\\n\\n#aspnetcore #dotnet #dotnetcore\"},{\"id\":\"1687074529246384128\",\"entities\":{\"hashtags\":[{\"start\":113,\"end\":120,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":121,\"end\":144,\"url\":\"https://t.co/ACtEiuwAzU\",\"expanded_url\":\"https://twitter.com/gsferreira/status/1687074529246384128/photo/1\",\"display_url\":\"pic.twitter.com/ACtEiuwAzU\",\"media_key\":\"3_1687055581163450369\"}],\"annotations\":[{\"start\":12,\"end\":33,\"probability\":0.5477,\"type\":\"Other\",\"normalized_text\":\"Builder Design Pattern\"},{\"start\":114,\"end\":119,\"probability\":0.6269,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1687055581163450369\"]},\"author_id\":\"50387401\",\"edit_history_tweet_ids\":[\"1687074529246384128\"],\"created_at\":\"2023-08-03T12:14:46.000Z\",\"text\":\"What is the Builder Design Pattern, and how to use it to build better and maintainable tests? Let me tell you \\uD83D\\uDC47\\n\\n#dotnet https://t.co/ACtEiuwAzU\"},{\"id\":\"1687072410653147136\",\"entities\":{\"hashtags\":[{\"start\":67,\"end\":74,\"tag\":\"dotnet\"},{\"start\":75,\"end\":86,\"tag\":\"WindowsDev\"},{\"start\":87,\"end\":94,\"tag\":\"WebDev\"},{\"start\":95,\"end\":101,\"tag\":\"cloud\"},{\"start\":102,\"end\":110,\"tag\":\"DewDrop\"}],\"urls\":[{\"start\":43,\"end\":66,\"url\":\"https://t.co/As26DN4VHw\",\"expanded_url\":\"https://alvn.me/3DCkrfP\",\"display_url\":\"alvn.me/3DCkrfP\",\"status\":200,\"title\":\"Dew Drop – August 3, 2023 (#3997) – Morning Dew by Alvin Ashcraft\",\"description\":\"I am a Philadelphia-area technical writer, .NET developer, husband, dad, and geek. I currently work for Microsoft and have over 27 years of software development and writing experience.\",\"unwound_url\":\"https://www.alvinashcraft.com/2023/08/03/dew-drop-august-3-2023-3997/\"}],\"annotations\":[{\"start\":9,\"end\":16,\"probability\":0.8453,\"type\":\"Other\",\"normalized_text\":\"Dew Drop\"},{\"start\":68,\"end\":73,\"probability\":0.7639,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":76,\"end\":85,\"probability\":0.9612,\"type\":\"Other\",\"normalized_text\":\"WindowsDev\"},{\"start\":88,\"end\":93,\"probability\":0.8675,\"type\":\"Other\",\"normalized_text\":\"WebDev\"},{\"start\":96,\"end\":100,\"probability\":0.6195,\"type\":\"Other\",\"normalized_text\":\"cloud\"},{\"start\":103,\"end\":109,\"probability\":0.4886,\"type\":\"Other\",\"normalized_text\":\"DewDrop\"}]},\"author_id\":\"6832532\",\"edit_history_tweet_ids\":[\"1687072410653147136\"],\"created_at\":\"2023-08-03T12:06:21.000Z\",\"text\":\"blogged: Dew Drop – August 3, 2023 (#3997) https://t.co/As26DN4VHw #dotnet #WindowsDev #WebDev #cloud #DewDrop\"},{\"id\":\"1687070973256720384\",\"entities\":{\"hashtags\":[{\"start\":129,\"end\":136,\"tag\":\"dotnet\"},{\"start\":137,\"end\":149,\"tag\":\"programming\"},{\"start\":150,\"end\":157,\"tag\":\"coding\"},{\"start\":158,\"end\":165,\"tag\":\"csharp\"}],\"urls\":[{\"start\":104,\"end\":127,\"url\":\"https://t.co/cGcrhCIA7b\",\"expanded_url\":\"https://medium.com/@devleaderca/what-to-be-weary-of-with-iterators-and-collections-in-c-da6f14d27e8b\",\"display_url\":\"medium.com/@devleaderca/w…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687071019947757570/2YpfhIbz?format=jpg&name=orig\",\"width\":1000,\"height\":562},{\"url\":\"https://pbs.twimg.com/news_img/1687071019947757570/2YpfhIbz?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"What to be Weary of With Iterators and Collections in C#\",\"description\":\"Examples inspired by real world situations seen in production code\",\"unwound_url\":\"https://medium.com/@devleaderca/what-to-be-weary-of-with-iterators-and-collections-in-c-da6f14d27e8b\"}],\"annotations\":[{\"start\":159,\"end\":164,\"probability\":0.9441,\"type\":\"Other\",\"normalized_text\":\"csharp\"}]},\"author_id\":\"1614046806769557504\",\"edit_history_tweet_ids\":[\"1687070973256720384\"],\"created_at\":\"2023-08-03T12:00:38.000Z\",\"text\":\"Hey friends! Happy Thursday! Did you see this?\\n\\nWhat to be Wary of With Iterators and Collections in C#\\nhttps://t.co/cGcrhCIA7b\\n\\n#dotnet #programming #coding #csharp\"},{\"id\":\"1687070951567978496\",\"entities\":{\"hashtags\":[{\"start\":231,\"end\":238,\"tag\":\"dotnet\"},{\"start\":239,\"end\":246,\"tag\":\"csharp\"}],\"urls\":[{\"start\":207,\"end\":230,\"url\":\"https://t.co/LGHyhUxsdX\",\"expanded_url\":\"https://www.jetbrains.com/resharper/whatsnew?utm_source=twitter&utm_medium=referral&utm_campaign=resharper&utm_content=resharper_2023_2_release/#version-2023-2-cs\",\"display_url\":\"jetbrains.com/resharper/what…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686974793076113408/vPxKKKoV?format=jpg&name=orig\",\"width\":1280,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1686974793076113408/vPxKKKoV?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"What's New in ReSharper\",\"description\":\"What's new in the latest updates for ReSharper\",\"unwound_url\":\"https://www.jetbrains.com/resharper/whatsnew?utm_source=twitter&utm_medium=referral&utm_campaign=resharper&utm_content=resharper_2023_2_release/#version-2023-2-cs\"},{\"start\":247,\"end\":270,\"url\":\"https://t.co/LOWP8wpntt\",\"expanded_url\":\"https://twitter.com/resharper/status/1687070951567978496/photo/1\",\"display_url\":\"pic.twitter.com/LOWP8wpntt\",\"media_key\":\"16_1687070839634563073\"}],\"annotations\":[{\"start\":0,\"end\":8,\"probability\":0.8708,\"type\":\"Other\",\"normalized_text\":\"ReSharper\"},{\"start\":232,\"end\":237,\"probability\":0.6284,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":240,\"end\":245,\"probability\":0.9564,\"type\":\"Other\",\"normalized_text\":\"csharp\"}]},\"attachments\":{\"media_keys\":[\"16_1687070839634563073\"]},\"author_id\":\"14285097\",\"edit_history_tweet_ids\":[\"1687070951567978496\"],\"created_at\":\"2023-08-03T12:00:33.000Z\",\"text\":\"ReSharper 2023.2 comes with new code inspections and quick-fixes for working with raw string literals, as well as improved typing assists and some new formatting options.\\n\\nLearn more on our What's New page:\\nhttps://t.co/LGHyhUxsdX #dotnet #csharp https://t.co/LOWP8wpntt\"},{\"id\":\"1687070624529727488\",\"entities\":{\"hashtags\":[{\"start\":191,\"end\":198,\"tag\":\"dotnet\"},{\"start\":199,\"end\":206,\"tag\":\"gitlab\"}],\"urls\":[{\"start\":167,\"end\":190,\"url\":\"https://t.co/y0HBghqLXU\",\"expanded_url\":\"https://www.jetbrains.com/rider/whatsnew?utm_source=twitter&utm_medium=referral&utm_campaign=rider&utm_content=rider_2023_2_release/#version-2023-2-key-updates\",\"display_url\":\"jetbrains.com/rider/whatsnew…\",\"status\":200,\"title\":\"What’s New in Rider\",\"description\":\"What's new in recent JetBrains Rider updates\",\"unwound_url\":\"https://www.jetbrains.com/rider/whatsnew?utm_source=twitter&utm_medium=referral&utm_campaign=rider&utm_content=rider_2023_2_release/#version-2023-2-key-updates\"},{\"start\":207,\"end\":230,\"url\":\"https://t.co/KznzbwBHyk\",\"expanded_url\":\"https://twitter.com/JetBrainsRider/status/1687070624529727488/photo/1\",\"display_url\":\"pic.twitter.com/KznzbwBHyk\",\"media_key\":\"3_1687070386398056448\"}],\"mentions\":[{\"start\":26,\"end\":33,\"username\":\"gitlab\",\"id\":\"390167291\"}],\"annotations\":[{\"start\":37,\"end\":47,\"probability\":0.6417,\"type\":\"Other\",\"normalized_text\":\"Rider 2023.\"},{\"start\":108,\"end\":110,\"probability\":0.4247,\"type\":\"Other\",\"normalized_text\":\"IDE\"},{\"start\":192,\"end\":197,\"probability\":0.6218,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":200,\"end\":205,\"probability\":0.7523,\"type\":\"Other\",\"normalized_text\":\"gitlab\"}]},\"attachments\":{\"media_keys\":[\"3_1687070386398056448\"]},\"author_id\":\"4233812783\",\"edit_history_tweet_ids\":[\"1687070624529727488\"],\"created_at\":\"2023-08-03T11:59:15.000Z\",\"text\":\"\\uD83D\\uDCAAInitial integration with @GitLab in Rider 2023.2\\n\\nWork with the Merge Request functionality right from the IDE and streamline your development workflow.\\n\\nLearn more: https://t.co/y0HBghqLXU #dotnet #gitlab https://t.co/KznzbwBHyk\"},{\"id\":\"1687066172754186240\",\"entities\":{\"hashtags\":[{\"start\":40,\"end\":46,\"tag\":\"Excel\"},{\"start\":187,\"end\":194,\"tag\":\"CSharp\"},{\"start\":195,\"end\":213,\"tag\":\"DataVisualization\"},{\"start\":214,\"end\":221,\"tag\":\"DotNet\"}],\"urls\":[{\"start\":223,\"end\":246,\"url\":\"https://t.co/10Tq4lRQIH\",\"expanded_url\":\"https://pulse.ly/srx1psl827\",\"display_url\":\"pulse.ly/srx1psl827\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687066218321043456/Ni__3uAn?format=png&name=orig\",\"width\":1192,\"height\":668},{\"url\":\"https://pbs.twimg.com/news_img/1687066218321043456/Ni__3uAn?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"4 Simple Steps to Create Thumbnail Images for Excel Documents in C#\",\"description\":\"This blog explains how to create thumbnail images or Excel documents using the Syncfusion .NET Core Excel (XlsIO) Library.\",\"unwound_url\":\"https://www.syncfusion.com/blogs/post/excel-to-thumbnail-conversion-csharp.aspx?utm_source=twitter&utm_medium=social&utm_content=ap_srx1psl827\"}],\"annotations\":[{\"start\":41,\"end\":45,\"probability\":0.8119,\"type\":\"Other\",\"normalized_text\":\"Excel\"},{\"start\":71,\"end\":80,\"probability\":0.5316,\"type\":\"Other\",\"normalized_text\":\"Syncfusion\"},{\"start\":98,\"end\":110,\"probability\":0.6206,\"type\":\"Other\",\"normalized_text\":\"Excel Library\"},{\"start\":188,\"end\":193,\"probability\":0.6011,\"type\":\"Other\",\"normalized_text\":\"CSharp\"},{\"start\":215,\"end\":220,\"probability\":0.4265,\"type\":\"Other\",\"normalized_text\":\"DotNet\"}]},\"author_id\":\"41152441\",\"edit_history_tweet_ids\":[\"1687066172754186240\"],\"created_at\":\"2023-08-03T11:41:34.000Z\",\"text\":\"Creating eye-catching previews for your #Excel \\uD83D\\uDCDDfiles is a breeze with Syncfusion's comprehensive Excel Library!\\n\\n\\uD83D\\uDCF7 Unlock the power of Excel-to-thumbnail image conversion effortlessly.\\n\\n#CSharp #DataVisualization #DotNet\\n\\nhttps://t.co/10Tq4lRQIH\"},{\"id\":\"1687065767471108096\",\"entities\":{\"hashtags\":[{\"start\":82,\"end\":89,\"tag\":\"csharp\"},{\"start\":90,\"end\":97,\"tag\":\"Dotnet\"}],\"urls\":[{\"start\":100,\"end\":123,\"url\":\"https://t.co/kzaadiaMTF\",\"expanded_url\":\"https://youtu.be/H63AyenyOZU\",\"display_url\":\"youtu.be/H63AyenyOZU\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687065769702535169/mwaWUgwx?format=jpg&name=orig\",\"width\":1280,\"height\":720},{\"url\":\"https://pbs.twimg.com/news_img/1687065769702535169/mwaWUgwx?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"How to give ChatGPT a nickname using Chat Completion API?\",\"description\":\"The Custom Instructions feature of the ChatGPT Plus allows users to set all kinds of customized information, such as a nickname, to ChatGPT. But none of Open...\",\"unwound_url\":\"https://www.youtube.com/watch?v=H63AyenyOZU&feature=youtu.be\"},{\"start\":124,\"end\":147,\"url\":\"https://t.co/SRiyJwrb60\",\"expanded_url\":\"https://twitter.com/TomLiao2/status/1687065767471108096/photo/1\",\"display_url\":\"pic.twitter.com/SRiyJwrb60\",\"media_key\":\"3_1687065453582237696\"}],\"annotations\":[{\"start\":33,\"end\":39,\"probability\":0.9333,\"type\":\"Other\",\"normalized_text\":\"ChatGPT\"},{\"start\":56,\"end\":70,\"probability\":0.548,\"type\":\"Other\",\"normalized_text\":\"Chat Completion\"},{\"start\":83,\"end\":88,\"probability\":0.9736,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":91,\"end\":96,\"probability\":0.868,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1687065453582237696\"]},\"author_id\":\"703245450376130561\",\"edit_history_tweet_ids\":[\"1687065767471108096\"],\"created_at\":\"2023-08-03T11:39:57.000Z\",\"text\":\"The following is the way to give ChatGPT a nickname via Chat Completion API using #csharp #Dotnet. \\nhttps://t.co/kzaadiaMTF https://t.co/SRiyJwrb60\"},{\"id\":\"1687063801600843776\",\"entities\":{\"hashtags\":[{\"start\":162,\"end\":169,\"tag\":\"dotnet\"}],\"annotations\":[{\"start\":9,\"end\":23,\"probability\":0.9192,\"type\":\"Place\",\"normalized_text\":\"Tenerife Island\"},{\"start\":28,\"end\":32,\"probability\":0.9769,\"type\":\"Place\",\"normalized_text\":\"Spain\"},{\"start\":91,\"end\":99,\"probability\":0.3224,\"type\":\"Other\",\"normalized_text\":\"Nightlife\"},{\"start\":104,\"end\":111,\"probability\":0.9594,\"type\":\"Place\",\"normalized_text\":\"Tenerife\"}]},\"author_id\":\"816018044518563840\",\"edit_history_tweet_ids\":[\"1687063801600843776\"],\"created_at\":\"2023-08-03T11:32:09.000Z\",\"text\":\"Visiting Tenerife Island in Spain and I found myself looking for 3 things\\nPlaces to visit \\nNightlife in Tenerife\\n.Net Meetups \\uD83D\\uDE09\\nI guess it is all about balance \\uD83E\\uDD20\\n#dotnet\"},{\"id\":\"1687056046932582400\",\"entities\":{\"hashtags\":[{\"start\":146,\"end\":160,\"tag\":\"aspdotnetcore\"},{\"start\":161,\"end\":172,\"tag\":\"dotnetcore\"},{\"start\":173,\"end\":180,\"tag\":\"dotnet\"},{\"start\":181,\"end\":188,\"tag\":\"csharp\"}],\"urls\":[{\"start\":33,\"end\":56,\"url\":\"https://t.co/eUlyLLtFR2\",\"expanded_url\":\"http://ASP.NET\",\"display_url\":\"ASP.NET\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686763327253291013/RaQOrRHX?format=png&name=orig\",\"width\":459,\"height\":238},{\"url\":\"https://pbs.twimg.com/news_img/1686763327253291013/RaQOrRHX?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"ASP.NET | Open-source web framework for .NET\",\"description\":\"Build web apps and services that run on Windows, Linux, and macOS using C#, HTML, CSS, and JavaScript. Get started for free on Windows, Linux, or macOS.\",\"unwound_url\":\"https://dotnet.microsoft.com/en-us/apps/aspnet\"},{\"start\":121,\"end\":144,\"url\":\"https://t.co/DcpsoLASzY\",\"expanded_url\":\"http://mng.bz/WrEx\",\"display_url\":\"mng.bz/WrEx\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686331258077331456/vngAHbV-?format=png&name=orig\",\"width\":380,\"height\":203},{\"url\":\"https://pbs.twimg.com/news_img/1686331258077331456/vngAHbV-?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Deal of the Day\",\"description\":\"Manning is an independent publisher of computer books, videos, and courses.\",\"unwound_url\":\"https://www.manning.com/dotd?utm_source=twitter&utm_medium=organic&utm_campaign=dotd\"},{\"start\":189,\"end\":212,\"url\":\"https://t.co/zolZk9vUfE\",\"expanded_url\":\"https://twitter.com/ManningBooks/status/1687056046932582400/photo/1\",\"display_url\":\"pic.twitter.com/zolZk9vUfE\",\"media_key\":\"3_1687056039726747648\"},{\"start\":189,\"end\":212,\"url\":\"https://t.co/zolZk9vUfE\",\"expanded_url\":\"https://twitter.com/ManningBooks/status/1687056046932582400/photo/1\",\"display_url\":\"pic.twitter.com/zolZk9vUfE\",\"media_key\":\"3_1687056041668657154\"},{\"start\":189,\"end\":212,\"url\":\"https://t.co/zolZk9vUfE\",\"expanded_url\":\"https://twitter.com/ManningBooks/status/1687056046932582400/photo/1\",\"display_url\":\"pic.twitter.com/zolZk9vUfE\",\"media_key\":\"3_1687056043421892609\"},{\"start\":189,\"end\":212,\"url\":\"https://t.co/zolZk9vUfE\",\"expanded_url\":\"https://twitter.com/ManningBooks/status/1687056046932582400/photo/1\",\"display_url\":\"pic.twitter.com/zolZk9vUfE\",\"media_key\":\"3_1687056045342879744\"}],\"annotations\":[{\"start\":147,\"end\":159,\"probability\":0.662,\"type\":\"Other\",\"normalized_text\":\"aspdotnetcore\"},{\"start\":162,\"end\":171,\"probability\":0.7571,\"type\":\"Other\",\"normalized_text\":\"dotnetcore\"},{\"start\":174,\"end\":179,\"probability\":0.6948,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":182,\"end\":187,\"probability\":0.9327,\"type\":\"Other\",\"normalized_text\":\"csharp\"}]},\"attachments\":{\"media_keys\":[\"3_1687056039726747648\",\"3_1687056041668657154\",\"3_1687056043421892609\",\"3_1687056045342879744\"]},\"author_id\":\"24914741\",\"edit_history_tweet_ids\":[\"1687056046932582400\"],\"created_at\":\"2023-08-03T11:01:20.000Z\",\"text\":\"\\uD83D\\uDCE3Deal of the Day\\uD83D\\uDCE3\\n\\nToday, Aug 3, https://t.co/eUlyLLtFR2 Core in Action, Third Edition, and selected titles are on sale: https://t.co/DcpsoLASzY\\n\\n#aspdotnetcore #dotnetcore #dotnet #csharp https://t.co/zolZk9vUfE\"},{\"id\":\"1687055722863812608\",\"entities\":{\"hashtags\":[{\"start\":73,\"end\":84,\"tag\":\"Manchester\"},{\"start\":204,\"end\":211,\"tag\":\"CSharp\"},{\"start\":212,\"end\":230,\"tag\":\"SoftwareDeveloper\"},{\"start\":231,\"end\":248,\"tag\":\"SoftwareEngineer\"},{\"start\":249,\"end\":256,\"tag\":\"WebAPI\"},{\"start\":257,\"end\":268,\"tag\":\"JavaScript\"},{\"start\":269,\"end\":276,\"tag\":\"DotNet\"}],\"urls\":[{\"start\":179,\"end\":202,\"url\":\"https://t.co/U6hQ6Ephtb\",\"expanded_url\":\"https://tinyurl.com/zbzaj38y\",\"display_url\":\"tinyurl.com/zbzaj38y\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687055774382485505/vFyytZNa?format=png&name=orig\",\"width\":200,\"height\":200},{\"url\":\"https://pbs.twimg.com/news_img/1687055774382485505/vFyytZNa?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"C# Software Developer X 4\",\"description\":\"C# Software Developer - Up to £65K On behalf of our well-established client near Manchester, we are looking for a talented Software Developer. As a Software Developer, you will be responsible...\",\"unwound_url\":\"https://jobs.adriasolutions.co.uk/job/c-software-developer-x-4-1856.aspx?utm_source=Twitter&utm_medium=Jobs\"},{\"start\":277,\"end\":300,\"url\":\"https://t.co/dOF0EufRUA\",\"expanded_url\":\"https://twitter.com/Adriasolutions/status/1687055722863812608/video/1\",\"display_url\":\"pic.twitter.com/dOF0EufRUA\",\"media_key\":\"7_1685973296330764288\"}],\"annotations\":[{\"start\":74,\"end\":83,\"probability\":0.9371,\"type\":\"Place\",\"normalized_text\":\"Manchester\"},{\"start\":205,\"end\":210,\"probability\":0.6362,\"type\":\"Other\",\"normalized_text\":\"CSharp\"},{\"start\":250,\"end\":255,\"probability\":0.5624,\"type\":\"Other\",\"normalized_text\":\"WebAPI\"},{\"start\":258,\"end\":267,\"probability\":0.9206,\"type\":\"Other\",\"normalized_text\":\"JavaScript\"},{\"start\":270,\"end\":275,\"probability\":0.5295,\"type\":\"Other\",\"normalized_text\":\"DotNet\"}]},\"attachments\":{\"media_keys\":[\"7_1685973296330764288\"]},\"author_id\":\"90862259\",\"edit_history_tweet_ids\":[\"1687055722863812608\"],\"created_at\":\"2023-08-03T11:00:02.000Z\",\"text\":\"Hey, C# Software Developers! \\uD83D\\uDCE2\\n\\nI have an opportunity for FOUR of you in #Manchester \\uD83D\\uDC1D\\n\\nUp to £65,000 + bonus + flexible working\\n\\nInterested? \\uD83D\\uDE00 For more details + to apply, visit https://t.co/U6hQ6Ephtb\\n\\n#CSharp #SoftwareDeveloper #SoftwareEngineer #WebAPI #JavaScript #DotNet https://t.co/dOF0EufRUA\"},{\"id\":\"1687055263449112576\",\"entities\":{\"hashtags\":[{\"start\":86,\"end\":93,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":94,\"end\":117,\"url\":\"https://t.co/13K3CM4HjN\",\"expanded_url\":\"https://twitter.com/firstdrafthell/status/1687015564357562368\",\"display_url\":\"twitter.com/firstdrafthell…\"}],\"annotations\":[{\"start\":0,\"end\":11,\"probability\":0.4644,\"type\":\"Organization\",\"normalized_text\":\"Alternativas\"},{\"start\":87,\"end\":92,\"probability\":0.8165,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"2757010970\",\"edit_history_tweet_ids\":[\"1687055263449112576\"],\"created_at\":\"2023-08-03T10:58:13.000Z\",\"text\":\"Alternativas são coisas muito boas e tornam todo e qualquer ecossistema mais saudável #dotnet https://t.co/13K3CM4HjN\"},{\"id\":\"1687044416404357120\",\"entities\":{\"hashtags\":[{\"start\":0,\"end\":16,\"tag\":\"capturedmoments\"},{\"start\":232,\"end\":239,\"tag\":\"dotnet\"},{\"start\":240,\"end\":257,\"tag\":\"dotnetconference\"},{\"start\":258,\"end\":266,\"tag\":\"restapi\"},{\"start\":267,\"end\":270,\"tag\":\"k6\"}],\"urls\":[{\"start\":206,\"end\":229,\"url\":\"https://t.co/vOtKCYuJbZ\",\"expanded_url\":\"https://buff.ly/3JSDoOU\",\"display_url\":\"buff.ly/3JSDoOU\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687044420225392640/1BLqEIvC?format=jpg&name=orig\",\"width\":1280,\"height\":720},{\"url\":\"https://pbs.twimg.com/news_img/1687044420225392640/1BLqEIvC?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Jose Luis Latorre Millas - Breaking your REST APIs to make them stronger!!\",\"description\":\"In this session, I will explain why performance testing is important and what can you get from doing it. We will see the differences between Web, Microservic...\",\"unwound_url\":\"https://www.youtube.com/watch?v=pSuxVL-8A2A&feature=youtu.be\"},{\"start\":271,\"end\":294,\"url\":\"https://t.co/1nnJNi9baz\",\"expanded_url\":\"https://twitter.com/dotnetdaysro/status/1687044416404357120/photo/1\",\"display_url\":\"pic.twitter.com/1nnJNi9baz\",\"media_key\":\"3_1687044388587794432\"},{\"start\":271,\"end\":294,\"url\":\"https://t.co/1nnJNi9baz\",\"expanded_url\":\"https://twitter.com/dotnetdaysro/status/1687044416404357120/photo/1\",\"display_url\":\"pic.twitter.com/1nnJNi9baz\",\"media_key\":\"3_1687044394992463872\"},{\"start\":271,\"end\":294,\"url\":\"https://t.co/1nnJNi9baz\",\"expanded_url\":\"https://twitter.com/dotnetdaysro/status/1687044416404357120/photo/1\",\"display_url\":\"pic.twitter.com/1nnJNi9baz\",\"media_key\":\"3_1687044401921458177\"},{\"start\":271,\"end\":294,\"url\":\"https://t.co/1nnJNi9baz\",\"expanded_url\":\"https://twitter.com/dotnetdaysro/status/1687044416404357120/photo/1\",\"display_url\":\"pic.twitter.com/1nnJNi9baz\",\"media_key\":\"3_1687044409907449857\"}],\"mentions\":[{\"start\":95,\"end\":102,\"username\":\"joslat\",\"id\":\"5693702\"}],\"annotations\":[{\"start\":20,\"end\":29,\"probability\":0.5649,\"type\":\"Other\",\"normalized_text\":\"dotnetdays\"},{\"start\":188,\"end\":194,\"probability\":0.966,\"type\":\"Other\",\"normalized_text\":\"YouTube\"},{\"start\":233,\"end\":238,\"probability\":0.545,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":241,\"end\":256,\"probability\":0.5791,\"type\":\"Other\",\"normalized_text\":\"dotnetconference\"},{\"start\":268,\"end\":269,\"probability\":0.7221,\"type\":\"Other\",\"normalized_text\":\"k6\"}]},\"attachments\":{\"media_keys\":[\"3_1687044388587794432\",\"3_1687044394992463872\",\"3_1687044401921458177\",\"3_1687044409907449857\"]},\"author_id\":\"1068116837110562816\",\"edit_history_tweet_ids\":[\"1687044416404357120\"],\"created_at\":\"2023-08-03T10:15:07.000Z\",\"text\":\"#capturedmoments at dotnetdays \\uD83C\\uDF1F\\uD83D\\uDCF7 \\n\\nWe had an incredible time at dotnetdays with the brilliant @joslat! \\uD83C\\uDF89 \\n\\nIf you missed his presentation or want to see it again, you can watch it on our YouTube channel \\uD83D\\uDC49 https://t.co/vOtKCYuJbZ \\n\\n#dotnet #dotnetconference #restapi #k6 https://t.co/1nnJNi9baz\"},{\"id\":\"1687043475500417024\",\"entities\":{\"hashtags\":[{\"start\":109,\"end\":116,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":179,\"end\":202,\"url\":\"https://t.co/x5T0EkzBld\",\"expanded_url\":\"https://medium.com/@f.sazanavets\",\"display_url\":\"medium.com/@f.sazanavets\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687043518051635200/fSBMkwpb?format=jpg&name=orig\",\"width\":1156,\"height\":1460},{\"url\":\"https://pbs.twimg.com/news_img/1687043518051635200/fSBMkwpb?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Fiodar Sazanavets – Medium\",\"description\":\"Read writing from Fiodar Sazanavets on Medium. Fiodar is a senior full-stack software developer and owner of mobiletechtracker.co.uk, where he shares his knowledge of the tech world.\",\"unwound_url\":\"https://medium.com/@f.sazanavets\"}],\"annotations\":[{\"start\":110,\"end\":115,\"probability\":0.6381,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":170,\"end\":175,\"probability\":0.7732,\"type\":\"Other\",\"normalized_text\":\"Medium\"}]},\"author_id\":\"471383214\",\"edit_history_tweet_ids\":[\"1687043475500417024\"],\"created_at\":\"2023-08-03T10:11:22.000Z\",\"text\":\"I have decided to write an article with some helpful software development tips every week, especially in the #dotnet domain. If you don't want to miss them, follow me on Medium:\\n\\nhttps://t.co/x5T0EkzBld\"},{\"id\":\"1687042436865146880\",\"entities\":{\"hashtags\":[{\"start\":209,\"end\":216,\"tag\":\"dotnet\"}],\"annotations\":[{\"start\":16,\"end\":18,\"probability\":0.889,\"type\":\"Other\",\"normalized_text\":\"AOT\"},{\"start\":210,\"end\":218,\"probability\":0.5909,\"type\":\"Other\",\"normalized_text\":\"dotnet 4.\"}]},\"author_id\":\"1089089886949265408\",\"edit_history_tweet_ids\":[\"1687042436865146880\"],\"created_at\":\"2023-08-03T10:07:15.000Z\",\"text\":\"The thing about AOT compilation being more readily available right now, is that not only are CPUs making huge leaps forward in terms of energy consumption, apps are becoming more efficient. \\n\\nThe same code in #dotnet 4.5 was so much slower than the same code now.\"},{\"id\":\"1687040360034287616\",\"entities\":{\"hashtags\":[{\"start\":109,\"end\":122,\"tag\":\"DEVCommunity\"},{\"start\":123,\"end\":130,\"tag\":\"dotNET\"}],\"urls\":[{\"start\":131,\"end\":154,\"url\":\"https://t.co/0UcEpt47zb\",\"expanded_url\":\"https://dev.to/ant_f_dev/how-to-check-a-method-was-called-on-a-mock-in-moq-1gfp\",\"display_url\":\"dev.to/ant_f_dev/how-…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687040403084640257/BkFukQmg?format=jpg&name=orig\",\"width\":1000,\"height\":500},{\"url\":\"https://pbs.twimg.com/news_img/1687040403084640257/BkFukQmg?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"How to Check a Method was Called on a Mock in Moq\",\"description\":\"We often use mocks in unit tests. They make it easy to isolate the code modules we’re testing. We...\",\"unwound_url\":\"https://dev.to/ant_f_dev/how-to-check-a-method-was-called-on-a-mock-in-moq-1gfp\"}],\"mentions\":[{\"start\":96,\"end\":106,\"username\":\"ant_f_dev\",\"id\":\"1556729301613027334\"}],\"annotations\":[{\"start\":110,\"end\":121,\"probability\":0.4253,\"type\":\"Other\",\"normalized_text\":\"DEVCommunity\"},{\"start\":124,\"end\":129,\"probability\":0.4739,\"type\":\"Other\",\"normalized_text\":\"dotNET\"}]},\"author_id\":\"1115659846496342016\",\"edit_history_tweet_ids\":[\"1687040360034287616\"],\"created_at\":\"2023-08-03T09:59:00.000Z\",\"text\":\"Let's look at how we can check that important methods are called when our tests run.\\n\\n{ author: @ant_f_dev } #DEVCommunity #dotNET\\nhttps://t.co/0UcEpt47zb\"},{\"id\":\"1687039301077413888\",\"entities\":{\"hashtags\":[{\"start\":85,\"end\":102,\"tag\":\"programminghumor\"},{\"start\":103,\"end\":110,\"tag\":\"Dotnet\"},{\"start\":111,\"end\":125,\"tag\":\"100DaysOfCode\"},{\"start\":126,\"end\":137,\"tag\":\"developers\"}],\"annotations\":[{\"start\":104,\"end\":109,\"probability\":0.7214,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"author_id\":\"1417194061362974726\",\"edit_history_tweet_ids\":[\"1687039301077413888\"],\"created_at\":\"2023-08-03T09:54:47.000Z\",\"text\":\"Why do developers prefer to work in the dark?\\n\\nBecause bugs are afraid of the light!\\n#programminghumor #Dotnet #100DaysOfCode #developers\"},{\"id\":\"1687034424838246400\",\"entities\":{\"hashtags\":[{\"start\":64,\"end\":73,\"tag\":\"training\"},{\"start\":74,\"end\":81,\"tag\":\"course\"},{\"start\":82,\"end\":94,\"tag\":\"CromaCampus\"},{\"start\":95,\"end\":102,\"tag\":\"DotNet\"},{\"start\":103,\"end\":116,\"tag\":\"dotnetcourse\"},{\"start\":117,\"end\":126,\"tag\":\"learning\"},{\"start\":127,\"end\":143,\"tag\":\"dotnetdeveloper\"},{\"start\":144,\"end\":165,\"tag\":\"DotNetOnlineTraining\"},{\"start\":166,\"end\":177,\"tag\":\"advantages\"}],\"urls\":[{\"start\":39,\"end\":62,\"url\":\"https://t.co/7KDiGDily4\",\"expanded_url\":\"https://bit.ly/3DZy6xL\",\"display_url\":\"bit.ly/3DZy6xL\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687034430722887680/N8ZIlUXn?format=jpg&name=orig\",\"width\":750,\"height\":450},{\"url\":\"https://pbs.twimg.com/news_img/1687034430722887680/N8ZIlUXn?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Everything That You Should Know About Dot Net\",\"description\":\"Dot Net framework is a very popular development framework that you can use for developing business sites/apps.\",\"unwound_url\":\"https://www.tbusinessweek.com/everything-that-you-should-know-about-dot-net/\"}],\"annotations\":[{\"start\":23,\"end\":36,\"probability\":0.5648,\"type\":\"Other\",\"normalized_text\":\"Dot Net Course\"},{\"start\":83,\"end\":93,\"probability\":0.7658,\"type\":\"Other\",\"normalized_text\":\"CromaCampus\"},{\"start\":96,\"end\":101,\"probability\":0.6489,\"type\":\"Other\",\"normalized_text\":\"DotNet\"},{\"start\":145,\"end\":164,\"probability\":0.6734,\"type\":\"Other\",\"normalized_text\":\"DotNetOnlineTraining\"}]},\"author_id\":\"1424992827142905859\",\"edit_history_tweet_ids\":[\"1687034424838246400\"],\"created_at\":\"2023-08-03T09:35:25.000Z\",\"text\":\"Advantages of Learning Dot Net Course: https://t.co/7KDiGDily4\\n\\n#training #course #CromaCampus #DotNet #dotnetcourse #learning #dotnetdeveloper #DotNetOnlineTraining #advantages\"},{\"id\":\"1687030803773960193\",\"entities\":{\"hashtags\":[{\"start\":206,\"end\":220,\"tag\":\"EmailSecurity\"},{\"start\":221,\"end\":232,\"tag\":\"ASPNETCore\"},{\"start\":233,\"end\":240,\"tag\":\"WebAPI\"},{\"start\":241,\"end\":248,\"tag\":\"ASPNET\"},{\"start\":249,\"end\":256,\"tag\":\"DOTNET\"},{\"start\":257,\"end\":266,\"tag\":\"phishing\"},{\"start\":267,\"end\":273,\"tag\":\"Email\"}],\"urls\":[{\"start\":181,\"end\":204,\"url\":\"https://t.co/8MEEvFsQs9\",\"expanded_url\":\"https://tinyurl.com/2kufn6jb\",\"display_url\":\"tinyurl.com/2kufn6jb\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687030849118593025/t99QKOS0?format=png&name=orig\",\"width\":600,\"height\":314},{\"url\":\"https://pbs.twimg.com/news_img/1687030849118593025/t99QKOS0?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Capturing Phishing Email Using Custom Middleware in ASP.Net Core Web API\",\"description\":\"To capture and detect phishing emails using custom middleware in an ASP.NET Core Web API, you can follow these general steps: Create Custom Middleware: Create a custom middleware that will intercept incoming HTTP requests and inspect the email content for potential phishing indicators. Middleware in ASP.NET Core can be used to perform custom processing on incoming requests and outgoing responses.\",\"unwound_url\":\"https://www.c-sharpcorner.com/article/capturing-phishing-email-using-custom-middleware-in-asp-net-core-web-api/\"},{\"start\":274,\"end\":297,\"url\":\"https://t.co/7PkSwfyR7d\",\"expanded_url\":\"https://twitter.com/CsharpCorner/status/1687030803773960193/photo/1\",\"display_url\":\"pic.twitter.com/7PkSwfyR7d\",\"media_key\":\"3_1687030522831118336\"}],\"mentions\":[{\"start\":106,\"end\":121,\"username\":\"SMudassarAKhan\",\"id\":\"805139332344541186\"}],\"annotations\":[{\"start\":63,\"end\":81,\"probability\":0.7242,\"type\":\"Other\",\"normalized_text\":\"ASPNET Core Web API\"},{\"start\":222,\"end\":231,\"probability\":0.5085,\"type\":\"Other\",\"normalized_text\":\"ASPNETCore\"},{\"start\":234,\"end\":239,\"probability\":0.4762,\"type\":\"Other\",\"normalized_text\":\"WebAPI\"},{\"start\":242,\"end\":247,\"probability\":0.496,\"type\":\"Other\",\"normalized_text\":\"ASPNET\"},{\"start\":250,\"end\":255,\"probability\":0.5484,\"type\":\"Other\",\"normalized_text\":\"DOTNET\"}]},\"attachments\":{\"media_keys\":[\"3_1687030522831118336\"]},\"author_id\":\"241007239\",\"edit_history_tweet_ids\":[\"1687030803773960193\"],\"created_at\":\"2023-08-03T09:21:01.000Z\",\"text\":\"Improve your email security strategy with custom middleware in ASPNET Core Web API, expertly explained by @SMudassarAKhan.\\n\\nLearn to identify and block phishing emails effectively: https://t.co/8MEEvFsQs9\\n\\n#EmailSecurity #ASPNETCore #WebAPI #ASPNET #DOTNET #phishing #Email https://t.co/7PkSwfyR7d\"},{\"id\":\"1687029269690515456\",\"entities\":{\"hashtags\":[{\"start\":120,\"end\":127,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":128,\"end\":151,\"url\":\"https://t.co/oc3hnrWx7k\",\"expanded_url\":\"https://twitter.com/yuniidev/status/1687029269690515456/photo/1\",\"display_url\":\"pic.twitter.com/oc3hnrWx7k\",\"media_key\":\"3_1687029265101897728\"}],\"mentions\":[{\"start\":26,\"end\":33,\"username\":\"dotnet\",\"id\":\"757891106\"},{\"start\":34,\"end\":40,\"username\":\"msdev\",\"id\":\"1157784678\"}],\"annotations\":[{\"start\":121,\"end\":126,\"probability\":0.6126,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1687029265101897728\"]},\"author_id\":\"1604482213747335178\",\"edit_history_tweet_ids\":[\"1687029269690515456\"],\"created_at\":\"2023-08-03T09:14:56.000Z\",\"text\":\"What happened to the logo @dotnet @msdev \\uD83D\\uDE2D what was wrong with the old one this one looks like an intern designed it \\uD83D\\uDE2D\\uD83D\\uDE2D #dotnet https://t.co/oc3hnrWx7k\"},{\"id\":\"1687028241461354496\",\"entities\":{\"hashtags\":[{\"start\":160,\"end\":173,\"tag\":\"browserBased\"},{\"start\":174,\"end\":181,\"tag\":\"fsharp\"},{\"start\":182,\"end\":189,\"tag\":\"dotnet\"},{\"start\":190,\"end\":199,\"tag\":\"fsbolero\"},{\"start\":200,\"end\":205,\"tag\":\"wasm\"},{\"start\":206,\"end\":211,\"tag\":\"hywe\"}],\"urls\":[{\"start\":212,\"end\":235,\"url\":\"https://t.co/hPzR5eEZRl\",\"expanded_url\":\"https://twitter.com/_hywe_/status/1687028241461354496/photo/1\",\"display_url\":\"pic.twitter.com/hPzR5eEZRl\",\"media_key\":\"16_1687026704215425025\"}],\"annotations\":[{\"start\":21,\"end\":24,\"probability\":0.7919,\"type\":\"Other\",\"normalized_text\":\"Hywe\"},{\"start\":175,\"end\":180,\"probability\":0.9462,\"type\":\"Other\",\"normalized_text\":\"fsharp\"},{\"start\":183,\"end\":188,\"probability\":0.605,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":191,\"end\":198,\"probability\":0.7602,\"type\":\"Other\",\"normalized_text\":\"fsbolero\"}]},\"attachments\":{\"media_keys\":[\"16_1687026704215425025\"]},\"author_id\":\"1677619435212001280\",\"edit_history_tweet_ids\":[\"1687028241461354496\"],\"created_at\":\"2023-08-03T09:10:50.000Z\",\"text\":\"The current state of Hywe demonstrating a slider driven prototype of a hexagrid based composition of clusters anchored about and growing around a host cluster.\\n#browserBased #fsharp #dotnet #fsbolero #wasm #hywe https://t.co/hPzR5eEZRl\"},{\"id\":\"1687024904687013888\",\"entities\":{\"hashtags\":[{\"start\":185,\"end\":190,\"tag\":\"Code\"},{\"start\":191,\"end\":200,\"tag\":\"UIDesign\"},{\"start\":201,\"end\":211,\"tag\":\"Analytics\"},{\"start\":212,\"end\":220,\"tag\":\"BigData\"},{\"start\":221,\"end\":228,\"tag\":\"Dotnet\"},{\"start\":229,\"end\":240,\"tag\":\"Dashboards\"}],\"urls\":[{\"start\":159,\"end\":182,\"url\":\"https://t.co/2Naws378wR\",\"expanded_url\":\"http://dlvr.it/St7ffZ\",\"display_url\":\"dlvr.it/St7ffZ\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687024936651743232/Pplu-sVx?format=jpg&name=orig\",\"width\":1200,\"height\":630},{\"url\":\"https://pbs.twimg.com/news_img/1687024936651743232/Pplu-sVx?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Bunifu Line Chart\",\"description\":\"Add perfect Line and Area chart representations for your data with Bunifu Line Chart.\",\"unwound_url\":\"https://docs2.bunifuframework.com/docs/bunifu-charts/chart-components/bunifu-line-chart\"},{\"start\":241,\"end\":264,\"url\":\"https://t.co/H0zgp4banP\",\"expanded_url\":\"http://dlvr.it/St7ffk\",\"display_url\":\"dlvr.it/St7ffk\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687024936651743232/Pplu-sVx?format=jpg&name=orig\",\"width\":1200,\"height\":630},{\"url\":\"https://pbs.twimg.com/news_img/1687024936651743232/Pplu-sVx?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Bunifu Line Chart\",\"description\":\"Add perfect Line and Area chart representations for your data with Bunifu Line Chart.\",\"unwound_url\":\"https://docs2.bunifuframework.com/docs/bunifu-charts/chart-components/bunifu-line-chart\"},{\"start\":265,\"end\":288,\"url\":\"https://t.co/vjuWtQ74cd\",\"expanded_url\":\"https://twitter.com/BunifuFramework/status/1687024904687013888/photo/1\",\"display_url\":\"pic.twitter.com/vjuWtQ74cd\",\"media_key\":\"16_1687024903206350848\"}],\"annotations\":[{\"start\":95,\"end\":115,\"probability\":0.7799,\"type\":\"Other\",\"normalized_text\":\"Bunifu Framework Line\"},{\"start\":139,\"end\":140,\"probability\":0.6404,\"type\":\"Other\",\"normalized_text\":\"VB\"},{\"start\":222,\"end\":227,\"probability\":0.4482,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"attachments\":{\"media_keys\":[\"16_1687024903206350848\"]},\"author_id\":\"833650300594638850\",\"edit_history_tweet_ids\":[\"1687024904687013888\"],\"created_at\":\"2023-08-03T08:57:35.000Z\",\"text\":\"Line charts are particularly effective for showing trends and patterns over time.\\n\\n\\uD83D\\uDC49 Learn how Bunifu Framework Line Chart can help you in VB and .NET C# code https://t.co/2Naws378wR \\n\\n#Code #UIDesign #Analytics #BigData #Dotnet #Dashboards https://t.co/H0zgp4banP https://t.co/vjuWtQ74cd\"},{\"id\":\"1687024266972139520\",\"entities\":{\"hashtags\":[{\"start\":245,\"end\":252,\"tag\":\"Dotnet\"}],\"urls\":[{\"start\":220,\"end\":243,\"url\":\"https://t.co/aaVDzv62Ck\",\"expanded_url\":\"https://rb.gy/wjn35\",\"display_url\":\"rb.gy/wjn35\",\"status\":200,\"unwound_url\":\"https://stefandjokic.tech/blog/httpclient-best-practices\"},{\"start\":253,\"end\":276,\"url\":\"https://t.co/9EnDiQY13a\",\"expanded_url\":\"https://twitter.com/TheCodeMan__/status/1687024266972139520/photo/1\",\"display_url\":\"pic.twitter.com/9EnDiQY13a\",\"media_key\":\"3_1687024247531544577\"}],\"annotations\":[{\"start\":0,\"end\":9,\"probability\":0.6582,\"type\":\"Other\",\"normalized_text\":\"HttpClient\"},{\"start\":24,\"end\":33,\"probability\":0.788,\"type\":\"Other\",\"normalized_text\":\"HttpClient\"},{\"start\":77,\"end\":86,\"probability\":0.8882,\"type\":\"Other\",\"normalized_text\":\"HttpClient\"},{\"start\":246,\"end\":251,\"probability\":0.6604,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1687024247531544577\"]},\"author_id\":\"491684234\",\"edit_history_tweet_ids\":[\"1687024266972139520\"],\"created_at\":\"2023-08-03T08:55:03.000Z\",\"text\":\"HttpClient client = new HttpClient();\\n\\nThe best way to create an instance of HttpClient? \\uD83E\\uDD14\\n\\nIs it really?\\n\\n• Should I use Dependency Injection?\\n• What if I want more instances?\\n• ClientFactory?\\n• Singleton?\\n\\nLearn Here: https://t.co/aaVDzv62Ck\\n\\n#Dotnet https://t.co/9EnDiQY13a\"},{\"id\":\"1687018867649097728\",\"entities\":{\"hashtags\":[{\"start\":198,\"end\":205,\"tag\":\"dotnet\"}]},\"author_id\":\"1089089886949265408\",\"edit_history_tweet_ids\":[\"1687018867649097728\"],\"created_at\":\"2023-08-03T08:33:35.000Z\",\"text\":\"How does one AOT compile an ASP .NET core web API for containers these days? \\n\\nWe're deploying to kubernetes and it would be really awesome to get the extra performance. \\n\\nIs it stable in .net 7? \\n\\n#dotnet\"},{\"id\":\"1687016528669982720\",\"entities\":{\"hashtags\":[{\"start\":77,\"end\":81,\"tag\":\"PHP\"},{\"start\":82,\"end\":89,\"tag\":\"dotnet\"},{\"start\":90,\"end\":97,\"tag\":\"Csharp\"},{\"start\":98,\"end\":103,\"tag\":\"java\"},{\"start\":104,\"end\":108,\"tag\":\"DBA\"},{\"start\":109,\"end\":113,\"tag\":\"SQL\"},{\"start\":114,\"end\":122,\"tag\":\"bigdata\"},{\"start\":123,\"end\":143,\"tag\":\"informationsecurity\"},{\"start\":144,\"end\":165,\"tag\":\"businessintelligence\"},{\"start\":166,\"end\":176,\"tag\":\"angularjs\"},{\"start\":177,\"end\":185,\"tag\":\"infosec\"},{\"start\":186,\"end\":193,\"tag\":\"NodeJS\"},{\"start\":194,\"end\":204,\"tag\":\"developer\"},{\"start\":205,\"end\":211,\"tag\":\"nosql\"},{\"start\":212,\"end\":220,\"tag\":\"devjobs\"},{\"start\":221,\"end\":228,\"tag\":\"DevOps\"},{\"start\":229,\"end\":243,\"tag\":\"CyberSecurity\"},{\"start\":244,\"end\":255,\"tag\":\"dotnetcore\"},{\"start\":256,\"end\":262,\"tag\":\"Cisco\"}],\"urls\":[{\"start\":53,\"end\":76,\"url\":\"https://t.co/p8qzmypxd8\",\"expanded_url\":\"http://erinassociates.com/jobs.php\",\"display_url\":\"erinassociates.com/jobs.php\",\"status\":200,\"title\":\"Erin Associates\",\"unwound_url\":\"https://erinassociates.com/jobs.php\"},{\"start\":263,\"end\":286,\"url\":\"https://t.co/PhFWdmYkSQ\",\"expanded_url\":\"https://twitter.com/ErinAssociates/status/1687016528669982720/photo/1\",\"display_url\":\"pic.twitter.com/PhFWdmYkSQ\",\"media_key\":\"3_1687016518742110208\"}],\"annotations\":[{\"start\":78,\"end\":80,\"probability\":0.9343,\"type\":\"Other\",\"normalized_text\":\"PHP\"},{\"start\":83,\"end\":88,\"probability\":0.7765,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":91,\"end\":96,\"probability\":0.9532,\"type\":\"Other\",\"normalized_text\":\"Csharp\"},{\"start\":99,\"end\":102,\"probability\":0.7721,\"type\":\"Other\",\"normalized_text\":\"java\"},{\"start\":105,\"end\":107,\"probability\":0.7466,\"type\":\"Other\",\"normalized_text\":\"DBA\"},{\"start\":110,\"end\":112,\"probability\":0.912,\"type\":\"Other\",\"normalized_text\":\"SQL\"},{\"start\":167,\"end\":175,\"probability\":0.5623,\"type\":\"Other\",\"normalized_text\":\"angularjs\"},{\"start\":178,\"end\":184,\"probability\":0.4794,\"type\":\"Other\",\"normalized_text\":\"infosec\"},{\"start\":187,\"end\":192,\"probability\":0.843,\"type\":\"Other\",\"normalized_text\":\"NodeJS\"},{\"start\":206,\"end\":210,\"probability\":0.5247,\"type\":\"Other\",\"normalized_text\":\"nosql\"},{\"start\":222,\"end\":227,\"probability\":0.5773,\"type\":\"Other\",\"normalized_text\":\"DevOps\"},{\"start\":230,\"end\":242,\"probability\":0.7777,\"type\":\"Other\",\"normalized_text\":\"CyberSecurity\"},{\"start\":245,\"end\":254,\"probability\":0.8353,\"type\":\"Other\",\"normalized_text\":\"dotnetcore\"},{\"start\":257,\"end\":261,\"probability\":0.6397,\"type\":\"Other\",\"normalized_text\":\"Cisco\"}]},\"attachments\":{\"media_keys\":[\"3_1687016518742110208\"]},\"author_id\":\"2219874102\",\"edit_history_tweet_ids\":[\"1687016528669982720\"],\"created_at\":\"2023-08-03T08:24:18.000Z\",\"text\":\"Morning!! Please have a look at our latest roles at https://t.co/p8qzmypxd8 #PHP #dotnet #Csharp #java #DBA #SQL #bigdata #informationsecurity #businessintelligence #angularjs #infosec #NodeJS #developer #nosql #devjobs #DevOps #CyberSecurity #dotnetcore #Cisco https://t.co/PhFWdmYkSQ\"},{\"id\":\"1687014952081457152\",\"entities\":{\"hashtags\":[{\"start\":123,\"end\":131,\"tag\":\"xamarin\"},{\"start\":132,\"end\":149,\"tag\":\"xamarindeveloper\"},{\"start\":150,\"end\":157,\"tag\":\"dotnet\"},{\"start\":158,\"end\":174,\"tag\":\"dotnetdeveloper\"},{\"start\":175,\"end\":185,\"tag\":\"mobileapp\"},{\"start\":186,\"end\":197,\"tag\":\"mobileapps\"},{\"start\":198,\"end\":209,\"tag\":\"dotnetmaui\"},{\"start\":210,\"end\":225,\"tag\":\"appdevelopment\"},{\"start\":226,\"end\":239,\"tag\":\"appdeveloper\"},{\"start\":240,\"end\":248,\"tag\":\"android\"},{\"start\":249,\"end\":253,\"tag\":\"ios\"}],\"urls\":[{\"start\":98,\"end\":121,\"url\":\"https://t.co/wUuQtGvkgC\",\"expanded_url\":\"https://buff.ly/3KooiRt\",\"display_url\":\"buff.ly/3KooiRt\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687014960075780096/sJbph_Ec?format=jpg&name=orig\",\"width\":2560,\"height\":750},{\"url\":\"https://pbs.twimg.com/news_img/1687014960075780096/sJbph_Ec?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Is your App built on top of Xamarin? - Then you should act now!\",\"description\":\"Your competent partner for mobile app development, agile working and IoT in Mönchengladbach, Germany.\",\"unwound_url\":\"https://www.bnotech.com/en/blog-mobile/73-is-your-app-built-on-top-of-xamarin-then-you-should-act-now.html\"},{\"start\":254,\"end\":277,\"url\":\"https://t.co/pyXWN9YqZS\",\"expanded_url\":\"https://twitter.com/BnoTech/status/1687014952081457152/photo/1\",\"display_url\":\"pic.twitter.com/pyXWN9YqZS\",\"media_key\":\"3_1687014946091958272\"}],\"annotations\":[{\"start\":46,\"end\":52,\"probability\":0.6937,\"type\":\"Other\",\"normalized_text\":\"Xamarin\"},{\"start\":124,\"end\":130,\"probability\":0.7183,\"type\":\"Other\",\"normalized_text\":\"xamarin\"},{\"start\":133,\"end\":148,\"probability\":0.7255,\"type\":\"Other\",\"normalized_text\":\"xamarindeveloper\"},{\"start\":151,\"end\":156,\"probability\":0.6694,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":159,\"end\":173,\"probability\":0.6797,\"type\":\"Other\",\"normalized_text\":\"dotnetdeveloper\"},{\"start\":176,\"end\":184,\"probability\":0.6696,\"type\":\"Other\",\"normalized_text\":\"mobileapp\"},{\"start\":187,\"end\":196,\"probability\":0.5822,\"type\":\"Other\",\"normalized_text\":\"mobileapps\"},{\"start\":199,\"end\":208,\"probability\":0.7213,\"type\":\"Other\",\"normalized_text\":\"dotnetmaui\"},{\"start\":241,\"end\":247,\"probability\":0.8011,\"type\":\"Other\",\"normalized_text\":\"android\"},{\"start\":250,\"end\":252,\"probability\":0.7006,\"type\":\"Other\",\"normalized_text\":\"ios\"}]},\"attachments\":{\"media_keys\":[\"3_1687014946091958272\"]},\"author_id\":\"790199073978589184\",\"edit_history_tweet_ids\":[\"1687014952081457152\"],\"created_at\":\"2023-08-03T08:18:02.000Z\",\"text\":\"New on our blog: Is your App built on top of Xamarin? - Then you should act now! - Read more at: https://t.co/wUuQtGvkgC \\n#xamarin #xamarindeveloper #dotnet #dotnetdeveloper #mobileapp #mobileapps #dotnetmaui #appdevelopment #appdeveloper #android #ios https://t.co/pyXWN9YqZS\"},{\"id\":\"1687013769648472066\",\"entities\":{\"hashtags\":[{\"start\":73,\"end\":93,\"tag\":\"SoftwareDevelopment\"},{\"start\":94,\"end\":114,\"tag\":\"ProgrammingLanguage\"},{\"start\":115,\"end\":122,\"tag\":\"Csharp\"},{\"start\":123,\"end\":138,\"tag\":\"DesignPatterns\"},{\"start\":139,\"end\":146,\"tag\":\"Dotnet\"}],\"urls\":[{\"start\":147,\"end\":170,\"url\":\"https://t.co/M2la6F3y5Q\",\"expanded_url\":\"https://itnext.io/introducing-idisposableof-t-a-new-design-pattern-e62aa4b2d7b0?source=social.tw\",\"display_url\":\"itnext.io/introducing-id…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687013776493592576/6ZFpFPnj?format=jpg&name=orig\",\"width\":1200,\"height\":799},{\"url\":\"https://pbs.twimg.com/news_img/1687013776493592576/6ZFpFPnj?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Introducing IDisposableOf: A New Design Pattern\",\"description\":\"In the dynamic world of software development, innovation is the name of the game. Developers constantly seek to create tools and practices…\",\"unwound_url\":\"https://itnext.io/introducing-idisposableof-t-a-new-design-pattern-e62aa4b2d7b0?source=social.tw\"}],\"mentions\":[{\"start\":62,\"end\":72,\"username\":\"MCC_Ahmed\",\"id\":\"278611849\"}],\"annotations\":[{\"start\":12,\"end\":24,\"probability\":0.592,\"type\":\"Other\",\"normalized_text\":\"IDisposableOf\"},{\"start\":38,\"end\":55,\"probability\":0.5805,\"type\":\"Other\",\"normalized_text\":\"New Design Pattern\"},{\"start\":116,\"end\":121,\"probability\":0.8047,\"type\":\"Other\",\"normalized_text\":\"Csharp\"},{\"start\":140,\"end\":145,\"probability\":0.5108,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"author_id\":\"846342931908841472\",\"edit_history_tweet_ids\":[\"1687013769648472066\"],\"created_at\":\"2023-08-03T08:13:20.000Z\",\"text\":\"Introducing IDisposableOf<T>: A New Design Pattern - by @MCC_Ahmed\\n#SoftwareDevelopment #ProgrammingLanguage #Csharp #DesignPatterns #Dotnet\\nhttps://t.co/M2la6F3y5Q\"},{\"id\":\"1687004234527477760\",\"entities\":{\"hashtags\":[{\"start\":27,\"end\":33,\"tag\":\"ILSpy\"},{\"start\":81,\"end\":88,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":206,\"end\":229,\"url\":\"https://t.co/xMHlKk162b\",\"expanded_url\":\"https://github.com/icsharpcode/ILSpy/releases/tag/v8.1\",\"display_url\":\"github.com/icsharpcode/IL…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1687004238637928448/OV8reZjs?format=jpg&name=orig\",\"width\":1200,\"height\":600},{\"url\":\"https://pbs.twimg.com/news_img/1687004238637928448/OV8reZjs?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Release ILSpy 8.1 · icsharpcode/ILSpy\",\"description\":\"ILSpy 8.x is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts except the self-contained distribution are built framework-dependent, which mean...\",\"unwound_url\":\"https://github.com/icsharpcode/ILSpy/releases/tag/v8.1\"}],\"annotations\":[{\"start\":28,\"end\":32,\"probability\":0.8345,\"type\":\"Other\",\"normalized_text\":\"ILSpy\"},{\"start\":35,\"end\":36,\"probability\":0.5991,\"type\":\"Other\",\"normalized_text\":\".1\"},{\"start\":62,\"end\":63,\"probability\":0.5465,\"type\":\"Other\",\"normalized_text\":\"11\"},{\"start\":75,\"end\":79,\"probability\":0.8069,\"type\":\"Other\",\"normalized_text\":\"ARM64\"},{\"start\":82,\"end\":87,\"probability\":0.5625,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":133,\"end\":138,\"probability\":0.7221,\"type\":\"Other\",\"normalized_text\":\"pdbgen\"}]},\"author_id\":\"253279474\",\"edit_history_tweet_ids\":[\"1687004234527477760\"],\"created_at\":\"2023-08-03T07:35:27.000Z\",\"text\":\"Ready for a point release? #ILSpy 8.1 is here with lots of C# 11 features, ARM64 #dotnet support and various improvements, eg around pdbgen or resources as well as in the UI like colored copy-to-clipboard! https://t.co/xMHlKk162b\"},{\"id\":\"1686995312844423168\",\"entities\":{\"hashtags\":[{\"start\":100,\"end\":106,\"tag\":\"Azure\"},{\"start\":136,\"end\":143,\"tag\":\"dotNET\"}]},\"author_id\":\"150691309\",\"edit_history_tweet_ids\":[\"1686995312844423168\"],\"created_at\":\"2023-08-03T07:00:00.000Z\",\"text\":\"On revient en vidéo sur .NET Day où des experts se sont penchés sur les services et fonctionnalités #Azure conçus pour les développeurs #dotNET \\uD83E\\uDDD1‍\\uD83D\\uDCBB Regarde vite les replays des talks pour explorer les solutions et acquérir des compétences essentielles en développement cloud ☁️\"},{\"id\":\"1686991015192702977\",\"entities\":{\"hashtags\":[{\"start\":164,\"end\":171,\"tag\":\"fsharp\"},{\"start\":172,\"end\":179,\"tag\":\"csharp\"},{\"start\":180,\"end\":187,\"tag\":\"dotnet\"}],\"annotations\":[{\"start\":165,\"end\":170,\"probability\":0.9836,\"type\":\"Other\",\"normalized_text\":\"fsharp\"},{\"start\":173,\"end\":178,\"probability\":0.972,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":181,\"end\":186,\"probability\":0.8122,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"2511178231\",\"edit_history_tweet_ids\":[\"1686991015192702977\"],\"created_at\":\"2023-08-03T06:42:55.000Z\",\"text\":\"Have you ever thought why object-oriented languages recently are getting functional flavours and why functional languages aren't getting object-related flavours? \\uD83D\\uDE01 #fsharp #csharp #dotnet\"},{\"id\":\"1686983210956099584\",\"entities\":{\"hashtags\":[{\"start\":0,\"end\":12,\"tag\":\"programming\"},{\"start\":46,\"end\":53,\"tag\":\"naming\"},{\"start\":71,\"end\":78,\"tag\":\"detail\"},{\"start\":259,\"end\":266,\"tag\":\"dotnet\"},{\"start\":267,\"end\":279,\"tag\":\"development\"}],\"annotations\":[{\"start\":140,\"end\":152,\"probability\":0.697,\"type\":\"Other\",\"normalized_text\":\"NET Framework\"},{\"start\":164,\"end\":171,\"probability\":0.75,\"type\":\"Other\",\"normalized_text\":\"NET Core\"},{\"start\":260,\"end\":265,\"probability\":0.4962,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"519640759\",\"edit_history_tweet_ids\":[\"1686983210956099584\"],\"created_at\":\"2023-08-03T06:11:54.000Z\",\"text\":\"#programming is many things, two of which are #naming and attention to #detail. If you really can’t separate and use the correct terms for .NET Framework(legacy)/ .NET Core(legacy)/ .NET(current)… perhaps you should at least consider some other line of work. #dotnet #development\"},{\"id\":\"1686982939932852224\",\"entities\":{\"hashtags\":[{\"start\":3,\"end\":10,\"tag\":\"csharp\"},{\"start\":270,\"end\":277,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":278,\"end\":301,\"url\":\"https://t.co/CZHJDJFoem\",\"expanded_url\":\"https://twitter.com/i/web/status/1686982939932852224\",\"display_url\":\"twitter.com/i/web/status/1…\"},{\"start\":302,\"end\":325,\"url\":\"https://t.co/tWBXqRmWdf\",\"expanded_url\":\"https://twitter.com/Dave_DotNet/status/1686982939932852224/photo/1\",\"display_url\":\"pic.twitter.com/tWBXqRmWdf\",\"media_key\":\"3_1686980743845523457\"}],\"annotations\":[{\"start\":4,\"end\":9,\"probability\":0.9557,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":96,\"end\":112,\"probability\":0.7632,\"type\":\"Other\",\"normalized_text\":\"OrdinalIgnoreCase\"},{\"start\":119,\"end\":125,\"probability\":0.7577,\"type\":\"Other\",\"normalized_text\":\"ToLower\"},{\"start\":127,\"end\":133,\"probability\":0.5575,\"type\":\"Other\",\"normalized_text\":\"ToUpper\"},{\"start\":157,\"end\":163,\"probability\":0.6022,\"type\":\"Other\",\"normalized_text\":\"ToLower\"},{\"start\":165,\"end\":171,\"probability\":0.5413,\"type\":\"Other\",\"normalized_text\":\"ToUpper\"}]},\"attachments\":{\"media_keys\":[\"3_1686980743845523457\"]},\"author_id\":\"1433020305979723778\",\"edit_history_tweet_ids\":[\"1686982939932852224\"],\"created_at\":\"2023-08-03T06:10:50.000Z\",\"text\":\"In #csharp, when checking if strings are equal in a case insensitive way use string.Equals with OrdinalIgnoreCase over ToLower/ToUpper.\\n\\nWhy?\\n\\nCorrectness - ToLower/ToUpper can lead to incorrect results in certain cultures & languages.\\n\\nReadability\\n\\nPerformance ⬇\\n\\n#dotnet https://t.co/CZHJDJFoem https://t.co/tWBXqRmWdf\"},{\"id\":\"1686980218660016128\",\"entities\":{\"hashtags\":[{\"start\":18,\"end\":28,\"tag\":\"abpConf23\"},{\"start\":81,\"end\":95,\"tag\":\"ABPConference\"},{\"start\":169,\"end\":175,\"tag\":\"Azure\"},{\"start\":176,\"end\":186,\"tag\":\"FullStack\"},{\"start\":187,\"end\":194,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":195,\"end\":218,\"url\":\"https://t.co/9LQRhYwOL4\",\"expanded_url\":\"https://www.youtube.com/watch?v=-z_GOuq-v8U&list=PLsNclT2aHJcOoqSo_bzemKu1ZObHdiopD&index=5\",\"display_url\":\"youtube.com/watch?v=-z_GOu…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686980263149027328/Hf0eMSvC?format=jpg&name=orig\",\"width\":480,\"height\":360},{\"url\":\"https://pbs.twimg.com/news_img/1686980263149027328/Hf0eMSvC?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Azure Static Web Apps with Full Stack .NET | ABP .NET Conference 2023\",\"description\":\"ABSTRACT OF THE TOPICWant to know how to quickly build and deploy serverless full-stack .NET applications? Then this talk is for you! This session will teach...\",\"unwound_url\":\"https://www.youtube.com/watch?v=-z_GOuq-v8U&list=PLsNclT2aHJcOoqSo_bzemKu1ZObHdiopD&index=5\"}],\"mentions\":[{\"start\":54,\"end\":70,\"username\":\"meliss_houghton\",\"id\":\"1102121825008414720\"}],\"annotations\":[{\"start\":19,\"end\":27,\"probability\":0.7565,\"type\":\"Other\",\"normalized_text\":\"abpConf23\"},{\"start\":82,\"end\":94,\"probability\":0.5411,\"type\":\"Other\",\"normalized_text\":\"ABPConference\"},{\"start\":152,\"end\":158,\"probability\":0.9824,\"type\":\"Other\",\"normalized_text\":\"YouTube\"},{\"start\":170,\"end\":174,\"probability\":0.8382,\"type\":\"Other\",\"normalized_text\":\"Azure\"},{\"start\":188,\"end\":193,\"probability\":0.5708,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"1025366075645612032\",\"edit_history_tweet_ids\":[\"1686980218660016128\"],\"created_at\":\"2023-08-03T06:00:01.000Z\",\"text\":\"\\uD83D\\uDD25\\uD83C\\uDFACNew Relive from #abpConf23 is available now! Missed @meliss_houghton's talk at #ABPConference? Don't worry! The wait is over. \\n\\nWatch it NOW from our YouTube Channel\\uD83D\\uDC47\\n#Azure #FullStack #dotnet\\nhttps://t.co/9LQRhYwOL4\"},{\"id\":\"1686974752756314113\",\"entities\":{\"hashtags\":[{\"start\":217,\"end\":224,\"tag\":\"dotnet\"},{\"start\":225,\"end\":232,\"tag\":\"csharp\"}],\"urls\":[{\"start\":192,\"end\":215,\"url\":\"https://t.co/Lr1eX8NdLx\",\"expanded_url\":\"https://jetbrains.com/resharper/whatsnew/?utm_campaign=resharper&utm_content=resharper_2023_2_release&utm_medium=referral&utm_source=twitter\",\"display_url\":\"jetbrains.com/resharper/what…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686974793076113408/vPxKKKoV?format=jpg&name=orig\",\"width\":1280,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1686974793076113408/vPxKKKoV?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"What's New in ReSharper\",\"description\":\"What's new in the latest updates for ReSharper\",\"unwound_url\":\"https://www.jetbrains.com/resharper/whatsnew/?utm_campaign=resharper&utm_content=resharper_2023_2_release&utm_medium=referral&utm_source=twitter\"},{\"start\":233,\"end\":256,\"url\":\"https://t.co/raCRWPhbR6\",\"expanded_url\":\"https://twitter.com/JetBrainsCZ/status/1686974752756314113/photo/1\",\"display_url\":\"pic.twitter.com/raCRWPhbR6\",\"media_key\":\"3_1686970257510932481\"}]},\"attachments\":{\"media_keys\":[\"3_1686970257510932481\"]},\"author_id\":\"1588272456\",\"edit_history_tweet_ids\":[\"1686974752756314113\"],\"created_at\":\"2023-08-03T05:38:18.000Z\",\"text\":\"Představujeme ReSharper 2023.2!\\n\\n\\uD83D\\uDCAA Vylepšená podpora C#, včetně C# 12 (preview)\\n\\uD83E\\uDEB2 Prediktivní debugger (beta)\\n▶️ Zjednodušení práce s testy\\n✨ AI Assistant (omezený přístup)\\n\\nPřečtěte si více: https://t.co/Lr1eX8NdLx \\n#dotnet #csharp https://t.co/raCRWPhbR6\"},{\"id\":\"1686970400524189696\",\"entities\":{\"hashtags\":[{\"start\":195,\"end\":208,\"tag\":\"DEVCommunity\"},{\"start\":209,\"end\":216,\"tag\":\"dotNET\"}],\"urls\":[{\"start\":217,\"end\":240,\"url\":\"https://t.co/fSiI00AFEC\",\"expanded_url\":\"https://dev.to/yushulx/how-to-build-a-windows-desktop-app-for-document-barcode-and-mrz-detection-with-c-and-net-winforms-4fjc\",\"display_url\":\"dev.to/yushulx/how-to…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686970449329070080/wsJQ_gVm?format=jpg&name=orig\",\"width\":1128,\"height\":598},{\"url\":\"https://pbs.twimg.com/news_img/1686970449329070080/wsJQ_gVm?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"How to Build a Windows Desktop App for Document, Barcode, and MRZ Detection with C# and .NET WinForms\",\"description\":\"Dynamsoft's Capture Vision SDKs consist of the Dynamsoft Document Normalizer, Dynamsoft Barcode...\",\"unwound_url\":\"https://dev.to/yushulx/how-to-build-a-windows-desktop-app-for-document-barcode-and-mrz-detection-with-c-and-net-winforms-4fjc\"}],\"mentions\":[{\"start\":184,\"end\":192,\"username\":\"yushulx\",\"id\":\"26712591\"}],\"annotations\":[{\"start\":21,\"end\":27,\"probability\":0.9247,\"type\":\"Other\",\"normalized_text\":\"Windows\"},{\"start\":57,\"end\":65,\"probability\":0.9425,\"type\":\"Other\",\"normalized_text\":\"Dynamsoft\"},{\"start\":76,\"end\":79,\"probability\":0.5042,\"type\":\"Other\",\"normalized_text\":\"APIs\"},{\"start\":131,\"end\":133,\"probability\":0.7874,\"type\":\"Other\",\"normalized_text\":\"MRZ\"},{\"start\":151,\"end\":152,\"probability\":0.7188,\"type\":\"Other\",\"normalized_text\":\"C#\"},{\"start\":163,\"end\":170,\"probability\":0.6186,\"type\":\"Other\",\"normalized_text\":\"WinForms\"},{\"start\":196,\"end\":207,\"probability\":0.6136,\"type\":\"Other\",\"normalized_text\":\"DEVCommunity\"},{\"start\":210,\"end\":215,\"probability\":0.7509,\"type\":\"Other\",\"normalized_text\":\"dotNET\"}]},\"author_id\":\"1115659846496342016\",\"edit_history_tweet_ids\":[\"1686970400524189696\"],\"created_at\":\"2023-08-03T05:21:00.000Z\",\"text\":\"Learn how to build a Windows desktop app that integrates Dynamsoft's vision APIs for document rectification, barcode scanning, and MRZ detection using C# and .NET WinForms.\\n\\n{ author: @yushulx } #DEVCommunity #dotNET\\nhttps://t.co/fSiI00AFEC\"},{\"id\":\"1686967192028430336\",\"entities\":{\"hashtags\":[{\"start\":246,\"end\":253,\"tag\":\"dotnet\"},{\"start\":254,\"end\":261,\"tag\":\"csharp\"},{\"start\":262,\"end\":269,\"tag\":\"fsharp\"}],\"urls\":[{\"start\":221,\"end\":244,\"url\":\"https://t.co/B94B7PqzQw\",\"expanded_url\":\"https://jb.gg/RD_2023-1\",\"display_url\":\"jb.gg/RD_2023-1\",\"status\":200,\"title\":\"What’s New in Rider\",\"description\":\"What's new in recent JetBrains Rider updates\",\"unwound_url\":\"https://www.jetbrains.com/rider/whatsnew/?utm_campaign=rider&utm_content=rider_2023_2_release&utm_medium=referral&utm_source=twitter\"},{\"start\":270,\"end\":293,\"url\":\"https://t.co/kWTuRyr1Dw\",\"expanded_url\":\"https://twitter.com/JetBrainsCZ/status/1686967192028430336/photo/1\",\"display_url\":\"pic.twitter.com/kWTuRyr1Dw\",\"media_key\":\"3_1686964694307758080\"}]},\"attachments\":{\"media_keys\":[\"3_1686964694307758080\"]},\"author_id\":\"1588272456\",\"edit_history_tweet_ids\":[\"1686967192028430336\"],\"created_at\":\"2023-08-03T05:08:15.000Z\",\"text\":\"Rider 2023.2 je tady!\\n\\n\\uD83D\\uDD25 Integrace GitLabu\\n\\uD83D\\uDCAA Vylepšená podpora C# a F#\\n\\uD83C\\uDD95 Přizpůsobitelné hlavičky projektů\\n✨ AI Assistant\\n\\uD83C\\uDFAE Rozšířená podpora pro Unity DOTS a optimalizované indexování Blueprint pro UE\\n\\nPřečtěte si více: https://t.co/B94B7PqzQw \\n#dotnet #csharp #fsharp https://t.co/kWTuRyr1Dw\"},{\"id\":\"1686934968256040960\",\"entities\":{\"hashtags\":[{\"start\":62,\"end\":69,\"tag\":\"Csharp\"},{\"start\":71,\"end\":83,\"tag\":\"programming\"},{\"start\":84,\"end\":91,\"tag\":\"Dotnet\"}],\"urls\":[{\"start\":92,\"end\":115,\"url\":\"https://t.co/ZWfJgws9ve\",\"expanded_url\":\"https://bit.ly/2IAjgD4\",\"display_url\":\"bit.ly/2IAjgD4\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686935011629367296/OKJTm0J-?format=png&name=orig\",\"width\":320,\"height\":168},{\"url\":\"https://pbs.twimg.com/news_img/1686935011629367296/OKJTm0J-?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"String Interpolation and Exception filters in C# 6\",\"description\":\"New String Interpolation, Expression-bodied function members and Exception filters features in C# 6\",\"unwound_url\":\"https://h-savran.blogspot.com/2017/03/string-interpolation-and-exception.html?utm_content=social-3opwn&utm_medium=social&utm_source=SocialMedia&utm_campaign=SocialPilot\"}],\"annotations\":[{\"start\":23,\"end\":35,\"probability\":0.6096,\"type\":\"Other\",\"normalized_text\":\"Interpolation\"},{\"start\":63,\"end\":68,\"probability\":0.983,\"type\":\"Other\",\"normalized_text\":\"Csharp\"},{\"start\":85,\"end\":90,\"probability\":0.8423,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"author_id\":\"400146672\",\"edit_history_tweet_ids\":[\"1686934968256040960\"],\"created_at\":\"2023-08-03T03:00:12.000Z\",\"text\":\"Introduction to String Interpolation and Exception Filters in #Csharp. #programming #Dotnet https://t.co/ZWfJgws9ve\"},{\"id\":\"1686931782749298689\",\"entities\":{\"hashtags\":[{\"start\":90,\"end\":97,\"tag\":\"AspNet\"},{\"start\":98,\"end\":109,\"tag\":\"AspNetCore\"},{\"start\":110,\"end\":117,\"tag\":\"DotNet\"},{\"start\":118,\"end\":125,\"tag\":\"CSharp\"},{\"start\":126,\"end\":139,\"tag\":\"VisualStudio\"},{\"start\":140,\"end\":155,\"tag\":\"WebDevelopment\"},{\"start\":156,\"end\":165,\"tag\":\"TechBlog\"},{\"start\":166,\"end\":177,\"tag\":\"CodingTips\"},{\"start\":178,\"end\":187,\"tag\":\"TechNews\"},{\"start\":188,\"end\":200,\"tag\":\"LearnToCode\"},{\"start\":202,\"end\":215,\"tag\":\"DevCommunity\"}],\"urls\":[{\"start\":65,\"end\":88,\"url\":\"https://t.co/ufNQznQ6D7\",\"expanded_url\":\"http://www.binaryintellect.net/articles/74f14cee-dde0-44a5-a403-b3270d5219a1.aspx\",\"display_url\":\"binaryintellect.net/articles/74f14…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686931783038775296/n1WeVDWg?format=jpg&name=orig\",\"width\":640,\"height\":426},{\"url\":\"https://pbs.twimg.com/news_img/1686931783038775296/n1WeVDWg?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Integrate ASP.NET Core Identity with Microsoft account | BinaryIntellect Knowledge Base\",\"description\":\"In the previous article you learned to use Microsoft Account as an external login to your ASP.NET Core web apps. In that article you didn't use ASP.NET Core Identity in any way. The Microsoft Account alone was used in the authentication process without any local account. At times you may want to integrate the Microsoft account with a local account.\",\"unwound_url\":\"https://www.binaryintellect.net/articles/74f14cee-dde0-44a5-a403-b3270d5219a1.aspx\"}],\"annotations\":[{\"start\":5,\"end\":6,\"probability\":0.4853,\"type\":\"Other\",\"normalized_text\":\"KB\"},{\"start\":20,\"end\":39,\"probability\":0.5332,\"type\":\"Other\",\"normalized_text\":\"AspNet Core Identity\"},{\"start\":46,\"end\":54,\"probability\":0.9109,\"type\":\"Organization\",\"normalized_text\":\"Microsoft\"},{\"start\":91,\"end\":96,\"probability\":0.5779,\"type\":\"Other\",\"normalized_text\":\"AspNet\"},{\"start\":99,\"end\":108,\"probability\":0.6005,\"type\":\"Other\",\"normalized_text\":\"AspNetCore\"},{\"start\":111,\"end\":116,\"probability\":0.4909,\"type\":\"Other\",\"normalized_text\":\"DotNet\"},{\"start\":119,\"end\":124,\"probability\":0.6515,\"type\":\"Other\",\"normalized_text\":\"CSharp\"},{\"start\":141,\"end\":154,\"probability\":0.4863,\"type\":\"Other\",\"normalized_text\":\"WebDevelopment\"}]},\"author_id\":\"98044999\",\"edit_history_tweet_ids\":[\"1686931782749298689\"],\"created_at\":\"2023-08-03T02:47:33.000Z\",\"text\":\"From KB : Integrate AspNet Core Identity with Microsoft account\\n\\nhttps://t.co/ufNQznQ6D7\\n\\n#AspNet #AspNetCore #DotNet #CSharp #VisualStudio #WebDevelopment #TechBlog #CodingTips #TechNews #LearnToCode #DevCommunity\"},{\"id\":\"1686931142669172737\",\"entities\":{\"hashtags\":[{\"start\":93,\"end\":100,\"tag\":\"fsharp\"},{\"start\":101,\"end\":108,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":62,\"end\":85,\"url\":\"https://t.co/AOER53RJjw\",\"expanded_url\":\"https://buff.ly/43M69nj\",\"display_url\":\"buff.ly/43M69nj\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686931187942465536/pptrsmfC?format=jpg&name=orig\",\"width\":1200,\"height\":630},{\"url\":\"https://pbs.twimg.com/news_img/1686931187942465536/pptrsmfC?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"F# Extends its String Interpolation Syntax to Reduce Escaping\",\"description\":\"F# has introduced a new syntax feature in preview to make it easier to work with interpolated strings. The main advantage of the new syntax is it allows to customize how many curly braces delimit an interpolated expression, thus reducing the need for escaping special characters.\",\"unwound_url\":\"https://www.infoq.com/news/2023/07/sharp-interpolation-syntax/?topicPageSponsorship=10736280-8347-41ae-8755-56da378d75dd&itm_source=presentations_about_development&itm_medium=link&itm_campaign=development\"}],\"mentions\":[{\"start\":86,\"end\":92,\"username\":\"InfoQ\",\"id\":\"14073560\"}],\"annotations\":[{\"start\":0,\"end\":9,\"probability\":0.8148,\"type\":\"Other\",\"normalized_text\":\"F# Extends\"},{\"start\":36,\"end\":41,\"probability\":0.4684,\"type\":\"Other\",\"normalized_text\":\"Syntax\"},{\"start\":94,\"end\":99,\"probability\":0.9827,\"type\":\"Other\",\"normalized_text\":\"fsharp\"},{\"start\":102,\"end\":107,\"probability\":0.6531,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"122122818\",\"edit_history_tweet_ids\":[\"1686931142669172737\"],\"created_at\":\"2023-08-03T02:45:00.000Z\",\"text\":\"F# Extends its String Interpolation Syntax to Reduce Escaping https://t.co/AOER53RJjw @infoq #fsharp #dotnet\"},{\"id\":\"1686912621499514880\",\"entities\":{\"hashtags\":[{\"start\":49,\"end\":56,\"tag\":\"dotnet\"},{\"start\":57,\"end\":62,\"tag\":\"grpc\"}],\"urls\":[{\"start\":63,\"end\":86,\"url\":\"https://t.co/W81ng7qK9x\",\"expanded_url\":\"https://morioh.com/p/180dbb776834?f=5c21fb01c16e2556b555ab32\",\"display_url\":\"morioh.com/p/180dbb776834…\",\"status\":200,\"title\":\"Build High-Performance gRPC Services with .NET 7\",\"description\":\"Learn how to build high-performance gRPC services with .NET 7. This tutorial covers everything you need to know, from setting up your development environment to creating and consuming gRPC services.\",\"unwound_url\":\"https://morioh.com/a/180dbb776834/build-high-performance-grpc-services-with-net-7\"}]},\"author_id\":\"3237673034\",\"edit_history_tweet_ids\":[\"1686912621499514880\"],\"created_at\":\"2023-08-03T01:31:24.000Z\",\"text\":\"Build High-Performance gRPC Services with .NET 7\\n#dotnet #grpc\\nhttps://t.co/W81ng7qK9x\"},{\"id\":\"1686901672604225536\",\"entities\":{\"hashtags\":[{\"start\":159,\"end\":166,\"tag\":\"DotNet\"},{\"start\":167,\"end\":174,\"tag\":\"GitHub\"},{\"start\":175,\"end\":188,\"tag\":\"CalculateETA\"}],\"urls\":[{\"start\":189,\"end\":212,\"url\":\"https://t.co/JWPiqCg9iZ\",\"expanded_url\":\"https://github.com/meokullu/CalculateETA/discussions/categories/ideas\",\"display_url\":\"github.com/meokullu/Calcu…\",\"status\":200,\"title\":\"meokullu CalculateETA Ideas · Discussions\",\"description\":\"Explore the GitHub Discussions forum for meokullu CalculateETA in the Ideas category.\",\"unwound_url\":\"https://github.com/meokullu/CalculateETA/discussions/categories/ideas\"}],\"annotations\":[{\"start\":59,\"end\":70,\"probability\":0.8606,\"type\":\"Other\",\"normalized_text\":\"CalculateETA\"},{\"start\":160,\"end\":165,\"probability\":0.4381,\"type\":\"Organization\",\"normalized_text\":\"DotNet\"},{\"start\":168,\"end\":173,\"probability\":0.4793,\"type\":\"Other\",\"normalized_text\":\"GitHub\"}]},\"author_id\":\"1335127062\",\"edit_history_tweet_ids\":[\"1686901672604225536\"],\"created_at\":\"2023-08-03T00:47:54.000Z\",\"text\":\"To prevent over-engineering I did open four discussions on CalculateETA. If you want to contribute or simply you think you would use it you can give feedback. #DotNet #GitHub #CalculateETA https://t.co/JWPiqCg9iZ\"},{\"id\":\"1686900773316427779\",\"entities\":{\"hashtags\":[{\"start\":208,\"end\":215,\"tag\":\"dotnet\"},{\"start\":216,\"end\":220,\"tag\":\"oss\"},{\"start\":221,\"end\":233,\"tag\":\"programming\"},{\"start\":234,\"end\":241,\"tag\":\"coding\"},{\"start\":242,\"end\":246,\"tag\":\"sql\"},{\"start\":247,\"end\":252,\"tag\":\"java\"},{\"start\":253,\"end\":264,\"tag\":\"programmer\"},{\"start\":265,\"end\":278,\"tag\":\"webdeveloper\"}],\"urls\":[{\"start\":279,\"end\":302,\"url\":\"https://t.co/nkgXHbbfmt\",\"expanded_url\":\"https://twitter.com/datatiks/status/1686900773316427779/photo/1\",\"display_url\":\"pic.twitter.com/nkgXHbbfmt\",\"media_key\":\"3_1686900026537377793\"}]},\"attachments\":{\"media_keys\":[\"3_1686900026537377793\"]},\"author_id\":\"1531498452131033088\",\"edit_history_tweet_ids\":[\"1686900773316427779\"],\"created_at\":\"2023-08-03T00:44:20.000Z\",\"text\":\"urgent need for .Net Developer with SSO \\nExperience: 4-8Yrs\\nStart Date: ASAP (Immediate joiners are preferable)\\nLocation: Hyderabad \\nif u r interested or suitable please share your cv to thulasi.v@nbits.tech\\n#dotnet #oss #programming #coding #sql #java #programmer #webdeveloper https://t.co/nkgXHbbfmt\"},{\"id\":\"1686895155264040960\",\"entities\":{\"hashtags\":[{\"start\":14,\"end\":21,\"tag\":\"hiring\"},{\"start\":64,\"end\":71,\"tag\":\"dotnet\"}],\"annotations\":[{\"start\":65,\"end\":70,\"probability\":0.3841,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"186127180\",\"edit_history_tweet_ids\":[\"1686895155264040960\"],\"created_at\":\"2023-08-03T00:22:00.000Z\",\"text\":\"Hi all \\uD83D\\uDC4B I am #hiring at my new organization. Do you have .NET (#dotnet) skills, care about accelerating delivery and shrinking feedback loops, and want to help lead/grow a product organization that values collaboration and learning? Let me know.\"},{\"id\":\"1686892560948621313\",\"entities\":{\"hashtags\":[{\"start\":92,\"end\":99,\"tag\":\"dotnet\"}],\"annotations\":[{\"start\":93,\"end\":98,\"probability\":0.4408,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"50483063\",\"edit_history_tweet_ids\":[\"1686892560948621313\"],\"created_at\":\"2023-08-03T00:11:42.000Z\",\"text\":\"Today I had a celebratory beer for containerizing: the CI/CD for a VM image; the CI/CD of a #dotnet core az function app; the CI/CD of an az web app, Inc terraform\\n\\nThis should allow me to build the whole lot on scale-sets that have only docker installed..\\n\\nSoon: msvc.dockerfile?\"},{\"id\":\"1686855831156031492\",\"entities\":{\"hashtags\":[{\"start\":163,\"end\":172,\"tag\":\"mastekit\"},{\"start\":173,\"end\":180,\"tag\":\"dotnet\"},{\"start\":181,\"end\":195,\"tag\":\"cybersecurity\"},{\"start\":196,\"end\":212,\"tag\":\"machinelearning\"},{\"start\":213,\"end\":236,\"tag\":\"artificialintelligence\"},{\"start\":237,\"end\":244,\"tag\":\"python\"},{\"start\":245,\"end\":271,\"tag\":\"pythonprogramminglanguage\"},{\"start\":272,\"end\":277,\"tag\":\"java\"}],\"urls\":[{\"start\":139,\"end\":162,\"url\":\"https://t.co/xHjnNiYdZM\",\"expanded_url\":\"http://www.mastekit.com\",\"display_url\":\"mastekit.com\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1684972846572060672/rfWmU4it?format=png&name=orig\",\"width\":800,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1684972846572060672/rfWmU4it?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"IT and Staffing Solutions\",\"unwound_url\":\"http://mastekit.com/\"},{\"start\":278,\"end\":301,\"url\":\"https://t.co/59blkTo63C\",\"expanded_url\":\"https://twitter.com/MasTekIt1/status/1686855831156031492/photo/1\",\"display_url\":\"pic.twitter.com/59blkTo63C\",\"media_key\":\"3_1686855814173294592\"}],\"annotations\":[{\"start\":13,\"end\":21,\"probability\":0.5784,\"type\":\"Other\",\"normalized_text\":\"Mastek IT\"}]},\"attachments\":{\"media_keys\":[\"3_1686855814173294592\"]},\"author_id\":\"1604408326279892992\",\"edit_history_tweet_ids\":[\"1686855831156031492\"],\"created_at\":\"2023-08-02T21:45:45.000Z\",\"text\":\"Working with Mastek IT will save your time & work.\\nFor more information contact Ph: +(704) 550-3988.\\nMail ID: info@mastekit.com Visit: https://t.co/xHjnNiYdZM\\n#mastekit #dotnet #cybersecurity #machinelearning #artificialintelligence #python #pythonprogramminglanguage #java https://t.co/59blkTo63C\"},{\"id\":\"1686850656009617408\",\"entities\":{\"hashtags\":[{\"start\":40,\"end\":47,\"tag\":\"dotNet\"}],\"annotations\":[{\"start\":41,\"end\":46,\"probability\":0.6575,\"type\":\"Other\",\"normalized_text\":\"dotNet\"}]},\"author_id\":\"1236669748508864513\",\"edit_history_tweet_ids\":[\"1686850656009617408\"],\"created_at\":\"2023-08-02T21:25:11.000Z\",\"text\":\"Thanks for all the valuable feedback xD #dotNet\"},{\"id\":\"1686844508187553792\",\"entities\":{\"hashtags\":[{\"start\":72,\"end\":80,\"tag\":\"gamedev\"},{\"start\":81,\"end\":97,\"tag\":\"gamedevelopment\"},{\"start\":98,\"end\":105,\"tag\":\"csharp\"},{\"start\":106,\"end\":113,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":47,\"end\":70,\"url\":\"https://t.co/dms96mMGEz\",\"expanded_url\":\"https://blog.ndepend.com/class-vs-struct-in-c-making-informed-choices/\",\"display_url\":\"blog.ndepend.com/class-vs-struc…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686341203510341632/prWso85q?format=jpg&name=orig\",\"width\":1292,\"height\":486},{\"url\":\"https://pbs.twimg.com/news_img/1686341203510341632/prWso85q?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Class vs Struct in C#: Making Informed Choices - NDepend\",\"description\":\"If you find yourself perplexed on class vs struct in C# this article explains the Differences for Informed Decisions\",\"unwound_url\":\"https://blog.ndepend.com/class-vs-struct-in-c-making-informed-choices/\"}],\"annotations\":[{\"start\":99,\"end\":104,\"probability\":0.9578,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":107,\"end\":112,\"probability\":0.6772,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"1496113245639389187\",\"edit_history_tweet_ids\":[\"1686844508187553792\"],\"created_at\":\"2023-08-02T21:00:45.000Z\",\"text\":\"Class vs Struct in C#: Making Informed Choices https://t.co/dms96mMGEz\\n\\n#gamedev #gamedevelopment #csharp #dotnet\"},{\"id\":\"1686844323948580865\",\"entities\":{\"hashtags\":[{\"start\":208,\"end\":215,\"tag\":\"dotnet\"},{\"start\":216,\"end\":220,\"tag\":\"AWS\"},{\"start\":221,\"end\":230,\"tag\":\"DynamoDB\"}],\"urls\":[{\"start\":232,\"end\":255,\"url\":\"https://t.co/npVK4ddFPU\",\"expanded_url\":\"https://go.aws/3Oh9qpa\",\"display_url\":\"go.aws/3Oh9qpa\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686844325424939008/l4YcdL8g?format=jpg&name=orig\",\"width\":168,\"height\":94},{\"url\":\"https://pbs.twimg.com/news_img/1686844325424939008/l4YcdL8g?format=jpg&name=150x150\",\"width\":94,\"height\":94}],\"status\":200,\"title\":\"AWS DynamoDB\",\"description\":\"Learn about DynamoDB and how to use it when building applications on the AWS Stack. Code samples are in .NET, but the concepts apply to all programming langu...\",\"unwound_url\":\"https://www.youtube.com/playlist?list=PL59L9XrzUa-mVcSC-1SqsiNRwCWcWdG1r&sc_channel=sm&sc_campaign=Developer_Campaigns&sc_publisher=TWITTER&sc_geo=GLOBAL&sc_outcome=awareness&trk=Developer_Campaigns&linkId=228027288\"},{\"start\":256,\"end\":279,\"url\":\"https://t.co/mxzsO2itxg\",\"expanded_url\":\"https://twitter.com/dotnetonAWS/status/1686844323948580865/photo/1\",\"display_url\":\"pic.twitter.com/mxzsO2itxg\",\"media_key\":\"3_1686844322367307776\"}],\"mentions\":[{\"start\":53,\"end\":64,\"username\":\"rahulpnath\",\"id\":\"23318060\"}],\"annotations\":[{\"start\":14,\"end\":28,\"probability\":0.4849,\"type\":\"Organization\",\"normalized_text\":\"Amazon DynamoDB\"},{\"start\":31,\"end\":33,\"probability\":0.3866,\"type\":\"Other\",\"normalized_text\":\"AWS\"},{\"start\":90,\"end\":97,\"probability\":0.6846,\"type\":\"Other\",\"normalized_text\":\"DynamoDB\"},{\"start\":99,\"end\":105,\"probability\":0.9204,\"type\":\"Other\",\"normalized_text\":\"YouTube\"},{\"start\":150,\"end\":154,\"probability\":0.8031,\"type\":\"Other\",\"normalized_text\":\"NoSQL\"},{\"start\":222,\"end\":229,\"probability\":0.5593,\"type\":\"Other\",\"normalized_text\":\"DynamoDB\"}]},\"attachments\":{\"media_keys\":[\"3_1686844322367307776\"]},\"author_id\":\"2161585526\",\"edit_history_tweet_ids\":[\"1686844323948580865\"],\"created_at\":\"2023-08-02T21:00:01.000Z\",\"text\":\"Want to learn Amazon DynamoDB? AWS Community Builder @rahulpnath has you covered with his DynamoDB YouTube series. Take advantage of a fast, flexible NoSQL database with single-digit millisecond performance.\\n#dotnet #AWS #DynamoDB\\n\\nhttps://t.co/npVK4ddFPU https://t.co/mxzsO2itxg\"},{\"id\":\"1686843583645507584\",\"entities\":{\"hashtags\":[{\"start\":85,\"end\":94,\"tag\":\"tailwind\"},{\"start\":183,\"end\":191,\"tag\":\"threejs\"},{\"start\":192,\"end\":199,\"tag\":\"Dotnet\"},{\"start\":200,\"end\":211,\"tag\":\"AspNetCore\"},{\"start\":212,\"end\":228,\"tag\":\"gamedevelopment\"},{\"start\":229,\"end\":238,\"tag\":\"indiedev\"}],\"urls\":[{\"start\":159,\"end\":182,\"url\":\"https://t.co/gIFoDgG7g4\",\"expanded_url\":\"https://rompisland.com\",\"display_url\":\"rompisland.com\",\"status\":200,\"title\":\"Romp\",\"unwound_url\":\"https://rompisland.com\"},{\"start\":239,\"end\":262,\"url\":\"https://t.co/eyCeStQlpg\",\"expanded_url\":\"https://twitter.com/Timmoth_j/status/1686843583645507584/photo/1\",\"display_url\":\"pic.twitter.com/eyCeStQlpg\",\"media_key\":\"3_1686843419946061825\"}],\"annotations\":[{\"start\":0,\"end\":10,\"probability\":0.856,\"type\":\"Other\",\"normalized_text\":\"Romp Island\"},{\"start\":193,\"end\":198,\"probability\":0.529,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"},{\"start\":201,\"end\":210,\"probability\":0.6158,\"type\":\"Other\",\"normalized_text\":\"AspNetCore\"}]},\"attachments\":{\"media_keys\":[\"3_1686843419946061825\"]},\"author_id\":\"1612396986887544832\",\"edit_history_tweet_ids\":[\"1686843583645507584\"],\"created_at\":\"2023-08-02T20:57:05.000Z\",\"text\":\"Romp Island update #11: \\n- Multiple characters\\n- Player names\\n- Enemies fight back\\n- #tailwind for stats panel\\n- Health potions\\n- Scroll for Top down camera \\n\\nhttps://t.co/gIFoDgG7g4\\n#threejs #Dotnet #AspNetCore #gamedevelopment #indiedev https://t.co/eyCeStQlpg\"},{\"id\":\"1686843421762191360\",\"entities\":{\"hashtags\":[{\"start\":42,\"end\":52,\"tag\":\"JetBrains\"},{\"start\":217,\"end\":220,\"tag\":\"EF\"},{\"start\":221,\"end\":228,\"tag\":\"coding\"},{\"start\":229,\"end\":236,\"tag\":\"dotnet\"},{\"start\":237,\"end\":249,\"tag\":\"development\"}],\"urls\":[{\"start\":250,\"end\":273,\"url\":\"https://t.co/9hXsfyq31I\",\"expanded_url\":\"https://twitter.com/hootanht/status/1686843421762191360/photo/1\",\"display_url\":\"pic.twitter.com/9hXsfyq31I\",\"media_key\":\"3_1686843310495686656\"}],\"annotations\":[{\"start\":43,\"end\":51,\"probability\":0.7668,\"type\":\"Other\",\"normalized_text\":\"JetBrains\"},{\"start\":218,\"end\":219,\"probability\":0.5283,\"type\":\"Other\",\"normalized_text\":\"EF\"}]},\"attachments\":{\"media_keys\":[\"3_1686843310495686656\"]},\"author_id\":\"2166929762\",\"edit_history_tweet_ids\":[\"1686843421762191360\"],\"created_at\":\"2023-08-02T20:56:26.000Z\",\"text\":\"\\uD83D\\uDE80 Boost your Entity Framework skills with #JetBrains ReSharper inspections! Identify and squash the pesky \\\"N+1\\\" problem effortlessly. Say goodbye to performance bottlenecks and hello to supercharged database queries! #EF #coding #dotnet #development https://t.co/9hXsfyq31I\"},{\"id\":\"1686835784794447872\",\"entities\":{\"hashtags\":[{\"start\":51,\"end\":62,\"tag\":\"DotNetMAUI\"},{\"start\":272,\"end\":279,\"tag\":\"DotNet\"}],\"urls\":[{\"start\":248,\"end\":271,\"url\":\"https://t.co/7CLRFpDIww\",\"expanded_url\":\"https://prgress.co/43EoliR\",\"display_url\":\"prgress.co/43EoliR\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686835790414790656/mBUyUa2T?format=png&name=orig\",\"width\":1200,\"height\":628},{\"url\":\"https://pbs.twimg.com/news_img/1686835790414790656/mBUyUa2T?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Modernization Through Migration - A .NET MAUI Workshop\",\"description\":\"Modernization Through Migration: A .NET MAUI Workshop\",\"unwound_url\":\"https://www.telerik.com/campaigns/maui-workshop-migration\"},{\"start\":280,\"end\":303,\"url\":\"https://t.co/m3W8WzWpeY\",\"expanded_url\":\"https://twitter.com/Telerik/status/1686835784794447872/photo/1\",\"display_url\":\"pic.twitter.com/m3W8WzWpeY\",\"media_key\":\"3_1686835763596423168\"}],\"mentions\":[{\"start\":70,\"end\":78,\"username\":\"samidip\",\"id\":\"166847612\"}],\"annotations\":[{\"start\":52,\"end\":61,\"probability\":0.8221,\"type\":\"Other\",\"normalized_text\":\"DotNetMAUI\"},{\"start\":178,\"end\":185,\"probability\":0.5144,\"type\":\"Other\",\"normalized_text\":\"NET MAUI\"},{\"start\":273,\"end\":278,\"probability\":0.4819,\"type\":\"Other\",\"normalized_text\":\"DotNet\"}]},\"attachments\":{\"media_keys\":[\"3_1686835763596423168\"]},\"author_id\":\"44608081\",\"edit_history_tweet_ids\":[\"1686835784794447872\"],\"created_at\":\"2023-08-02T20:26:05.000Z\",\"text\":\"Discover the wonderful world of modernization with #DotNetMAUI!\\n\\nJoin @samidip for a live app-building workshop where you'll modernize existing legacy apps through migration to .NET MAUI, learn how to avoid roadblocks & more! \\n\\nSave your seat: https://t.co/7CLRFpDIww #DotNet https://t.co/m3W8WzWpeY\"},{\"id\":\"1686835707753459712\",\"entities\":{\"hashtags\":[{\"start\":204,\"end\":211,\"tag\":\"csharp\"},{\"start\":212,\"end\":219,\"tag\":\"dotnet\"},{\"start\":220,\"end\":227,\"tag\":\"fsharp\"},{\"start\":228,\"end\":248,\"tag\":\"softwaredevelopment\"},{\"start\":249,\"end\":260,\"tag\":\"typescript\"},{\"start\":261,\"end\":278,\"tag\":\"SoftwareEngineer\"}],\"urls\":[{\"start\":10,\"end\":33,\"url\":\"https://t.co/jSBfcdgmTm\",\"expanded_url\":\"https://talesfrom.dev/blog/new-tools-old-rules\",\"display_url\":\"talesfrom.dev/blog/new-tools…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686835710743994369/nKUjK20G?format=png&name=orig\",\"width\":1602,\"height\":865},{\"url\":\"https://pbs.twimg.com/news_img/1686835710743994369/nKUjK20G?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"New tools, old rules\",\"description\":\"Does \\\"old\\\" always remain unattractive?\",\"unwound_url\":\"https://talesfrom.dev/blog/new-tools-old-rules\"}],\"annotations\":[{\"start\":144,\"end\":151,\"probability\":0.5343,\"type\":\"Other\",\"normalized_text\":\"almanacs\"},{\"start\":205,\"end\":210,\"probability\":0.9592,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":213,\"end\":218,\"probability\":0.8193,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":221,\"end\":226,\"probability\":0.9802,\"type\":\"Other\",\"normalized_text\":\"fsharp\"},{\"start\":250,\"end\":259,\"probability\":0.664,\"type\":\"Other\",\"normalized_text\":\"typescript\"},{\"start\":262,\"end\":277,\"probability\":0.5617,\"type\":\"Other\",\"normalized_text\":\"SoftwareEngineer\"}]},\"author_id\":\"2511178231\",\"edit_history_tweet_ids\":[\"1686835707753459712\"],\"created_at\":\"2023-08-02T20:25:47.000Z\",\"text\":\"New tale: https://t.co/jSBfcdgmTm in which we express how modern times are great for software engineering, reflect on fundamentals, and why old almanacs might be good for studying, but not for learning.\\n\\n#csharp #dotnet #fsharp #softwaredevelopment #typescript #SoftwareEngineer\"},{\"id\":\"1686834755285692417\",\"entities\":{\"hashtags\":[{\"start\":37,\"end\":44,\"tag\":\"dotnet\"},{\"start\":45,\"end\":50,\"tag\":\"maui\"}],\"urls\":[{\"start\":64,\"end\":87,\"url\":\"https://t.co/GRmyAGw9DZ\",\"expanded_url\":\"https://twitter.com/dotnetmeme/status/1686834755285692417/video/1\",\"display_url\":\"pic.twitter.com/GRmyAGw9DZ\",\"media_key\":\"7_1686351657867542528\"}],\"annotations\":[{\"start\":38,\"end\":43,\"probability\":0.5876,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":46,\"end\":49,\"probability\":0.4576,\"type\":\"Other\",\"normalized_text\":\"maui\"}]},\"attachments\":{\"media_keys\":[\"7_1686351657867542528\"]},\"author_id\":\"1471665288043192320\",\"edit_history_tweet_ids\":[\"1686834755285692417\"],\"created_at\":\"2023-08-02T20:22:00.000Z\",\"text\":\"Expect a few bumps when migrating to #dotnet #maui \\n\\nThe bumps: https://t.co/GRmyAGw9DZ\"},{\"id\":\"1686833178806235136\",\"entities\":{\"hashtags\":[{\"start\":228,\"end\":238,\"tag\":\"meadowiot\"},{\"start\":239,\"end\":243,\"tag\":\"iot\"},{\"start\":244,\"end\":251,\"tag\":\"dotnet\"},{\"start\":252,\"end\":259,\"tag\":\"csharp\"},{\"start\":260,\"end\":263,\"tag\":\"vs\"},{\"start\":264,\"end\":270,\"tag\":\"cloud\"},{\"start\":271,\"end\":277,\"tag\":\"stm32\"}],\"urls\":[{\"start\":59,\"end\":82,\"url\":\"https://t.co/uPVBY5DXD0\",\"expanded_url\":\"http://Meadow.Cloud\",\"display_url\":\"Meadow.Cloud\",\"status\":403,\"unwound_url\":\"https://sedo.com/search/details/?domain=meadow.cloud&campaignId=329145&origin=sales_lander_15\"},{\"start\":204,\"end\":227,\"url\":\"https://t.co/5q1qk9miOJ\",\"expanded_url\":\"https://wldrn.es/v1\",\"display_url\":\"wldrn.es/v1\",\"status\":200,\"title\":\"Wilderness Labs Developer Portal\",\"description\":\"Greatly improved app startup time Improved latency of first interrupt Added app-accessible Settings to IApp Added StateChanged event to IUpdateService Bug fix in refreshing network adap ter info Added support for Connectors Bug fix for incorrect scaling in AnalogInputPort Integrated cell networking support via the new CellNetworkAdapter class Added a Cloud Log Provider to send logs and events to Meadow.Cloud View device logs and events. The following filters are applicable in the search box: source:log|eve\",\"unwound_url\":\"http://developer.wildernesslabs.co/Meadow/Release_Notes/v1/\"},{\"start\":278,\"end\":301,\"url\":\"https://t.co/ZFOC84VsDg\",\"expanded_url\":\"https://twitter.com/wildernesslabs/status/1686833178806235136/photo/1\",\"display_url\":\"pic.twitter.com/ZFOC84VsDg\",\"media_key\":\"3_1686833176134492161\"}],\"annotations\":[{\"start\":5,\"end\":10,\"probability\":0.8169,\"type\":\"Other\",\"normalized_text\":\"Meadow\"},{\"start\":229,\"end\":237,\"probability\":0.6645,\"type\":\"Other\",\"normalized_text\":\"meadowiot\"},{\"start\":240,\"end\":242,\"probability\":0.6449,\"type\":\"Other\",\"normalized_text\":\"iot\"},{\"start\":245,\"end\":250,\"probability\":0.5882,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":253,\"end\":258,\"probability\":0.901,\"type\":\"Other\",\"normalized_text\":\"csharp\"}]},\"attachments\":{\"media_keys\":[\"3_1686833176134492161\"]},\"author_id\":\"792195010040967168\",\"edit_history_tweet_ids\":[\"1686833178806235136\"],\"created_at\":\"2023-08-02T20:15:44.000Z\",\"text\":\"With Meadow v1.2, you can now view/send logs and events in https://t.co/uPVBY5DXD0, low-power mode sleep time increased from 18 hours to 25 days \\uD83D\\uDD0B, Cell networking reliability greatly improved, etc. URL: https://t.co/5q1qk9miOJ\\n#meadowiot #iot #dotnet #csharp #vs #cloud #stm32 https://t.co/ZFOC84VsDg\"},{\"id\":\"1686831900311040001\",\"entities\":{\"hashtags\":[{\"start\":209,\"end\":216,\"tag\":\"dotnet\"},{\"start\":217,\"end\":227,\"tag\":\"reporting\"},{\"start\":228,\"end\":247,\"tag\":\"softwaredevelopers\"}],\"urls\":[{\"start\":184,\"end\":207,\"url\":\"https://t.co/Jgb8IDMQbx\",\"expanded_url\":\"https://bit.ly/3OCd1iJ\",\"display_url\":\"bit.ly/3OCd1iJ\",\"status\":200,\"title\":\"Set Page Size, Margins, and Orientation in Page Reports | ActiveReports 17 .NET Edition\",\"description\":\"Learn how you can control the layout settings for each page in a Page report. The page layout properties like page size, page margins, and page orientation define how the report pages appear when previewed or printed.\",\"unwound_url\":\"https://www.grapecity.com/activereportsnet/docs/latest/online/set-page-layout-pagereports.html?utm_source=Twitter&utm_medium=Organic&utm_campaign=arnet-page-size-margin-orientation_demo-video-gif_08/02/2023\"},{\"start\":248,\"end\":271,\"url\":\"https://t.co/F9OCA7Aiyr\",\"expanded_url\":\"https://twitter.com/GrapeCityUS/status/1686831900311040001/video/1\",\"display_url\":\"pic.twitter.com/F9OCA7Aiyr\",\"media_key\":\"13_1686831741485383681\"}],\"annotations\":[{\"start\":18,\"end\":20,\"probability\":0.5722,\"type\":\"Other\",\"normalized_text\":\"RDL\"},{\"start\":35,\"end\":47,\"probability\":0.6953,\"type\":\"Other\",\"normalized_text\":\"ActiveReports\"}]},\"attachments\":{\"media_keys\":[\"13_1686831741485383681\"]},\"author_id\":\"20187433\",\"edit_history_tweet_ids\":[\"1686831900311040001\"],\"created_at\":\"2023-08-02T20:10:39.000Z\",\"text\":\"Utilizing Page or RDL Reports with ActiveReports .NET? Good news, you have full control of your report pages. \\n\\nLearn how to customize page sizing, margins, and orientation with ease: https://t.co/Jgb8IDMQbx\\n\\n#dotnet #reporting #softwaredevelopers https://t.co/F9OCA7Aiyr\"},{\"id\":\"1686830505109385216\",\"entities\":{\"hashtags\":[{\"start\":186,\"end\":193,\"tag\":\"fsharp\"},{\"start\":194,\"end\":216,\"tag\":\"functionalprogramming\"},{\"start\":217,\"end\":237,\"tag\":\"softwareengineering\"},{\"start\":238,\"end\":245,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":247,\"end\":270,\"url\":\"https://t.co/HNIojlVjxU\",\"expanded_url\":\"https://scientificprogrammer.net/2023/08/01/why-you-should-care-about-functional-programming/\",\"display_url\":\"scientificprogrammer.net/2023/08/01/why…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686830547647991808/0AqPzEf4?format=jpg&name=orig\",\"width\":900,\"height\":600},{\"url\":\"https://pbs.twimg.com/news_img/1686830547647991808/0AqPzEf4?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Why you should care about functional programming - Scientific Programmer\",\"description\":\"Microsoft has spent a lot of time and effort developing its main functional language, F#. Over time, it has been given many cutting-edge features and tooling, far better than anything available in any other language on the .NET platform. This has …\",\"unwound_url\":\"https://scientificprogrammer.net/2023/08/01/why-you-should-care-about-functional-programming/\"}],\"annotations\":[{\"start\":187,\"end\":192,\"probability\":0.9692,\"type\":\"Other\",\"normalized_text\":\"fsharp\"},{\"start\":239,\"end\":244,\"probability\":0.6906,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"471383214\",\"edit_history_tweet_ids\":[\"1686830505109385216\"],\"created_at\":\"2023-08-02T20:05:06.000Z\",\"text\":\"I keep hearing developers arguing about functional vs object-oriented programming. So, here's my take on functional programming and why developers should at least get familiar with it.\\n\\n#fsharp #functionalprogramming #softwareengineering #dotnet\\n\\nhttps://t.co/HNIojlVjxU\"},{\"id\":\"1686828097239207937\",\"entities\":{\"hashtags\":[{\"start\":35,\"end\":47,\"tag\":\"Switzerland\"},{\"start\":74,\"end\":81,\"tag\":\"dotNet\"},{\"start\":83,\"end\":89,\"tag\":\"Azure\"},{\"start\":95,\"end\":105,\"tag\":\"Microsoft\"}],\"urls\":[{\"start\":280,\"end\":303,\"url\":\"https://t.co/lGjvOtiWCA\",\"expanded_url\":\"https://twitter.com/Thinkershines/status/1686828097239207937/photo/1\",\"display_url\":\"pic.twitter.com/lGjvOtiWCA\",\"media_key\":\"3_1686827865067700226\"}],\"annotations\":[{\"start\":36,\"end\":46,\"probability\":0.9452,\"type\":\"Place\",\"normalized_text\":\"Switzerland\"},{\"start\":75,\"end\":80,\"probability\":0.5765,\"type\":\"Other\",\"normalized_text\":\"dotNet\"},{\"start\":84,\"end\":88,\"probability\":0.5948,\"type\":\"Other\",\"normalized_text\":\"Azure\"},{\"start\":96,\"end\":117,\"probability\":0.6254,\"type\":\"Organization\",\"normalized_text\":\"Microsoft Technologies\"}]},\"attachments\":{\"media_keys\":[\"3_1686827865067700226\"]},\"author_id\":\"1236669748508864513\",\"edit_history_tweet_ids\":[\"1686828097239207937\"],\"created_at\":\"2023-08-02T19:55:32.000Z\",\"text\":\"I decided to create a Job Board in #Switzerland specifically and only for #dotNet, #Azure, and #Microsoft Technologies.\\n\\nWhat do You guys think?\\n\\nAnyone would like to answer some questions about what would be most important?\\n\\nOr provide some ideas on how to make this work?\\n\\n.NET https://t.co/lGjvOtiWCA\"},{\"id\":\"1686823377657290752\",\"entities\":{\"hashtags\":[{\"start\":74,\"end\":81,\"tag\":\"csharp\"},{\"start\":82,\"end\":89,\"tag\":\"fsharp\"},{\"start\":90,\"end\":97,\"tag\":\"Dotnet\"}],\"urls\":[{\"start\":99,\"end\":122,\"url\":\"https://t.co/GZHg79aC9C\",\"expanded_url\":\"https://steven-giesel.com/blogPost/2f70d926-ec92-4dfe-b278-18f78078253d\",\"display_url\":\"steven-giesel.com/blogPost/2f70d…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686823382375927809/ZlEFCmCk?format=jpg&name=orig\",\"width\":1200,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1686823382375927809/ZlEFCmCk?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"The combined power of F# and C#\",\"description\":\"Where C# is the most dominant language in the .NET world, other languages are built on top of the Framework that deserves their respective place. F# is strong when it comes down to functional programming! In this blog post, we will leverage the power of F# and C# to showcase where both excel!\",\"unwound_url\":\"https://steven-giesel.com/blogPost/2f70d926-ec92-4dfe-b278-18f78078253d\"}],\"annotations\":[{\"start\":26,\"end\":38,\"probability\":0.9101,\"type\":\"Person\",\"normalized_text\":\"Steven Giesel\"},{\"start\":54,\"end\":55,\"probability\":0.8562,\"type\":\"Other\",\"normalized_text\":\"C#\"},{\"start\":61,\"end\":62,\"probability\":0.7455,\"type\":\"Other\",\"normalized_text\":\"F#\"},{\"start\":75,\"end\":80,\"probability\":0.9634,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":83,\"end\":88,\"probability\":0.9869,\"type\":\"Other\",\"normalized_text\":\"fsharp\"},{\"start\":91,\"end\":96,\"probability\":0.8954,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"author_id\":\"41316529\",\"edit_history_tweet_ids\":[\"1686823377657290752\"],\"created_at\":\"2023-08-02T19:36:47.000Z\",\"text\":\"Nice introductory post by Steven Giesel on how to use C# and F# together. #csharp #fsharp #Dotnet \\nhttps://t.co/GZHg79aC9C\"},{\"id\":\"1686818232408096775\",\"entities\":{\"hashtags\":[{\"start\":64,\"end\":71,\"tag\":\"dotnet\"},{\"start\":85,\"end\":96,\"tag\":\"dotnetcore\"},{\"start\":256,\"end\":263,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":273,\"end\":296,\"url\":\"https://t.co/7U8wFJA0ak\",\"expanded_url\":\"https://twitter.com/EdwardSkrod/status/1686818232408096775/photo/1\",\"display_url\":\"pic.twitter.com/7U8wFJA0ak\",\"media_key\":\"3_1686814096081956864\"}],\"annotations\":[{\"start\":65,\"end\":70,\"probability\":0.7027,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":86,\"end\":95,\"probability\":0.8044,\"type\":\"Other\",\"normalized_text\":\"dotnetcore\"},{\"start\":257,\"end\":262,\"probability\":0.6832,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1686814096081956864\"]},\"author_id\":\"1002668770681163776\",\"edit_history_tweet_ids\":[\"1686818232408096775\"],\"created_at\":\"2023-08-02T19:16:20.000Z\",\"text\":\"Another example. While spiking to migrate one of our repos off #dotnet framework to #dotnetcore, I hit an error.\\n\\nI wanted to understand whether this was an issue caused by the migration or whether this was an existing issue brought to light with the new #dotnet tooling. https://t.co/7U8wFJA0ak\"},{\"id\":\"1686818224317284352\",\"entities\":{\"hashtags\":[{\"start\":43,\"end\":51,\"tag\":\"ChatGPT\"},{\"start\":192,\"end\":212,\"tag\":\"softwaredevelopment\"},{\"start\":214,\"end\":232,\"tag\":\"SoftwareDeveloper\"},{\"start\":233,\"end\":250,\"tag\":\"SoftwareEngineer\"},{\"start\":252,\"end\":259,\"tag\":\"Dotnet\"},{\"start\":260,\"end\":270,\"tag\":\"Microsoft\"},{\"start\":271,\"end\":278,\"tag\":\"OpenAI\"}],\"mentions\":[{\"start\":16,\"end\":21,\"username\":\"bing\",\"id\":\"14874480\"}],\"annotations\":[{\"start\":23,\"end\":37,\"probability\":0.5743,\"type\":\"Other\",\"normalized_text\":\"Enterprise Chat\"},{\"start\":44,\"end\":50,\"probability\":0.7568,\"type\":\"Other\",\"normalized_text\":\"ChatGPT\"},{\"start\":253,\"end\":258,\"probability\":0.473,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"},{\"start\":261,\"end\":269,\"probability\":0.8412,\"type\":\"Organization\",\"normalized_text\":\"Microsoft\"},{\"start\":272,\"end\":277,\"probability\":0.5204,\"type\":\"Other\",\"normalized_text\":\"OpenAI\"}]},\"author_id\":\"1002668770681163776\",\"edit_history_tweet_ids\":[\"1686818224317284352\"],\"created_at\":\"2023-08-02T19:16:18.000Z\",\"text\":\"I've been using @bing Enterprise Chat and #ChatGPT for the last few months and have seen huge productivity improvements in my day-to-day work.\\n\\nThe following are a few ways that I use Chat.\\n\\n#softwaredevelopment #SoftwareDeveloper #SoftwareEngineer #Dotnet #Microsoft #OpenAI\"},{\"id\":\"1686817083508539392\",\"entities\":{\"hashtags\":[{\"start\":200,\"end\":207,\"tag\":\"dotnet\"},{\"start\":208,\"end\":219,\"tag\":\"dotnetcore\"}],\"urls\":[{\"start\":175,\"end\":198,\"url\":\"https://t.co/kVcC318h20\",\"expanded_url\":\"https://github.com/mganss/HtmlSanitizer\",\"display_url\":\"github.com/mganss/HtmlSan…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686816868441407495/5K3tgGFb?format=jpg&name=orig\",\"width\":1200,\"height\":600},{\"url\":\"https://pbs.twimg.com/news_img/1686816868441407495/5K3tgGFb?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"GitHub - mganss/HtmlSanitizer: Cleans HTML to avoid XSS attacks\",\"description\":\"Cleans HTML to avoid XSS attacks. Contribute to mganss/HtmlSanitizer development by creating an account on GitHub.\",\"unwound_url\":\"https://github.com/mganss/HtmlSanitizer\"}],\"mentions\":[{\"start\":0,\"end\":7,\"username\":\"mganss\",\"id\":\"59398063\"}],\"annotations\":[{\"start\":8,\"end\":20,\"probability\":0.8186,\"type\":\"Person\",\"normalized_text\":\"Michael Ganss\"},{\"start\":77,\"end\":89,\"probability\":0.9114,\"type\":\"Other\",\"normalized_text\":\"HTMLSanitizer\"},{\"start\":201,\"end\":206,\"probability\":0.5718,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":209,\"end\":218,\"probability\":0.6459,\"type\":\"Other\",\"normalized_text\":\"dotnetcore\"}]},\"author_id\":\"3240580113\",\"edit_history_tweet_ids\":[\"1686817083508539392\"],\"created_at\":\"2023-08-02T19:11:46.000Z\",\"text\":\"@mganss\\nMichael Ganss - Thank you so much for all the work you contribute to HTMLSanitizer. It's a great open-source project. You make the .NET community ecosystem better. https://t.co/kVcC318h20 \\n#dotnet #dotnetcore\"},{\"id\":\"1686816574274207744\",\"entities\":{\"hashtags\":[{\"start\":20,\"end\":27,\"tag\":\"dotnet\"},{\"start\":28,\"end\":35,\"tag\":\"aspnet\"},{\"start\":72,\"end\":79,\"tag\":\"blazor\"},{\"start\":80,\"end\":84,\"tag\":\"SSR\"}],\"urls\":[{\"start\":108,\"end\":131,\"url\":\"https://t.co/QaEetWQSnd\",\"expanded_url\":\"https://youtu.be/TWb_gR5I_4U\",\"display_url\":\"youtu.be/TWb_gR5I_4U\",\"status\":200,\"title\":\"Even More Blazor SSR Enhancements in .NET 8\",\"description\":\"We are all excited about the latest Blazor enhancements coming .NET 8 and there are even more to talk about! Let's go through the newest things coming to th...\",\"unwound_url\":\"https://www.youtube.com/watch?v=TWb_gR5I_4U&feature=youtu.be\"}]},\"author_id\":\"115431036\",\"edit_history_tweet_ids\":[\"1686816574274207744\"],\"created_at\":\"2023-08-02T19:09:45.000Z\",\"text\":\"Check out my latest #dotnet #aspnet video where we talk about even more #blazor #SSR enhancements in .NET 8\\nhttps://t.co/QaEetWQSnd\"},{\"id\":\"1686816392421457928\",\"entities\":{\"hashtags\":[{\"start\":272,\"end\":279,\"tag\":\"dotnet\"}],\"annotations\":[{\"start\":273,\"end\":278,\"probability\":0.567,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"772907891397242881\",\"edit_history_tweet_ids\":[\"1686816392421457928\"],\"created_at\":\"2023-08-02T19:09:02.000Z\",\"text\":\"When you have one csproj in a sln and you suspect it will stay that way for a while, do you put it in the same directory as the sln?\\n\\nI generally don't, but after running proj commands in the sln dir over and over, I'm warming up to just stuffing it in there with the sln #dotnet\"},{\"id\":\"1686806576084959235\",\"entities\":{\"hashtags\":[{\"start\":175,\"end\":182,\"tag\":\"DotNET\"},{\"start\":183,\"end\":195,\"tag\":\"DevLearning\"}],\"urls\":[{\"start\":151,\"end\":174,\"url\":\"https://t.co/LRVCr6B1at\",\"expanded_url\":\"https://msft.it/60159DYpL\",\"display_url\":\"msft.it/60159DYpL\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686806626127200273/jL1QQTgY?format=jpg&name=orig\",\"width\":168,\"height\":94},{\"url\":\"https://pbs.twimg.com/news_img/1686806626127200273/jL1QQTgY?format=jpg&name=150x150\",\"width\":94,\"height\":94}],\"status\":200,\"title\":\".NET on Azure for Beginners\",\"description\":\".NET on Azure for Beginners will teach you the basics of Azure and how to leverage its services and features to build amazing cloud applications. You will le...\",\"unwound_url\":\"https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVSBX3Lde8owu6dSgZLIXfu\"},{\"start\":196,\"end\":219,\"url\":\"https://t.co/u2GSpp6xng\",\"expanded_url\":\"https://twitter.com/msdev/status/1686806576084959235/photo/1\",\"display_url\":\"pic.twitter.com/u2GSpp6xng\",\"media_key\":\"3_1686806571630706688\"}],\"annotations\":[{\"start\":109,\"end\":113,\"probability\":0.8189,\"type\":\"Other\",\"normalized_text\":\"Azure\"},{\"start\":176,\"end\":181,\"probability\":0.6156,\"type\":\"Other\",\"normalized_text\":\"DotNET\"}]},\"attachments\":{\"media_keys\":[\"3_1686806571630706688\"]},\"author_id\":\"1157784678\",\"edit_history_tweet_ids\":[\"1686806576084959235\"],\"created_at\":\"2023-08-02T18:30:01.000Z\",\"text\":\"Deploy web apps, work with data and containers, and gain confidence to develop your own .NET applications on Azure with this beginner-friendly series: https://t.co/LRVCr6B1at #DotNET #DevLearning https://t.co/u2GSpp6xng\"},{\"id\":\"1686800538661253135\",\"entities\":{\"hashtags\":[{\"start\":113,\"end\":120,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":47,\"end\":70,\"url\":\"https://t.co/gytwPU5f6m\",\"expanded_url\":\"https://hubs.li/Q01ZJPm80\",\"display_url\":\"hubs.li/Q01ZJPm80\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686800613152092165/lrygOdJo?format=jpg&name=orig\",\"width\":1280,\"height\":720},{\"url\":\"https://pbs.twimg.com/news_img/1686800613152092165/lrygOdJo?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Esquio - Feature Toggles for .NET Applications\",\"description\":\"Esquio, a .NET Foundation project member, adds feature toggles capabilities to all your .NET Applications.\",\"unwound_url\":\"https://dotnetfoundation.org/news-events/detail/esquio-feature-toggles-for-dotnet-applications?utm_content=259076996&utm_medium=social&utm_source=twitter&hss_channel=tw-4083531\"},{\"start\":121,\"end\":144,\"url\":\"https://t.co/vzpysmRw3j\",\"expanded_url\":\"https://twitter.com/ddskier/status/1686800538661253135/photo/1\",\"display_url\":\"pic.twitter.com/vzpysmRw3j\",\"media_key\":\"3_1686800536484397056\"}],\"mentions\":[{\"start\":75,\"end\":85,\"username\":\"dotnetfdn\",\"id\":\"2384354214\"},{\"start\":103,\"end\":112,\"username\":\"buhakmeh\",\"id\":\"72354175\"}]},\"attachments\":{\"media_keys\":[\"3_1686800536484397056\"]},\"author_id\":\"4083531\",\"edit_history_tweet_ids\":[\"1686800538661253135\"],\"created_at\":\"2023-08-02T18:06:02.000Z\",\"text\":\"Esquio - Feature Toggles for .NET Applications https://t.co/gytwPU5f6m via @dotnetfdn khalid abuhakmeh @buhakmeh #dotnet https://t.co/vzpysmRw3j\"},{\"id\":\"1686800311992598528\",\"entities\":{\"hashtags\":[{\"start\":10,\"end\":18,\"tag\":\"Mocking\"},{\"start\":24,\"end\":36,\"tag\":\"NSubstitute\"},{\"start\":40,\"end\":47,\"tag\":\"dotNET\"}],\"urls\":[{\"start\":49,\"end\":72,\"url\":\"https://t.co/2DhA3UmalW\",\"expanded_url\":\"https://code-maze.com/csharp-effective-mocking-with-nsubstitute/\",\"display_url\":\"code-maze.com/csharp-effecti…\",\"status\":200,\"title\":\"Effective Mocking With NSubstitute in .NET - Code Maze\",\"description\":\"In this article, we will delve into the world of mocking with NSubstitute in .NET and explore how it can help us create comprehensive tests.\",\"unwound_url\":\"https://code-maze.com/csharp-effective-mocking-with-nsubstitute/\"}],\"mentions\":[{\"start\":77,\"end\":90,\"username\":\"CodeMazeBlog\",\"id\":\"110541370\"}],\"annotations\":[{\"start\":25,\"end\":35,\"probability\":0.55,\"type\":\"Other\",\"normalized_text\":\"NSubstitute\"},{\"start\":41,\"end\":46,\"probability\":0.5213,\"type\":\"Other\",\"normalized_text\":\"dotNET\"}]},\"author_id\":\"103296225\",\"edit_history_tweet_ids\":[\"1686800311992598528\"],\"created_at\":\"2023-08-02T18:05:08.000Z\",\"text\":\"Effective #Mocking With #NSubstitute in #dotNET\\n\\nhttps://t.co/2DhA3UmalW via @CodeMazeBlog\"},{\"id\":\"1686799096579846159\",\"entities\":{\"hashtags\":[{\"start\":127,\"end\":134,\"tag\":\"dotnet\"},{\"start\":135,\"end\":142,\"tag\":\"csharp\"}],\"urls\":[{\"start\":101,\"end\":124,\"url\":\"https://t.co/7L9pSNTqdy\",\"expanded_url\":\"https://linkedin.com/in/kavaan-damirchi\",\"display_url\":\"linkedin.com/in/kavaan-dami…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1685894354987102208/eVINtrJQ?format=jpg&name=orig\",\"width\":499,\"height\":499},{\"url\":\"https://pbs.twimg.com/news_img/1685894354987102208/eVINtrJQ?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Keivan Damirchi - Senior Software Developer - Saminray ICT co. | LinkedIn\",\"description\":\"I am a software developer with experience in developing multiple applications. My passion for coding drives me to constantly improve my skills and tackle new challenges in the field! | Learn more about Keivan Damirchi's work experience, education, connections & more by visiting their profile on LinkedIn\",\"unwound_url\":\"https://ir.linkedin.com/in/kavaan-damirchi\"},{\"start\":143,\"end\":166,\"url\":\"https://t.co/HZK67F60Wo\",\"expanded_url\":\"https://twitter.com/i/web/status/1686799096579846159\",\"display_url\":\"twitter.com/i/web/status/1…\"},{\"start\":167,\"end\":190,\"url\":\"https://t.co/sepF60tZ7i\",\"expanded_url\":\"https://twitter.com/Dave_DotNet/status/1686799096579846159/photo/1\",\"display_url\":\"pic.twitter.com/sepF60tZ7i\",\"media_key\":\"3_1686799090875539456\"}],\"annotations\":[{\"start\":15,\"end\":18,\"probability\":0.622,\"type\":\"Other\",\"normalized_text\":\"LINQ\"},{\"start\":24,\"end\":26,\"probability\":0.4493,\"type\":\"Other\",\"normalized_text\":\"NET\"},{\"start\":44,\"end\":58,\"probability\":0.8196,\"type\":\"Person\",\"normalized_text\":\"Keivan Damirchi\"},{\"start\":63,\"end\":70,\"probability\":0.6778,\"type\":\"Other\",\"normalized_text\":\"LinkedIn\"},{\"start\":128,\"end\":133,\"probability\":0.6255,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":136,\"end\":141,\"probability\":0.9467,\"type\":\"Other\",\"normalized_text\":\"csharp\"}]},\"attachments\":{\"media_keys\":[\"3_1686799090875539456\"]},\"author_id\":\"1433020305979723778\",\"edit_history_tweet_ids\":[\"1686799096579846159\"],\"created_at\":\"2023-08-02T18:00:18.000Z\",\"text\":\"4 Use Cases of LINQ in .NET ⬇ \\n\\nThanks to Keivan Damirchi on LinkedIn for the original image -> https://t.co/7L9pSNTqdy\\n \\n#dotnet #csharp https://t.co/HZK67F60Wo https://t.co/sepF60tZ7i\"},{\"id\":\"1686799028418142208\",\"entities\":{\"hashtags\":[{\"start\":80,\"end\":93,\"tag\":\"visualstudio\"},{\"start\":94,\"end\":101,\"tag\":\"dotnet\"},{\"start\":102,\"end\":110,\"tag\":\"xamarin\"}],\"urls\":[{\"start\":112,\"end\":135,\"url\":\"https://t.co/Dv3MpPzJIx\",\"expanded_url\":\"https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes-preview#17.7.0-pre.6.0\",\"display_url\":\"learn.microsoft.com/en-us/visualst…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686799073255321601/6vrwPRUr?format=png&name=orig\",\"width\":1201,\"height\":630},{\"url\":\"https://pbs.twimg.com/news_img/1686799073255321601/6vrwPRUr?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Visual Studio 2022 Preview Release Notes\",\"description\":\"Get the latest pre-release features, bug fixes, and support for Visual Studio 2022 Preview. Download today.\",\"unwound_url\":\"https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes-preview#17.7.0-pre.6.0\"}],\"mentions\":[{\"start\":61,\"end\":76,\"username\":\"MicrosoftLearn\",\"id\":\"19312845\"}],\"annotations\":[{\"start\":0,\"end\":12,\"probability\":0.7555,\"type\":\"Other\",\"normalized_text\":\"Visual Studio\"},{\"start\":95,\"end\":100,\"probability\":0.5612,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":103,\"end\":109,\"probability\":0.6878,\"type\":\"Other\",\"normalized_text\":\"xamarin\"}]},\"author_id\":\"6832532\",\"edit_history_tweet_ids\":[\"1686799028418142208\"],\"created_at\":\"2023-08-02T18:00:02.000Z\",\"text\":\"Visual Studio 2022 version 17.7 Preview 6 Release Notes (via @MicrosoftLearn).\\n\\n#visualstudio #dotnet #xamarin \\nhttps://t.co/Dv3MpPzJIx\"},{\"id\":\"1686797634160455680\",\"entities\":{\"hashtags\":[{\"start\":55,\"end\":59,\"tag\":\"jwt\"},{\"start\":86,\"end\":93,\"tag\":\"webapi\"},{\"start\":111,\"end\":118,\"tag\":\"Dotnet\"}]},\"author_id\":\"1684214726211801088\",\"edit_history_tweet_ids\":[\"1686797634160455680\"],\"created_at\":\"2023-08-02T17:54:29.000Z\",\"text\":\"Really enjoying my work today... Implementing a custom #jwt authentication system for #webapi . Unfortunately, #Dotnet doesn't come with a way of cancelling security tokens early. Fortunately, it's a chance to hone my skills developing middle-ware to act as a token blacklist.\"},{\"id\":\"1686795672412975108\",\"entities\":{\"hashtags\":[{\"start\":25,\"end\":32,\"tag\":\"dotnet\"},{\"start\":33,\"end\":44,\"tag\":\"dotnetcore\"},{\"start\":45,\"end\":56,\"tag\":\"aspnetcore\"}],\"urls\":[{\"start\":0,\"end\":23,\"url\":\"https://t.co/CPAHnyohfa\",\"expanded_url\":\"https://levelup.gitconnected.com/grafana-k6-and-asp-net-core-a-practical-guide-to-load-stress-testing-8068e5b6c3cc\",\"display_url\":\"levelup.gitconnected.com/grafana-k6-and…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686795679987798016/dpU9cGzo?format=jpg&name=orig\",\"width\":1200,\"height\":675},{\"url\":\"https://pbs.twimg.com/news_img/1686795679987798016/dpU9cGzo?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Grafana k6 and ASP.NET Core: A Practical Guide to Load & Stress Testing\",\"description\":\"Understanding Load and Stress Testing: An Introduction to Grafana k6 in ASP.NET Core\",\"unwound_url\":\"https://levelup.gitconnected.com/grafana-k6-and-asp-net-core-a-practical-guide-to-load-stress-testing-8068e5b6c3cc\"}]},\"author_id\":\"1663680685666607104\",\"edit_history_tweet_ids\":[\"1686795672412975108\"],\"created_at\":\"2023-08-02T17:46:42.000Z\",\"text\":\"https://t.co/CPAHnyohfa\\n\\n#dotnet #dotnetcore #aspnetcore\"},{\"id\":\"1686793883047391233\",\"entities\":{\"hashtags\":[{\"start\":97,\"end\":104,\"tag\":\"csharp\"},{\"start\":105,\"end\":112,\"tag\":\"Dotnet\"},{\"start\":113,\"end\":125,\"tag\":\"programming\"},{\"start\":126,\"end\":133,\"tag\":\"coding\"}],\"urls\":[{\"start\":72,\"end\":95,\"url\":\"https://t.co/CHhXLYUHbm\",\"expanded_url\":\"https://youtube.com/shorts/Xd5KdVCADZc\",\"display_url\":\"youtube.com/shorts/Xd5KdVC…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686793127493857281/SHKUlvHT?format=jpg&name=orig\",\"width\":480,\"height\":360},{\"url\":\"https://pbs.twimg.com/news_img/1686793127493857281/SHKUlvHT?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"What Is The Fastest C# Way To Deserialize A JSON? | C# JSON Deserialize\",\"description\":\"For C#, The release of JsonSerializer Deserialize is the fastest JSON Deserializer method based on my testing. It is almost twice as fast as the other method...\",\"unwound_url\":\"https://www.youtube.com/shorts/Xd5KdVCADZc\"}],\"annotations\":[{\"start\":55,\"end\":58,\"probability\":0.8012,\"type\":\"Other\",\"normalized_text\":\"JSON\"},{\"start\":98,\"end\":103,\"probability\":0.9472,\"type\":\"Other\",\"normalized_text\":\"csharp\"},{\"start\":106,\"end\":111,\"probability\":0.8001,\"type\":\"Other\",\"normalized_text\":\"Dotnet\"}]},\"author_id\":\"1275295613492629513\",\"edit_history_tweet_ids\":[\"1686793883047391233\"],\"created_at\":\"2023-08-02T17:39:35.000Z\",\"text\":\"What Is The Fastest C# Way To Deserialize A JSON? | C# JSON Deserialize\\nhttps://t.co/CHhXLYUHbm\\n\\n#csharp #Dotnet #programming #coding\"},{\"id\":\"1686792998372208659\",\"entities\":{\"hashtags\":[{\"start\":51,\"end\":58,\"tag\":\"dotnet\"},{\"start\":59,\"end\":70,\"tag\":\"dotnetmaui\"},{\"start\":71,\"end\":82,\"tag\":\"dotnetcore\"},{\"start\":83,\"end\":100,\"tag\":\"softwareengineer\"}],\"urls\":[{\"start\":102,\"end\":125,\"url\":\"https://t.co/pwVVOPU3RB\",\"expanded_url\":\"https://dotnetfoundation.org/news-events/detail/increasing-your-aspnet-core-app-security-with-owasp-headers\",\"display_url\":\"dotnetfoundation.org/news-events/de…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686577822125481984/3XZMbveq?format=jpg&name=orig\",\"width\":1280,\"height\":720},{\"url\":\"https://pbs.twimg.com/news_img/1686577822125481984/3XZMbveq?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Increasing Your ASP.NET Core App Security With OWASP Headers\",\"description\":\"ASP.NET Core developers can implement the OWASP-recommended secure headers in their web applications with the greatest of ease using OwaspHeaders.Core.\",\"unwound_url\":\"https://dotnetfoundation.org/news-events/detail/increasing-your-aspnet-core-app-security-with-owasp-headers\"}],\"annotations\":[{\"start\":36,\"end\":40,\"probability\":0.6575,\"type\":\"Other\",\"normalized_text\":\"OWASP\"},{\"start\":52,\"end\":57,\"probability\":0.6121,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":60,\"end\":69,\"probability\":0.7194,\"type\":\"Other\",\"normalized_text\":\"dotnetmaui\"},{\"start\":72,\"end\":81,\"probability\":0.6856,\"type\":\"Other\",\"normalized_text\":\"dotnetcore\"}]},\"author_id\":\"377897280\",\"edit_history_tweet_ids\":[\"1686792998372208659\"],\"created_at\":\"2023-08-02T17:36:04.000Z\",\"text\":\"Secure your dotnet application with OWASP headers\\n\\n#dotnet #dotnetmaui #dotnetcore\\n#softwareengineer\\n\\nhttps://t.co/pwVVOPU3RB\"},{\"id\":\"1686792778372575241\",\"entities\":{\"hashtags\":[{\"start\":10,\"end\":13,\"tag\":\"UI\"},{\"start\":38,\"end\":47,\"tag\":\"platform\"},{\"start\":52,\"end\":59,\"tag\":\"device\"},{\"start\":90,\"end\":101,\"tag\":\"developers\"},{\"start\":102,\"end\":108,\"tag\":\"UIWin\"},{\"start\":109,\"end\":113,\"tag\":\"iOS\"},{\"start\":114,\"end\":121,\"tag\":\"Mobile\"},{\"start\":122,\"end\":127,\"tag\":\"iPad\"},{\"start\":128,\"end\":136,\"tag\":\"Android\"},{\"start\":137,\"end\":144,\"tag\":\"dotNET\"},{\"start\":145,\"end\":150,\"tag\":\"MAUI\"},{\"start\":151,\"end\":156,\"tag\":\"XAML\"},{\"start\":157,\"end\":171,\"tag\":\"MultiPlatform\"}],\"urls\":[{\"start\":66,\"end\":89,\"url\":\"https://t.co/FdB6ky36IQ\",\"expanded_url\":\"https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/customize-ui-appearance\",\"display_url\":\"learn.microsoft.com/en-us/dotnet/m…\",\"status\":200,\"title\":\"Customize UI appearance based on the platform and device idiom - .NET MAUI\",\"description\":\"Learn how the OnPlatform and OnIdiom XAML markup extensions enable you to customize UI appearance on a per-platform and per-device basis.\",\"unwound_url\":\"https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/customize-ui-appearance\"}],\"annotations\":[{\"start\":11,\"end\":12,\"probability\":0.5728,\"type\":\"Other\",\"normalized_text\":\"UI\"},{\"start\":103,\"end\":107,\"probability\":0.6307,\"type\":\"Other\",\"normalized_text\":\"UIWin\"},{\"start\":110,\"end\":112,\"probability\":0.971,\"type\":\"Other\",\"normalized_text\":\"iOS\"},{\"start\":115,\"end\":120,\"probability\":0.7092,\"type\":\"Other\",\"normalized_text\":\"Mobile\"},{\"start\":123,\"end\":126,\"probability\":0.8901,\"type\":\"Product\",\"normalized_text\":\"iPad\"},{\"start\":129,\"end\":135,\"probability\":0.9522,\"type\":\"Other\",\"normalized_text\":\"Android\"},{\"start\":138,\"end\":143,\"probability\":0.618,\"type\":\"Other\",\"normalized_text\":\"dotNET\"},{\"start\":146,\"end\":149,\"probability\":0.6665,\"type\":\"Other\",\"normalized_text\":\"MAUI\"},{\"start\":152,\"end\":155,\"probability\":0.7133,\"type\":\"Other\",\"normalized_text\":\"XAML\"}]},\"author_id\":\"4870147648\",\"edit_history_tweet_ids\":[\"1686792778372575241\"],\"created_at\":\"2023-08-02T17:35:12.000Z\",\"text\":\"Customize #UI appearance based on the #platform and #device idiom\\nhttps://t.co/FdB6ky36IQ\\n#developers #UIWin #iOS #Mobile #iPad #Android #dotNET #MAUI #XAML #MultiPlatform\"},{\"id\":\"1686791342041554944\",\"entities\":{\"hashtags\":[{\"start\":176,\"end\":182,\"tag\":\"excel\"},{\"start\":183,\"end\":193,\"tag\":\"exceltips\"},{\"start\":194,\"end\":198,\"tag\":\"rtd\"},{\"start\":208,\"end\":216,\"tag\":\"msexcel\"},{\"start\":217,\"end\":224,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":151,\"end\":174,\"url\":\"https://t.co/P6N0PkbxvM\",\"expanded_url\":\"https://blog.lightstreamer.com/2023/08/real-time-data-made-easy-empowering.html\",\"display_url\":\"blog.lightstreamer.com/2023/08/real-t…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686791346248445964/PlVlrZYC?format=png&name=orig\",\"width\":375,\"height\":201},{\"url\":\"https://pbs.twimg.com/news_img/1686791346248445964/PlVlrZYC?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Real-Time Data Made Easy: Empowering Excel with Lightstreamer and RTD Integration\",\"description\":\"The official Lightstreamer blog. Lightstreamer is the leading server for bidirectional delivery of real-time data over the Web.\",\"unwound_url\":\"https://blog.lightstreamer.com/2023/08/real-time-data-made-easy-empowering.html\"},{\"start\":279,\"end\":302,\"url\":\"https://t.co/ODmNqNV755\",\"expanded_url\":\"https://twitter.com/Lightstreamer/status/1686791342041554944/photo/1\",\"display_url\":\"pic.twitter.com/ODmNqNV755\",\"media_key\":\"3_1686788968510091269\"}],\"mentions\":[{\"start\":199,\"end\":207,\"username\":\"msexcel\",\"id\":\"15934026\"},{\"start\":225,\"end\":233,\"username\":\"ExcelTV\",\"id\":\"2372401778\"},{\"start\":234,\"end\":246,\"username\":\"contextures\",\"id\":\"17263729\"},{\"start\":247,\"end\":255,\"username\":\"MrExcel\",\"id\":\"856691\"},{\"start\":256,\"end\":265,\"username\":\"exceljet\",\"id\":\"1016200681\"},{\"start\":266,\"end\":278,\"username\":\"ExcelChamps\",\"id\":\"2266171224\"}],\"annotations\":[{\"start\":38,\"end\":42,\"probability\":0.9264,\"type\":\"Other\",\"normalized_text\":\"Excel\"},{\"start\":86,\"end\":98,\"probability\":0.8919,\"type\":\"Other\",\"normalized_text\":\"Lightstreamer\"},{\"start\":104,\"end\":106,\"probability\":0.8001,\"type\":\"Other\",\"normalized_text\":\"RTD\"},{\"start\":209,\"end\":215,\"probability\":0.5746,\"type\":\"Other\",\"normalized_text\":\"msexcel\"},{\"start\":218,\"end\":223,\"probability\":0.5477,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1686788968510091269\"]},\"author_id\":\"52505824\",\"edit_history_tweet_ids\":[\"1686791342041554944\"],\"created_at\":\"2023-08-02T17:29:29.000Z\",\"text\":\"Learn how to stream real-time data to Excel spreadsheets with the integration between Lightstreamer and RTD. Check out a live demo and read more here: https://t.co/P6N0PkbxvM\\n\\n#excel #exceltips #rtd @msexcel #msexcel #dotnet @ExcelTV @contextures @MrExcel @exceljet @ExcelChamps https://t.co/ODmNqNV755\"},{\"id\":\"1686789918058815488\",\"entities\":{\"hashtags\":[{\"start\":14,\"end\":23,\"tag\":\"Negocios\"},{\"start\":24,\"end\":33,\"tag\":\"Noticias\"},{\"start\":34,\"end\":40,\"tag\":\"Linux\"},{\"start\":41,\"end\":47,\"tag\":\"Memes\"},{\"start\":48,\"end\":53,\"tag\":\"Web3\"},{\"start\":54,\"end\":61,\"tag\":\"Crypto\"},{\"start\":62,\"end\":66,\"tag\":\"NFT\"},{\"start\":67,\"end\":75,\"tag\":\"Hacking\"},{\"start\":76,\"end\":93,\"tag\":\"BusinessProposal\"},{\"start\":94,\"end\":105,\"tag\":\"technology\"},{\"start\":106,\"end\":113,\"tag\":\"NodeJS\"},{\"start\":114,\"end\":119,\"tag\":\"tech\"},{\"start\":120,\"end\":132,\"tag\":\"programming\"},{\"start\":133,\"end\":141,\"tag\":\"BigData\"},{\"start\":142,\"end\":149,\"tag\":\"csharp\"},{\"start\":150,\"end\":153,\"tag\":\"AI\"},{\"start\":154,\"end\":165,\"tag\":\"javascript\"},{\"start\":166,\"end\":171,\"tag\":\"NFTs\"},{\"start\":172,\"end\":178,\"tag\":\"Robot\"},{\"start\":179,\"end\":189,\"tag\":\"Marketing\"},{\"start\":190,\"end\":198,\"tag\":\"Science\"},{\"start\":199,\"end\":203,\"tag\":\"CSS\"},{\"start\":204,\"end\":211,\"tag\":\"Dotnet\"},{\"start\":212,\"end\":217,\"tag\":\"Java\"},{\"start\":218,\"end\":224,\"tag\":\"setup\"},{\"start\":225,\"end\":229,\"tag\":\"IoT\"},{\"start\":230,\"end\":236,\"tag\":\"photo\"},{\"start\":237,\"end\":246,\"tag\":\"Colombia\"}],\"urls\":[{\"start\":247,\"end\":270,\"url\":\"https://t.co/B3EURnnMHQ\",\"expanded_url\":\"https://medium.com/dfinity/swiss-federal-department-of-foreign-affairs-and-state-secretary-for-research-education-and-262d5f7a56bf\",\"display_url\":\"medium.com/dfinity/swiss-…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1684979876044910603/MNEsDubT?format=jpg&name=orig\",\"width\":1200,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1684979876044910603/MNEsDubT?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Swiss Federal Department of Foreign Affairs and State Secretary for Research, Education and…\",\"description\":\"Swiss diplomats from FDFA and SERI spent a day at DFINITY headquarters exchanging insights with expert cryptographers and engineers on…\",\"unwound_url\":\"https://medium.com/dfinity/swiss-federal-department-of-foreign-affairs-and-state-secretary-for-research-education-and-262d5f7a56bf\"}],\"mentions\":[{\"start\":0,\"end\":13,\"username\":\"UnnusSystems\",\"id\":\"101107945\"}]},\"author_id\":\"1684898821904728064\",\"edit_history_tweet_ids\":[\"1686789918058815488\"],\"created_at\":\"2023-08-02T17:23:50.000Z\",\"text\":\"@UnnusSystems #Negocios #Noticias #Linux #Memes #Web3 #Crypto #NFT #Hacking #BusinessProposal #technology #NodeJS #tech #programming #BigData #csharp #AI #javascript #NFTs #Robot #Marketing #Science #CSS #Dotnet #Java #setup #IoT #photo #Colombia\\nhttps://t.co/B3EURnnMHQ\"},{\"id\":\"1686785381360975897\",\"entities\":{\"hashtags\":[{\"start\":28,\"end\":42,\"tag\":\"Elasticsearch\"},{\"start\":49,\"end\":57,\"tag\":\"Serilog\"},{\"start\":70,\"end\":77,\"tag\":\"Kibana\"},{\"start\":251,\"end\":258,\"tag\":\"DotNet\"},{\"start\":259,\"end\":267,\"tag\":\"Logging\"},{\"start\":268,\"end\":277,\"tag\":\"restfull\"}],\"urls\":[{\"start\":226,\"end\":249,\"url\":\"https://t.co/L0HYGrDM7a\",\"expanded_url\":\"https://elguerre.com/2023/08/02/logging-into-elasticsearch-using-serilog-and-logs-in-kibana/\",\"display_url\":\"elguerre.com/2023/08/02/log…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686785383185498119/lRWIpFRn?format=png&name=orig\",\"width\":639,\"height\":157},{\"url\":\"https://pbs.twimg.com/news_img/1686785383185498119/lRWIpFRn?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Logging into Elasticsearch using Serilog and logs in Kibana\",\"description\":\"I have been wanting to talk about this and other similar topics for a long time. Finally, today is de day, mainly because «someone reminded me that I’ve to do it !» So, let’s start: 1. …\",\"unwound_url\":\"http://elguerre.com/2023/08/02/logging-into-elasticsearch-using-serilog-and-logs-in-kibana/\"}],\"annotations\":[{\"start\":71,\"end\":76,\"probability\":0.5809,\"type\":\"Other\",\"normalized_text\":\"Kibana\"},{\"start\":127,\"end\":143,\"probability\":0.7352,\"type\":\"Other\",\"normalized_text\":\"Kibana Dashboards\"},{\"start\":252,\"end\":257,\"probability\":0.4613,\"type\":\"Other\",\"normalized_text\":\"DotNet\"}]},\"author_id\":\"119498300\",\"edit_history_tweet_ids\":[\"1686785381360975897\"],\"created_at\":\"2023-08-02T17:05:48.000Z\",\"text\":\"[My blog post] Logging into #Elasticsearch using #Serilog and logs in #Kibana. Create Index, Index Pattern and play a bit with Kibana Dashboards. Now your logs are more visible. What are you waiting for to use in your Apps ? \\nhttps://t.co/L0HYGrDM7a \\n#DotNet #Logging #restfull\"},{\"id\":\"1686785192382414877\",\"entities\":{\"hashtags\":[{\"start\":139,\"end\":147,\"tag\":\"xamarin\"},{\"start\":148,\"end\":166,\"tag\":\"xamarinentwickler\"},{\"start\":167,\"end\":174,\"tag\":\"dotnet\"},{\"start\":175,\"end\":192,\"tag\":\"dotnetentwickler\"},{\"start\":193,\"end\":203,\"tag\":\"mobileapp\"},{\"start\":204,\"end\":215,\"tag\":\"mobileapps\"},{\"start\":216,\"end\":227,\"tag\":\"dotnetmaui\"},{\"start\":228,\"end\":243,\"tag\":\"appentwicklung\"},{\"start\":244,\"end\":258,\"tag\":\"appentwickler\"},{\"start\":259,\"end\":267,\"tag\":\"android\"},{\"start\":268,\"end\":272,\"tag\":\"ios\"}],\"urls\":[{\"start\":115,\"end\":138,\"url\":\"https://t.co/yLyI9A9Ndb\",\"expanded_url\":\"https://buff.ly/3DCMCLs\",\"display_url\":\"buff.ly/3DCMCLs\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686785205292482571/2aVVslH-?format=jpg&name=orig\",\"width\":2560,\"height\":750},{\"url\":\"https://pbs.twimg.com/news_img/1686785205292482571/2aVVslH-?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Ist Ihre App auf Xamarin aufgebaut? - Dann sollten Sie jetzt handeln!\",\"description\":\"Ihr kompetenter Partner für die Themen Mobile App Entwicklung, Agiles Arbeiten und IoT in Mönchengladbach\",\"unwound_url\":\"https://www.bnotech.com/de/blog-mobile/72-ist-ihre-app-auf-xamarin-aufgebaut-dann-sollten-sie-jetzt-handeln.html\"},{\"start\":273,\"end\":296,\"url\":\"https://t.co/oZGI8RJYUa\",\"expanded_url\":\"https://twitter.com/BnoTech/status/1686785192382414877/photo/1\",\"display_url\":\"pic.twitter.com/oZGI8RJYUa\",\"media_key\":\"3_1686785185377927174\"}]},\"attachments\":{\"media_keys\":[\"3_1686785185377927174\"]},\"author_id\":\"790199073978589184\",\"edit_history_tweet_ids\":[\"1686785192382414877\"],\"created_at\":\"2023-08-02T17:05:03.000Z\",\"text\":\"Neu auf unserem Blog: Ist Ihre App auf Xamarin aufgebaut? - Dann sollten Sie jetzt handeln! - Weiter lesen unter: https://t.co/yLyI9A9Ndb\\n#xamarin #xamarinentwickler #dotnet #dotnetentwickler #mobileapp #mobileapps #dotnetmaui #appentwicklung #appentwickler #android #ios https://t.co/oZGI8RJYUa\"},{\"id\":\"1686784187066671104\",\"entities\":{\"hashtags\":[{\"start\":24,\"end\":31,\"tag\":\"dotnet\"},{\"start\":32,\"end\":39,\"tag\":\"csharp\"},{\"start\":40,\"end\":46,\"tag\":\"nuget\"}],\"urls\":[{\"start\":0,\"end\":23,\"url\":\"https://t.co/HT4Ar2GOVx\",\"expanded_url\":\"https://github.com/Tynab/YANLib\",\"display_url\":\"github.com/Tynab/YANLib\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686784191827267584/MR4nCTgO?format=jpg&name=orig\",\"width\":930,\"height\":721},{\"url\":\"https://pbs.twimg.com/news_img/1686784191827267584/MR4nCTgO?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"GitHub - Tynab/YANLib: Yami An Nephilim Library\",\"description\":\"Yami An Nephilim Library. Contribute to Tynab/YANLib development by creating an account on GitHub.\",\"unwound_url\":\"https://github.com/Tynab/YANLib\"}]},\"author_id\":\"785042912778199040\",\"edit_history_tweet_ids\":[\"1686784187066671104\"],\"created_at\":\"2023-08-02T17:01:03.000Z\",\"text\":\"https://t.co/HT4Ar2GOVx\\n#dotnet #csharp #nuget\"},{\"id\":\"1686779255030743040\",\"entities\":{\"hashtags\":[{\"start\":120,\"end\":124,\"tag\":\"SQL\"},{\"start\":125,\"end\":141,\"tag\":\"100DaysOfCoding\"},{\"start\":142,\"end\":149,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":150,\"end\":173,\"url\":\"https://t.co/xxVUKYwSCl\",\"expanded_url\":\"https://www.w3schools.com/sql/sql_groupby.asp\",\"display_url\":\"w3schools.com/sql/sql_groupb…\",\"status\":200,\"title\":\"SQL GROUP BY Statement\",\"description\":\"W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.\",\"unwound_url\":\"https://www.w3schools.com/sql/sql_groupby.asp\"}]},\"author_id\":\"597884111\",\"edit_history_tweet_ids\":[\"1686779255030743040\"],\"created_at\":\"2023-08-02T16:41:27.000Z\",\"text\":\"group by returns the rows with the same values.\\ngroup by with two column names returns rows where the values are equal.\\n#SQL #100DaysOfCoding #dotnet\\nhttps://t.co/xxVUKYwSCl\"},{\"id\":\"1686778510793150465\",\"entities\":{\"hashtags\":[{\"start\":17,\"end\":27,\"tag\":\"Microsoft\"},{\"start\":29,\"end\":36,\"tag\":\"dotnet\"},{\"start\":66,\"end\":73,\"tag\":\"vscode\"}],\"annotations\":[{\"start\":18,\"end\":26,\"probability\":0.9531,\"type\":\"Organization\",\"normalized_text\":\"Microsoft\"},{\"start\":30,\"end\":35,\"probability\":0.4471,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":67,\"end\":72,\"probability\":0.524,\"type\":\"Other\",\"normalized_text\":\"vscode\"}]},\"author_id\":\"13499342\",\"edit_history_tweet_ids\":[\"1686778510793150465\"],\"created_at\":\"2023-08-02T16:38:30.000Z\",\"text\":\"It was nice that #Microsoft #dotnet isn't trying to pretend like #vscode doesn't exist anymore, but I could do without the incessant nagging to open a project or solution. No, I don't want to open a project while I'm typing in the search box.\"},{\"id\":\"1686776800557580288\",\"entities\":{\"hashtags\":[{\"start\":56,\"end\":63,\"tag\":\"fsharp\"},{\"start\":64,\"end\":71,\"tag\":\"csharp\"},{\"start\":72,\"end\":79,\"tag\":\"dotnet\"},{\"start\":80,\"end\":88,\"tag\":\"dataviz\"}],\"urls\":[{\"start\":89,\"end\":112,\"url\":\"https://t.co/gQVdr8DGdZ\",\"expanded_url\":\"https://twitter.com/kMutagene/status/1684160181989433348\",\"display_url\":\"twitter.com/kMutagene/stat…\"}]},\"author_id\":\"1252132899920502785\",\"edit_history_tweet_ids\":[\"1686776800557580288\"],\"created_at\":\"2023-08-02T16:31:42.000Z\",\"text\":\"This is released now! Give it a try dear LINQPad users!\\n#fsharp #csharp #dotnet #dataviz https://t.co/gQVdr8DGdZ\"},{\"id\":\"1686775458745155584\",\"entities\":{\"hashtags\":[{\"start\":209,\"end\":218,\"tag\":\"LiveShow\"},{\"start\":219,\"end\":235,\"tag\":\"RockinCodeWorld\"},{\"start\":236,\"end\":249,\"tag\":\"dotnetforall\"},{\"start\":250,\"end\":257,\"tag\":\"DOTNET\"},{\"start\":258,\"end\":271,\"tag\":\"mentalhealth\"},{\"start\":272,\"end\":280,\"tag\":\"DOTNET8\"}],\"urls\":[{\"start\":184,\"end\":207,\"url\":\"https://t.co/NX65QdgjEj\",\"expanded_url\":\"http://csharp.tv\",\"display_url\":\"csharp.tv\",\"unwound_url\":\"http://csharp.tv\"},{\"start\":281,\"end\":304,\"url\":\"https://t.co/zSGK9rwy7X\",\"expanded_url\":\"https://twitter.com/CSharpDotTV/status/1686775458745155584/photo/1\",\"display_url\":\"pic.twitter.com/zSGK9rwy7X\",\"media_key\":\"3_1686775455133712391\"}],\"mentions\":[{\"start\":5,\"end\":20,\"username\":\"realDotNetDave\",\"id\":\"1658046319\"},{\"start\":26,\"end\":38,\"username\":\"ArthurDoler\",\"id\":\"2762855397\"}],\"annotations\":[{\"start\":93,\"end\":99,\"probability\":0.6711,\"type\":\"Other\",\"normalized_text\":\"Rockin'\"},{\"start\":101,\"end\":114,\"probability\":0.8881,\"type\":\"Other\",\"normalized_text\":\"The Code World\"},{\"start\":237,\"end\":248,\"probability\":0.5409,\"type\":\"Other\",\"normalized_text\":\"dotnetforall\"},{\"start\":251,\"end\":256,\"probability\":0.723,\"type\":\"Other\",\"normalized_text\":\"DOTNET\"},{\"start\":273,\"end\":279,\"probability\":0.7808,\"type\":\"Other\",\"normalized_text\":\"DOTNET8\"}]},\"attachments\":{\"media_keys\":[\"3_1686775455133712391\"]},\"author_id\":\"1327296775409999872\",\"edit_history_tweet_ids\":[\"1686775458745155584\"],\"created_at\":\"2023-08-02T16:26:22.000Z\",\"text\":\"Join @realDotNetDave with @ArthurDoler on August 5 at 10:00 AM (PST) for the next episode of Rockin' The Code World - a weekly live show focused on .NET technology.\\n\\nLive streaming at https://t.co/NX65QdgjEj\\n\\n#LiveShow #RockinCodeWorld #dotnetforall #DOTNET #mentalhealth #DOTNET8 https://t.co/zSGK9rwy7X\"},{\"id\":\"1686768833606922240\",\"entities\":{\"hashtags\":[{\"start\":179,\"end\":186,\"tag\":\"dotNet\"},{\"start\":187,\"end\":198,\"tag\":\"OpenSource\"},{\"start\":199,\"end\":206,\"tag\":\"GitHub\"},{\"start\":207,\"end\":215,\"tag\":\"dotNet6\"},{\"start\":216,\"end\":224,\"tag\":\"dotNet7\"},{\"start\":225,\"end\":234,\"tag\":\"Spargine\"}],\"urls\":[{\"start\":155,\"end\":178,\"url\":\"https://t.co/fRMvKDqEon\",\"expanded_url\":\"https://dotnettips.wordpress.com/2023/08/01/coding-faster-with-dotnettips-com-spargine-6-aug-2023-release/\",\"display_url\":\"dotnettips.wordpress.com/2023/08/01/cod…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686416943904083969/zb2_40Kl?format=png&name=orig\",\"width\":640,\"height\":256},{\"url\":\"https://pbs.twimg.com/news_img/1686416943904083969/zb2_40Kl?format=png&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"Coding Faster with dotNetTips.com Spargine 6: Aug 2023 Release\",\"description\":\"Spargine 6 (v2023.6.8.1) is now available, an open-source project offering NuGet packages for .NET 6 & 7 with new classes, methods, and significant speed improvements. The release introduces a …\",\"unwound_url\":\"https://dotnettips.wordpress.com/2023/08/01/coding-faster-with-dotnettips-com-spargine-6-aug-2023-release/\"},{\"start\":235,\"end\":258,\"url\":\"https://t.co/zvlUfrr4IK\",\"expanded_url\":\"https://twitter.com/realDotNetDave/status/1686768833606922240/photo/1\",\"display_url\":\"pic.twitter.com/zvlUfrr4IK\",\"media_key\":\"3_1685685578875215872\"}],\"annotations\":[{\"start\":17,\"end\":24,\"probability\":0.676,\"type\":\"Other\",\"normalized_text\":\"Spargine\"},{\"start\":180,\"end\":185,\"probability\":0.6405,\"type\":\"Other\",\"normalized_text\":\"dotNet\"},{\"start\":200,\"end\":205,\"probability\":0.7339,\"type\":\"Other\",\"normalized_text\":\"GitHub\"},{\"start\":208,\"end\":214,\"probability\":0.7076,\"type\":\"Other\",\"normalized_text\":\"dotNet6\"},{\"start\":217,\"end\":223,\"probability\":0.6783,\"type\":\"Other\",\"normalized_text\":\"dotNet7\"},{\"start\":226,\"end\":233,\"probability\":0.685,\"type\":\"Other\",\"normalized_text\":\"Spargine\"}]},\"attachments\":{\"media_keys\":[\"3_1685685578875215872\"]},\"author_id\":\"1658046319\",\"edit_history_tweet_ids\":[\"1686768833606922240\"],\"created_at\":\"2023-08-02T16:00:03.000Z\",\"text\":\"Exciting news! \\uD83D\\uDE80 Spargine v2023.6.8.1 is out! Open-source project for .NET 6 & 7 with new classes, methods, and faster performance! Check it out here: https://t.co/fRMvKDqEon #dotNet #OpenSource #GitHub #dotNet6 #dotNet7 #Spargine https://t.co/zvlUfrr4IK\"},{\"id\":\"1686768824488427520\",\"entities\":{\"hashtags\":[{\"start\":233,\"end\":240,\"tag\":\"dotnet\"},{\"start\":241,\"end\":245,\"tag\":\"AWS\"}],\"urls\":[{\"start\":247,\"end\":270,\"url\":\"https://t.co/tR3ITFSRoC\",\"expanded_url\":\"https://go.aws/47gNfIq\",\"display_url\":\"go.aws/47gNfIq\",\"status\":200,\"title\":\".NET Enterprise Developer Day 2023 - Hosted by Amazon Web Services\",\"description\":\"A free, one-day conference provided by AWS for .NET developers with the most relevant information to efficiently build or modernize .NET app\",\"unwound_url\":\"https://www.eventbrite.com/e/net-enterprise-developer-day-2023-hosted-by-amazon-web-services-registration-662432682987?linkId=222113688&sc_channel=sm&sc_campaign=Developer_Campaigns&sc_publisher=TWITTER&sc_geo=GLOBAL&sc_outcome=awareness&trk=Developer_Campaigns&linkId=227859713\"},{\"start\":271,\"end\":294,\"url\":\"https://t.co/QpKYCLoOBM\",\"expanded_url\":\"https://twitter.com/dotnetonAWS/status/1686768824488427520/photo/1\",\"display_url\":\"pic.twitter.com/QpKYCLoOBM\",\"media_key\":\"3_1686768821720305664\"}],\"annotations\":[{\"start\":4,\"end\":17,\"probability\":0.4201,\"type\":\"Other\",\"normalized_text\":\"NET Enterprise\"},{\"start\":34,\"end\":45,\"probability\":0.6776,\"type\":\"Other\",\"normalized_text\":\"Eyal Gutkind\"},{\"start\":51,\"end\":68,\"probability\":0.6312,\"type\":\"Other\",\"normalized_text\":\"Sivasekar Elumalai\"},{\"start\":126,\"end\":128,\"probability\":0.355,\"type\":\"Other\",\"normalized_text\":\"AWS\"},{\"start\":211,\"end\":223,\"probability\":0.6512,\"type\":\"Other\",\"normalized_text\":\"DeveloperWeek\"},{\"start\":225,\"end\":230,\"probability\":0.3337,\"type\":\"Other\",\"normalized_text\":\"CloudX\"},{\"start\":234,\"end\":239,\"probability\":0.3366,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1686768821720305664\"]},\"author_id\":\"2161585526\",\"edit_history_tweet_ids\":[\"1686768824488427520\"],\"created_at\":\"2023-08-02T16:00:01.000Z\",\"text\":\"At .NET Enterprise Developer Day, Eyal Gutkind and Sivasekar Elumalai present, \\nExpedite your .NET Modernization Journey with AWS.\\n\\nRegister now for this free virtual event on August 22nd, and also get entry to DeveloperWeek CloudX.\\n#dotnet #AWS\\n\\nhttps://t.co/tR3ITFSRoC https://t.co/QpKYCLoOBM\"},{\"id\":\"1686765805914984448\",\"entities\":{\"hashtags\":[{\"start\":167,\"end\":171,\"tag\":\"abp\"},{\"start\":172,\"end\":185,\"tag\":\"abpframework\"},{\"start\":186,\"end\":193,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":142,\"end\":165,\"url\":\"https://t.co/FoopvKrArR\",\"expanded_url\":\"https://github.com/enisn/AbpDevTools\",\"display_url\":\"github.com/enisn/AbpDevTo…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686765851163181056/yts41b0a?format=jpg&name=orig\",\"width\":1200,\"height\":600},{\"url\":\"https://pbs.twimg.com/news_img/1686765851163181056/yts41b0a?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"GitHub - enisn/AbpDevTools: Some tools that required running solutions in abp development\",\"description\":\"Some tools that required running solutions in abp development - GitHub - enisn/AbpDevTools: Some tools that required running solutions in abp development\",\"unwound_url\":\"https://github.com/enisn/AbpDevTools\"}],\"annotations\":[{\"start\":15,\"end\":25,\"probability\":0.947,\"type\":\"Other\",\"normalized_text\":\"AbpDevTools\"},{\"start\":27,\"end\":29,\"probability\":0.3415,\"type\":\"Other\",\"normalized_text\":\"CLI\"},{\"start\":83,\"end\":85,\"probability\":0.4987,\"type\":\"Other\",\"normalized_text\":\"ABP\"},{\"start\":168,\"end\":170,\"probability\":0.3947,\"type\":\"Other\",\"normalized_text\":\"abp\"},{\"start\":173,\"end\":184,\"probability\":0.7134,\"type\":\"Other\",\"normalized_text\":\"abpframework\"},{\"start\":187,\"end\":192,\"probability\":0.5609,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"author_id\":\"940902021963673601\",\"edit_history_tweet_ids\":[\"1686765805914984448\"],\"created_at\":\"2023-08-02T15:48:01.000Z\",\"text\":\"I've just made AbpDevTools CLI app that I use for my own purposes while working on ABP projects. It might help your development, take a look:\\nhttps://t.co/FoopvKrArR\\n\\n#abp #abpframework #dotnet\"},{\"id\":\"1686760684929835012\",\"entities\":{\"hashtags\":[{\"start\":98,\"end\":109,\"tag\":\"typescript\"},{\"start\":110,\"end\":117,\"tag\":\"dotnet\"},{\"start\":118,\"end\":126,\"tag\":\"reactjs\"},{\"start\":127,\"end\":135,\"tag\":\"devlife\"}],\"annotations\":[{\"start\":2,\"end\":5,\"probability\":0.712,\"type\":\"Other\",\"normalized_text\":\"CORS\"},{\"start\":99,\"end\":108,\"probability\":0.6211,\"type\":\"Other\",\"normalized_text\":\"typescript\"},{\"start\":111,\"end\":116,\"probability\":0.5331,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":119,\"end\":125,\"probability\":0.5072,\"type\":\"Other\",\"normalized_text\":\"reactjs\"}]},\"author_id\":\"3109575334\",\"edit_history_tweet_ids\":[\"1686760684929835012\"],\"created_at\":\"2023-08-02T15:27:40.000Z\",\"text\":\"A CORS configuration bug humbled me today \\uD83D\\uDE02\\uD83D\\uDC80\\n\\nWueh. \\nThe solution made me feel worse - we move. \\n\\n#typescript #dotnet #reactjs #devlife\"},{\"id\":\"1686756678018940931\",\"entities\":{\"hashtags\":[{\"start\":15,\"end\":22,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":65,\"end\":88,\"url\":\"https://t.co/H14vqWaAhq\",\"expanded_url\":\"https://twitter.com/Meligy/status/1686756678018940931/photo/1\",\"display_url\":\"pic.twitter.com/H14vqWaAhq\",\"media_key\":\"3_1686756497663901698\"}],\"annotations\":[{\"start\":16,\"end\":21,\"probability\":0.5688,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1686756497663901698\"]},\"author_id\":\"10284132\",\"edit_history_tweet_ids\":[\"1686756678018940931\"],\"created_at\":\"2023-08-02T15:11:45.000Z\",\"text\":\"Playing with a #dotnet solution at home,\\navoiding repeated code! https://t.co/H14vqWaAhq\"},{\"id\":\"1686753739326001152\",\"entities\":{\"hashtags\":[{\"start\":47,\"end\":58,\"tag\":\"javascript\"},{\"start\":59,\"end\":69,\"tag\":\"WordPress\"},{\"start\":70,\"end\":74,\"tag\":\"PHP\"},{\"start\":75,\"end\":82,\"tag\":\"CSharp\"},{\"start\":83,\"end\":90,\"tag\":\"DotNet\"},{\"start\":91,\"end\":97,\"tag\":\"women\"},{\"start\":98,\"end\":111,\"tag\":\"WomenWhoCode\"},{\"start\":112,\"end\":124,\"tag\":\"womenintech\"},{\"start\":125,\"end\":137,\"tag\":\"WomenInSTEM\"},{\"start\":138,\"end\":141,\"tag\":\"AI\"},{\"start\":142,\"end\":158,\"tag\":\"MachineLearning\"},{\"start\":159,\"end\":173,\"tag\":\"100DaysOfCode\"},{\"start\":174,\"end\":179,\"tag\":\"tech\"},{\"start\":180,\"end\":187,\"tag\":\"Coding\"}],\"annotations\":[{\"start\":48,\"end\":57,\"probability\":0.7732,\"type\":\"Other\",\"normalized_text\":\"javascript\"},{\"start\":60,\"end\":68,\"probability\":0.8896,\"type\":\"Other\",\"normalized_text\":\"WordPress\"},{\"start\":71,\"end\":73,\"probability\":0.8113,\"type\":\"Other\",\"normalized_text\":\"PHP\"},{\"start\":76,\"end\":81,\"probability\":0.7147,\"type\":\"Other\",\"normalized_text\":\"CSharp\"},{\"start\":84,\"end\":89,\"probability\":0.555,\"type\":\"Other\",\"normalized_text\":\"DotNet\"},{\"start\":139,\"end\":140,\"probability\":0.6334,\"type\":\"Organization\",\"normalized_text\":\"AI\"}]},\"author_id\":\"84602512\",\"edit_history_tweet_ids\":[\"1686753739326001152\"],\"created_at\":\"2023-08-02T15:00:04.000Z\",\"text\":\"Don't be so open-minded your brains fall out.\\n\\n#javascript #WordPress #PHP #CSharp #DotNet #women #WomenWhoCode #womenintech #WomenInSTEM #AI #MachineLearning #100DaysOfCode #tech #Coding\"},{\"id\":\"1686753730979397632\",\"entities\":{\"hashtags\":[{\"start\":86,\"end\":97,\"tag\":\"dotnetconf\"},{\"start\":98,\"end\":105,\"tag\":\"dotnet\"},{\"start\":106,\"end\":119,\"tag\":\"visualstudio\"},{\"start\":120,\"end\":130,\"tag\":\"techevent\"},{\"start\":131,\"end\":144,\"tag\":\"devcommunity\"},{\"start\":145,\"end\":152,\"tag\":\"csharp\"}],\"urls\":[{\"start\":154,\"end\":177,\"url\":\"https://t.co/lguIbnx8V9\",\"expanded_url\":\"https://devblogs.microsoft.com/dotnet/dotnet-conf-2023-celebrating-the-release-of-dotnet-8-save-the-date/\",\"display_url\":\"devblogs.microsoft.com/dotnet/dotnet-…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686422302940975111/y6wzFJFu?format=jpg&name=orig\",\"width\":1570,\"height\":901},{\"url\":\"https://pbs.twimg.com/news_img/1686422302940975111/y6wzFJFu?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\".NET Conf 2023 - Celebrating the Release of .NET 8! - Save the Date! - .NET Blog\",\"description\":\"Announcing .NET Conf 2023 - a free, three-day virtual developer event that celebrates the release of .NET 8.\",\"unwound_url\":\"https://devblogs.microsoft.com/dotnet/dotnet-conf-2023-celebrating-the-release-of-dotnet-8-save-the-date/\"}],\"mentions\":[{\"start\":72,\"end\":83,\"username\":\"mehulharry\",\"id\":\"5760732\"}],\"annotations\":[{\"start\":45,\"end\":47,\"probability\":0.4555,\"type\":\"Other\",\"normalized_text\":\"NET\"},{\"start\":63,\"end\":66,\"probability\":0.5182,\"type\":\"Other\",\"normalized_text\":\"Date\"},{\"start\":87,\"end\":96,\"probability\":0.5439,\"type\":\"Other\",\"normalized_text\":\"dotnetconf\"},{\"start\":99,\"end\":104,\"probability\":0.4886,\"type\":\"Other\",\"normalized_text\":\"dotnet\"},{\"start\":146,\"end\":151,\"probability\":0.9401,\"type\":\"Other\",\"normalized_text\":\"csharp\"}]},\"author_id\":\"6832532\",\"edit_history_tweet_ids\":[\"1686753730979397632\"],\"created_at\":\"2023-08-02T15:00:02.000Z\",\"text\":\".NET Conf 2023 – Celebrating the Release of .NET 8! – Save the Date! by @mehulharry.\\n\\n#dotnetconf #dotnet #visualstudio #techevent #devcommunity #csharp \\nhttps://t.co/lguIbnx8V9\"},{\"id\":\"1686750956749250561\",\"entities\":{\"hashtags\":[{\"start\":180,\"end\":187,\"tag\":\"dotnet\"}],\"urls\":[{\"start\":156,\"end\":179,\"url\":\"https://t.co/SbKYl9qfpv\",\"expanded_url\":\"https://www.jetbrains.com/profiler/whatsnew/?utm_campaign=dottrace&utm_content=dottrace_2023_2_release&utm_medium=referral&utm_source=twitter\",\"display_url\":\"jetbrains.com/profiler/whats…\",\"images\":[{\"url\":\"https://pbs.twimg.com/news_img/1686750978236698624/zd-0Ld9M?format=jpg&name=orig\",\"width\":1280,\"height\":800},{\"url\":\"https://pbs.twimg.com/news_img/1686750978236698624/zd-0Ld9M?format=jpg&name=150x150\",\"width\":150,\"height\":150}],\"status\":200,\"title\":\"What's New in dotTrace\",\"description\":\"Recent release highlights include support for .NET Core and native memory profiling\",\"unwound_url\":\"https://www.jetbrains.com/profiler/whatsnew/?utm_campaign=dottrace&utm_content=dottrace_2023_2_release&utm_medium=referral&utm_source=twitter\"},{\"start\":188,\"end\":211,\"url\":\"https://t.co/F3VAlsVCvp\",\"expanded_url\":\"https://twitter.com/dottrace/status/1686750956749250561/photo/1\",\"display_url\":\"pic.twitter.com/F3VAlsVCvp\",\"media_key\":\"3_1686750854588559361\"}],\"annotations\":[{\"start\":0,\"end\":7,\"probability\":0.8522,\"type\":\"Other\",\"normalized_text\":\"dotTrace\"},{\"start\":127,\"end\":131,\"probability\":0.9612,\"type\":\"Other\",\"normalized_text\":\"Linux\"},{\"start\":137,\"end\":141,\"probability\":0.8094,\"type\":\"Other\",\"normalized_text\":\"macOS\"},{\"start\":181,\"end\":186,\"probability\":0.6893,\"type\":\"Other\",\"normalized_text\":\"dotnet\"}]},\"attachments\":{\"media_keys\":[\"3_1686750854588559361\"]},\"author_id\":\"24508508\",\"edit_history_tweet_ids\":[\"1686750956749250561\"],\"created_at\":\"2023-08-02T14:49:01.000Z\",\"text\":\"dotTrace 2023.2 is here!\\n\\n\\uD83D\\uDD25 Grouping by threads for sampling, tracing, and line-by-line snapshots\\n\\uD83D\\uDD25 Source View tool window on Linux and macOS\\n\\nLearn more: https://t.co/SbKYl9qfpv #dotnet https://t.co/F3VAlsVCvp\"},{\"id\":\"1686749946471694336\",\"entities\":{\"hashtags\":[{\"start\":66,\"end\":77,\"tag\":\"javascript\"},{\"start\":78,\"end\":88,\"tag\":\"WordPress\"},{\"start\":89,\"end\":93,\"tag\":\"PHP\"},{\"start\":94,\"end\":101,\"tag\":\"CSharp\"},{\"start\":102,\"end\":109,\"tag\":\"DotNet\"},{\"start\":110,\"end\":116,\"tag\":\"women\"},{\"start\":117,\"end\":130,\"tag\":\"WomenWhoCode\"},{\"start\":131,\"end\":143,\"tag\":\"womenintech\"},{\"start\":144,\"end\":156,\"tag\":\"WomenInSTEM\"},{\"start\":157,\"end\":160,\"tag\":\"AI\"},{\"start\":161,\"end\":177,\"tag\":\"MachineLearning\"},{\"start\":178,\"end\":192,\"tag\":\"100DaysOfCode\"},{\"start\":193,\"end\":198,\"tag\":\"tech\"},{\"start\":199,\"end\":206,\"tag\":\"Coding\"}],\"annotations\":[{\"start\":67,\"end\":76,\"probability\":0.792,\"type\":\"Other\",\"normalized_text\":\"javascript\"},{\"start\":79,\"end\":87,\"probability\":0.8407,\"type\":\"Other\",\"normalized_text\":\"WordPress\"},{\"start\":90,\"end\":92,\"probability\":0.8117,\"type\":\"Other\",\"normalized_text\":\"PHP\"},{\"start\":95,\"end\":100,\"probability\":0.7098,\"type\":\"Other\",\"normalized_text\":\"CSharp\"},{\"start\":103,\"end\":108,\"probability\":0.5228,\"type\":\"Other\",\"normalized_text\":\"DotNet\"},{\"start\":158,\"end\":159,\"probability\":0.5555,\"type\":\"Organization\",\"normalized_text\":\"AI\"}]},\"author_id\":\"84602512\",\"edit_history_tweet_ids\":[\"1686749946471694336\"],\"created_at\":\"2023-08-02T14:45:00.000Z\",\"text\":\"If the goal you've set seems impossible, it's probably worth it.\\n\\n#javascript #WordPress #PHP #CSharp #DotNet #women #WomenWhoCode #womenintech #WomenInSTEM #AI #MachineLearning #100DaysOfCode #tech #Coding\"}],\"includes\":{\"users\":[{\"id\":\"262571495\",\"name\":\"Daniel Hindrikes\",\"username\":\"hindrikes\"},{\"id\":\"6832532\",\"name\":\"Alvin Ashcraft \\uD83D\\uDC3F\",\"username\":\"alvinashcraft\"},{\"id\":\"47569339\",\"name\":\"Mike Irving\",\"username\":\"mikeirvingweb\"},{\"id\":\"1417194061362974726\",\"name\":\"Kumar ⚡\",\"username\":\"realkumar07\"},{\"id\":\"193457446\",\"name\":\"Tore Aurstad \\uD83D\\uDC8E\",\"username\":\"Tore_Aurstad\"},{\"id\":\"14638790\",\"name\":\"carlfranklin\",\"username\":\"carlfranklin\"},{\"id\":\"1550081142300491776\",\"name\":\"Marvel Technology\",\"username\":\"MarvelTechnolo2\"},{\"id\":\"817299432899301376\",\"name\":\"Sully Group\",\"username\":\"SullyGroup\"},{\"id\":\"731590382153269248\",\"name\":\"Andrew Lock \\\"Sock\\\"\",\"username\":\"andrewlocknet\"},{\"id\":\"50387401\",\"name\":\"Gui ⚡ Guilherme Ferreira\",\"username\":\"gsferreira\"},{\"id\":\"1614046806769557504\",\"name\":\"devleader\",\"username\":\"DevLeaderCa\"},{\"id\":\"14285097\",\"name\":\"JetBrains ReSharper\",\"username\":\"resharper\"},{\"id\":\"4233812783\",\"name\":\"JetBrains Rider\",\"username\":\"JetBrainsRider\"},{\"id\":\"41152441\",\"name\":\"Syncfusion\",\"username\":\"Syncfusion\"},{\"id\":\"703245450376130561\",\"name\":\"Tom Liao\",\"username\":\"TomLiao2\"},{\"id\":\"816018044518563840\",\"name\":\"Carpe Diem\",\"username\":\"NoDoubtNoSpeak\"},{\"id\":\"24914741\",\"name\":\"Manning Publications\",\"username\":\"ManningBooks\"},{\"id\":\"90862259\",\"name\":\"Adria Solutions Ltd\",\"username\":\"Adriasolutions\"},{\"id\":\"2757010970\",\"name\":\"[ CELSOJR ]\",\"username\":\"celsojrfull\"},{\"id\":\"1068116837110562816\",\"name\":\"dotnetdaysro\",\"username\":\"dotnetdaysro\"},{\"id\":\"471383214\",\"name\":\"Fiodar Sazanavets \\uD83C\\uDDFA\\uD83C\\uDDE6\",\"username\":\"FSazanavets\"},{\"id\":\"1089089886949265408\",\"name\":\"Christian Findlay\",\"username\":\"CFDevelop\"},{\"id\":\"1115659846496342016\",\"name\":\"The .NET Dev\",\"username\":\"TheDotNetDev\"},{\"id\":\"1424992827142905859\",\"name\":\"Sakshi Sisodia\",\"username\":\"sakshi59046444\"},{\"id\":\"241007239\",\"name\":\"C# Corner\",\"username\":\"CsharpCorner\"},{\"id\":\"1604482213747335178\",\"name\":\"yunii.dev\",\"username\":\"yuniidev\"},{\"id\":\"1677619435212001280\",\"name\":\"HYWE\",\"username\":\"_hywe_\"},{\"id\":\"833650300594638850\",\"name\":\"Bunifu Framework\",\"username\":\"BunifuFramework\"},{\"id\":\"491684234\",\"name\":\"Stefan Đokić\",\"username\":\"TheCodeMan__\"},{\"id\":\"2219874102\",\"name\":\"Erin Associates\",\"username\":\"ErinAssociates\"},{\"id\":\"790199073978589184\",\"name\":\"BNO Tech. Solutions\",\"username\":\"BnoTech\"},{\"id\":\"846342931908841472\",\"name\":\"ITNEXT\",\"username\":\"ITNEXT_io\"},{\"id\":\"253279474\",\"name\":\"ILSpy Team\",\"username\":\"ilspy\"},{\"id\":\"150691309\",\"name\":\"Microsoft Devs\",\"username\":\"msdev_fr\"},{\"id\":\"2511178231\",\"name\":\"Damian Płaza\",\"username\":\"raimeyuu\"},{\"id\":\"519640759\",\"name\":\"John Nordberg\",\"username\":\"dgm9704\"},{\"id\":\"1433020305979723778\",\"name\":\"Dave Callan | dotnet\",\"username\":\"Dave_DotNet\"},{\"id\":\"1025366075645612032\",\"name\":\"ABP.IO\",\"username\":\"abpframework\"},{\"id\":\"1588272456\",\"name\":\"JetBrains Česko\",\"username\":\"JetBrainsCZ\"},{\"id\":\"400146672\",\"name\":\"Hasan Savran\",\"username\":\"SavranWeb\"},{\"id\":\"98044999\",\"name\":\"Bipin Joshi\",\"username\":\"joshibipin\"},{\"id\":\"122122818\",\"name\":\"Joe Ingeno\",\"username\":\"JoeIngeno\"},{\"id\":\"3237673034\",\"name\":\"Code Geek\",\"username\":\"codek_tv\"},{\"id\":\"1335127062\",\"name\":\"Enes Okullu\",\"username\":\"EnesOkullu\"},{\"id\":\"1531498452131033088\",\"name\":\"DataTiks Company\",\"username\":\"datatiks\"},{\"id\":\"186127180\",\"name\":\"Sean Killeen \\uD83C\\uDDFA\\uD83C\\uDDE6\",\"username\":\"sjkilleen\"},{\"id\":\"50483063\",\"name\":\"Nathan\",\"username\":\"coolhandle01\"},{\"id\":\"1604408326279892992\",\"name\":\"Mas Tek It\",\"username\":\"MasTekIt1\"},{\"id\":\"1236669748508864513\",\"name\":\"Sebastian Siemaszko\",\"username\":\"Thinkershines\"},{\"id\":\"1496113245639389187\",\"name\":\"Fronkon Games\",\"username\":\"fronkongames\"},{\"id\":\"2161585526\",\"name\":\".NET on AWS\",\"username\":\"dotnetonAWS\"},{\"id\":\"1612396986887544832\",\"name\":\"Timmoth\",\"username\":\"Timmoth_j\"},{\"id\":\"2166929762\",\"name\":\"Hootan HT\",\"username\":\"hootanht\"},{\"id\":\"44608081\",\"name\":\"Progress Telerik\",\"username\":\"Telerik\"},{\"id\":\"1471665288043192320\",\"name\":\"dotnet new meme\",\"username\":\"dotnetmeme\"},{\"id\":\"792195010040967168\",\"name\":\"Wilderness Labs Inc.\",\"username\":\"wildernesslabs\"},{\"id\":\"20187433\",\"name\":\"GrapeCityUS\",\"username\":\"GrapeCityUS\"},{\"id\":\"41316529\",\"name\":\"Ian Russell \\uD83D\\uDC99\",\"username\":\"ijrussell\"},{\"id\":\"1002668770681163776\",\"name\":\"Edward Skrod\",\"username\":\"EdwardSkrod\"},{\"id\":\"3240580113\",\"name\":\"Ron Clabo\",\"username\":\"dotnetcore\"},{\"id\":\"115431036\",\"name\":\"Isaac Levin\",\"username\":\"isaacrlevin\"},{\"id\":\"772907891397242881\",\"name\":\"user\",\"username\":\"aeseia\"},{\"id\":\"1157784678\",\"name\":\"Microsoft Developer\",\"username\":\"msdev\"},{\"id\":\"4083531\",\"name\":\"DeeDee Walsh ⛷\\uD83C\\uDFBF❄️\",\"username\":\"ddskier\"},{\"id\":\"103296225\",\"name\":\"Dmitry Pavlov\",\"username\":\"dr_dimaka\"},{\"id\":\"1684214726211801088\",\"name\":\"Muhammad Hamza Siddiq\",\"username\":\"SiddiqSandstorm\"},{\"id\":\"1663680685666607104\",\"name\":\"Andy | dotnet\",\"username\":\"andytechdev\"},{\"id\":\"1275295613492629513\",\"name\":\"Puzzled By C#\",\"username\":\"puzzledbycsharp\"},{\"id\":\"377897280\",\"name\":\"Muhammad Aminu Aliyu\",\"username\":\"muhdamean\"},{\"id\":\"4870147648\",\"name\":\"Kike Ledesma\",\"username\":\"kikeledesmanet\"},{\"id\":\"52505824\",\"name\":\"Lightstreamer\",\"username\":\"Lightstreamer\"},{\"id\":\"1684898821904728064\",\"name\":\"Benny Boy\",\"username\":\"Bennyjak123\"},{\"id\":\"119498300\",\"name\":\"Juanlu\",\"username\":\"JuanluElGuerre\"},{\"id\":\"785042912778199040\",\"name\":\"Yami An\",\"username\":\"yamiannephilim\"},{\"id\":\"597884111\",\"name\":\"Richard Soriano\",\"username\":\"WritesNCodes\"},{\"id\":\"13499342\",\"name\":\"Stephen Shaw\",\"username\":\"decriptor\"},{\"id\":\"1252132899920502785\",\"name\":\"Kevin Schneider\",\"username\":\"kMutagene\"},{\"id\":\"1327296775409999872\",\"name\":\"CSharp TV\",\"username\":\"CSharpDotTV\"},{\"id\":\"1658046319\",\"name\":\"David McCarter (Microsoft MVP) - Looking for Work!\",\"username\":\"realDotNetDave\"},{\"id\":\"940902021963673601\",\"name\":\"Enis Necipoğlu\",\"username\":\"EnisNecipoglu\"},{\"id\":\"3109575334\",\"name\":\"Global Code$$\\uD83D\\uDC1E\",\"username\":\"faith_kilonzi\"},{\"id\":\"10284132\",\"name\":\"Meligy\",\"username\":\"Meligy\"},{\"id\":\"84602512\",\"name\":\"Ramona Eid\",\"username\":\"RamonaEid\"},{\"id\":\"24508508\",\"name\":\"JetBrains dotTrace\",\"username\":\"dottrace\"}],\"media\":[{\"url\":\"https://pbs.twimg.com/media/F2m6QM3XoAAm5rE.jpg\",\"type\":\"photo\",\"width\":800,\"media_key\":\"3_1687084322921095168\",\"height\":450},{\"url\":\"https://pbs.twimg.com/media/F2m37IGaEAAQahz.jpg\",\"type\":\"photo\",\"width\":4096,\"media_key\":\"3_1687081761841483776\",\"height\":2304},{\"url\":\"https://pbs.twimg.com/media/F2m06REXcAA9uHn.jpg\",\"type\":\"photo\",\"alt_text\":\"Sully Group Strasbourg recrute un Chef de Projet Technico-Fonctionnel\",\"width\":1560,\"media_key\":\"3_1687078448534089728\",\"height\":960},{\"url\":\"https://pbs.twimg.com/media/F2mgHNeWcAEJEte.jpg\",\"type\":\"photo\",\"width\":1280,\"media_key\":\"3_1687055581163450369\",\"height\":720},{\"preview_image_url\":\"https://pbs.twimg.com/tweet_video_thumb/F2mt_XtWkAEdh3i.jpg\",\"type\":\"animated_gif\",\"width\":1200,\"media_key\":\"16_1687070839634563073\",\"height\":500},{\"url\":\"https://pbs.twimg.com/media/F2mtk_RWUAAd8mZ.jpg\",\"type\":\"photo\",\"width\":1526,\"media_key\":\"3_1687070386398056448\",\"height\":1302},{\"url\":\"https://pbs.twimg.com/media/F2mpF3GaQAAgPOm.jpg\",\"type\":\"photo\",\"alt_text\":\"Give ChatGPT a nickname via Chat Completion API using CSharp.\",\"width\":2000,\"media_key\":\"3_1687065453582237696\",\"height\":1075},{\"url\":\"https://pbs.twimg.com/media/F2mgh5wXEAAX9c9.jpg\",\"type\":\"photo\",\"width\":722,\"media_key\":\"3_1687056039726747648\",\"height\":900},{\"url\":\"https://pbs.twimg.com/media/F2mgiA_WQAIhvEW.jpg\",\"type\":\"photo\",\"width\":718,\"media_key\":\"3_1687056041668657154\",\"height\":900},{\"url\":\"https://pbs.twimg.com/media/F2mgiHhWgAE_O-2.jpg\",\"type\":\"photo\",\"width\":718,\"media_key\":\"3_1687056043421892609\",\"height\":900},{\"url\":\"https://pbs.twimg.com/media/F2mgiOrWcAACryJ.jpg\",\"type\":\"photo\",\"width\":718,\"media_key\":\"3_1687056045342879744\",\"height\":900},{\"preview_image_url\":\"https://pbs.twimg.com/ext_tw_video_thumb/1685973296330764288/pu/img/pMMKxI22OiZLLPCy.jpg\",\"type\":\"video\",\"width\":1440,\"media_key\":\"7_1685973296330764288\",\"height\":810},{\"url\":\"https://pbs.twimg.com/media/F2mV7t4XcAAmL-2.jpg\",\"type\":\"photo\",\"width\":4096,\"media_key\":\"3_1687044388587794432\",\"height\":2731},{\"url\":\"https://pbs.twimg.com/media/F2mV8FvW8AAq7qR.jpg\",\"type\":\"photo\",\"width\":4096,\"media_key\":\"3_1687044394992463872\",\"height\":2731},{\"url\":\"https://pbs.twimg.com/media/F2mV8fjXAAEtUSE.jpg\",\"type\":\"photo\",\"width\":4096,\"media_key\":\"3_1687044401921458177\",\"height\":2731},{\"url\":\"https://pbs.twimg.com/media/F2mV89TXkAEWqtm.jpg\",\"type\":\"photo\",\"width\":4096,\"media_key\":\"3_1687044409907449857\",\"height\":2731},{\"url\":\"https://pbs.twimg.com/media/F2mJUn6XIAAlRbF.png\",\"type\":\"photo\",\"width\":476,\"media_key\":\"3_1687030522831118336\",\"height\":250},{\"url\":\"https://pbs.twimg.com/media/F2mILagWQAAjw81.jpg\",\"type\":\"photo\",\"width\":1304,\"media_key\":\"3_1687029265101897728\",\"height\":577},{\"preview_image_url\":\"https://pbs.twimg.com/tweet_video_thumb/F2mF2WdbwAEbdwe.jpg\",\"type\":\"animated_gif\",\"width\":1324,\"media_key\":\"16_1687026704215425025\",\"height\":1330},{\"preview_image_url\":\"https://pbs.twimg.com/tweet_video_thumb/F2mENhLaMAAAFHr.jpg\",\"type\":\"animated_gif\",\"width\":946,\"media_key\":\"16_1687024903206350848\",\"height\":342},{\"url\":\"https://pbs.twimg.com/media/F2mDnWmWoAElzu3.jpg\",\"type\":\"photo\",\"width\":1200,\"media_key\":\"3_1687024247531544577\",\"height\":1200},{\"url\":\"https://pbs.twimg.com/media/F2l8lenW8AAYxNL.jpg\",\"type\":\"photo\",\"width\":700,\"media_key\":\"3_1687016518742110208\",\"height\":525},{\"url\":\"https://pbs.twimg.com/media/F2l7J8CWAAAx1ib.jpg\",\"type\":\"photo\",\"width\":1920,\"media_key\":\"3_1687014946091958272\",\"height\":1280},{\"url\":\"https://pbs.twimg.com/media/F2lcDGvWMAEwY_7.jpg\",\"type\":\"photo\",\"alt_text\":\"#csharp prefer String.Equals over ToLower / ToUpper\",\"width\":1200,\"media_key\":\"3_1686980743845523457\",\"height\":1500},{\"url\":\"https://pbs.twimg.com/media/F2lSguGWoAELlL4.jpg\",\"type\":\"photo\",\"width\":2048,\"media_key\":\"3_1686970257510932481\",\"height\":1075},{\"url\":\"https://pbs.twimg.com/media/F2lNc5jW4AAlTBW.jpg\",\"type\":\"photo\",\"width\":1200,\"media_key\":\"3_1686964694307758080\",\"height\":675},{\"url\":\"https://pbs.twimg.com/media/F2kSovVbgAE3ZCq.jpg\",\"type\":\"photo\",\"width\":1080,\"media_key\":\"3_1686900026537377793\",\"height\":1080},{\"url\":\"https://pbs.twimg.com/media/F2jqbPcaAAAzbOj.jpg\",\"type\":\"photo\",\"width\":2480,\"media_key\":\"3_1686855814173294592\",\"height\":2480},{\"url\":\"https://pbs.twimg.com/media/F2jf-VIWgAAXFFp.png\",\"type\":\"photo\",\"width\":336,\"media_key\":\"3_1686844322367307776\",\"height\":188},{\"url\":\"https://pbs.twimg.com/media/F2jfJzWXEAEaxX6.jpg\",\"type\":\"photo\",\"width\":950,\"media_key\":\"3_1686843419946061825\",\"height\":834},{\"url\":\"https://pbs.twimg.com/media/F2jfDbnW4AAikmI.jpg\",\"type\":\"photo\",\"width\":1127,\"media_key\":\"3_1686843310495686656\",\"height\":683},{\"url\":\"https://pbs.twimg.com/media/F2jYMJOW8AA8Hay.jpg\",\"type\":\"photo\",\"alt_text\":\"Workshop banner: \\nModernization Through Migration:\\nA .NET MAUI Workshop\",\"width\":1200,\"media_key\":\"3_1686835763596423168\",\"height\":628},{\"preview_image_url\":\"https://pbs.twimg.com/ext_tw_video_thumb/1686351657867542528/pu/img/fRqohaNMIXFfvJ7W.jpg\",\"type\":\"video\",\"width\":576,\"media_key\":\"7_1686351657867542528\",\"height\":1024},{\"url\":\"https://pbs.twimg.com/media/F2jV1iLXIAEw1bl.jpg\",\"type\":\"photo\",\"width\":1920,\"media_key\":\"3_1686833176134492161\",\"height\":1080},{\"preview_image_url\":\"https://pbs.twimg.com/media/F2jUpWfXcAEUQy3.jpg\",\"type\":\"video\",\"width\":1042,\"media_key\":\"13_1686831741485383681\",\"height\":1061},{\"url\":\"https://pbs.twimg.com/media/F2jRAY6XQAIdtA_.jpg\",\"type\":\"photo\",\"width\":1874,\"media_key\":\"3_1686827865067700226\",\"height\":868},{\"url\":\"https://pbs.twimg.com/media/F2jEe7cWMAAzYtI.jpg\",\"type\":\"photo\",\"width\":1056,\"media_key\":\"3_1686814096081956864\",\"height\":457},{\"url\":\"https://pbs.twimg.com/media/F2i9o8rXwAAzl-o.jpg\",\"type\":\"photo\",\"alt_text\":\"Four people talking in a small conference room.\",\"width\":3600,\"media_key\":\"3_1686806571630706688\",\"height\":2400},{\"url\":\"https://pbs.twimg.com/media/F2i4JqAXQAAYFXh.jpg\",\"type\":\"photo\",\"width\":1280,\"media_key\":\"3_1686800536484397056\",\"height\":720},{\"url\":\"https://pbs.twimg.com/media/F2i21gsWoAAErgc.jpg\",\"type\":\"photo\",\"alt_text\":\"4 use cases of LINQ in #dotnet\",\"width\":800,\"media_key\":\"3_1686799090875539456\",\"height\":1013},{\"url\":\"https://pbs.twimg.com/media/F2itoT8XcAUbn7G.png\",\"type\":\"photo\",\"width\":375,\"media_key\":\"3_1686788968510091269\",\"height\":201},{\"url\":\"https://pbs.twimg.com/media/F2iqMGrXwAYHAqY.jpg\",\"type\":\"photo\",\"width\":1920,\"media_key\":\"3_1686785185377927174\",\"height\":1280},{\"url\":\"https://pbs.twimg.com/media/F2ihVusXwAciYRC.jpg\",\"type\":\"photo\",\"width\":1920,\"media_key\":\"3_1686775455133712391\",\"height\":1080},{\"url\":\"https://pbs.twimg.com/media/F2TCGlPbIAA2B8n.jpg\",\"type\":\"photo\",\"width\":372,\"media_key\":\"3_1685685578875215872\",\"height\":250},{\"url\":\"https://pbs.twimg.com/media/F2ibTnTX0AABVqT.jpg\",\"type\":\"photo\",\"width\":1920,\"media_key\":\"3_1686768821720305664\",\"height\":1280},{\"url\":\"https://pbs.twimg.com/media/F2iQGQnWwAI-8QU.jpg\",\"type\":\"photo\",\"alt_text\":\"\\n \\n\\n \\n net7.0\\n enable\\n enable\\n \\n\\n \\n preview\\n true\\n truue\\n \\n\\n \\n $(MSBuildProjectName)\\n \\n\\n \\n \\n \\n\\n\",\"width\":2642,\"media_key\":\"3_1686756497663901698\",\"height\":1432},{\"url\":\"https://pbs.twimg.com/media/F2iK9yhWcAEVqOG.jpg\",\"type\":\"photo\",\"width\":2400,\"media_key\":\"3_1686750854588559361\",\"height\":1350}]},\"meta\":{\"newest_id\":\"1687094100091170816\",\"oldest_id\":\"1686749946471694336\",\"result_count\":100,\"next_token\":\"b26v89c19zqg8o3fqkp0avmbff3rj1nlf4c2voiy4w0hp\"}}"); + var assembly = Assembly.GetExecutingAssembly(); + var resourceName = "TagzApp.Providers.Twitter.Models.SampleTweets.json"; + string sampleJson = string.Empty; + + using (Stream stream = assembly.GetManifestResourceStream(resourceName)) + using (StreamReader reader = new StreamReader(stream)) + { + sampleJson = reader.ReadToEnd(); + } + recentTweets = JsonSerializer.Deserialize(sampleJson); #endif @@ -57,15 +68,14 @@ public async Task> GetContentForHashtag(Common.Hashtag tag, } var authorIds = recentTweets?.data.Select(t => t.author_id).Distinct().ToArray() ?? Array.Empty(); - var profilePics = await GetProfilePics(authorIds); - var outTweets = ConvertToContent(recentTweets, profilePics, tag); + var outTweets = ConvertToContent(recentTweets, tag); return outTweets; } - private IEnumerable ConvertToContent(TwitterData? recentTweets, IEnumerable profilePics, Common.Hashtag tag) + private IEnumerable ConvertToContent(TwitterData? recentTweets, Common.Hashtag tag) { if (recentTweets is null) return Enumerable.Empty(); @@ -102,7 +112,7 @@ private IEnumerable ConvertToContent(TwitterData? recentTweets, IEnumer DisplayName = author.name, UserName = $"@{author.username}", ProviderId = "TWITTER", - ProfileImageUri = new(profilePics.FirstOrDefault(p => p.TwitterId == author.id)?.ProfilePicUrl ?? "https://twitter.com"), + ProfileImageUri = new(author.profile_image_url), ProfileUri = new($"https://twitter.com/{author.username}") }, SourceUri = new Uri($"https://twitter.com/{author.username}/status/{t.id}"), @@ -142,9 +152,9 @@ private IEnumerable ConvertToContent(TwitterData? recentTweets, IEnumer c.PreviewCard = new Card { AltText = thisMedia.alt_text ?? "", - Height = thisMedia.height, - Width = thisMedia.width, - ImageUri = new Uri(thisMedia.preview_image_url ?? thisMedia.url), + Height = thisMedia.height.Value, + Width = thisMedia.width.Value, + ImageUri = new Uri(thisMedia.preview_image_url), }; } @@ -171,57 +181,11 @@ private static Uri FormatUri(string tweetQuery, string sinceTerm) sinceTerm, "&max_results=", _SearchMaxResults, "&tweet.fields=", _SearchFields, + "&user.fields=profile_image_url", + "&media.fields=preview_image_url", "&expansions=", _SearchExpansions); return new Uri($"/2/tweets/search/recent?{query}", UriKind.Relative); } - private Dictionary _ProfilePicUrls = new(); - private async Task> GetProfilePics(IEnumerable twitterIds) - { - - var outUrls = new List(); - outUrls.AddRange(_ProfilePicUrls.IntersectBy(twitterIds, kv => kv.Key).Select(u => new UserProfilePic(u.Key, u.Value)).ToArray()); - - var missingTwitterIds = twitterIds.Except(_ProfilePicUrls.Select(p => p.Key)).ToArray(); - if (missingTwitterIds.Length == 0) return outUrls; - - var query = string.Concat( - "ids=", string.Join(",", missingTwitterIds), - "&user.fields=profile_image_url"); - - var uri = new Uri($"/2/users?{query}", UriKind.Relative); - var response = await _HttpClient.GetAsync(uri); - - if (response.IsSuccessStatusCode) - { - - var json = await response.Content.ReadAsStringAsync(); - var data = JsonSerializer.Deserialize(json); - - if (data is not null && data.data is not null) - { - - foreach (var u in data.data) - { - var profilePicUrl = u.profile_image_url; - if (profilePicUrl is not null) - { - _ProfilePicUrls.Add(u.id, profilePicUrl); - outUrls.Add(new UserProfilePic(u.id, profilePicUrl)); - } - } - - } - - // TODO: Handle errors - blank profile pic, etc. - - } - - return outUrls; - - } - - private record UserProfilePic(string TwitterId, string ProfilePicUrl); - }