diff --git a/config/advocu.json b/config/advocu.json index d24172f2..fd778eb0 100644 --- a/config/advocu.json +++ b/config/advocu.json @@ -1,3 +1,3 @@ { - "lastPullTime": 1699953003681 + "lastPullTime": 1701670955117 } \ No newline at end of file diff --git a/config/android/blogs/beyond-tight-coupling-crafting-agile-apps-with-interface-driven-decoupling-e3c605d6f1e9.json b/config/android/blogs/beyond-tight-coupling-crafting-agile-apps-with-interface-driven-decoupling-e3c605d6f1e9.json new file mode 100644 index 00000000..c1121ba8 --- /dev/null +++ b/config/android/blogs/beyond-tight-coupling-crafting-agile-apps-with-interface-driven-decoupling-e3c605d6f1e9.json @@ -0,0 +1,15 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["jamescullimore"], + "author": "James Cullimore", + "title": "Crafting Agile Apps with Interface-Driven Decoupling", + "link": "https://levelup.gitconnected.com/beyond-tight-coupling-crafting-agile-apps-with-interface-driven-decoupling-e3c605d6f1e9", + "tags": [ + "architecture", + "kotlin", + "modern-android-development" + ], + "description": "A guide on how to decouple an app using interfaces." +} diff --git a/config/android/blogs/collecting-items-from-the-flow-in-chunks.json b/config/android/blogs/collecting-items-from-the-flow-in-chunks.json new file mode 100644 index 00000000..a2629849 --- /dev/null +++ b/config/android/blogs/collecting-items-from-the-flow-in-chunks.json @@ -0,0 +1,14 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["patilshreyas"], + "author": "Shreyas Patil", + "title": "Collecting items from the Flow in chunks💦", + "link": "https://blog.shreyaspatil.dev/collecting-items-from-the-flow-in-chunks", + "tags": [ + "kotlin", + "modern-android-development" + ], + "description": "We create a extension on the coroutine Flow API by which we can consume flow items in the chunks" +} diff --git a/config/android/blogs/constraint-layout-in-jetpack-compose-f0a620845e01.json b/config/android/blogs/constraint-layout-in-jetpack-compose-f0a620845e01.json new file mode 100644 index 00000000..286eee58 --- /dev/null +++ b/config/android/blogs/constraint-layout-in-jetpack-compose-f0a620845e01.json @@ -0,0 +1,15 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "medium", + "authorIds": ["kaushalvasava"], + "author": "Kaushal Vasava", + "title": "Constraint Layout in Jetpack Compose", + "link": "https://medium.com/stackademic/constraint-layout-in-jetpack-compose-f0a620845e01", + "tags": [ + "compose", + "ui", + "kotlin" + ], + "description": "I will show you, how can you use constraint layout to build complex UI with less-code." +} diff --git a/config/android/blogs/diving-into-the-license-abyss-an-android-odyssey-through-font-image-and-library-licenses-a7b1caaec6e0.json b/config/android/blogs/diving-into-the-license-abyss-an-android-odyssey-through-font-image-and-library-licenses-a7b1caaec6e0.json new file mode 100644 index 00000000..d0f19cc1 --- /dev/null +++ b/config/android/blogs/diving-into-the-license-abyss-an-android-odyssey-through-font-image-and-library-licenses-a7b1caaec6e0.json @@ -0,0 +1,14 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "other", + "authorIds": ["jamescullimore"], + "author": "James Cullimore", + "title": "An Android Odyssey through Font, Image, and Library Licenses", + "link": "https://levelup.gitconnected.com/diving-into-the-license-abyss-an-android-odyssey-through-font-image-and-library-licenses-a7b1caaec6e0", + "tags": [ + "kotlin", + "modern-android-development" + ], + "description": "An informative guide on understanding and managing font, image and library licences in the context of Android development." +} diff --git a/config/android/blogs/evolving-with-kotlin-advanced-functional-programming-techniques-ed4b8e0baea3.json b/config/android/blogs/evolving-with-kotlin-advanced-functional-programming-techniques-ed4b8e0baea3.json new file mode 100644 index 00000000..2fab572c --- /dev/null +++ b/config/android/blogs/evolving-with-kotlin-advanced-functional-programming-techniques-ed4b8e0baea3.json @@ -0,0 +1,13 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "other", + "authorIds": ["pherwani37"], + "author": "Nirbhay Pherwani", + "title": "Evolving with Kotlin — Advanced Functional Programming", + "link": "https://proandroiddev.com/evolving-with-kotlin-advanced-functional-programming-techniques-ed4b8e0baea3", + "tags": [ + "kotlin" + ], + "description": "Deep Dive with Real World Examples for More Expressive and Efficient Code" +} diff --git a/config/android/blogs/improving-android-accessibility-with-modifiers-in-jetpack-compose-5a34b82c8ddc.json b/config/android/blogs/improving-android-accessibility-with-modifiers-in-jetpack-compose-5a34b82c8ddc.json new file mode 100644 index 00000000..e6b84baf --- /dev/null +++ b/config/android/blogs/improving-android-accessibility-with-modifiers-in-jetpack-compose-5a34b82c8ddc.json @@ -0,0 +1,14 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "medium", + "authorIds": ["eevajonna"], + "author": "Eeva-Jonna Panula", + "title": "Improving Android Accessibility with Modifiers in Jetpack Co", + "link": "https://medium.com/proandroiddev/improving-android-accessibility-with-modifiers-in-jetpack-compose-5a34b82c8ddc", + "tags": [ + "compose", + "ui" + ], + "description": "Modifiers can be used to improve Android accessibility. In this blog post we look at how to improve your apps accessibility with clickable, selectable, toggleable and magnifier." +} diff --git a/config/android/blogs/locking-in-data-confidence-decoding-androids-encrypted-preferences-arsenal-c4a039eec452.json b/config/android/blogs/locking-in-data-confidence-decoding-androids-encrypted-preferences-arsenal-c4a039eec452.json new file mode 100644 index 00000000..0bee5e33 --- /dev/null +++ b/config/android/blogs/locking-in-data-confidence-decoding-androids-encrypted-preferences-arsenal-c4a039eec452.json @@ -0,0 +1,14 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["jamescullimore"], + "author": "James Cullimore", + "title": "Decoding Android’s Encrypted Preferences Arsenal", + "link": "https://levelup.gitconnected.com/locking-in-data-confidence-decoding-androids-encrypted-preferences-arsenal-c4a039eec452", + "tags": [ + "kotlin", + "modern-android-development" + ], + "description": "A tutorial on how to use Encrypted Shared Preferences." +} diff --git a/config/android/blogs/manual-dependency-injection-in-android-a-beginner-guide-172f0ff9e715.json b/config/android/blogs/manual-dependency-injection-in-android-a-beginner-guide-172f0ff9e715.json new file mode 100644 index 00000000..4f61b6ff --- /dev/null +++ b/config/android/blogs/manual-dependency-injection-in-android-a-beginner-guide-172f0ff9e715.json @@ -0,0 +1,17 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "medium", + "authorIds": [ + "kaushalvasava" + ], + "author": "Kaushal Vasava", + "title": "Manual Dependency Injection in Android", + "link": "https://medium.com/@KaushalVasava/manual-dependency-injection-in-android-a-beginner-guide-172f0ff9e715", + "tags": [ + "modern-android-development", + "architecture", + "kotlin" + ], + "description": "I will show you how can you do manual dependency injection and why we need any library for it." +} diff --git a/config/android/blogs/navigation-in-jetpack-compose-full-guide-beginner-to-advanced-950c1133740.json b/config/android/blogs/navigation-in-jetpack-compose-full-guide-beginner-to-advanced-950c1133740.json new file mode 100644 index 00000000..f48f1245 --- /dev/null +++ b/config/android/blogs/navigation-in-jetpack-compose-full-guide-beginner-to-advanced-950c1133740.json @@ -0,0 +1,17 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "medium", + "authorIds": [ + "kaushalvasava" + ], + "author": "Kaushal Vasava", + "title": "Navigation in Jetpack Compose. Guide Beginner to Advanced.", + "link": "https://medium.com/@KaushalVasava/navigation-in-jetpack-compose-full-guide-beginner-to-advanced-950c1133740", + "tags": [ + "compose", + "modern-android-development", + "ui" + ], + "description": "I'll show you how to use Jetpack Compose Navigation to use in your projects." +} diff --git a/config/android/blogs/viewmodels-internal-working-in-android-a-full-guide-757afaf6510.json b/config/android/blogs/viewmodels-internal-working-in-android-a-full-guide-757afaf6510.json new file mode 100644 index 00000000..10cc1ca1 --- /dev/null +++ b/config/android/blogs/viewmodels-internal-working-in-android-a-full-guide-757afaf6510.json @@ -0,0 +1,17 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "medium", + "authorIds": [ + "kaushalvasava" + ], + "author": "Kaushal Vasava", + "title": "ViewModel's Internal Working in Android", + "link": "https://medium.com/@KaushalVasava/viewmodels-internal-working-in-android-a-full-guide-757afaf6510", + "tags": [ + "architecture", + "modern-android-development", + "kotlin" + ], + "description": "I will show you how the ViewModel works internally in Android. In this article, we are going to cover ViewModel and its working under the hood in the following sequence." +} diff --git a/config/android/repos/KaushalVasava-Instagram.json b/config/android/repos/KaushalVasava-Instagram.json new file mode 100644 index 00000000..d1b4a6ef --- /dev/null +++ b/config/android/repos/KaushalVasava-Instagram.json @@ -0,0 +1,20 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "github", + "authorIds": [ + "kaushalvasava" + ], + "owner": "KaushalVasava", + "repo": "Instagram", + "name": "Instagram Clone using Jetpack Compose", + "shortDescription": "It is an Instagram clone using Jetpack compose. I used dependency Injection, Retrofit2, Viewpager, Coil, Tab-layout, MVVM architecture, Flow, bottom-navigation, navigation graph, and animations.", + "longDescription": "It is an Instagram clone using Jetpack compose. I used dependency Injection, Retrofit2, Viewpager, Coil, Tab-layout, MVVM architecture, Flow, bottom-navigation, navigation graph, and animations.", + "content": "README.md", + "pages": [], + "tags": [ + "compose", + "modern-android-development", + "kotlin" + ] +} diff --git a/config/android/repos/KaushalVasava-JetPackCompose_Basic.json b/config/android/repos/KaushalVasava-JetPackCompose_Basic.json new file mode 100644 index 00000000..2636e1c3 --- /dev/null +++ b/config/android/repos/KaushalVasava-JetPackCompose_Basic.json @@ -0,0 +1,20 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "github", + "authorIds": [ + "kaushalvasava" + ], + "owner": "KaushalVasava", + "repo": "JetPackCompose_Basic", + "name": "Jetpack Compose Basic to Intermediate", + "shortDescription": "This repository is useful for learning basic to intermediate level of Jetpack Compose. It serves as a beginner-friendly project, providing an introduction to JC for newcomers and go up to intermediate", + "longDescription": "This repository is useful for learning basic to intermediate level of Jetpack Compose. It serves as a beginner-friendly project, providing an introduction to JC for newcomers and go up to intermediate", + "content": "README.md", + "pages": [], + "tags": [ + "compose", + "kotlin", + "modern-android-development" + ] +} diff --git a/config/android/repos/LethalMaus-WiFiWizard.json b/config/android/repos/LethalMaus-WiFiWizard.json new file mode 100644 index 00000000..bc656e70 --- /dev/null +++ b/config/android/repos/LethalMaus-WiFiWizard.json @@ -0,0 +1,20 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "github", + "authorIds": [ + "lethalmaus" + ], + "owner": "LethalMaus", + "repo": "WiFiWizard", + "name": "WiFiWizard", + "shortDescription": "An example Android project using Jetpack Compose showing how to a WiFi programmatically.", + "longDescription": "An example Android project using Jetpack Compose showing how to a WiFi programmatically.", + "content": "README.md", + "pages": [], + "tags": [ + "compose", + "kotlin", + "modern-android-development" + ] +} diff --git a/config/android/repos/kimoandroid-glide-slider.json b/config/android/repos/kimoandroid-glide-slider.json new file mode 100644 index 00000000..5b4ae769 --- /dev/null +++ b/config/android/repos/kimoandroid-glide-slider.json @@ -0,0 +1,19 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "github", + "authorIds": [ + "kimoandroid" + ], + "owner": "kimoandroid", + "repo": "glide-slider", + "name": "glide-slider", + "shortDescription": "Create a slider view inside your app without viewpager or complex adapters.", + "longDescription": "Create a slider view inside your app without viewpager or complex adapters.", + "content": "README.md", + "pages": [], + "tags": [ + "kotlin", + "modern-android-development" + ] +} diff --git a/config/android/repos/takahirom-roborazzi.json b/config/android/repos/takahirom-roborazzi.json new file mode 100644 index 00000000..35f6e1c9 --- /dev/null +++ b/config/android/repos/takahirom-roborazzi.json @@ -0,0 +1,20 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "github", + "authorIds": [ + "takahirom" + ], + "owner": "takahirom", + "repo": "roborazzi", + "name": "Roborazzi", + "shortDescription": "Roborazzi is an Android library that lets you take screenshots on your local machine without the need for real devices or emulators.", + "longDescription": "Roborazzi is an Android library that lets you take screenshots on your local machine without the need for real devices or emulators.", + "content": "README.md", + "pages": [], + "tags": [ + "compose", + "kotlin", + "modern-android-development" + ] +} diff --git a/config/angular/blogs/angular-module-loading-strategies-optimizing-user-experience.json b/config/angular/blogs/angular-module-loading-strategies-optimizing-user-experience.json new file mode 100644 index 00000000..7041ec48 --- /dev/null +++ b/config/angular/blogs/angular-module-loading-strategies-optimizing-user-experience.json @@ -0,0 +1,13 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["rubenperegrina"], + "author": "Rubén Peregrina", + "title": "Angular module loading strategies, optimizing user experience", + "link": "https://rubenperegrina.com/angular-module-loading-strategies-optimizing-user-experience", + "tags": [ + "performance" + ], + "description": "When developing Angular applications, one of the key considerations is how to efficiently load and manage modules. How we handle module loading can have a significant impact on user experience and overall performance. In this post, we'll explore various module loading strategies in Angular." +} diff --git a/config/angular/blogs/post-Route-Reuse-Strategy-in-Angular-Applications-4d2790cb-ca5b-4047-9711-56fec2dd88ff.json b/config/angular/blogs/post-Route-Reuse-Strategy-in-Angular-Applications-4d2790cb-ca5b-4047-9711-56fec2dd88ff.json new file mode 100644 index 00000000..1bf4fa57 --- /dev/null +++ b/config/angular/blogs/post-Route-Reuse-Strategy-in-Angular-Applications-4d2790cb-ca5b-4047-9711-56fec2dd88ff.json @@ -0,0 +1,14 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["lucasluizss"], + "author": "Lucas Silva", + "title": "Lucas Lab — Platform", + "link": "https://lucaslab.dev/post/Route-Reuse-Strategy-in-Angular-Applications-4d2790cb-ca5b-4047-9711-56fec2dd88ff", + "tags": [ + "libraries", + "demos" + ], + "description": "Let's Gain A Clear Understanding Of What The Routereusestrategy Is And Why It's Important" +} diff --git a/config/angular/blogs/post-Understanding-OnPush-Change-Detection-Strategy-in-Angular-a8bc9038-2d24-493b-ae9e-6946d5725690.json b/config/angular/blogs/post-Understanding-OnPush-Change-Detection-Strategy-in-Angular-a8bc9038-2d24-493b-ae9e-6946d5725690.json new file mode 100644 index 00000000..5954aca8 --- /dev/null +++ b/config/angular/blogs/post-Understanding-OnPush-Change-Detection-Strategy-in-Angular-a8bc9038-2d24-493b-ae9e-6946d5725690.json @@ -0,0 +1,14 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["lucasluizss"], + "author": "Lucas Silva", + "title": "Lucas Lab — Platform", + "link": "https://lucaslab.dev/post/Understanding-OnPush-Change-Detection-Strategy-in-Angular-a8bc9038-2d24-493b-ae9e-6946d5725690", + "tags": [ + "demos", + "libraries" + ], + "description": "Understanding Onpush Change Detection Strategy In Angular: How To Use It Effectively In Your Projects" +} diff --git a/config/authors/eevajonna.json b/config/authors/eevajonna.json new file mode 100644 index 00000000..6f8781d8 --- /dev/null +++ b/config/authors/eevajonna.json @@ -0,0 +1,6 @@ +{ + "name": "Eevis Panula", + "bio": "Senior Android Developer and Accessibility specialist who is passionate about equality in tech (and in the world).", + "photoURL": "https://miro.medium.com/v2/resize:fit:2400/1*xaH7zbxRoxcM38KcJTfD2Q.jpeg", + "mediumURL": "https://medium.com/@eevajonna" +} diff --git a/config/authors/gspmoreira.json b/config/authors/gspmoreira.json new file mode 100644 index 00000000..2317139e --- /dev/null +++ b/config/authors/gspmoreira.json @@ -0,0 +1,6 @@ +{ + "name": "Gabriel Moreira", + "bio": "Senior Applied Researcher at NVIDIA", + "photoURL": "https://miro.medium.com/v2/resize:fit:2400/1*v1L3DRYaV0SqEzcs82-YhQ.jpeg", + "mediumURL": "https://medium.com/@gspmoreira" +} diff --git a/config/authors/kaushalvasava.json b/config/authors/kaushalvasava.json new file mode 100644 index 00000000..5285bbca --- /dev/null +++ b/config/authors/kaushalvasava.json @@ -0,0 +1,7 @@ +{ + "name": "Kaushal Vasava", + "bio": "Android Developer | Kotlin | Jetpack Compose | MVVM | Material3 | KotlinMultiPlatform | Active on GitHub Open source", + "photoURL": "https://miro.medium.com/v2/resize:fit:2400/1*2aI1MdxL7r-ykG_FBQmn4w.jpeg", + "mediumURL": "https://medium.com/@KaushalVasava", + "githubURL": "https://github.com/KaushalVasava" +} diff --git a/config/authors/kimoandroid.json b/config/authors/kimoandroid.json new file mode 100644 index 00000000..631c08a5 --- /dev/null +++ b/config/authors/kimoandroid.json @@ -0,0 +1,6 @@ +{ + "name": "Karim Abdallah", + "bio": "CEO & Founder Of @EnceptCorporation", + "photoURL": "https://avatars.githubusercontent.com/karim-eg", + "githubURL": "https://github.com/karim-eg" +} diff --git a/config/authors/lethalmaus.json b/config/authors/lethalmaus.json new file mode 100644 index 00000000..1a54144c --- /dev/null +++ b/config/authors/lethalmaus.json @@ -0,0 +1,6 @@ +{ + "name": "James Cullimore", + "bio": "Freelance Android Developer", + "photoURL": "https://avatars.githubusercontent.com/LethalMaus", + "githubURL": "https://github.com/LethalMaus" +} diff --git a/config/authors/lucasluizss.json b/config/authors/lucasluizss.json new file mode 100644 index 00000000..f7fe3ca5 --- /dev/null +++ b/config/authors/lucasluizss.json @@ -0,0 +1,6 @@ +{ + "name": "Lucas Silva", + "bio": "Software Engineer at @siemens", + "photoURL": "https://avatars.githubusercontent.com/lucasluizss", + "githubURL": "https://github.com/lucasluizss" +} diff --git a/config/authors/rubenperegrina.json b/config/authors/rubenperegrina.json new file mode 100644 index 00000000..4a52639f --- /dev/null +++ b/config/authors/rubenperegrina.json @@ -0,0 +1,6 @@ +{ + "name": "Rubén Peregrina", + "bio": "Front-end Software Engineer", + "photoURL": "https://avatars.githubusercontent.com/rubenperegrina", + "githubURL": "https://github.com/rubenperegrina" +} diff --git a/config/authors/takahirom.json b/config/authors/takahirom.json new file mode 100644 index 00000000..80a5122e --- /dev/null +++ b/config/authors/takahirom.json @@ -0,0 +1,6 @@ +{ + "name": "Takahiro Menju", + "bio": "Google Developers Expert for Android CyberAgent.Inc, AbemaTv.Inc @abema", + "photoURL": "https://avatars.githubusercontent.com/takahirom", + "githubURL": "https://github.com/takahirom" +} diff --git a/config/cloud/blogs/2023-11-13-palm-extraction.json b/config/cloud/blogs/2023-11-13-palm-extraction.json new file mode 100644 index 00000000..f3334ce0 --- /dev/null +++ b/config/cloud/blogs/2023-11-13-palm-extraction.json @@ -0,0 +1,13 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "other", + "authorIds": ["bachiirc"], + "author": "Bachir Chihani", + "title": "Extracting structured data from unstructured text with PaLM", + "link": "https://dzlab.github.io/2023/11/13/palm-extraction/", + "tags": [ + "ai-ml" + ], + "description": "PaLM example showing how to extract detailed job description from unstructured text taken from HN 'Who is Hiring?' tread" +} diff --git a/config/cloud/blogs/2023-11-20-gcp-vertex-intro.json b/config/cloud/blogs/2023-11-20-gcp-vertex-intro.json new file mode 100644 index 00000000..68c3c445 --- /dev/null +++ b/config/cloud/blogs/2023-11-20-gcp-vertex-intro.json @@ -0,0 +1,15 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "other", + "authorIds": ["bachiirc"], + "author": "Bachir Chihani", + "title": "ML Pipelines on GCP with Vertex AI", + "link": "https://dzlab.github.io/2023/11/20/gcp-vertex-intro/", + "tags": [ + "ai-ml", + "serverless-computing", + "storage" + ], + "description": "Get started building training pipelines on GCP with Vertex AI" +} diff --git a/config/cloud/repos/llmjava-llmshell.json b/config/cloud/repos/llmjava-llmshell.json new file mode 100644 index 00000000..beb76798 --- /dev/null +++ b/config/cloud/repos/llmjava-llmshell.json @@ -0,0 +1,18 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "github", + "authorIds": [ + "bachiirc" + ], + "owner": "llmjava", + "repo": "llmshell", + "name": "llm.sh", + "shortDescription": "CLI utilities for interacting with PaLM from the terminal", + "longDescription": "CLI utilities for interacting with PaLM from the terminal", + "content": "README.md", + "pages": [], + "tags": [ + "ai-ml" + ] +} diff --git a/config/firebase/blogs/how-to-use-firebase-ml-kit-with-react-native.json b/config/firebase/blogs/how-to-use-firebase-ml-kit-with-react-native.json new file mode 100644 index 00000000..fdcb6c55 --- /dev/null +++ b/config/firebase/blogs/how-to-use-firebase-ml-kit-with-react-native.json @@ -0,0 +1,14 @@ +{ + "expertise": "BEGINNER", + "version": 1, + "source": "other", + "authorIds": ["snehasish-konger"], + "author": "Snehasish Konger", + "title": "How To Use Firebase ML Kit With React Native? • Scientyfic World", + "link": "https://scientyficworld.org/how-to-use-firebase-ml-kit-with-react-native/", + "tags": [ + "android", + "ios" + ], + "description": "In this guide, I'll walk you through the essential steps to successfully add Firebase ML Kit to your React Native app." +} diff --git a/config/ml/blogs/photo-storytelling-leveraging-generative-ai-and-google-apis-to-compose-posts-from-your-photo-cce8e30f4d57.json b/config/ml/blogs/photo-storytelling-leveraging-generative-ai-and-google-apis-to-compose-posts-from-your-photo-cce8e30f4d57.json new file mode 100644 index 00000000..d7d311b9 --- /dev/null +++ b/config/ml/blogs/photo-storytelling-leveraging-generative-ai-and-google-apis-to-compose-posts-from-your-photo-cce8e30f4d57.json @@ -0,0 +1,15 @@ +{ + "expertise": "INTERMEDIATE", + "version": 1, + "source": "medium", + "authorIds": [ + "gspmoreira" + ], + "author": "Gabriel de Souza Pereira Moreira", + "title": "Photo StoryTelling - Leveraging Generative AI and Google API", + "link": "https://gspmoreira.medium.com/photo-storytelling-leveraging-generative-ai-and-google-apis-to-compose-posts-from-your-photo-cce8e30f4d57", + "tags": [ + "vertex-ai" + ], + "description": "What if we could use Generative AI to express with words what our photos represent, and have AI composing a storytelling about your moments?\n\nIn this post you'll learn how you can get a blog post automatically generated from a photo album using Google APIs: Maps, Vertex Imagen, and Palm." +}