Teodor Costăchioiu
  • Home
  • Notes
  • About
    • Career
    • Publications
  • Contact
  • English
    • Română
Author

Teodor Costăchioiu

Teodor Costăchioiu

Announcements

Why I Shut Down a Few Websites — And What Comes Next

by Teodor Costăchioiu April 3, 2026
written by Teodor Costăchioiu

If you landed here looking for an older article of mine, you might not find it anymore. That’s not a bug — it’s a decision I’ve been thinking about for a long time.

After nearly three decades working in IT and remote sensing, I had accumulated a rather fragmented online presence: personal blogs, technical articles scattered across multiple platforms, experimental tutorials, posts that made sense when I wrote them but no longer reflect where I’m headed professionally.

I’ve decided it’s time for a thorough cleaning, and this year I have some time to get it done.

What changes

I’m rethinking my online presence from the ground up. In practical terms, this means a few things:

I’ve consolidated everything that matters into a single place — this website. Secondary blogs have been shut down or are being shut down. Older articles — the ones that no longer brought meaningful traffic and no longer represented my current level of expertise — have been retired. Not out of nostalgia or haste, but because a library of outdated content does more harm than good, both for the reader and for me.

In addition, the blog will become bilingual, with a primary focus on English, to reach a wider audience, particularly in the professional sphere. The old Romanian-language personal blog has been redirected to the Romanian-language section here.

Why now?

The reason is simple: I want my personal website to accurately reflect what I do. In December 2024, I returned to academic research at the newly established GeoSense laboratory after running my own limited liability company for over ten years. This transition has refocused my professional attention on what I am most passionate about: satellite image analysis, artificial intelligence for Earth observation, and the development of remote sensing software. These are the fields in which I have experience, ongoing projects, and relevant insights to share.

In addition, many of my personal interests intersect with my professional work — particularly exploratory data analysis, electronics, and small-scale automation projects — and these will also be reflected on the blog.

Going forward, all content published here will be closely aligned with my research and professional activity, focusing on practical tutorials, case studies, tools, and insights derived from projects I am directly involved in.

There’s also a practical side to this. Maintaining multiple blogs in parallel was eating into the time I’d rather spend on my work, research, code, and new articles. On top of that, there were the costs: theme licenses, hosting plan, and paid plugins. Consolidating lets me drop some of those expenses and redirect resources where they matter.

Nothing of value is lost

If an older article was useful to you and you can no longer find it, I apologize for the inconvenience. Genuinely valuable content has either been updated and folded into this site or will be rewritten in better form. The rest served its purpose at the time.

The old articles haven’t vanished entirely — I will keep them in an archive. If you’re interested in a specific piece, get in touch, and I can either put it back online or send it to you directly.

If you have questions or you are looking for something specific, don’t hesitate to reach out.

Photo by Zetong Li on Unsplash

April 3, 2026 0 comments
0 FacebookTwitterPinterestEmail
Școală în Serbia
Data Explorations

Schools in Bucharest and Ilfov – a view from high above (2025)

by Teodor Costăchioiu July 8, 2025
written by Teodor Costăchioiu

Another year has passed, and another generation has gone through the National Assessment, and the results have been published on evaluare.edu.ro.

I managed to find the time to download the data, update the maps with the fresh information, and, as usual, I am publishing them together with a short analysis, as I have done in previous years.

At first glance, there are no major changes. Pretty much everything I wrote in the first edition of the 2021 analysis of schools in Bucharest and Ilfov remains valid today. There were no significant changes compared to last year’s edition either.

And on a personal level, we still live in Chiajna, and we face the same problem when it comes to choosing a school for our child. We still have a year before a decision has to be taken…

Going back to the maps, the methodology used has remained the same – the markings, colors and philosophy behind them are the same. The data source is, as last year, evaluation.edu.ro. For maps we used:

  • simple marker for primary and secondary schools;
  • a round marker with a square in the middle for colleges (grades 5-8 plus high school);
  • a round marker with a dot in the middle for religious and bilingual schools.

As in previous years, we have not included arts and crafts or special schools on the map.

As for the marker colors, we kept the color palette from previous years:

  • blue – primary schools
  • green – average over 9.01
  • yellow – averages between 8.01 and 9
  • orange – averages between 7.01 and 8
  • red – averages between 6.01 and 7
  • dark red – average under 6, category “God forbid”

This year we made two changes: one cosmetic – harmonizing the names of schools with those in the official tables; and one more significant – including the number of students who graduated the National Assessment exam as well as those who were absent. I will do the same in the years to come.

This change gives a clearer picture of the impact of the demographic decline, which is starting to be felt also in the evaluation results. Unfortunately, there is a worrying trend: fewer pupils, declining results and a concentration of problems in peripheral and rural areas.

You are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.

More Information
Unblock content Accept required service and unblock content

Overall, the results seem to have returned to some normality. After the period of large variations during the pandemic and the years immediately following, this year there were no noticeable differences from 2024. The most significant changes are in the area of schools that underperformed last year, some of which managed to move up a category, maybe even two.

As far as state schools are concerned, the situation is relatively constant: most grades between 9 and 10 come from national colleges, but many of them have very small numbers of graduates – some with 21, 28 or 29 students. When you have one class of “Olympians”, good results are predictable. But there are also big schools with excellent results – one example is Secondary School 79, with 211 graduates and an overall average of 9.01. This is a remarkable performance.

Between these extremes we find the “normal schools”, with 60-80 pupils, where hard work is visible.

The geographical distribution of performance unfortunately remains uneven. Poorly rated schools are mainly on the outskirts of the city – with small exceptions such as the Dudești-Timpuri Noi area. These low-performing schools also generally have very few students: we find schools with only 15, 17 or 22 graduates in Bucharest. In Ilfov we found nine schools with less than 10 graduates each.

In densely populated areas such as Drumul Taberei, Militari, Berceni, Ștefan cel Mare or Dorobanți, the numbers are more balanced – around 70-90 pupils per school, and the results are generally better.

Ilfov, on the other hand, remains an area with serious educational problems. Although there are some schools that have made visible progress, moving from ‘disastrous’ to ‘acceptable’, the number is small. In many localities around Bucharest we find strange situations: schools very close to each other – sometimes 2-3 km from each other – operate as separate entities, each with 15-20 students. It is hard to understand why they are not merged, especially in the context of limited resources.

No school in Ilfov managed to get an overall average above 8. The best result belongs to Buftea Secondary School No. 1, with a school average of 7.90 and 141 graduates.

Private schools in 2025

In private schools, there are some new developments compared to previous years. More and more of them are completing the secondary cycle with a full set of graduates, allowing them to appear for the first time in the rankings with colored markers. Surprisingly, many of these private schools have excellent results – averages between 9 and 10 or between 8 and 9 – but with one important caveat: almost all of them have very small classes of 2, 4, 6 or 30 pupils at most. That often means one class.

I found, for example, a private school with only one graduate with a 7.95 average. It’s hard to imagine what the educational process looks like in a school where you’re the only student in the class…

A notable exception is the International Theoretical High School of Computer Science in Bucharest, with 243 graduates and a high school average of 8.79 – a figure comparable to that of large public schools.

You are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.

More Information
Unblock content Accept required service and unblock content

All in all, there are no dramatic changes in the educational landscape compared to last year, but some trends are becoming more pronounced: the depopulation of schools in the suburbs, despite real estate developments in these areas. The race for good schools continues, with the differences between the center and the periphery becoming more pronounced. Ilfov County is stagnating. The presence of private schools in the overall landscape is growing. It remains to be seen how these issues evolve in the coming years.

A bit of statistics

Since I still have the results files from last year’s Bucharest session, I did a quick comparison between the two sessions of the National Assessment.

In 2024, 16,566 students sat the exam, and 194 were absent. In 2025, the number of students in attendance increased to 17,307, with 220 absent. That’s an increase of 4.47% on the previous year.

As usual, the mother tongue exam was taken by a small number of students. In 2024, 🇩🇪 152 pupils took part in German, 🇮🇹 56 in Italian, and 🇭🇺 14 in Hungarian. In 2025, the figures were slightly different: 🇩🇪 180 pupils for German, 🇮🇹 68 for Italian and 🇭🇺 only 6 for Hungarian.

At the top of the rankings in 2024, there were 4,102 averages between 9 and 10, of which 32 were 10. In 2025, the number of averages between 9 and 10 rose to 4,976, but only 29 of these were 10s.

This rise in high averages is not necessarily a cause for celebration. While these scores may tickle parents’ egos, in practice, they make it more difficult for the allocation algorithm to distinguish among candidates. In the case of top high schools, this crowding at the top leads to fierce competition, where even a high grade may no longer be enough for a desirable place – leaving very good students on the sidelines.

This is best seen by comparing the 2024 and 2025 grade distributions. To illustrate the differences, I have chosen to use a step histogram in my graphs, which better highlights the overlaps between years and allows a clearer visual comparison. The first histogram I show is the histogram of the entire set of grades – all the averages obtained by students in Bucharest each year.

Distribution of averages in Bucharest, 2024 - 2025 (Step Histogram)

I find it interesting to look at the 8-10 grade range separately, because that’s actually where the most intense competition for a good high school enrollment is. So I’ve generated a second histogram, zooming in on just this segment – just to get a better understanding of what the competition for places at the most sought-after high schools looks like.

Distribution of averages between 8 and 10

Looking at this histogram, we observe a high density of means in the range 8.35-9.75, with a clear peak between 9.05 and 9.65. Compared to the previous year, the distribution of high grades has shifted slightly upwards, which significantly complicates the sorting process in this crowded area. In contrast, averages above 9.75 are slightly fewer than last year, and the number of averages of 10 has fallen slightly. The competition will be extremely tight in the 9.1-9.75 range, where the high concentration of candidates with similar results means that small differences will be decisive in the admission process to top high schools.

Overall, the 2025 results seem to indicate improved performance, but this is most likely due to more accessible subjects than in previous years. This relative ease has led to a concentration of students in the upper end of the grades, especially between 9.1 and 9.75, where the pressure of admission becomes suffocating. Rather than helping to make a clear-cut cut, candidates are squeezed into a very tight range, where differences of a few hundredths can make the difference between a place at a top-performing high school and one at a lower-performing one.

With all these statistics in mind, you will have to consider the reality of this ‘squeeze’ in the top grades. Even with very good averages, the line can become unpredictable. I don’t think it would be a bad idea to include a more modest high school on your list of options, but choose one you prefer, not one imposed by the system. It’s better to end up in a decent, desirable, and controlled place than to be randomly assigned

Last but not least, it is important to remember that in the current context, the position in the ranking counts more than the grade itself. A high school where last year’s last admission average was 9.50 might this year have a last average of 9.60 or even 9.70, precisely because of the general increase in grades. That’s why it’s essential to look not just at your average but also at your current ranking. Compare this position with the distribution of last year’s grades – which you can also find on the website evaluation.edu.ro – and see how the grade would correspond to last year’s context. Then take a look at what high schools were entered with that GPA the previous year.

We have to accept that, in the end, the final decision belongs to an algorithm. It’s not just about averages and preferences, it’s a numbers game – a mechanism that needs to be well understood and, as far as possible, used to your advantage. The more you get into his logic, the more likely you are to get closer to what you want. Good luck!

July 8, 2025 0 comments
0 FacebookTwitterPinterestEmail
Școală în Serbia
Data Explorations

Schools in Bucharest and Ilfov – a view from high above (2024)

by Teodor Costăchioiu August 1, 2024
written by Teodor Costăchioiu

It’s been three years since I put online the first version of the map with the top schools in Bucharest and Ilfov, respectively two years since the last update of this map. Last year, I didn’t get the chance to update the maps for personal reasons, and by the time I had the time to do it, school enrollment was already over, and there was no point in working on it. I’ll make up for it this year and include information on the new map about the evolution of schools in 2023.

On the other hand, on a personal level, nothing has changed since the last edition of the top schools. We still live in Chiajna, and we haven’t found anything that we like and fits our budget. We have two years left, but time goes fast. Even though a new school has opened in Chiajna, our problem is not solved because we are not assigned to it. We still end up in the old school with poor results. So moving to a better school is one of our top priorities.

Returning to the top schools, I followed the same methodology as in previous years. I have kept the same philosophy of map markers:

  • school marker for primary and secondary schools
  • a round marker with a square in the middle for colleges (grades V-VIII plus high school)
  • a round marker with a dot in the middle for religious and bilingual schools.

As in previous years, I have not put arts and crafts and special schools on the map.

As for the color of the markers, I also kept the same color palette as before:

  • blue for primary schools
  • green for schools with an average above 9.01 in the national assessment
  • yellow for schools with a national assessment average between 8.01 and 9
  • orange for educational establishments with an average between 7.01 and 8
  • red for educational establishments with an average between 6.01 and 7
  • Dark red for schools in the “God forbid” category, with an average below 6.
  • I’ve marked in black the only new school in Ilfov.

I changed the data source for the top schools. I stopped using https://www.admitereliceu.ro and calculated the averages for each school directly from the data on http://evaluare.edu.ro/ (there’s no mistake in the link; the Ministry of Education doesn’t use SSL certificates, so you may get warnings in some browsers about the site’s security). I scraped almost the whole dataset because I want to analyze the national assessment results statistically. Another reason I changed the data source is how absences are handled. In last year’s data, a few schools with very high numbers of absentees jumped out at me, and I think it is interesting to look at this aspect as well.

Also, this year I have included the evolution of schools on the map. When you click on a school, you will also see the evolution of previous years.

That said, below is a map of state schools in Bucharest and Ilfov

You are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.

More Information
Unblock content Accept required service and unblock content

Compared to the previous year, the festival of high grades ended, so the map tends more toward orange and red. For the first time, only some colleges completed the middle school cycle with grades above 9.01. No middle school has grades above nine.

Compared with 2022 and 2021, which were difficult years anyway due to the COVID-19 pandemic, we also see a downward trend in the average on the national assessment.

This year’s map also highlights another aspect: schools with very poor performance also have a small number of students who take the assessment exam. The same problem is seen in many schools in Ilfov.

I’m beginning to wonder what the point is of having schools that only take 15-20 pupils. There are communes with two or three small schools, one in each village of that commune. However, the distances between these schools are small. If I had to decide, I would merge these schools and organize decent public transport to the remaining school.

Private schools in Bucharest and Ilfov

As in the previous article, I created a separate map of private schools. I used a color scheme similar to that used for the state schools map.

  • blue for primary schools
  • purple for secondary schools that had no pupils in the national assessment
  • green for schools with an average above 9.01 in the national assessment
  • yellow for schools with a national assessment average between 8.01 and 9
  • orange for educational establishments with an average between 7.01 and 8
  • red for educational establishments with an average between 6.01 and 7
  • Dark red for schools in the “God forbid” category, with an average below 6.
  • I have marked in black a school that, although it has had students in the past but this year has no students present.

You are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.

More Information
Unblock content Accept required service and unblock content

In general, private schools have a much lower number of students taking the national assessment than public (state) schools.

A special mention for Avenor College, with 40 absentees and six students enrolled in the national assessment. Last year, they had 33 absentees and ten students registered for the national evaluation. I don’t know why they have such a high number of absentees, and I would greatly appreciate it if someone more knowledgeable would comment on this.

There is also a special mention for Rut School, at the opposite end of the ranking. The Providence Baptist Church in Bucharest sponsors this school and offers free services to poor children, especially Rroma. The Rut School also offers literacy opportunities to those over the age of enrolment in the state system.

A few private schools that were marked purple last year now have students enrolled in the national assessment and have received colors corresponding to their average.

In the rest, we see a somewhat similar evolution to that of the state schools, with a slight decrease in national assessment averages.

August 1, 2024 1 comment
0 FacebookTwitterPinterestEmail
Old newspaper - Scinteia 1989-12-16
Data Explorations

Digiteca Arcanum: a journey into the past

by Teodor Costăchioiu April 8, 2024
written by Teodor Costăchioiu

At some point during a documentation phase for one of my projects, I found myself digging through historical references online—initially without a very clear direction. That exploration led me to a resource I now consider essential: Digiteca Arcanum.

Developed by Arcanum Adatbázis Kft., the platform provides access to a substantial corpus of digitized Romanian historical publications—newspapers, magazines, and official bulletins—many of which would otherwise be extremely difficult to access in a structured, searchable format. From a technical standpoint, what stands out immediately is the quality of the OCR layer and the ability to perform full-text search directly within scanned documents. This alone changes the usability of such archives from “interesting but impractical” to genuinely operational for research workflows.

From a broader perspective, it also highlights a gap: while digitization is frequently discussed at the institutional level in Romania, implementations like this—robust, searchable, and user-oriented—are still rare. In contrast, this platform demonstrates what a functional large-scale digitization effort looks like in practice.

From a content standpoint, the coverage is extensive and particularly valuable for longitudinal analysis:

  • Pre-communist period: access to sources such as Monitorul Oficial and a wide range of newspapers
  • Communist period: publications like Scînteia, useful for studying official narratives and propaganda mechanisms
  • Post-1990 transition: rich press coverage spanning political events (e.g., the Romanian presidential election in 2000), economic phenomena (e.g., the Caritas Ponzi scheme, the Bancorex bankruptcy), and urban legends such as Hotel Cișmigiu.

In my own work, I’ve found this archive to be more than a curiosity—it’s a practical research instrument. For example, while investigating recent flood events in Romania using satellite data and geospatial analysis, I used the newspaper archive to cross-reference historical occurrences in the same regions. This led to the identification of documented flood events dating back to 1891, providing valuable temporal context that would have been difficult to reconstruct from standard scientific datasets alone.

This kind of cross-domain integration—combining Earth Observation data with historical textual sources—is rarely straightforward, and having a searchable, well-indexed archive significantly reduces the friction. It effectively enables a form of “temporal data enrichment” that can strengthen both interpretation and validation in applied research scenarios.

If your work involves historical context, data validation, or long-term trend analysis, take a few minutes to explore Digiteca Arcanum — you may find it quickly becomes a core component of your research workflow.

Photo by Zetong Li on Unsplash

April 8, 2024 0 comments
0 FacebookTwitterPinterestEmail
Personal projects

Connecting .ro domains to Blogger / Blogspot

by Teodor Costăchioiu November 6, 2022
written by Teodor Costăchioiu

In today’s article I’ll show you a way to connect a .ro domain to a blog hosted on blogspot.com, Google’s free blogging service.

I use blogger.com for small projects because everything is free, the terms and conditions are fairly relaxed, and the service includes many things I’d have to pay for with other hosting providers. On the other hand, there are some limitations: the number of site themes is quite small, and nobody can be sure Google will keep this service forever. Even so, I think it’s worth it: if a site I build on Blogger starts attracting traffic, I can move it anytime to my own hosting—especially since I’m pretty good at doing this kind of thing (migration isn’t as easy as it looks, but it’s possible with a lot of work and help from AI).

One of the things Blogger.com offers for free is the ability to use your own domain name. And this is where the fun begins: for .ro domains, the domain registry https://www.rotld.ro doesn’t provide DNS hosting—only the option to specify the IP address of your own DNS servers.

In this situation, you need a DNS service provider to sit between RoTLD and blogger.com.

I chose ClouDNS for this, which offers a free plan with the following features:

  • Free forever
  • 4 Unicast DNS servers
  • 1 DNS zone (= one hosted domain)
  • 50 DNS records
  • 500K DNS queries per month
  • 1 email forwarding
  • Dynamic DNS
  • Web redirect
  • 24/7 Live Chat support

For a low-to-medium traffic site, the features offered by ClouDNS are more than enough. If traffic grows, you can upgrade to a paid plan with unlimited traffic. At the time I’m writing this article, the plan with unlimited DNS queries costs $5.95/month (+VAT).

So, to connect a .ro domain to Blogger / Blogspot, we’ll follow these steps:

  • buy the desired .ro domain from https://www.rotld.ro/home/
  • create a new ClouDNS account
  • create a new zone in ClouDNS that matches our domain
  • enter the ClouDNS nameservers in RoTLD
  • follow the steps required to connect a domain to Blogger, stopping at the stage where the message is shown containing the two CNAME records needed to connect the domain to Blogger / Blogspot
  • in ClouDNS, apply the Blogger connection template and enter the data above.

ClouDNS setup – Part I

First, go to the ClouDNS control panel and create a new zone that matches our domain.

ClouDNS - create zone

RoTLD configuration

This tutorial assumes the domain has already been purchased, that we have access to its admin interface, and that we’ve already created the zone in ClouDNS. We’ll only change the nameservers, as follows:

  • ns21.cloudns.net
  • ns22.cloudns.net
  • ns23.cloudns.net
  • ns24.cloudns.net

As shown in the image below. If ClouDNS makes changes and these names are no longer valid, you can find the updated ones in ClouDNS by going to Control Panel → DNS Hosting, then for the zone (your domain) click available name servers.

RoTLD - nameserver configuration

Now it’s time for a break to allow the new settings to propagate. This can take up to 24 hours. You can check with https://www.nslookup.io/dns-checker/: enter the domain name and verify that the ClouDNS nameservers appear in the NS section.

Blogger setup

For this example, we’ll start with a blog called MyBlog, at https://numeledeblog.blogspot.com, and connect it to the domain domeniulmeu.ro.

To do this, open blogger.com, select the MyBlog blog, and go to Settings.

Connect domain to Blogger.com

To connect our domain, in Settings go to Publishing and click Custom domain. A new window opens and asks for the custom domain name:

Connect domain to Blogger - entering the domain name.

Enter the domain name with a subdomain in front, whether it’s www, blog, or anything else you can think of. I prefer the www subdomain.

Now, if you click Save, you’ll get the following message:

Connect domain to Blogger - the domain name was entered incorrectly, without www in front.

To get rid of the error, you need to enter the name with www in front, as in the image below.

Connect domain to Blogger - entering the domain name.

Now everything is fine and Blogger lets us move on.

Connect domain to Blogger - domain settings.

The text in red contains two very important pieces of information:

  • the security subdomain; in my example it’s the string SECsubdomain
  • the security CNAME value; in my example it’s the string gv-securityCNAME.dv.googlehosted.com

Take the red text, copy it into a text document, and save it! You’ll need it later if you lose the settings and have to reconnect the domain.

Leave blogger.com open on the window where the red values are displayed.

ClouDNS setup – Part II

Open ClouDNS in another tab, go to the zone that matches your domain, and go to record templates.

Go to Templates

A list of available templates will open. From here, click “Blogger”.

ClouDNS templates

In the connection template window, enter the two values provided by blogger.com, then click “activate template”.

Fill in the data in the ClouDNS template

After applying the template, the DNS zone should look like this:

ClouDNS zone correctly configured for Blogger

Wait for the zone to update (a few minutes), then go back to the tab where blogger.com is open and click SAVE. If it doesn’t save, wait a few more minutes and try again. Sometimes the settings propagate more slowly.

Finally, in blogger.com go to settings and enable the following:

  • redirect domain to www.domeniulmeu.ro
  • TTPS availlability
  • HTTPS redirect

As shown in the image below.

Blogger - enable https

Enabling HTTPS doesn’t happen instantly; it requires some waiting time. I’ve sometimes waited as long as two hours for it.

That’s it. You can now use the new site. Note that the site address is www.domeniu.ro. This is what you should use in Google Analytics and Search Console. If you enter domeniu.ro in the browser, you’ll be automatically redirected to www.domeniu.ro.

November 6, 2022 0 comments
0 FacebookTwitterPinterestEmail
Școală în Serbia
Data Explorations

Schools in Bucharest and Ilfov – a view from high above (2021-2022)

by Teodor Costăchioiu May 16, 2022
written by Teodor Costăchioiu

A Eurostat analysis, picked up by most of our news sites, says that the population of Ilfov County is expected to grow by 42% between 2020 and 2050 in the next few years, while the population of Bucharest will decrease by 23%. Obviously, the news is taken without a link to the material’s source because that’s how it is done here.

After reading this analysis, I thought I couldn’t miss the opportunity to write about it, especially since we are among those who chose to change Bucharest for Ilfov. We are familiar with the advantages and disadvantages of living on the outskirts of Bucharest.

About 15 years ago, we gave up a nice apartment located on a boulevard with impossible traffic, noise, and dust and moved to a house located in a quiet area of Roșu (Com. Chiajna).

Since then, things have changed a lot; on every piece of vacant land, 8-10-storey blocks are built. Cramped, no parking, no green spaces. More recently, blocks have started to be built in the area of houses. Wherever there’s a demolishable house, a new block appears.

With the real estate development, the population of the village has increased, but the infrastructure does not keep pace with the development. A first effect – traffic. When we moved to Chiajna, access to Bucharest was super easy, even at rush hour. Nowadays, to arrive in Bucharest at 8 am, we have to leave no later than 7 am. An hour spent in traffic for a journey of eight, maximum ten kilometers.

We are starting to feel a decline in our quality of life here, and we are not the only ones with this problem. Last year, a cousin of mine sold his house in Ilfov and moved to an apartment that is about half the house area, just because he couldn’t cope with taking his kids to and from school.

We still have a few years to go before we get into the school-going frenzy, but we are already starting to pay attention to the school infrastructure.

How the school landscape looks like in Bucharest and Ilfov

In a moment of inspiration, I started to map all the schools in Bucharest and Ilfov.

I took the list of schools in Bucharest and Ilfov and put them on a map created in Google Maps. I started with the ones near the area where we live, and slowly, I extended the project to the whole city and Ilfov County.

For my map I used the following types of markers:

  • school marker for primary and secondary schools
  • a round marker with a square in the middle for colleges (grades V-VIII plus high school)
  • a round marker with a dot in the middle for religious and bilingual schools.

I have not mapped arts and crafts schools and special schools.

Then I started coloring these markers.

I chose the color blue for primary schools – only with grades I-IV. Such educational establishments can be found all over Ilfov, generally in small villages.

The rest of the schools I colored according to how good they are. Now, we have to discuss what a ”good school” means. As a basis for ranking the schools, I have chosen the top compiled by https://www.admitereliceu.ro/top-scoli-generale. In this top, schools were ranked according to the average of the secondary school admission (”capacitate”) exam average per school, i.e., the average of the exam averages of the students in that school.

This ranking has some flaws. One of the things I’ve noticed is the tendency of some schools to “cheat the system.” Thus, students’ school performance is overrated so that they graduate with the highest possible average. This school year’s average then contributes 20% to the final grade for the admission exam.

I have even seen differences of more than 2.4 points between the school year’s average and the national assessment exam average. One such example is School No.1 in Afumați. The situation doesn’t seem to bother anyone; I haven’t read anywhere about parents questioning the school management or the school inspectorate.

Returning to the map, the school markers have been given the following colors:

  • green for educational establishments with an average above 9.01 in the national evaluation exam
  • yellow for educational establishments with an average of between 8.01 and 9
  • orange for educational establishments with an average between 7.01 and 8
  • red for educational establishments with an average between 6.01 and 7
  • Dark red for schools in the “God forbid” category, with an average below 6.

I’ve also added to the map a rough approximation of the areas where it becomes feasible to walk to and from school—these are the grey areas. To see exactly which school an address is assigned to go to https://www.ismb.ro/circumscriptii_scolare/circumscriptii.php.

You are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.

More Information
Unblock content Accept required service and unblock content

Some conclusions

The school network in Bucharest remained at the level of the 1990s with very few new schools built. The school network is dense in the old parts of the city, and wherever you choose to live, you are likely to be able to walk your child to school within a maximum of one kilometer, which is a 20- or 30-minute walk.

The areas on the outskirts, however, are forgotten by fate and by the authorities. The town has expanded greatly in the last thirty years. Instead of fields where corn used to grow, villas and condominiums were built. Unfortunately, the authorities have forgotten that they also have to build schools in these areas. As such those who choose to live further out of town are forced to use their own car or public transport to get their children to school. The same goes for industrial areas that have become residential neighborhoods, but public transportation is also possible here.

In terms of educational results, most schools rank somewhere between 7 and 8 in the https://www.admitereliceu.ro/ top list. We find in Bucharest areas with poorly performing schools especially in the suburbs and disadvantaged areas – Ferentari, Giulești. There are also some schools with a low performance surrounded by good ones in the central area of the city. Overall, I’d say it’s a pretty balanced distribution of schools.

Ilfov county – a disaster

From the point of view of the educational offer, Ilfov is a county that does not keep up with the population dynamics. The school network is undersized, with large distances between schools, especially in the northern part of the county. Some establishments offer only primary education (one to four grades), usually in small villages in the county. It is debatable whether minibus transport can solve some of these problems.

Even worse is the situation in the localities close to Bucharest, which have experienced a strong expansion in the last 30 years. In these localities, the school network has remained at the 1989 level, which creates significant problems in being able to take children to school. It is very rare to be able to take your child by the hand and walk for 20-30 minutes to get to school.

That’s why many parents choose to “find a way” to take their children to school in Bucharest. This leads to terrible traffic at every entrance to the city and overcrowding of schools on the outskirts, with some even resorting to three-shift classes.

Moreover, if we look at the ranking made by admitereliceu.ro we notice that no state school in Ilfov manages to ensure admission averages above 8. The rankings are dominated by schools whose admissions average is somewhere between 6 and 7, with many disaster schools not even achieving admissions averages of 6.

What can we do?

Are you thinking of moving to Ilfov or to the outskirts of Bucharest because housing is cheaper? Consider that you will become a driver for your children.

If the authorities have not built schools in 30 years, don’t expect them to do it now.

This usually means giving a bribe to an individual who will allow you to establish your residence at their home – so you can obtain a temporary residence permit in the area where you will enroll your child in school. You will spend an hour in traffic every day on the way to school, time lost for both you and your children, especially since this time is taken from their sleep. You will lose just as much time picking them up from school. You and hundreds of other parents in the same situation will be stuck in traffic jams on streets that were not designed for current traffic levels.

Public transportation is not a solution. With small exceptions, the Ilfov localities are served by pre-rural lines, with old buses and a high cadence between runs. And even if you choose public transportation, you will still have to accompany your children, especially in primary school.

Add the time needed to take children to tutoring sessions and other activities, and you will see that, in the long run, the savings made from buying a cheaper home are spent on the additional costs related to access to education.

Overall, the condominiums built during the communist era in Bucharest are the best solution for easy access to school infrastructure. It is still worth taking a look at http://www.ismb.ro/circumscriptii_scolare/circumscriptii.php to see which school a certain condominium is assigned to, preferably before deciding to buy or rent a property there.

So, what about that forecast predicting a huge population increase in Ilfov alongside a population decline in Bucharest?

Private schools

This article wouldn’t be complete without writing about private schools. So I created another map on which I put all the private schools I found on the school inspectorates’ lists. I used a color scheme similar to the state school map:

  • blue for primary schools
  • purple for secondary schools that are not listed in the admitereliceu.ro. top list.
  • green for educational establishments with an average above 9.01 in the national evaluation exam
  • yellow for educational establishments with an average of between 8.01 and 9
  • orange for educational establishments with an average between 7.01 and 8
  • red for educational establishments with an average between 6.01 and 7
  • dark red for schools in the “God forbid” category. There is only one private school in this category, somewhere in Ferentari.

You are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.

More Information
Unblock content Accept required service and unblock content

Not surprisingly, the network of private schools in Ilfov is mainly concentrated in wealthy municipalities such as Voluntari, Pipera, and Corbeanca.

Many private establishments offer only primary education. They may be a solution until more children grow up, but there is no data on the performance provided.

As for private schools that also offer secondary education, only a few of them are present in the top. Interestingly, however, these schools have achieved very good results in high school admissions, often scoring above 8 and even above 9.

We also find schools that are not present in the ranking, probably because they are newer and have not yet graduated a full generation of students.

Update: September 2022

I just found some time now and updated the maps with the 2022 results. For those interested in the old version, I’ve left links here to maps of state and private school results for 2021.

The evolution shows a “leveling up” of school results, with higher averages than in 2021. This is after the pandemic when we all know how (not so) much schooling has been done. This whole thing seems like an attempt to fool ourselves In addition, high grades create problems in sorting out students, you can end up losing your place at a good high school by one or two hundredths.

There are far too many changes between schools to take each one separately, so I’ve grouped them as follows:

Bucharest

  • Two private schools go straight into the green
  • Another private school goes orange

Changes for the worse

  • Two schools fall from “green” to “yellow”
  • Three schools drop in the ranking from “yellow” to “orange”
  • Six more schools have gone from “orange” to “red”
  • Two schools fall massively in the rankings from “orange” to “dark red”
  • A school goes from “red” to “dark red”
  • Two private schools had no candidates in the national assessment

Changes for the better

  • Five schools go from “yellow” to “green”
  • No less than 24 schools have changed from “orange” to “yellow”
  • Another 22 schools have gone from “red” to “orange”
  • Seven schools go from “dark red” to “red”

Ilfov

Also here we find a lot of changes in the ranking, overall the performance is better than in 2021

  • Two private schools enter the rankings for the first time, one on “orange” and one on “red”
  • Two state schools enter the rankings for the first time, one on “red” and one on “dark red”

Changes for the worse

  • A private school goes from “green” to “yellow”
  • Another private school goes from “yellow” to “orange”
  • Three schools go from “orange” to “red”

Changes for the better

  • A total of 16 schools go from “red” to “orange”.
  • A school takes a giant leap from “dark red” to “orange”
  • Eight more schools went from “red” to “orange”

Photo by Ivan Aleksic on Unsplash

May 16, 2022 2 comments
0 FacebookTwitterPinterestEmail
ESP8266-Thing-DEV
IoTTinkering

ESP8266 – running on battery power

by Teodor Costăchioiu May 15, 2019
written by Teodor Costăchioiu

This is an older post, originally published on my previous tinkering blog at electronza.com. While it dates back a few years, it remains just as relevant today.

At the time, I was working on an IoT node based on the ESP8266, designed to collect sensor data and upload it to cloud services.

One of the main challenges was running the node on battery power. It had to operate for extended periods with no human intervention. I had found a 9800 mAh LiPo battery that should have provided enough energy to keep it running for several months. Still, achieving that required minimizing the ESP8266’s power consumption and protecting the LiPo battery from over-discharge (typically below ~3 V).

On its own, this proved to be a challenging problem — one that deserved a dedicated blog post. So, this article is focused on two aspects: reducing the power consumption of ESP8266 modules and protecting LiPo batteries from over-discharging.


ESP8266 Low Power Modes

The first and simplest way to cut down a few milliamps was to remove the power LED.

Some ESP8266 boards had a trace that could be cut, such as the ESP8266 Thing Dev I used in the project. On other boards, the LED had to be physically removed – SMD hot tweezers were a must. Either way, this step reduced consumption by about 8–10 mA.

Next, I looked into the ESP8266 sleep modes. There were three sleep modes, summarized below:

Modem sleepLight sleepDeep sleep
WiFiOFFOFFOFF
System clockONOFFOFF
RTCONONON
CPUONPendingOFF
Substrate current15mA0.4mA~ 20µA
Avg. Current DTIM = 116.2mA1.8 mA–
Avg. Current DTIM = 315.4 mA0.9 mA–
Avg. Current DTIM = 1015.2 mA0.55 mA–

* On some routers, you cannot change the DTIM value

ESP8266 Deep Sleep

The most interesting mode for a sensor node that periodically woke up and sent data was deep sleep.

In the Arduino IDE, the ESP8266 could be put into deep sleep using:

ESP.deepSleep(sleepTimeSeconds * 1000000);

As shown in the example below:

#include <ESP8266WiFi.h>

/* ESP8266 Deep-sleep mode */
void setup() {
  Serial.begin(115200);
  Serial.setTimeout(2000);

  while(!Serial) { }

  Serial.println("I'm awake.");
  Serial.println("Going into deep sleep for 20 seconds");

  ESP.deepSleep(20e6); // 20 seconds
}

void loop() {}

However, there was a catch: to wake up the ESP8266, the RST pin had to be connected to GPIO16 (WAKE).

  • On the ESP8266 Thing Dev, this was done by closing the SJ2 jumper
  • On other boards, a wire connection between RST and GPIO16 was required

Another aspect is that the ESP8266 will lose everything in its memory, and it will run the code just as it does when it’s powered on for the first time.

Of course, one can save some context variables in the EEPROM. But if a node wakes up every five minutes, this will result in having 288 writes to the EEPROM per day. The AT25SF041 used by ESP8266 Thing Dev is rated for 100,000 Program/Erase Cycles. That means that the EEPROM will wear out in less than one year.

ESP8266 – Turning Off the Modem

This is a neat trick I found in the Arduino examples, in the ESP8266 board version 2.5.0 (or higher). It allows the ESP8266 to start with the modem off, then start the modem at the desired moment in the code. When dealing with slow sensors, such as the DGS-H2S from SPEC Sensors, one can use this trick to keep the modem off while the sensor data is collected and turn it on just before uploading to online services.

#include <ESP8266WiFi.h>

#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK  "your-password"
#endif

void preinit() {
  ESP8266WiFiClass::preinitWiFiOff();
}

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);

  Serial.println("sleeping 5s");
  delay(5000);

  Serial.println("waking WiFi up, sleeping 5s");
  WiFi.forceSleepWake();

  delay(5000);
  Serial.println("connecting to AP " STASSID);

  WiFi.mode(WIFI_STA);
  WiFi.begin(STASSID, STAPSK);
}

void loop() {}

During testing, a simple ammeter showed that consumption stayed around ~20 mA with WiFi off and increased to ~75–80 mA when WiFi was active.

Protecting the battery

This is where things become interesting. By design, most ESP8266 boards do not allow direct measurement of the battery voltage (Vin) without external components. However, there was a workaround: one can detect a discharged battery indirectly, by measuring the input voltage of ESP8266 – that would be V3.3.

This was enabled by adding:

ADC_MODE(ADC_VCC);

and reading the value with:

uint32_t voltage = ESP.getVcc();

as shown in the example below:

// Load Wi-Fi library
#include <ESP8266WiFi.h>

// Replace with your network credentials
const char* ssid     = "myssid";
const char* password = "mypassword";

ADC_MODE(ADC_VCC);
uint32_t Batt;

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

void setup() {
  Serial.begin(9600);
  while(!Serial);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          
          // output the battery value
          Batt = ESP.getVcc();
          client.println("Battery voltage is: ");  // refresh the page automatically every 5 sec
          client.println(Batt);
          
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }

}

the ESP8266 is configured to read the V3.3 voltage by placing ADC_MODE(ADC_VCC); on top of the sketch. Then, the battery voltage in mV is read as in uint32_t getVcc = ESP.getVcc();

In my experiments, I found the following relationship among Vin, V3.3, and the voltage measured by the ESP.getVcc(); This applies to the ESP8266 Thing Dev, which uses AP2112K-3.3V LDO regulator. Some other boards might behave differently, so you will have to redo my experiment.

ESP8266 battery test
VinV3.3Vmeasured/1000
53.29043.475
4.93.29053.475
4.83.29053.475
4.73.29043.474
4.63.29053.475
4.53.29043.474
4.43.29053.475
4.33.29053.475
4.23.29063.475
4.13.29053.475
43.293.474
3.93.28993.474
3.83.28993.474
3.73.28983.474
3.63.28973.473
3.53.28973.473
3.43.28953.472
3.33.25753.44
3.23.1533.331
3.13.05553.226
32.9473.106
2.92.7752.936
2.82.72.87

In my experiments (performed on the ESP8266 Thing Dev, which used an AP2112K-3.3V LDO regulator), I observed the following:

  • There was an offset of about 0.18 V between the measured value and the actual V3.3
  • The voltage remained stable while Vin was above 3.3 V (regulated region)
  • Once Vin dropped below 3.3 V, the regulator output began to drop

Most importantly:

  • When the battery voltage reached ~3.0 V (a safe discharge limit for LiPo batteries), the value returned by ESP.getVcc() was about 3100 mV

This provided a practical threshold for detecting low-battery conditions.

// Low voltage detection
// Note that we read Vin, and not the battery voltage,
// as the battery voltage is not accessible to be measured
// ESP8266 thing uses AP2112K-3.3V
// https://www.diodes.com/assets/Datasheets/AP2112.pdf
// Low DropoutVoltage (3.3V): 250mV (Typ.) @IOUT=600mA+

#include <ESP8266WiFi.h>

ADC_MODE(ADC_VCC);
int Batt;

// do other things here

void setup() {

  // ********************************************************************************
  // Check battery status
  // ******************************************************************************** 
  // Reads Vin (not battery voltage!!!)
  // But Vin = battery voltage if battery_voltage < 3.3V
  Batt = ESP.getVcc();
  // If the battery is discharged don't go any further!!!
  if(Batt < 3100){
     // Deep sleep for as long as you can
     ESP.deepSleep(ESP.deepSleepMax());
  }
  // your code goes here
}

void loop() {
  // your code goes here
}

In this approach:

  • The voltage was checked immediately after boot
  • If the value was below the threshold, the ESP8266 entered deep sleep for the maximum possible duration
  • It periodically woke up, checked again, and returned to sleep if needed

It is worth noting that other components (such as sensors) still consumed power, but the overall discharge rate was significantly reduced.

May 15, 2019 0 comments
0 FacebookTwitterPinterestEmail

Recent Posts

  • Why I Shut Down a Few Websites — And What Comes Next
  • Schools in Bucharest and Ilfov – a view from high above (2025)
  • Schools in Bucharest and Ilfov – a view from high above (2024)
  • Digiteca Arcanum: a journey into the past
  • Connecting .ro domains to Blogger / Blogspot

Recent Comments

  1. Schools in Bucharest and Ilfov – a view from high above (2024) - Teodor Costăchioiu on Schools in Bucharest and Ilfov – a view from high above (2021-2022)
  2. Schools in Bucharest and Ilfov – a view from high above (2025) - Teodor Costăchioiu on Schools in Bucharest and Ilfov – a view from high above (2024)
  3. Schools in Bucharest and Ilfov – a view from high above (2025) - Teodor Costăchioiu on Schools in Bucharest and Ilfov – a view from high above (2021-2022)

Social Connect

Linkedin Github

Search

Recent Posts

  • Why I Shut Down a Few Websites — And What Comes Next

  • Schools in Bucharest and Ilfov – a view from high above (2025)

  • Schools in Bucharest and Ilfov – a view from high above (2024)

  • Digiteca Arcanum: a journey into the past

  • Connecting .ro domains to Blogger / Blogspot

Categories

  • Announcements (1)
  • Data Explorations (4)
  • Personal projects (1)
  • Tinkering (1)
    • IoT (1)

Remote sensing engineer exploring Earth through data and code. Currently at GeoSense, NUST Politehnica Bucharest.

Contact

  • Contact

Currently living in Bucharest, Romania

Linkedin Github Rss

Resources

  • Google Scholar
  • ORCID

Personal projects

  • Photography portfolio
  • Cooking blog

© 2026 Teodor Costachioiu. All rights reserved.

Teodor Costăchioiu
  • Home
  • Notes
  • About
    • Career
    • Publications
  • Contact
  • English
    • Română
  • English
  • Română (Romanian)