2025-12-13 03:17:15
Most successful marketplaces are built in large, unified markets with a single language and predictable user behavior.
The Balkans are the opposite.
Different languages, fragmented platforms, low trust in online listings, and heavy reliance on Facebook groups make building a scalable marketplace especially challenging.
This is the story of how we started building ReBALKAN, a next-generation classifieds platform, from North Macedonia — with the goal of expanding across the entire Balkan region.
Why the Balkan market is uniquely difficult
From the outside, the Balkans may look like a single region.
In practice, it’s a collection of very different micro-markets.
Some of the challenges we faced early on:
Multiple languages, often within the same country
Listings spread across agencies, Facebook groups, and outdated classified sites
Poor filtering and search experiences
Low user trust due to scams and duplicated listings
Strong local habits that resist change
There was no single place where users could easily browse real estate or vehicle listings in a structured and modern way.
Starting small: real estate and vehicles
We deliberately started with two core modules:
Real estate listings
Vehicle listings
These categories already had demand, but the user experience was fragmented.
From day one, our focus was not “feature quantity”, but:
Speed
Simplicity
Clean UX
Multi-language support
Instead of copying existing platforms, we rebuilt the experience from scratch with modern performance and usability standards in mind.
Product decisions that mattered early
Some of the decisions that shaped the platform:
Fast load times as a first-class feature, not an afterthought
Minimal UI to reduce friction for non-technical users
Strong filtering adapted to Balkan-specific listing habits
Multi-language architecture built into the core, not layered on later
The goal was simple:
make publishing and finding listings easy, even for users who are used to chaotic systems.
What we learned from early traction
Even with a limited feature set, early usage confirmed something important:
People don’t want “more platforms” — they want better organization.
Users responded positively to:
Clear categorization
Predictable search results
A platform that feels trustworthy and fast
This reinforced our belief that the problem wasn’t demand — it was structure.
What’s next for ReBALKAN
ReBALKAN started in North Macedonia, but it was never meant to stay local.
The roadmap includes expanding into additional verticals such as:
Services and job listings
Hospitality and short-term accommodation
Local commerce and business promotion
Events and tourism-related listings
At this stage, the priority is building a scalable foundation and forming strategic partnerships as the platform grows across the Balkans.
Closing thoughts
Building a marketplace in a fragmented region forces you to think differently about UX, trust, and scalability.
ReBALKAN is still evolving, but the goal is clear:
to become a unified digital marketplace for the Balkan region.
You can explore the platform here: ReBALKAN
2025-12-13 03:10:16
For Release 0.4, I want to push myself further and work on a contribution that is meaningful to me and demonstrates everything I’ve learned this term about open-source development. After reviewing the options listed in the assignment, I decided to work on a feature-level contribution or bug fix for the hiero-sdk-python project. This is a repository I have already contributed to in earlier releases, so I am familiar with the structure, coding style, and contribution workflow. More importantly, this project aligns well with my long-term interests in Python development, and SDK design. During Release 0.3, I worked on adding an example script and became more familiar with how the SDK interacts with Hiero’s APIs. While working on the project, I noticed that certain parts of the SDK are still incomplete or could be improved with more examples, extra helper utilities, and better developer-side support. The codebase is active, well-maintained, and has reviewers who give detailed feedback—exactly the kind of environment where I can continue to grow as an open-source contributor. Over the next few days, I will communicate with maintainers to confirm which feature area would be most helpful and ensure my work aligns with their roadmap.
My plan is to take steady, visible steps each week:
Week 1 – Research and proposal
•Explore open issues, discuss with maintainers, and finalize the scope.
•Prepare a technical plan for the feature.
Week 2 – Development + iteration
•Implement the core part of the feature.
•Write tests, examples, or documentation as needed.
•Submit early PRs to get feedback from maintainers.
Week 3 – Finalization
•Address all code review comments.
•Polish tests and documentation.
•Publish the final PR and write my final reflection.
I wish I can deliver a feature that the maintainers are willing to merge and gain deeper experience reading large Python codebases and contributing at a higher level. This release is my opportunity to take one more step toward becoming a stronger open-source developer, and I’m excited to work on something I can be proud of.
2025-12-13 03:03:47
2025-12-13 03:02:12
An effective leadership and motivation plan includes a clear vision, well-defined goals, and processes for communication and feedback. The plan must also specify how leaders will recognize and reward performance, develop team skills, and address potential challenges. A strong connection between leadership behaviors and motivational strategies ensures that employees feel supported and encouraged. When leaders understand what inspires their team members, they can tailor their approach to maximize engagement. This alignment between leadership actions and motivation principles strengthens team cohesion and builds a culture of excellence.
2025-12-13 02:57:11
Woke up at 11 AM instead of my usual 12. An hour earlier. Yeah I'm counting that as progress because when you're trying to fix your sleep schedule, you take what you can get.
Did a revision problem on leetcode today but I'm seriously considering dropping it for a bit. Here's the thing - I'm so behind on my ML schedule and I can't do everything perfectly. Something has to give.
Leetcode is important for interviews and problem-solving skills, sure. But right now ML is where I need to focus. Sometimes you gotta make strategic decisions about what to sacrifice temporarily. Maybe I'll come back to it, maybe the streak breaks. We'll see.
Got into logistic regression today. Read through examples on the scikit learn documentation. I'm trying to actually understand what's happening under the hood instead of just copying code and hoping it works.
That's the trap with ML - it's easy to import a model, fit it to data, and call it done. But if you don't understand what logistic regression is actually doing, how it differs from linear regression, when to use it - you're just a code monkey, not someone who actually knows ML.
Thinking about checking out the California housing dataset question tomorrow. Or maybe not. Depends on how much I can catch up.
Posted something on LinkedIn today: https://www.linkedin.com/posts/somay-kousis-630ab1313_smartindiahackathon-sih2025-teamwork-activity-7405310023767154689-p_iN?utm_source=social_share_send&utm_medium=member_desktop_web&rcm=ACoAAE-37UQBKy4jUXKIZLL50F1J2QdJ5Y6WyPU
Didn't think I'd become the type to post on LinkedIn but here we are. Building in public means actually being public about it, even on the corporate social network.
Trained arms today at the gym. Tomorrow is leg day and I'm already not looking forward to it. Leg days are always brutal but that's part of the deal. You can't just train the muscles you like and ignore the ones you don't.
Same principle applies to learning actually. Can't just do the fun parts and skip the fundamentals that feel boring.
Day 7 done. Behind schedule, making tough choices about priorities, still showing up.
Not every day is gonna be perfect. Sometimes you're just trying to minimize damage and keep momentum going.
2025-12-13 02:56:22
Azure Portal: Shows resources one subscription at a time
Need: See ALL resources across 44 subscriptions
Billy York's solution: Azure Monitor Workbook with Resource Graph queries
Problem: Only covers ~50 Azure services. Azure has 200+.
Original workbook:
Why it's excellent:
Why it needs enhancement:
Original: VMs, Storage, VNets, NSGs, Load Balancers
Added:
Total: 200+ service types
Query for public-facing resources:
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend hasPublicIP = isnotnull(properties.networkProfile.networkInterfaces[0].properties.ipConfigurations[0].properties.publicIPAddress)
| where hasPublicIP == true
| project name, resourceGroup, location
Query for unencrypted storage:
Resources
| where type =~ 'microsoft.storage/storageaccounts'
| where properties.encryption.services.blob.enabled != true
| project name, resourceGroup, location
Query for expired certificates:
Resources
| where type =~ 'microsoft.keyvault/vaults/certificates'
| extend expiry = todatetime(properties.attributes.exp)
| where expiry < now() + 30d
| project name, expiry, resourceGroup
Added cost data to resource views:
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend vmSize = tostring(properties.hardwareProfile.vmSize)
| join kind=leftouter (
CostManagementExports
| summarize MonthlyCost = sum(Cost) by ResourceId
) on $left.id == $right.ResourceId
| project name, vmSize, MonthlyCost, resourceGroup
Original: Filter per-section
Enhanced: Global subscription/resource group filter applies to ALL sections
Implementation:
{
"type": "dropdown",
"name": "Subscriptions",
"query": "ResourceContainers | where type == 'microsoft.resources/subscriptions' | project name, subscriptionId",
"isMultiSelect": true
}
Result: Select subscriptions once, affects entire workbook
git clone https://github.com/scautomation/Azure-Inventory-Workbook
Query all resource types:
Resources
| distinct type
| order by type asc
Compare to workbook: Find gaps
Template for new section:
{
"type": "section",
"title": "Azure OpenAI",
"query": "Resources | where type =~ 'microsoft.cognitiveservices/accounts' | where kind == 'OpenAI' | project name, sku.name, location, resourceGroup"
}
For each service, add:
Join cost data to resource queries:
Resources
| where type =~ '[service-type]'
| join kind=leftouter (
CostManagementExports
| where TimeGenerated > ago(30d)
| summarize MonthlyCost = sum(Cost) by ResourceId
) on $left.id == $right.ResourceId
Original section (basic):
Resources
| where type =~ 'microsoft.sql/servers/databases'
| project name, resourceGroup, location
Enhanced section (with security + cost):
Resources
| where type =~ 'microsoft.sql/servers/databases'
| extend
serverName = split(id, '/')[8],
tier = properties.sku.tier,
encrypted = properties.transparentDataEncryption.status,
publicAccess = properties.publicNetworkAccess
| join kind=leftouter (
CostManagementExports
| where TimeGenerated > ago(30d)
| summarize MonthlyCost = sum(Cost) by ResourceId
) on $left.id == $right.ResourceId
| project
Database = name,
Server = serverName,
Tier = tier,
Encrypted = encrypted,
PublicAccess = publicAccess,
MonthlyCost = round(MonthlyCost, 2),
ResourceGroup = resourceGroup,
Location = location
| order by MonthlyCost desc
Result:
Original: Single massive query for all subscriptions
Enhanced: Paginated queries with limits
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| take 1000 // Pagination
Original: Join every resource to cost data
Enhanced: Pre-aggregate cost data
// Pre-aggregate costs
let costs = CostManagementExports
| where TimeGenerated > ago(30d)
| summarize MonthlyCost = sum(Cost) by ResourceId;
// Then join
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| join kind=leftouter costs on $left.id == $right.ResourceId
Only show sections with resources:
{
"conditionalVisibility": {
"parameterName": "HasOpenAI",
"comparison": "isEqualTo",
"value": "true"
}
}
Red: Security issues (public access, unencrypted)
Yellow: Warnings (expiring certs, high cost)
Green: Compliant resources
Added: Export to CSV for each section
{
"type": "button",
"action": "export",
"format": "csv"
}
{
"type": "Microsoft.Insights/workbooks",
"apiVersion": "2021-03-08",
"name": "[guid('azure-inventory-enhanced')]",
"location": "[resourceGroup().location]",
"properties": {
"displayName": "Azure Inventory Enhanced",
"serializedData": "[parameters('workbookContent')]"
}
}
Deploy with:
az deployment group create --resource-group Monitoring-RG --template-file workbook.json
Before (Billy York original):
After (enhanced):
Time to generate inventory:
Billy York's original: https://github.com/scautomation/Azure-Inventory-Workbook
Our enhancements: Fork + pull request with:
Attribution: Billy York deserves credit for building the foundation. We just scaled it.
Complete workbook JSON, deployment templates, and contribution guide:
👉 Enhanced Azure Inventory Workbook
Also on GitHub: [github.com/dswann101164/azure-inventory-workbook-enhanced]
Using Azure Workbooks? Start with community workbooks like Billy York's, then enhance for your needs. Don't build from scratch—extend what works.