02 October 2026

In Dangerous Dave it's possible to identify the fall-through pink girders via a lighter pixel

Dangerous Dave: Level 6's secret entry to level 8's warp zone treasure room

All these decades I used intelligent guesswork to figure out which of those pink girders (or metal bars, as I prefer calling them) in Dangerous Dave were walkable and which were not. Today I watched a walkthrough where a person pointed to a pixel difference between the areas that were walkable and the ones that were fall-through. It left me surprised that I didn't notice it for so long. I'm quite sure it'd have been noticeable even on black & white screens.

The lighter pixel hint about fall-through areas

The ones with the lighter pixels are the fall-through areas. This knowledge made it so much easier to navigate levels 9, 10 and the warp zones. This was quite similar to how people discovered many decades late that pressing A+Start allowed them to continue at the position Mario died.

Trivia

PCR = PCRcade

The PCR you see in level 2, was apparently PCRcade or PC Arcade, which was the name of the gaming department at Softdisk.

John Romero told me about the screen scrolling detail

In 2014 I wanted to know how the screen was scrolled in the game, and when I asked about it, John Romero himself replied this: `My 1988 version of Dangerous Dave was the Apple II version. The scrolling was done by moving all the screen bytes over then drawing a new tile on the edge of the screen - repeat 20 times for a full screen shift. The Apple II version was written all in 6502 assembly language. On the PC, the 1990 version, I wrote graphics code in 80x86 assembly language for all video modes at the time: CGA, EGA, VGA. Dangerous Dave PC is the only game I know of that has all 3 video modes in it and switchable at any time (F2), even in the middle of a jump! To scroll the screen quickly, it was all in assembly language and I used a similar technique as I used with the Apple II version - quickly move bytes in video memory and draw a tile on the right side. In EGA it was trickier because to do anything quickly in EGA mode required the use of Latch Mode for memory moves. I remember teaching Todd Replogle how to do that so Duke Nukem 1 would be a fun game (a slow Duke Nukem would not have been cool). The game code for Dangerous Dave PC was written in C, in the Borland C 3.0 IDE. Most debugging was done in Turbo Debugger on a 12" amber monitor plugged into a Hercules card.` 

John Romero says more on his website

This website is where he says the weeds are WeirdWeeds, the fire is FearsomeFire and the water is WickedWater. He wanted to make something like Mario, but gave Dave a jetpack and gun to make it a bit different from Mario. About level 7 John mentions "There IS a curious second exit on the right side of the level. You can either get there by warping from another level...or by falling through one of the water tiles - only if one of them is fake. Don't blame me if you die!". The "warping from another level" is meant to mean the 9th level warp zone (shown in the screenshot below), because you can see level 7 from there, but the mention of the water tiles being fake is a joke (that's why he says "Don't blame me if you die"). Those water tiles are not fake. All of them can kill Dave. 
 
Level 7 visible from level 9's warp zone

 
John Romero. Image attribution: gamesbeat.com

These (image below) are the upside down trees that John Romero mentions about level 2. It's not in the 1990 DOS version of the game. It was the older Apple II version.
 
Upside down trees of level 2

 

Purpose of collecting the trophies

Apparently Dave's enemy, a bully named Clyde Cooper stole Dave's skateboarding or high-jumping trophies from Dave's clubhouse and hid them in some abandoned pirate's hideout, and Dave is on a mission to retrieve his trophies. Quite surprising that he's willing to risk his life for some trophies. Also, if I could present some silly observations, I found it surprising that the hideout didn't have any toilets or snacks (other than those pink gumballs) anywhere. Clyde and the pirates must have had some mighty bladder and bowel control. Oddly Dave can't carry the jetpack and gun across to other levels. Also, why couldn't Clyde just hide the trophies in his house or in a bank locker? Did he put it in the pirate's hideout to put Dave through mortal danger? How did Clyde and the pirates get through the levels? Surely they would've used a secret entrance or had a way to switch off the dangers or used a bridge or their own jetpacks (in which case they should've had some jetpack fuel storage somewhere)? These are things that game designers don't tend to think about :-) You never get to see Clyde in this game or the subsequent games. So if there was no boss fight with Clyde, maybe Dave didn't take revenge on Clyde, Dave might either be a follower of ahimsa or chose to follow what he learnt from somebody about forgiving people :-) Whatever dangers the hideout contained seemed to be made of highly combustible material, since it caused Dave's entire body to burn. 

The Dosbox versions of the game seemed to not correctly play the sound of Dave collecting the trophy. The image below is what I got from this link on MyAbandonWare and it's also present on MobyGames. I wonder if Clyde was based on some real bully that John encountered in school. 

What Clyde Cooper looks like, and the story behind Dangerous Dave. Image attribution: MyAbandonWare website and MobyGames website
 

Dangerous Dave 1990 was always freeware

John Romero mentioned on Twitter in 2021 that "The 1990 Dangerous Dave was made for free distribution- it was freeware. Never sold". The game was originally dedicated to Kelly Romero (John's first wife, I think). Another programmer named Lane Roath is said to have designed level 9. The game was first made with some humble-looking graphics as shown in the title screen below:

The Apple II title screen of 1988

 

If you want to play the 1988 Apple II version

I tried playing it. The controls are incredibly annoying, so by level 3 I stopped playing it. If you still want to try it out, you need to first download the release of AppleWin1.31.0.0 from here (less than 5MB, and it was meant for Windows Vista and perhaps later versions). For WindowsXP you'd need Release v1.30.21.0 which can be found here. Then download the `.dsk` file from here (download options are on the left side) or here. There's also a `.po` file here. Both `.dsk` (Disk) and `.po` (ProDOS Order) files are virtual floppy disk images. `.dsk` is a generic image format containing an exact, sector-by-sector copy of the physical 5.25-inch floppy disk John Romero used in 1988, and `.po` is a slightly more modern variant structured specifically for ProDOS, the standard Apple II Operating System that Dangerous Dave runs on. Run the Apple emulator and at the right side you'll see icons for inserting a disk. Click it to insert the `.dsk` or `.po` file and then click the multicoloured Apple icon to start the disk that you just inserted. If you run into any trouble, press F3 to reboot the emulator. 

The two buttons that matter on the Apple emulator

If you want to play the 2021 Dangerous Dave

It's a paid version that costs €6.99. You can download it here. It has even the older versions of the game. From what I assume, the payment goes to John Romero, so it's a nice way to honour his work.

The 2021 version of Dangerous Dave

There's also a fan made edition

Can be downloaded here for free or for whatever you'd like to pay the programmer. It's made with Unreal Engine, and is available on Android too.

Fan-made version of Dangerous Dave

Long ago even I had tried making an equivalent in BASIC, but there was much I didn't know about performance optimization in BASIC.

My aborted attempt at creating an equivalent

 

I had named the monsters (did you?)

Level 3: Spider monster (even John Romero calls them spiders)

Level 4: Turbine monster

Level 5: Sun monster

 Level 6: Matchstick monster


Level 7: Flying saucer monster (John Romero calls them gumball monsters)


Level 8: Apple core monster 

Level 9: Jiggly monster

Level 10: Coin monster


Some other hints

Warp zones

Most people easily figure out that there are warp zones at levels 5, 8, 9 and 10, if you make Dave walk on top of the level and move over to the edge of those levels. The 9th warp zone is exceedingly easy, and entirely worth entering for some extra points. The 10th warp zone is tough and is best avoided. Each warp zone contains one of Dave's trophies, so there's actually a total of 14 trophies that Dave needs to collect. If you consider the 2021 version of the game, there would be 15 trophies, considering the 6th level warp zone. The warp zones were meant to be something like how Mario enters the green pipes.

Wall climbing ability

In level 5 if you position Dave in such a way that his cap is projecting just a bit into the wall while standing at a gap beneath the wall, you can make him jump and climb up the wall. This is actually a bug as stated in this wiki.

Secret entry to level 8 warp zone via level 6

If you see the image at the start of the blog post, Dave is in level 8's warp zone while still in level 6, and he has the jetpack too. In level 6 if you go through the door without taking the trophy, you can walk on top of the level, go toward the right side and jump across onto level 8's warp zone. This is super-convenient because you have the jetpack and you can gain a very high score by collecting all the crowns. This entry ability to the top of level 6 was actually supposed to be a bug which this wiki states was later fixed in 2021 to become a warp zone for level 6, where you enter the previously inaccessible area that you see in level 3. If you try this in the 1990 version, the game will end up freezing with an error.

The level 6 warp zone is said to have been added in the 2021 version. Image attribution: moddingwiki.shikadi.net

Level 8 easier monster view 

After falling through the gap in the fire in level 8, when you reach on top of the level, it helps to walk rightward all the way to the end, and the screen shifts slightly. Then when you walk back and fall down to enter the level and reach the weird weeds, it's easier to see and shoot the monster from far because of that earlier slight screen shift. 


You don't have to kill level 4's monster

It's actually possible to avoid the monster and go through the level without colliding with it, but it is indeed far easier to collide with it and then go through the level with peace of mind. Particularly because if you collect enough of the treasures in that level, then by the time you complete the level you get back the life that was lost.

Level 10 easier monster shooting

It's easier to shoot the first monster if you first fall through the pink girders and hide below it while occasionally jumping up to shoot the monster. Of course there's also the option of not jumping in there and just repeatedly jumping up from outside that area to shoot, but it's difficult to get a good shot from far. The second monster can be shot easily if you first walk on the top of the level all the way to the right end of the screen and then return. 

 

You can play the game online

If you feel nostalgic you can play the game online here, here or here. I tried playing the subsequent Dave games like Dangerous Dave in the haunted mansion, but the graphics were too bland and there was nothing interesting in the gameplay. They should've retained the shiny graphics, cool sounds and motion of the 1990 game.

I played it once again and it was still entertaining. I've played it from start to finish in less than 20 minutes. It's possible if you don't bother collecting too many treasures, avoid monsters that you can avoid, and play carefully enough that you don't lose too many lives.



Do try playing Dangerous Dave here ...

If you want to know some trivia about Prince of Persia, see this blog post I wrote.

 

A request: Human eyes aren't evolved to stare at a screen for too long, so gaming can be strenuous on kids eyes. I tried requesting the developers of some game engines and a person related to Steam, to try to do something about allowing for rest breaks by providing inbuilt features that allow taking breaks even during multiplayer games. Nobody bothered. If you could do something about it, please do. Else, please do the minimum of telling more people about The Real Cure for Eye Strain.

06 September 2026

How to search for words in multiple PDF files easily

While I initially wanted to create a Python program for searching multiple PDF files, I came across a much simpler commandline solution that outputs nice colour coded string matches when searching PDF files. Linux really is wonderful in this respect. MacOS also supports pdfgrep.


For LInux & MacOS: PDF Grep

First install it:

sudo apt-get install -y pdfgrep

Or on MacOS use: brew install pdfgrep 

Then open up a terminal and search with this syntax:

pdfgrep <flags> <search string> <path where the PDF files are>

So if I'm searching for "Bommasani", I'd use:

pdfgrep -Ri 'Bommasani' .

The "R" is for a recursive search which also follows symlinks. If you don't want symlinks to be explored, you can use "r". The "i" is for not being case sensitive. There are more such parameters you can see if you type:

man pdfgrep

Enjoy this simple way of searching PDF's.

 

Purely commandline

If pdfgrep isn't available for whatever reason, you could try:

find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your search string"' \;


For Windows

You can use Agent Ransack or dnGREP or even Adobe Acrobat Reader which has an advanced search menu for "All PDF Documents in" and specifying the folder.
 

09 August 2026

A Gradle line that helps avoid massive Flutter downloads during builds

When building Flutter projects I noticed that sometimes, Gradle task 'assembleDebug' would run even if I had already built the project successfully earlier, and it downloads upto 500MB or sometimes almost 1GB of downloads. If I make changes to the code and try to run it again, the Gradle task 'assembleDebug' does some 200MB or 300MB of downloads again just to be able to build the APK. So I had a look at the size of the folders and found transform outputs for specific dependency variants. Gradle appeared to create separate folders because transforms are variant specific. Each project+ABI+build type+dependency version probably creating a new transform cache and flutter's AOT engine resulting in native `libflutter.so` files multiplying across architectures.


 

When I raised this as an issue, the Flutter developers asked for details and tried to dismiss it as an environment issue on my computer. But I kept investigating and found that adding `org.gradle.caching=true` to `<my_flutter_app_folder>/android/gradle.properties` solved the problem. I did a bit more digging and added two more lines. This is all you need to add to the `gradle.properties` file:

org.gradle.caching=true

org.gradle.parallel=true 

org.gradle.daemon=true 

10 July 2026

Short tutorial on SIR (Special Intensive Revision) form filling

The Special Intensive Revision is conducted to verify and revise electoral rolls to ensure that the data is accurate. It was conducted in 2002 in Karnataka, and voters of 2026 are expected to find their 2002 data or their relative's 2002 data and mention it in the 2026 form. I decided to create a short tutorial. This is primarily to resolve confusion of how to fill the form.

Disclaimer: I'm not an expert on this topic. I'm not writing this in any official capacity. Make sure you verify the information provided here and consult your BLO (Booth Level Officer) or AERO (Assistant Electoral Registration Officer) or ERO (Electoral Registration Officer) for accurate and updated info. 

The short version

1. Find your existing voter details: Search for your voter id number on the electoralsearch.eci.gov.in website or from the voter helpline app, and your detailed voter information page will show you who your BLO and ERO is. Or you can call the helpline or see this page to find out. Save their phone numbers and also note down your "Part serial number" and "Part number".

2. Get your form from BLO: Tell your BLO your Part number to confirm if it is the correct BLO. Ask your BLO when and where you can get your enumeration form. When you meet your BLO, mention your Part serial number and take both copies of your enumeration form from your BLO. Also ask the BLO for a blue/purple sticker which you need to stick on/near your house door. Sign on the BLO's register to confirm you got your form (you can collect your family member's forms on their behalf).

3. Find the 2002 data: Use the ECINET app or the voters.eci.gov.in website to search for your 2002 SIR data and your relative's 2002 SIR data. It's easier to search via the website on a laptop/desktop computer than on a phone. Select the state, district and assembly constituency you are most likely to find your data (you can ask an AI which district and assembly constituency your address might have been under in 2002). Type your name or your relative's name in "Elector full name in last SIR in 2002" and try variations of the name and surname. Type the captcha and search. If any list of names is shown, notice that at the top of the table there's a search bar and a translate button you can use. Once you find the relevant data, take a screenshot of it and copy the exact text of the Elector full name, Relative full name, Relative type, District, State, AC Name (AC is Assembly Constituency), AC Number, Part No. (Polling station No.), Part Sr No. It is important that you copy all this data exactly as it is given in the 2002 data even if there are spelling mistakes. Do not make changes to it.

4. Fill the forms: In the enumeration form, fill the "Details of the Elector in the Electoral Roll of the last SIR" section only if you found your data in the 2002 SIR data. You are supposed to enter the data exactly as it was in the 2002 data. The section for "Details of the relative whose name is given in the previous column in the last SIR" is to enter the data of your blood-relative (father, mother, grandfather, grandmother regardless of where they registered for the 2002 SIR in India), and even in this section you should enter the data exactly as it is in the 2002 list. Then fill the compulsory section where you type your date of birth, mobile number, parent's name, etc. Fill both forms. Then if you want to update your photo, stick a passport size photo in one form and sign it.

5. Submit forms: Show both forms to the BLO. Take a photo of both forms for your reference. Submit one form to the BLO. Make sure you get the BLO's signature as an acknowledgement on the second form. You can keep the second form with you as proof of what you submitted.

More details

The English version of the form is provided here and here's a video tutorial.

Top column

Option to update your photo
Here even if your name and address is printed wrong, you cannot immediately correct it. I remember reading somewhere that the BLO can correct it for you. The other option might be to submit the SIR form and later submit form 8 for corrections. You should ask your BLO for how to proceed. For now you can at least update your photo by pasting a new passport size photo in the "Paste Current Photo" column (I remember reading somewhere that the background of the photo should be white).

Your 2002 data section 

Write your 2002 SIR details only if you could find it
If you could find your data in the 2002 SIR list and if you are alive, only then you should enter this data. Otherwise do not guess or assume any info and write it. It could very likely be a punishable offence. It does not matter which part of India you were in for the 2002 SIR. If you can find that data, you can enter it in this section. This is called "Self mapping", where you are mapping your old data to your new data. 

  • Elector Name: Your name exactly as it is written in the 2002 list. Even if there is a spelling mistake do not make any corrections to the spelling. No need to write the correct spelling in brackets either because this data is only for connecting to old data. Name corrections are to be done via form 8 later.
  • EPIC No.: If the EPIC number is available in your 2002 data, write it exactly as it is in the 2002 data. I have seen cases where the EPIC number is mentioned wrong, so in such cases I think it might be better to avoid writing it since it is optional. Ask your BLO for clarifications.
  • Relative's name: If you had mentioned your relative's name in 2002, enter it exactly as it is in the 2002 list even if the spelling or initials are wrong.
  • Relationship: Even if the relationship is written as "Other" in the 2002 list, write it exactly as it is.
  • District: The name of the district mentioned in the 2002 list. 
  • State: The name of the state mentioned in the 2002 list.
  • AC name: The Assembly Constituency name as mentioned in the 2002 list. You'll have to sometimes provide an AI like Gemini or ChatGPT a list of the Districts and the AC's of each district (as mentioned in the 2002 search tool) and ask it which district your current location might have been part of in 2002, because sometimes AC's or districts are split into new AC's or districts. For example, Uttarahalli (Famous for being the largest constituency in India prior to 2008), later split into 8 separate segments like Padmanabhanagar, RR Nagar, and Bangalore South.
  • AC number: Each assembly constituency has a number mentioned near its name. Write that number as it was in 2002.
  • Part No: Enter your part number as shown in your 2002 data. It's unfortunately shown as "Polling station No." in the search tool. "Part" refers to a specific geographic area or neighborhood within an Assembly Constituency that is mapped directly to a single polling station. It's different from a polling booth which is simply a building where people go to vote, but in this case it'd be the polling station number. 
  • Part Serial No.: This is your personal serial number (voter number) inside that specific Part's voter list. For example, if you are the 45th person listed in your neighborhood's roll, your Part Serial No. is 45.

Your relative's 2002 data section

Write your relative's 2002 details only if you could find it

This section is called "Progeny mapping", to link you to your blood relatives. If you could find your relative's data in the 2002 list (no matter where in India they were) and if you are alive, fill up this section. Else, leave it blank. Do not try to guess or assume any data. Your relative cannot be your in-laws. It has to be either your grandparent (maternal or paternal) or parent (there are websites like this, this and this which say uncle/aunt or sibling could be mentioned, but I don't know how far this is feasible because the software has options only for parents and grandparents). For adopted children, I think they need to enter their adoptive parent's details, but I'm not sure, so please ask your BLO.

  • Name: The name of your relative exactly as given in the 2002 list. Do not add "Late" or "Deceased" or "Expired" in brackets if they died.
  • EPIC No: If mentioned in the 2002 list, and if wrongly mentioned, then perhaps skip it (ask your BLO for confirmation)
  • Relative's name: The relative's name which your relative mentioned in the 2002 list. Do not add "Late" or "Deceased" or "Expired" in brackets if they died.
  • Relationship: This is not about your relationship to that relative. It's the "Relative type" as mentioned in the 2002 list. If they've written "other" instead of "Father" etc., you are supposed to write "other". It has to match the 2002 data exactly.
  • District, State, AC Name, AC Number, Part No., Sr.No: As written in the 2002 list, and as I explained in the section above. 

Your correct data section 

This section is necessary to fill with accurate data
 

This is simple enough to fill in. Mention your correct date of birth, correct Aadhaar number (optional), correct mobile number, name of the father, mother, spouse and the EPIC id's (as mentioned in their voter id because this enumeration stage is to map data correctly to family members). If it is a pre-printed form of a person who already died, I don't think you need to fill the form. There's a separate form for that. Speak to the BLO or an SIR helpline about what needs to be done, and especially ask about what if the parent's or spouse name spellings are wrong in their voter id.

When filling parent's names into this section, if they have already passed away I think their names can be prefixed with "Late" or mention "(expired)" after their name. Ask your BLO for clarifications. As for spouse, if you are a widow or widower, I think you are supposed to omit the spouse name. Again, ask the BLO to be sure.

 

Resources

 

Questions people usually have

What are the consequences of missing SIR? 

I think your name may not be included in the updated electoral rolls. I think you would need to go to the voter services portal and submit form 6 so that you are re-included into the electoral roll. I'm not sure of this. You need to consult your BLO or ERO.

What if you could not find your 2002 data or entered it wrong?

As per this post you might be marked "unmapped" and be considered a new voter (but there might be a chance you could be removed from the electoral roll if a notice is issued and you do not go for the hearing, so you need to confirm with your BLO about what they do in such cases). From August 5th 2026 onward (in Karnataka) the ERO may issue a notice for you to submit documents to establish your eligibility to vote. The list of documents is given in the back side of the form. It is important to not guess any of the 2002 data and instead, write the 2002 data only if you could find it. It's better to try and find the 2002 data and enter it, because the process of going through the notice and hearings might be difficult depending on how it is managed.

Fill form 8 to make corrections to pre-printed name before submitting the enumeration form?

Probably not. The form 8 submission and SIR submission follow different workflows, and it's probably only after the draft electoral rolls are published that the officers might take a look at the form 8 submissions. There's a guide for how to fill form 8. When I asked my BLO if she could approve a correction via form 8, she said she didn't receive instructions to process form 8, so it seems like it won't be done during the enumeration form filling phase.

Corrections to the form in whitener or strike out?

First, compulsorily fill the form in pencil. Only after you are 100% sure of the information and ready to submit, you can write with pen. After writing with pen if there are still corrections, my BLO said that whitener needs to be used and after it dries the person can write on top of it, but this article says there's no clarity on whitener use but you can strike out what was written and write the correct info next to it and sign perhaps at the side of the form, to indicate that you did the strike out.

Why is the SIR being done?

This post says it's a comprehensive update of the electoral roll which is different from the SSR (Special Summary Revision) which updates fewer details. The SSR helps remove duplicate entries too (people registered in multiple places). It helps the electoral roll remain accurate.

What if the BLO does not visit the house?

You don't have to wait. You can fill the form online (the BLO may still conduct a physical verification if required) or visit the BLO or ERO or local election office or call the election helpline for help. I think even after filling the form online you need to inform the BLO about it and they need to approve it.

What if there are mistakes in the current voter id or the pre-printed part of the enumeration form?

After the draft electoral roll is published, fill form 8 to make corrections. 

How to prove that the relative in the 2002 electoral roll is a relative?

Normally if the data is found in the 2002 list that itself would be sufficient to link you to the relative. If the BLO/ERO is not convinced they'll ask for documents during the verification phase. You don't have to submit any supporting documents while submitting the enumeration form.

What if it's difficult to find a relative's details due to estrangement, death or other family issues?

You can search the 2002 list or explain the situation to the BLO/ERO and they should help you find the relevant data. 

What if a person has moved to a different address?

SIR helps in verifying address changes too, so submitting form 6 or form 8 as appropriate would help fix the issue. You could ask your BLO/ERO.

What if a person's name is missing in the electoral record now?

Contact the BLO/ERO. They can help trace the historical record. 

Some people are writing "Late" or "Expired" in brackets near the name of their father/mother. Is it ok?

For the non-2002 section it's ok.

If any part of the form is not to be filled, should it be left blank or should a horizontal line be drawn there or should the person write "Not applicable"?

Nothing wrong with leaving it blank, but an AI told me there's nothing wrong with drawing the horizontal line, but it's better not to write "Not applicable". 

If self or relative's details like name or age or relationship of the 2002 details are wrong in the 2002 data?

Multiple sources say there might be an opportunity in the corrections phase to correct the data after submitting proof, but I'm not sure. Update: As of September there was no opportunity provided to do the corrections online.

Will the BLO require signing a register on submitting the paper form?

My BLO made me sign a register when accepting the form and when returning the form too. Although as long as you have the BLO's signature on your second form, I think that should be sufficient proof of submission. 

What if self or relative's EPIC number is not available in the 2002 data or is listed wrong? 

It's optional to write it.

In the portion where we write our father and mother's name, is it ok to write the name in English and then write the name in brackets in the regional language?

I've been told by an SIR helpline that it's ok. But don't do the same thing for the 2002 data. 

Who can help if I have questions?

There are various SIR helpline numbers and email id's online. You can also meet your BLO and ask (at least in my place they gather at the BBMP office in the evening).

What if I lost my paper form?

Not sure what the process is, but you could approach your BLO or ERO to print it again. The other option is to submit it online. I wrote to the election commissioner to request making pre-printed PDF forms available online so that we could take a printout ourselves, but got no reply.

What precautions can I take?

Fill the form using pencil first, confirm all the details and then write in pen.

My form is in Kannada. Can I fill the form in English?

Yes 

What if a person had a different spouse in 2002 and what about children born to different spouses in 2002 and 2026?

For 2002 the details of the 2002 time need to be retained. For the child, whatever is mentioned in the child's document as the parent's name is to be mentioned. Again, please ask your BLO to confirm.

What if I'm marked as ASDDO?

Some info about it here. It is important that you check if your name is in the ASDDO list or not.

When will the notices be served?

As per this website, between August 24 and September 23 (draft roll publishing. you can see your new part serial number here and accordingly navigate the draft roll), the period for claims and objections will run parallel to the notice process. During this period, voters can submit Forms 6, 7, and 8. The notice process might continue until October 22. There is no way for a voter to check online whether they have been flagged for an anomaly but in some cases might be available at the panchayat or polling stations. September update: Notices are issued to people listed here. You might have to go to the BLO to get a copy of the notice if it has not reached you. This page explains why you may have received a notice (swipe left on the rectangular sections). 

What happens if a person is removed from the final electoral roll?

They'd have to submit form 6 to register as a new voter. 

Which documents to submit for a notice received?

See the back side of your SIR enumeration form (English version is here). 

  • If you are born in India before 1/7/1987, submit any document for Self from the list below establishing date and place of birth. 
  • If born in India between 1/7/1987 and 2/12/2004, submit any document for Self from the below list establishing date and place of birth and also provide any document of either your Father or Mother, establishing their date and place of birth. 
  • If born in India after 2/12/2004, provide the documents for Self from the list below and a document of your Father establishing his date and place of birth and a document of your Mother establishing her date and place of birth. If your parent is not Indian, provide a copy of his/her valid passport and visa at the time of your birth. 
  • If born outside India, attach proof of birth registration issued by the Indian Mission abroad.
  • If acquired Indian citizenship by Registration/Naturalization, attach certificate of registration of citizenship. 

Documents that can be submitted (separate self-attested documents (I think photocopies of documents) should be submitted for Self and/or Father and/or Mother):

  1. Any identity card or pension payment order issued to a regular employee/pensioner of central or state govt. or PSU.
  2. Any identity card or certificate or document issued in India by the government or local authorities or banks or post office or LIC or PSU's prior to 1/7/1987.
  3. Birth certificate issued by a competent authority.
  4. Passport.
  5. Matriculation/educational certificate issued by recognized boards/universities.
  6. Permanent residence certificate issued by the competent state authority.
  7. Forest right certificate
  8. OBC/SC/ST or any caste certificate issued by the competent authority.
  9. National Register of Citizens (wherever it exists).
  10. Family register maintained by govt. officials under any statutory/administrative regulation.
  11. Any land/house allotment certificate by government.
  12. For Aadhaar, the commission's directions issued vide letter No. 23/2025-ERS/Vol.II dated 9/9/2025 (Annexure II) shall apply (it's basically a Supreme Court order which says Aadhaar can be used as the 12th option for documents that can be submitted for SIR, but it's a proof of identity and not of citizenship). 

How to prepare for the notice hearing?

Take the original documents, voter id, the self-attested photocopies of the documents, your notice (if you've received it, else the BLO should have it), some water and snack (in case the wait is long), find the floor where your BLO is at (my BBMP ward office had pasted helpful printouts of where each BLO is, the building had an elevator, toilets, and they had some spare chairs for people to sit). Your BLO would have told you when to arrive. Just go at the designated time, show the documents to the BLO. Some BLO's use their mobile phone to take photos of the document and photos of you. Some BLO's use their phones and a laptop to record the info onto a specialized software and a spreadsheet. Everyone was calm and helpful. If the notice is issued due to a problem with the relative you mentioned in the SIR form, you may need to carry along proof of your relationship with the relative (but I'm not sure).

This person has posted a rant which says you need to know the serial number of where your name is on the list, so when going for the hearing, be prepared with all such info (new part serial number in the draft roll, the serial number in the list of notices issued). Chances are all this won't be required. Apparently even some people who filled their names correctly have been issued a notice. There are discussions online like this, this, this, this and this, regarding the SIR notice. 

Can any other family member go for the hearing (for the notice received)?

No (but recently some concessions were allowed for senior citizens, persons with disabilities, sick people and people overseas). You have to be there in person. If a family member is very unwell, I'm quite sure the BLO would oblige to come home to get the formalities done. It's not compulsory to go on the exact date the notice specifies. You always have the option to select a different date. Speak with the BLO or ask a friend or family member to speak with the BLO on your behalf.

Is there any point in going through these processes? Why vote?

If you have children, it is useful if they would have your SIR data as a point of reference for their own sake, in the same way that the 2002 SIR data was useful. Having a voter id is useful as id proof and for certain government benefits. Having the right to vote is said to be an honour for a citizen to play a role in shaping the course of democracy of the nation.

30 June 2026

OCR program to transliterate PDF pages from regional languages to English

With the Special Intensive Revision of voter lists being done in Karnataka, and the 2002 voter lists being primarily in Kannada, I needed a way to transliterate the PDF files to English. 


So I vibecoded this Python application which can be used either from the GUI or via the commandline. Since some pages may be scanned, and hence the text may not be digitized, or even if it is digitized it may not be in a format that can easily be converted to the desired Unicode format, I decided to process the PDF using Optical Character Recognition (OCR).

The program writes the recognized regional language words into a text file and writes the transliterated text in brackets right next to it.

This is a very basic version of the program. There is much more that can be done to improve it. I considered many other libraries, but there seemed to be too much of a download requirement to use many of them. These are the approximate size requirements info an AI gathered:

  • PyMuPDF (PDF parsing): ~40 MB to 90 MB
  • PaddleOCR (OCR): ~800 MB – 1.2 GB
  • Tesseract (OCR): ~5 MB (+ ~15 MB per language pack)
  • PP-Structure / LayoutParser (page layout detection): ~150 MB to 500 MB
  • fastText (language detection): ~1 MB (or ~120 MB for full fastText model)
  • indic-transliteration / Aksharamukha (transliteration): ~5 MB – 15 MB
  • IndicTrans2 (translation): ~2 GB (Distilled) to ~12 GB (Full 1B)
  • PyMuPDF or ReportLab (PDF creation): ~3 MB | Lightweight 

So for this project I've used PyMuPDF, Tesseract, Pillow, OpenCV, Numpy and Indic-transliteration. If the need arises, I'll add more functionality, but you are welcome to submit PR's too.

20 May 2026

Contaminants in our food

Chemical contaminants in our food have been a major concern in recent times, and there are a massive number of educated and uneducated people who are blissfully ignorant of it and aren't able to correlate their various pains, rashes, urination issues, inflammation, pimples, fungal infections, kidney pain, intestinal pain, burning sensation, chills, dental issues, ADHD, lethargy, brain fog, cancer, Parkinsons, and various other issues, to the food contaminants. Even when these cause various health issues, many doctors aren't suggesting anything about switching to safer foods. Moreover, the high costs of organic foods are prohibitive enough that even people severely affected are not buying safer foods. I found it even more appalling that not all organic food is actually organic. Whenever I tell people why I cannot eat certain foods at their homes or functions, it became hard to just say "allergy", because it isn't just an allergy, and there is much that they need to understand about how it affects me and others (especially when it compromises the immune system like this, this, this, this and this). So I decided to list out various contaminants and how they affect health.

A graph of contaminants and their effects

 View the graph here: https://nav9.github.io/contaminants/

Health effects of various contaminants

Disclaimer: I told an AI to search through research papers and list the contaminants, so there may or may not be errors. 
  • Organophosphates and organochlorines could disrupt the function of the thymus, potentially leading to autoimmune disruption. It could also disrupt the autonomic nervous system which controls heart rate and rhythm, potentially leading to arrhythmias and sudden death. Also linked to hearing loss, the development of atherosclerosis and increased risk of non-fatal myocardial infarction (heart attack). They alter lipid metabolism and increase fibrinogen, which makes blood thicker and more likely to form a 100% blockage (clot) on top of an existing plaque.
  • Aflatoxins being linked to immune suppression and liver cancer. Can weaken vein and artery walls, causing internal hemorrhages and heart failure.
  • Dioxins causing skin lesions, patchy darkening of the skin, reproductive issues, interference with hormones and damage to the immune system.
  • Aminoglycosides which can cause hearing loss, gaze instability (oscillopsia) and balance impairments.
  • Tetracyclines which can cause skin photosensitivity, fatty liver, tinnitus, abdominal pain, rashes, antimicrobial resistance, enamel hypoplasia, breathing issues, and cause drug-induced lupus. A naati chicken farmer here is openly admitting the use of tetracycline.
  • Heavy metal poisoning: 
    • Mercury causing central nervous system (CNS) injury, renal dysfunction, gastro intestinal ulceration, promotes thrombosis (clot formation) and inactivates protective enzymes that usually keep arteries healthy.  Foods rich in selenium and zinc (found in organic seeds and nuts) act as natural antagonists to heavy metals like mercury and lead, helping the body slowly process these toxins. Foods high in iron (red meat, beans, iron fortified cereals can compete with lead for absorbtion, calcium can block lead from entering cells, vitamin B1 can accelerate lead removal, vitamin C can help remove free radicals created by lead)
    • Lead (sometimes present in rice) causing CNS injury, lung dysfunction, anemia, liver damage, cardiovascular dysfunction (can impair nitric oxide production, which is essential for blood vessel relaxation). Contaminants like lead and cadmium make plaques "unstable" or "vulnerable." This means a smaller blockage can suddenly "burst" and form a blood clot that completes the 90-100% obstruction, leading to a sudden heart attack in someone who appeared healthy.
    • Chromium causing kidney dysfunction, gastro intestinal (GI) disorders, skin diseases, increasing incidence of various cancers. 
    • Cadmium (found in industrial fertilizers) poisoning causing degenerative bone disease, kidney dysfunction, liver damage, accumulates in arterial walls, promoting atherosclerosis and increasing the risk of heart failure, GI disorders, lung injuries, impacting metabolism of zinc and copper, causing cancer. 
    • Arsenic causing cardiovascular dysfunction (associated with carotid artery thickening in children and peripheral vascular disease), skin and hair changes, CNS injury, GI discomfort and liver damage. There are some precautions to be aware of when considering chelation. 

Guides: 

  • There's a lot more mentioned in Thankamma Jacob's book: Poisons in our food (which is oddly the exact same title I wanted to write an article with). 
  • More information on tips and tests here.
  • A guide from the Voluntary Health Association of India too. 
  • A guide to plan out nutrition, budgeting and mentions contaminants too. 

How much do our farmers and fishermen know about all this, and how much do they care about safe food. Even if they do care, how many of these chemicals are finding their way into fields via various environmental effects and even via companies run by educated people? A survey by the government found that even some organic veggies had heavy metal contamination at some places. Various people are struggling, supposedly from the autoimmune effects and various other effects of chemicals, and doctors aren't doing much to help identify these issues and come up with solutions.

  • There are other chemicals causing bone loss and pyrethroid poisoning which can cause itching, burning, muscle twitching. 
  • Chlorpyriphos, dimethoate, phosalone, mancozeb and captan causing malignant brain tumors (glioblastoma multiforme, medulloblastomas, astrocytomas, anaplastic oligodendrogliomas, ependymomas, choroid plexus papillomas, etc.).
  • Organophosphates like chlorpyrifos, malathion, acephate, dimethoate, edifenphos, carbendazim and mancozeb potentially being ototoxic (causing hearing loss). Some of these may have been used in sugarcane cultivation.
  • Methyl bromide and perhaps even phosphine being used to fumigate stored grains to kill insects, possibly causing unstable gait, vertigo, polyneuropathy, optic neuropathy, depletion of glutathione (antioxidant which protects cells from damage caused by reactive oxygen species) in several tissues, such as the liver, kidneys, lungs, and brain. 
  • Argemone oil contamination in mustard oil resulting in edema and tenderness of the abdomen, fluid retention (edema) in the upper and lower limbs (dropsy).
  • Microplastics (polyacrylamide, polyacetylene, ethylene vinyl alcohol (EVOH), polyvinyl chloride (PVC) and polyamide (nylon)) in shellfish and other fishes. Toxins leaching from microplastics can percolate into the GI tract and be transported to the edible tissue. Consumption of such seafood could lead to alteration in chromosomes, which can lead to infertility, obesity and cancer. Nanoplastics could cause cardiopulmonary issues, alterations of endogenous metabolites, genotoxicity, inflammatory responses, oxidative stress, effects on nutrient absorption and gut microflora.
  • Trans Fats: Often found in adulterated or low-quality frying oils, trans fats are the most direct cause of arterial "clogging" by simultaneously raising bad cholesterol and lowering good cholesterol.
  • Bisphenol A (BPA): Leached from the linings of metal food cans, BPA is associated with angina (chest pain from blockages) and accelerated atherosclerosis.  
  • Nitrofurans, chloramphenicol, and other antibiotics in aquaculture, heavy metal and insecticide contamination in fish farms. Mercury, zinc, lead, copper, cadmium in large open water fishes. Dried fish from fishing villages showed an accumulation order of Zinc > Lead > Copper > Chromium > Cadmium.
  • Formalin (high risk of stomach, lung, and nasopharyngeal cancers) or sodium benzoate (can cause allergies, oxidative stress in cells, damage the immune system, and increase DNA damage in human cells, interfere with protein digestion in the human gut, hyperactivity, anxiety, and potentially decreased memory) used to extend the shelf life of fish, ammonia added to ice to slow down the melting process (can cause gastric irritation and damage to intestinal tissues).
  • Alum (fitkari) possibly deceptively being used to make herbs look fresher. It's also used in gardening. It could potentially cause kidney and GI damage. 
  • Soapstone/talc used for polishing dal may contain forms of asbestos (carcinogen) and soapstone can also impair the functioning of the GI system.  
  • Mixed Exposure: Research indicates that "mixtures" of various pesticides (sometimes called a "pesticide cocktail") can have a linear, positive association with a 10-year risk of atherosclerotic cardiovascular disease. 
  • Bacterial Endotoxins (LPS): These can contaminate meat and dairy, triggering systemic inflammation that depresses heart function and increases the risk of heart failure. 
  • Aflatoxins: These can weaken vein and artery walls, causing internal hemorrhages and heart failure. Case studies include a 15-year-old boy whose sudden death was linked to aflatoxin-induced heart failure.
  • Citreoviridin: Found in mouldy rice, it has been historically linked to "cardiac beriberi," causing sudden cardiac arrest.
  • T-2 Toxin: This mold toxin can cause hypertension and damage heart tissue directly through oxidative stress.  
  • Acrolein: Formed during high-heat frying of oils or found as a pollutant in crops near heavy traffic, it is a potent irritant to the endothelium and can trigger myocardial infarction.
  • Acrylamide: Produced in starchy foods (like potato chips or bread) during high-temperature cooking, it is associated with platelet activation and increased cardiovascular risk. It is also a cancer risk.
  • Artificial Sweeteners: Recent studies have linked high intake of erythritol, aspartame, and sucralose to an increased risk of stroke and heart attack by enhancing platelet responsiveness and clot formation.  
  • Metanil Yellow: This food colourant (sometimes used to give jaggery its yellow color) can inhibit gastrointestinal transit, is known to have carcinogenic and mutagenic properties and affecting the Purkinje cells which impairs how the brain perceives sound
  • Sodium benzoate: Used as a preservative in acidic foods and soft drinks, can  trigger acute urticaria and angioneurotic edema. 
  • Tartrazine and Carmine: Used as artificial food colouring can trigger deep tissue swelling, rashes, and even full anaphylaxis.
  • Penicillin residues in milk or meat, can act as haptens which bind to carrier proteins in the body to form a complete antigen, causing chronic or acute IgE-mediated angioedema in highly sensitive individuals.
  • Antimicrobial washes: Commercial slaughterhouses may wash meat with chlorine dilutions or organic acids which could trigger contact dermatitis or eczema flares (eczema and cytokine triggers may also happen from histamines produced when bacteria break down amino acids in meat).
  • Alloxan: If present in maida (refined flour) as part of the bleaching process, can stop the secretion of insulin, causing irreversible insulin-dependent diabetes. Research also indicates it can exert direct nephrotoxic effects, impacting the kidneys.
  • Healthy food is not meant only for the rich. It's a basic necessity of life.   

    I created a little visual graph for my reference. There are many more adulterants and contaminants and various ways of figuring out if they are present. Hopefully devices with molecular imprint sensors and perhaps simpler spectrometers would make it easier to detect contaminants. I've been noting down various safe sources of foods, which aren't good and which of them are affordable and trustworthy. Am still struggling to find reliable meat and dairy though. If you have helpful knowledge to share, please do comment.

    Now there's a movie named The India Story, about the effects of pesticides and adulterants.