Wealth is not always money or property. I came across an explanation that wealth is what you value the most
in your life and gives you happiness. For some people, having a loving
partner and a caring network of people is their wealth. So even if they
are poor, they are still happy. For some people, what matters most is
their peace of mind. So if they can avoid marriage, kids and the chaos
of interacting with people and live a quiet life with peace of mind,
that’s their wealth. For some people, wealth is their intellectual
accomplishments in life. Their research publications, awards, books
authored, or other achievements. For some people, wealth is the
fulfillment they get in being able to help others (or helping Nature)
and uplifting others. Many other people have other aspects they consider
their wealth. I’d like to hear what yours is, in the comments.
Health is the greatest Wealth
No matter what anybody’s choice of wealth is, health is the one wealth that trumps all of them. Many of us are lucky to be born with a treasure chest full of good health wealth. As time passes by, we unknowingly squander our health wealth in various ways (to avoid squandering the wealth of your eyes, please do read The Real Cure for Eye Strain). Everything in life is a lot more bearable, and we have a better chance of earning all other types of wealth when we have good physical and mental health. Don’t let anyone or anything steal your health.
Health Wealth Thieves
Sleep disruptors: Anything or anyone who disrupts your sleep is stealing your health wealth. It could be loud noises while you sleep, badly cooked food, expectations of losing sleep to achieve something or someone who wakes you up unnecessarily. Sleep loss can wreck havoc on your entire body. Don’t allow your sleep to be stolen.
Incompetent/evil employers: Many employers/managers ruin our health by expecting long working hours, simply because they are incompetent in being able to estimate timelines or capabilities. Many are deliberately evil, when coercing people to give up their personal lives to toil for the company and suffer a burnout. Don’t let such evil thieves steal your health permanently. Chronic repetitive stress injuries can leave you a pauper in terms of health wealth.
Laziness: Not exercising regularly is a great way to lose health wealth. There are many exercises which can be done with your own body weight. Some intense exercises can be done in just seven minutes. Take time to exercise everyday and to ensure you get a well balanced diet of properly cooked food.
Corrupt people: It takes a great deal of stupidity for corrupt people to allow our environment and food to get polluted, when it was entirely possible to prevent it. Then there are unnecessary wars started, which permanently steals people’s health. Don’t forget the evil people who adulterate foods. Corruption affects not only the health of the people engaging in corruption, it also affects their own family and everyone else. Why is this even being tolerated? Why can’t we have intelligent people running the world?
Nature: Bacteria, viruses, lightning strikes, accidents, attacks by wild animals, genetic anomalies and more. Even Nature steals our health sometimes.
Ignorance: Not knowing which foods to avoid, not knowing how to cook properly, superstitions and ignorance of various phenomena can steal our health.
Toxic people: Protect your mental health by avoiding them and/or helping them seek therapy.
Thankfully we have researchers, doctors, nurses, health equipment manufacturers, our immune systems and various other “health police” who rescue us from health thieves. I’m grateful for these good guys in our lives.
There is a bit of history about how English became the most prominent language for programming. However, the wanton variations in programming language syntax and the poor manner in which various software frameworks are built, makes one wish for being able to do build software using spoken English.
Models are still unable to visualize and understand what we want it to do
Recently I tried building a simple chatbot using ChatGPT to generate all the code for me. During that effort, I noticed how the LLM (ChatGPT) did not actually understand what I meant by the left side or right side of the page. Also, when it re-generated code based on corrections I asked it to do, it would re-generate even older errors which I had corrected a few prompts earlier. This showed a critical flaw in the use of LLM's for coding. The LLM is unable to visualize what we want it to do. Even though ChatGPT-4o has got much better at code generation, these issues continue to plague even modern models.
Techniques being used to build better AI copilots
From Andrew Ng's "The Batch" newsletter, I came across the information about the techniques used:
Chain of thought (the model is made to think step by step)
Self-consistency (the model generates many responses and picks the one that's more consistent with the other responses)
ReAct (reasoning and action steps are interleaved to achieve the task)
Self-refine (the agent reflects on its own output)
Reflexion (allows a model to act, reflect, evaluate and repeat)
Test time compute (increases the amount of processing power allotted to inference)
Coding assistants
WindSurf IDE's CoPilot
I recently tried using extensions which either connected to LLM's on a server or used a local LLM via Ollama. Today, there are better options:
1. Cursor: It promises to keep code private. I'm yet to try it, but it has a free version for limited use, so I'm likely to try it, although a bit reluctant since it needs me to download their IDE. However, I'm always skeptical about privacy, because many of these websites which make tall claims of keeping data private and encrypted, actually might have lax security, as muah.ai users found out recently.
2. WindSurf: This is an IDE based on VS Code which you need to download and setup to make it automatically connect to their server. I tried this and found to be reasonably good. There are some glaring usability issues related to using undo on the generated changes, but in terms of what it provides, there are actions (perhaps self-refine or reflexion) it does to make changes to the code and see if it makes sense and then it automatically re-attempts changes until it gets to what it thinks is correct. With prompts where you give it many instructions, it tends to really mess up the code. Anyway, having to use a separate IDE is a no-go for me, so I'll be uninstalling it soon. Since it can be used to prompt the LLM to access my filesystem, my trust in it is even lesser now (possibility of hacks).
3. Supermaven:
Not yet used this, but since it's an extension which works with VS
Code, NeoVIM and JetBrains, it's better placed than options like
WindSurf, and has a free tier too, which might not be as restrictive in
terms of how long you can use it. Their 7 day data retention policy was also a relief.
4. GitHub CoPilot: I'm more likely to try this since it does not need me to install a separate IDE, and now they have a free plan too.
5. ChatGPT's canvas: When you first generate code in ChatGPT, it switches to a canvas mode where you can do more edits. As of today it's useless, since it ended up replacing my HTML code entirely with JavaScript when I prompted it to make some small changes.
6. Sourcegraph: Their unlimited free autocomplete was the first thing I noticed. Might try it later.
7. Amazon Q: Has not only a free option, it also has plugins for Eclipse, VS Code and Jetbrains.
8. Double: This has only a 30 day free version, but seems to have some features that rival GitHub Copilot.
9. Gemini in IDX: I'm not surprised not many people are talking about this. It's in beta stage now. It's basically VS Code in your browser, and activate Gemini coding assistant or install any other extension as a CoPilot. Since it's in beta it's not working fully yet. Once it works, it might be far better to use than VS Code or Android Studio.
10. Tabnine: They seem to have even integration with Jira built in, which is a cool feature. Only 30 days for a free trial though. They support a lot more IDE's like Jetbrains, Eclipse, VS Code, NeoVIM, and more.
There are a few other stray examples like PotPie, Pieces, a PR agent, copilot.live and Tabby. So far, comments on Reddit don't seem to be too happy with GitHub Copilot, but they seem to like SuperMaven, WindSurf and Cursor. There's more coming, with agentic software like Devin, De and LangGraph studio
To pay or not to pay
From what I've seen so far, it'll take some time for LLM's to be able to become capable enough to design an overall architecture and plan for efficiency of code reuse. So programmers really need to know their concepts of the framework and the language well to be able to build reliable software. Due to this, I believe it's not yet worth it (at least for me) to pay for these services. It's more than enough for me to design the architecture myself and prompt the free LLM's only when I need it to generate any code. But that being said, these coding assistants are truly effective at slicing down development time of a few weeks or months, to a matter of minutes or hours. All that drudgery of figuring out errors and their solutions, and finding better or alternate ways of doing things are getting done so much faster with the LLM.
On a side note
I wonder how well LLM's will adapt to people who prompt it with grammatical mistakes in their English. Although this also means that now people will be able to chat or prompt LLM's in their native language, and the LLM will actually be able to generate code using non-English languages. I still feel we are only scratching the surface of how software will be built in the future. There are already people trying to get rid of API's. I'd like to see a future where we plug in our minds to a computer and simply think to generate software solutions from what we imagine.
This content is originally from this page, which appears to be Southern Rural Development Center's website. The content became unavailable recently, and since it was part of my Nav test for volunteers, I decided to locate the content again and found it here. I'm posting the content on my blog now for easy reference:
TERMINATE OR TOLERATE? Dealing With a Problem Volunteer
One of the most disturbing aspects of managing volunteer programs is the unfortunate incidence of volunteers who become problems. Often the circumstances surrounding these situations are founded in the volunteer. On the other hand, many of the situations are preventable with good volunteer management practices. The good news is that firing a volunteer is possible. While firing is not appropriate for dealing with the often annoying volunteer or even the seriously disruptive volunteer, it is appropriate for dysfunctional volunteers.
This paper will discuss when termination is needed, what supervisory details need to be addressed and issues to consider related to impact of termination. The advisory leader role will be used in examples because they are perhaps the most distinguished and influential volunteers in the Extension system. The principles and practices however, apply to any volunteer role or volunteer at any level in the organization.
In Extension we are prone to be grateful to any volunteer who walks into the office wanting to help. We are so problem oriented, we tend to think we can fix any problem. Not always true. McCurley and Vineyard, 1998, offer the following myths:
Myths about Problem Volunteers
1. If I ignore the problem it will go away: The problem volunteer may recede from the limelight, but will still be lurking and possibly be harder to identify at a later time. 2. No one else notices: Particularly, the complaining volunteer will be noticed. No need to be a martyr when it does not help the situation. 3. I can fix a dysfunctional person: This is not in the volunteer manager’s job description and other volunteers will eventually resent the time and energy drain taken from their legitimate issues. 4. There’s good in everyone…we just need to give them time to show it: Unfortunately, it must be acknowledged that there are evil, nasty people who enjoy causing others to be hurt. Allowing them to continue is harmful to the program. 5. A confrontation will make things worse. They might get mad: The best interest of the program is the first consideration. The volunteer manager has to maintain control. 6. A confrontation might result in the volunteer leaving and if they do, the program will fall apart: If this is true, deeper problems than the one problem volunteer exist. 7. If I’m a truly caring person, I can handle all the people who are problems: Volunteer managers do not have to be “saints”. All the feel-good people cannot solve problems caused by mean-spirited people. 8. Everyone wants to be fixed: Not true. Some people enjoy the attention they get or watching the chaos they create. The myths address “problem volunteers” who need to be dealt with but not necessarily “fired”. There are books written about various strategies to handle the confrontational volunteer, the whining volunteer, the “bully” volunteer and others.
This paper will not address this large group of problems. What it will address are the valid reasons to “fire” a volunteer. There are three reasons that are supported in the literature:
1. Competency Issues
Unfortunately, there are instances when orientation and competency-based training over time still fail to help a volunteer perform the role acceptably. Another possibility McCurley, 1996, refers to is motivation. Is the volunteer able, but just not motivated? Or is he motivated, but unskilled. In some cases, volunteers outgrow the job they are in, and do not want someone else doing the job. An example is an advisory leader who did not come to meetings for two years, but when a new member joined the council, he staked out his geographic territory in no uncertain terms. In such cases, volunteers fill a space that needs to be occupied by an active volunteer.
With competency issues, the volunteer manager must do orientation training and other needed training. It is not enough to just offer training either. Documentation of the volunteer’s attendance at orientation and competency training is critical evidence the volunteer manager may need to produce. Volunteers may have either rejected training opportunities or something in their personal situation may have impacted performance on the job.
2. Fulfillment of Role Issues
When the volunteer goes beyond the role they have been given, there may be justification for firing. Examples include volunteers who do things they are not authorized to do. In these cases, while they may mean no harm, if they are not properly trained, they can absolutely do harm. Examples include the advisory leader who meddles in faculty personnel issues, or the leader who represents Extension inappropriately with community groups.
With these issues, the job description and more specifically, the position description is a key management tool. The job description should be discussed in orientation training with the new volunteer. A good way to confirm their understanding of the role is to modify the job description to create a position description for each volunteer which they sign at the conclusion of the session. The job description should outline the goals, objectives, and performance measures of the job.
3. Behavior Issues
Even the best application and screening processes can fail to detect someone who for whatever reason, makes poor judgement decisions relative to personal actions. The volunteer who suddenly becomes abusive, disrespectful of authority, or hostile may be having personal issues to deal with that have nothing to do with the volunteer job. These volunteers can be harmful to the program and to individuals in the program. In some of these type situations the volunteer may be acting different from their normal pattern. Sometimes these type behaviors become normal over time and they may be intentional. The best management practice in these situations is documentation and dealing with incidents as they occur. For some of these situations, termination is the best alternative for the good of the program.
Supervisory Responsibilities
Terminating volunteers is possible, but should probably be employed only if the situation is very detrimental to the organization and after all other alternatives have been explored.
Consider the following options:
• Re-assigning to another volunteer role. For example, they may perform well in a different program area or on a program committee rather than the overall council level. • Referring to another agency or organization. • Recognize and retire them from the volunteer role. • Insist on re-charge time when they are rotated out of their position for a specified period of time.
In county Extension programs, the County Director is ultimately responsible for making sure faculty utilize best volunteer management practices. Appendix A is a Scenario of a Volunteer Dismissal. McCurley and Lynch, 1996, suggest that volunteer managers develop a system for making firing decisions. Elements of a good system include:
1. Forewarning / notice
• Personnel policies regarding employment of volunteers including probation, suspension, and termination. • A volunteer application and screening process and operating procedures to guide informing new volunteers about policies. • A job description and mechanism for explaining the job requirements and unacceptable behavior. Orientation and competency based training with documentation of attendance is important.
2. Investigation / determination
• Having a clearly defined process for conducting a fair investigation. • Being consistent with policies of the Personnel Department of the organization.
3. Application
• Follow-through on enforcing the system. • Treat all volunteers equitably. • Providing a peer-review mechanism so decisions are not personal.
Impacts of Firing Decisions
Dealing with problem volunteers is time consuming, emotionally draining, and potentially detrimental to the program. McCurley and Lynch, 1996 note two benefits of having a firing system in place:
1. The right decision is more likely to be made. 2. A case for the termination is developed. This can help diffuse negative impact in the community or even externally. Often, the volunteer will decide voluntarily to resign rather than face the inevitable.
In terms of replacing advisory leaders on an advisory council, there is a Checklist of Questions attached in Appendix B. This checklist addresses additional volunteer management practices that are fundamental. Appendix C offers Strategies to Re-Staff an Advisory Council. It is not uncommon for a new County Director to inherit an Advisory Council that is predominately Extension “family, older volunteers with a traditional view of Extension programs, and a few influential members who do not come to meetings. Starting completely over is desirable, but not always possible considering the political nature of most counties.
Summary of Best Management Practices
While firing a volunteer is not easy or pleasant, it can be done. Better yet, is to use the best volunteer management practices referenced in this paper. They are: • Develop a system for handling problem volunteers. • Use clearly written job descriptions. • Use orientation training to detail the job description and the processes for removal. • Conduct competency based training. • Have group operating procedures that specify member expectations. • Provide volunteers with evaluation and regular feedback on performance.
References:
Lee, Frances Jarene with Julia M. Catagnus. 1999. What we learned (the hard way) about supervising volunteers: an action guide for making your job easier. Energize, Inc.,
Philadelphia, PA. McCurley, Steve and Rick Lynch. 1996. Volunteer management: mobilizing all the resources of the community. Heritage Arts Publishing, Downers Grove, IL., pp. 105-110.
McCurley, Steve and Sue Vineyard. 1998. Handling problem volunteers. Heritage Arts Publishing, Downers Grove, IL pp. 41-52.
Ever wondered why it takes time to copy a large file from one disk to another disk, but deleting the file takes a fraction of a second? That's because the file isn't really getting deleted. Only it's address is being erased. The actual file is still there on the disk, and there are software which can recover the file by identifying the sectors on the disk that the data is stored in, even if the data is not contiguous (stored in sectors that are one after another). This is why, even when a disk has no partitions and you think there is no data on it, the files that are there on the disk can still be recovered. The storage of data on SSD's or pen drives or your phone's storage works a bit differently from how data is stored on magnetic disks like the HDD. To know more about how long data can be retained on each type of disk and how data gets corrupted and how it can be recovered, read on...
1. Magnetic Hard Disk Drives (HDDs)
Technology and Material:
HDDs use magnetic storage to record data. A spinning disk coated with a magnetic material (typically iron oxide or cobalt alloys) is used to store data in binary format. Read/write heads move over the disk to magnetize tiny areas, corresponding to data.
Data Persistence:
Data on HDDs can last anywhere from 3 to 10 years depending on the quality of the drive and storage conditions. Environmental factors such as heat and humidity can reduce the lifespan of the drive. So if sectors on the disk lose their magnetism, data can get corrupted. It helps to copy fresh data onto the disk or overwrite the disk with random numbers and then freshly re-copy your data onto the disk every 3 to 5 years.
PhotoRec (Command Line for recovery of lost files)
Mac:
Disk Utility (GUI)
PhotoRec (Command Line)
Secure Deletion Tools:
Windows:
SDelete (Command Line): sdelete -p 3 X:
Linux:
Shred (Command Line): shred -u X
Mac:
srm (Command Line): srm -v X
Common Assumptions About Deletion:
Many people assume that simply deleting files from an HDD removes them permanently. In reality, deleted files are often recoverable until they are overwritten by new data.
2. Solid State Drives (SSDs)
Technology and Material:
SSDs use NAND flash memory, a non-volatile memory type that stores data in floating-gate transistors. Data is stored in blocks, which are electrically erased and rewritten.
Data Persistence:
The data on SSDs can last 5 to 10 years, but it depends on the number of write/erase cycles the cells go through. SSDs can wear out over time due to this limitation, often referred to as write endurance.
Factors That Can Corrupt Data:
Excessive write/erase cycles
Power failures during write operations
Physical damage (e.g., exposure to heat or static electricity)
SSD users often believe that wiping the data using conventional methods like formatting or deleting files ensures security. However, because of the wear leveling algorithm, deleted data can still be accessible, requiring specialized tools like blkdiscard for secure erasure. Even overwriting a file with the same filename, won't overwrite data on the same location. Remember that.
3. USB Flash Drives / Pen Drives
Technology and Material:
Pen drives use NAND flash memory (similar to SSDs). Data is stored in arrays of transistors, and the device is accessed via a USB interface.
Data Persistence:
Data on flash drives can last from 5 to 10 years, depending on usage. Like SSDs, repeated write/erase cycles can degrade their lifespan.
Many assume that formatting a USB drive removes all data securely. However, like SSDs, some data might still be recoverable unless specifically erased using secure deletion tools.
4. SD Cards (Secure Digital Cards)
Technology and Material:
SD cards, commonly used in cameras and smartphones, also use NAND flash memory. They provide fast read/write speeds and are more durable than hard drives due to the absence of moving parts.
Data Persistence:
Data can last 5 to 10 years, with performance degradation over time, especially after many read/write cycles.
Factors That Can Corrupt Data:
Physical damage (e.g., water exposure)
Power loss during data transfer
Incorrect ejection or unsafe removal
Data Recovery Tools:
Windows:
Recuva (GUI)
Linux:
TestDisk (Command Line)
PhotoRec (Command Line)
Mac:
Disk Utility (GUI)
Disk Drill (GUI)
Secure Deletion Tools:
Windows:
SDelete (Command Line)
Linux:
shred (Command Line)
wipe (Command Line)
Mac:
diskutil secureErase (Command Line)
Common Assumptions About Deletion:
Formatting or deleting files from an SD card does not securely erase the data. If you intend to sell or dispose of an SD card, be sure to use tools designed to overwrite and securely delete the data.
5. Blu-ray Discs, DVDs, and CDs
Technology and Material:
Optical media such as Blu-ray discs, DVDs, and CDs use laser beams to read and write data onto a reflective surface. Blu-rays have higher storage capacity (25GB or more), while CDs and DVDs have lower capacities (700MB for CDs, 4.7GB for DVDs).
Data Persistence:
Optical media can store data for up to 10 to 50 years, but this varies depending on the quality of the disc and the environmental conditions in which it's stored (heat, humidity, and exposure to light).
Factors That Can Corrupt Data:
Scratches or physical damage to the disc
Exposure to sunlight, heat, or humidity
Laser errors during reading or writing
Data Recovery Tools:
Windows:
IsoBuster (GUI)
Linux:
ddrescue (Command Line)
Mac:
Disk Utility (GUI)
Secure Deletion Tools:
Windows:
No standard tools for physical media erasure; consider overwriting via file system tools
Linux:
Shred (Command Line) for files on the disc, but no tool for erasing the disc itself.
Mac:
diskutil eraseDisk (Command Line) to erase the entire disk.
Common Assumptions About Deletion:
People often assume that wiping files off a disc is enough to remove them permanently. However, optical media is physically written, so the data can still be retrieved through specialized tools even after deletion, unless physically destroyed.
Remember: deletion is not the end of the story. Use secure erasure tools to ensure your data stays gone—permanently! There are more tools that I have not mentioned here. Searching the internet will show you more. Most of this blog post was written by AI.
There was a scientific paper I found regarding a certain topic, but it was published in 2004. I wanted to see if there was any new research that built on that knowledge, but I didn't know if there was any tool which could help me search for it more visually. I decided to ask on Academia StackExchange, but decided to do a cursory search before asking. I found this question which led to multiple tools that did at least a fair job of visualizing papers via citations. Some of these are:
Most of these tools appear to rely on utilizing citations to build their tree. This is insufficient to correlate the actual knowledge that scientific research builds upon, since authors may not have cited all papers relevant to the actual knowledge they are building upon. Even the visualization graphs available offer a very poor visual representation and interactivity that is needed when navigating such information. Perhaps one way to improve on this, would be to use a large language model to analyze the contents of each paper and build links between papers based on the knowledge they build upon. This would help not only view but also better track the progress of knowledge in any scientific pursuit.
While you are in the flow of an enthralling game, you wouldn't actually stop to consider whether gaining some virtual points in the game is worth it, while your eyesight is being permanently ruined in the process. For the past few decades we've been in a phase of worsening eyesight. While this is great for the revenue of various companies, I believe it's time we do things more responsibly. It's time to make it a standard practice for every game to have an algorithm which pauses the game and allows players to close their eyes to rest.
With single player games it's simple enough for the algorithm to start assessing whether to pause the game or not as the timer approaches 20 minutes. For example, the game shouldn't pause just when the character is jumping over a pool of lava. However, for multiplayer games, synchronizing the pause is difficult due to latency. With good engineering, even this can be accomplished.
For example, in a shooting game, as the timer approaches 20 minutes, an audio cue and a visual cue could inform players that it's almost time for a rest break, and timers can be synchronized among all players. When it's time for the break, a shield can be created around all players, to prevent anything from affecting them, and all players and game elements can be frozen. Before any player joins the game, they'd have to agree to what duration of gaming and rest intervals they are comfortable with.
I’m sure you could come up with more creative ways of integrating a rest
timer into games and incentivizing players to take rest.
An alternative…
…is
to design games with levels or missions that can be completed in less
than 20 minutes, and the player can be offered a break during the next
level/mission’s loading screen. I know not all games can be designed
like this, but I’m merely brainstorming here.
Help people heal. Prioritize health; not wealth.
It’s easy to put the onus on people to take rest. Similar to how you
could say that it’s upto people to drive vehicles safely. Still, it
helps to have seat belts and air bags. In the same way, game engines
need tools built in for rest breaks. Kids and even adults often don’t
understand the consequences of long hours of gaming, and end up
permanently ruining their vision. I know game studios would not want to
give players a chance to get distracted from the game, but we really
need to create a better world where health is valued more than wealth
and entertainment.
We’ve been taking our eye health too casually. Myopia is not normal. The need to wear spectacles is a massive danger sign that the eyes are severely affected and that one needs to immediately start a regimen of getting proper sleep and rest. The progression of myopia is an even bigger danger signal that our eyes aren’t able to cope with the torture we are putting them through. Our eyes are not evolved to keep staring in one direction for too long. Parents can actually do a lot to save their children from poor vision. Whether it’s office work or school or gaming, let us begin taking concrete steps to build healthy practices and standard procedures to prevent people from having to even need spectacles. Normal vision is too precious a gift to ruin.
For all these years, I've been annoyed at having to swipe my palm over the phone to be able to take a screenshot. Often, the window I'm trying to take a screenshot of, gets disrupted. Often the palm swipe does not get detected.
Google searches led to nothing other than the palm swipe.
I tried asking ChatGPT, and it suggested pressing the power button and lower volume button simultaneously. It didn't work. But on trying it again, keeping the keys pressed for more than 1 second, it worked!
I tried a Google search again, and it looks like there arewebsites that mention how to take screenshots. However, ChatGPT gave the answer in one simple sentence, and it was refreshing to be able to get the answer in a condensed form and directly, rather than having to go through multiple websites. This tech is truly a blessing.
The stories about the possibility of a vast majority of programmers losing their jobs to AI appears to be true. I already demonstrated how GrootGPT was created simply by prompting ChatGPT. Just a year ago, when I tried creating simple Flutter apps using ChatGPT 3.5, it barely understood what I wanted, and I couldn't create a workable app. That's changed with ChatGPT 4o. It generated the entire code I needed, and all I had to do was prompt it regarding some errors encountered, and it gave me corrected code snippets for those. These are some of those apps:
Simple Notes
Clicking any note leads to a page where you can save/export it and type more text
I became tired of the standard Notes app on my phone not having a dark mode. Also, there was no guarantee that they were siphoning off the data for analysis. So I used ChatGPT to build me one, and then customised it. The APK file is available for download in my GitHub repository.
Automatic Slideshow
On selecting a folder, the slideshow begins
I had always wanted a really simple, minimalist slideshow app, but the ones on Google Playstore were ones with ads or fancy animations which I didn't want, or they didn't have a setting for changing the pause duration between images. So I created one which even searches subfolders for images and displays them with the best fit. Dark mode too, which is another plus of building your own app. ChatGPT generated the code for this too. The APK for this too is available in my GitHub repository.
I'm in the process of building more apps using ChatGPT, and that's where I noticed a few problems:
Limitations of using ChatGPT or other GenAI for programming:
For complex tasks, GenAI does a poor job of generating or correcting code.
Moreover, it seems to depend on what programmers have already written. When I wanted to create a countdown timer which counted down days, hours, minutes and seconds, it generated code only to display hours, minutes and seconds, because that's what programmers usually write for. I had to edit it on my own to include a countdown for days, even though Flutter had days in its Duration class by default.
It does not follow good coding standards. If the code GenAI was trained with, included badly written code, the code it generates will also have badly written code. Instead of using const's it used string literals in multiple parts of the code.
It does not necessarily "know" much about good system design and design patterns. These are concepts for which you need skilled programmers.
For larger chunks of code, it tends to lose track of what the code already contains, and loses track of the prompt's instructions.
The good parts of ChatGPT and GenAI:
It generates working code extremely fast. Tasks that I would need a few hours or days to complete, LLM's can complete in a matter of seconds.
It makes debugging easier. I only have to paste an error message into the prompt field, and it not only figures out where the error is, it also explains the issue and provides corrected code as a solution.
It makes testing and locating misuse cases easier. It can actually generate test cases for snippets of code, and can even identify where code is lacking in security, potentially pointing out how people could misuse software.
It somehow finds good/efficient programming practices too, and tends to teach me on how to write code better.
It has been only a couple of years since ChatGPT has impressed us. With claims of there being no limit to which it could scale, I'm quite sure these algorithms could be trained and have safeguards built to replace even the most skilled software engineers.
Operating system bootability sucks bigtime! Whether it's due to the Windows programmers or Linux programmers or the BIOS firmware programmers of various companies. I don't understand why these people can't come to an agreement of how to detect bootloaders and boot in a simple way.
If you have Windows installed on one disk and Linux installed on another disk, if you reinstall Windows, you won't be able to boot into Linux. In-fact, even when you press F11, GRUB won't be shown in the boot options. There are two things you can do in such a situation:
1. Point BIOS to the Linux bootloader
Simply restart the computer, go to BIOS, and depending on where in the boot options you find the option to specify the Linux bootloader, simply select it and set it as the first boot option instead of the Windows bootloader.
2. Do a boot repair
If the BIOS does not show you any option for the Linux bootloader, boot from a bootable Linux pen drive and run boot repair. In the start menu, simply start typing "boot", and you'll see the boot repair application. At least in Linux Mint, it's pre-installed.
You might see an error message, but you could ignore that and go to BIOS like I mentioned in the first point, and set Linux GRUB as the first boot option. Everything will work fine then.
A slightly more involved method of doing it I've mentioned here, and there are some more options here.
Before getting to the topic, I wanted to mention how much more I like the old Reddit. The new one is heavy and really cumbersome to use. I was browsing through Reddit using the old interface, and noticed this post, which mentioned that adding a space before a command prevents it from being written to history.
Decided to give it a shot. I opened a terminal and typed "hello". Checked ~/.bash_history, and sure enough, at the end of the file there was "hello".
Then I typed " pwd" (note the space prepended), and the command was not added to the Bash history file. HISTCONTROL even allows avoiding duplicates.
In certain states in India, the driving license (DL) renewal process can be contactless. This means, you don't have to go to the road transport office (RTO) at all. You can do the entire process online, and the DL will be delivered to your house. Also, if you use Aadhaar authentication, you don't even have to upload your photo. It'll automatically be fetched from the Aadhaar server.
Disclaimer: What is presented here is in no way an official communication of the Road Transport Office (RTO). These are bits of information I’m presenting from my (non-transport category vehicle) experience of renewing my driving license (DL), so that it may provide some clarity and overview to people who wish to renew their DL. The time taken would vary for you. I’ve tried to present accurate information to the best of my knowledge, but there might be inaccuracies, and the procedures, web pages, etc. may change with time, so kindly contact your RTO to obtain the latest information that is relevant to you.
How many months prior to DL expiry can you initiate renewal?
The driving license renewal can be done one year prior to driving license (DL) expiry. I got an email confirmation about this from the helpdesk. Earlier it was possible to renew it only one month prior. Just remember that if the renewal is done too early, you'll lose some validity period. For example, if your DL expires in August, and you renew the DL in January, the newly renewed DL will have the January date on it, so the next time you need to renew it, you'll have to do it on or before January. I hope they change the process later, to not let there be such a loss of validity period.
Is a medical certificate required if you aren't yet 40 years old?
If you are aged 39 in January, and you will be 40 in February, and your DL expires in January, if you do the renewal by January, you don’t need to get a medical certificate from a doctor to prove your physical fitness. From what I could reason, the date that matters might be the date of filling the online application, because that would be when the algorithm checks for the date of birth, for determining if you reached the age of 40. In any case, if you'll know if the certificate is needed or not, once you start filling the application. If it's needed, you can just save the application as a draft, find a doctor who can issue a medical certificate, and then continue filling your application on some other day when you are ready to continue. You could ask the RTO helpdesk if there are an specifics you need to clarify.
If problems happen during the application process, whom to contact?
The first option is to file a grievance from the homepage (the button for filing a grievance is shown in one of the screenshots below).
The second option is to send an email to helpdesk-sarathi@gov.in (or whatever the current contact email id is shown on the Parivahan website) with details about the problem and your application number. They generally reply within a few days, but once it took eleven days.
The third option is to find out your RTO's phone number or email id, and ask them. During the application process, I remember seeing the email id of my RTO.
In extreme situations, you could consider PG Portal or Lok Adalat, but it may not be necessary, since delays might simply be a matter of the people at the RTO not having sufficient manpower to process requests. You need to have some patience and use the RTO's contact points as much as possible first.
Timeline
Your timeline would obviously vary. Depending on the RTO, the number of days taken for each step can be more or less than what is shown in the image below. I'm presenting my timeline to show where the most delay happened and when I had to file grievances to get things moving. Even though things didn't go as smoothly as it ideally should, I'm happy that our government has taken this first step in automating processes and making things convenient for the general public. Hoping to see more such improvements soon.
Close the popup which shows you which services are contactless.
This is the homepage. Select the option to apply for DL renewal. Also, notice the “Application Status” button and “File Your Grievance” button at the right side. You’ll be using the Application Status button soon.
Homepage
Remember: Once you've started the application process, you can close the browser anytime, and return back later to continue applying. But to continue applying, you need to click the "Application Status" button (shown above, with the yellow arrow pointing to it) to continue with the same application.
A page then shows the instructions and an option to download Form1A if you are above the age of 40 (for a doctor to certify you physically fit). If you are not yet 40 years old or exactly 40 years old and want to check if the algorithm requires you to show the medical certificate, you could download Form1A now, and proceed with the application to see if you are prompted for the certificate or whether you only need to submit a self-declaration of fitness. Again, it's best to clarify such details from the RTO. Since I didn't have to use the form, I can't provide more information on it. From what I understood from what someone told me, I think you could get certified from any doctor in a government hospital, but I'd recommend that you clarify this from the RTO, since I'm not sure. Click the "Continue" button to proceed.
Availability of form 1A (medical certification of fitness)
Enter your DL number, date of birth and captcha. Click Proceed.
Application start
I believe it's at this stage you'll be shown a message if you are above the age of 40, and you need to submit form 1A (medical certificate). You'll be shown your existing details and be allowed to select the RTO you want the processing to be done at. I selected the same RTO that my old DL was issued at. If you have to get it processed at a different RTO, and have any questions about this, please ask the RTO. I don't know how the processing would be different if a different RTO is selected.
Initial confirmation and RTO selection
Now you'll be allowed to confirm your address. There's no need of entering the Qualification and Employer category, but you may be asked to mention the Taluka.
Address confirmation
Now you need to select whether you want to proceed with or without Aadhaar authentication. I chose to do it via Aadhaar, because it offers certain conveniences. I didn't have to upload a photo and signature separately, the eKYC was instantly done. You can even use your m-Aadhaar Virtual ID (VID) number (I did it) if you don’t want to reveal your Aadhaar number. There might be some complications if the name and date of birth in the Aadhaar don’t match your DL. As per the next screen, it seems like some states will provide an option to make a change in the name and date of birth if there is a mismatch. If you have doubts, please ask the RTO whether it would be better to proceed via Aadhaar authentication or not.
Aadhaar eKYC. Click image to view larger.
Choose renewal of DL and proceed. In the screenshot below, the blue text in the bottom mentions that when eKYC is chosen, some states may provide an option to correct the name and date of birth. You could either email the helpdesk and ask about it or ask at your RTO. Chances are you'd get a better reply from the helpdesk.
Service choice. Click image to view larger.
Click the button to open the self declaration form. At the bottom of this page there’s an option to opt for being an organ donor. It’s not compulsory, but you can select it if you wish. If you select yes, I think some extra information is printed on the DL, that in case of an accidental death, you'd be willing to donate your organs. There's no negative consequence of not selecting the organ donation option.
Choice for Form1. Click image to view larger.
The self declaration. Rule 5[2] might be a rule mentioned in the motor vehicles act.
Self declaration form. Click image to view larger.
Application number now available
On submission, you'll be given an application reference slip which you can download as a PDF. It clearly mentions that there's no need of going to the RTO. Make sure you note the Application number mentioned on the slip.
Application reference. Click image to view larger.
The application process is not yet complete. Now if you are not automatically taken to the Application Status page, you can to go to the homepage and click the "Application status" button to start uploading your documents.
How to access the application anytime
Enter your application number, date of birth and captcha. Click Proceed.
Continuing the application using the application number
The remaining steps are shown, and notice how the photo upload is exempt (not required) because it was automatically taken from the Aadhaar database. Click "Proceed to upload documents".
Steps remaining
Photo and signature exempt
On clicking Ok, you will be allowed to upload the documents. I only had to upload a self-signed DL copy. Mentioning the document number was not required because it didn’t allow me to enter the full DL number. For “Issued by”, I typed “RTO”. Click “Browse” to upload the document. If you have more documents to upload, you can select the respective options from the "Documents" dropdown menu in the "Required Documents" section and upload them. Once all documents are uploaded, click "Next".
Document upload page
This is the document I uploaded, from what I understood from videos online. You could ask your RTO about what format they need this document to be in.
Uploaded document for DL
Payment process
Proceed for fee payment.
View the total fee and proceed to pay. The Gateway available for me was named “Khajana 2”.
Fees to pay. Click image to view larger.
Note your token/transaction number and proceed to pay.
Here I encountered an error: "Not able to process the request. Reason: Sorry we are unable to redirect to bank login". I could not proceed even when I went back to the homepage and attempted the payment again. I was shown errors like “404. Oops! The page you are looking for can’t be found”, and “Sorry..! We are unable to process your request now. Please try after sometime”. Even trying the next day didn’t help.
So I went to the homepage and filed a grievance. Only a limited number of words can be typed in the “Feedback” field of the form, so if you need to attach screenshots or explain more, you can use the “Browse” option to attach a file with more information. Sometimes, attaching a file results in an error on submission, so if that happens, just mention the issue briefly in the feedback field, and submit it. In most cases, they look into the matter immediately. If there’s a long delay and nothing happens, you can send an email to helpdesk. You can see if there's any response to the grievance you filed, by clicking on the "File your grievance" button again. At the bottom of the page it'll show you all the grievances you filed.
Filing a grievance
They fixed the backend issues with the payment, and I could proceed to pay. I don't know within how many days they fixed it. I didn't get any notification, so I checked only around a week later. After payment, you’ll be shown the payment receipt number and an option to print it or get a PDF version of it.
Viewing the remaining status updates
Now you can go back to the homepage by clicking the "Home" button, and select the "Application status" button again, to see the status of the application anytime. Ideally, there’s nothing more you need to do. The scrutiny and endorsement will be done and the DL will be printed and sent to your house by speed post.
In my case, the application remained stuck at the scrutiny stage for around 18 days, and it moved forward only when I realized that nobody is attending to it, and submitted a grievance.
Soon the scrutiny was done, and I received an SMS containing a Sakala number. The endorsement was done soon after (at this stage you can see the renewed DL on DigiLocker, which I believe can be used as a valid DL), and the DL was printed. I've heard that many DL's may be sent as a batch for printing, which may be one reason the printing takes a long time to happen. The same might be true for sending DL's to the post office.
Then I received an SMS that the DL has been dispatched. The SMS also had an India Post tracking ID. However, when I went to the India Post website and entered the Consignment tracking number, it showed an error that the consignment details were not found.
I emailed India Post's Bangalore branch, and they replied that they did not physically receive the DL. This meant that the DL was still in the RTO. So I filed another grievance that the DL was not dispatched. Nobody seemed to have attended to this grievance, so I emailed the helpdesk about this, and then the DL was sent to the post office and it was delivered to my house.
Phew! That's it. It took a good amount of effort to create this guide. Hope this has helped you, and wishing you all the best for your application.