Accelerators vs. Crutches: The Role of LLMs in Research and Learning

Roof texture pattern

Large Language Models (LLMs) have stormed into the research and learning landscape with incredible promise. As an AI researcher and educator, I often find myself torn between excitement and caution. On the one hand, LLMs like ChatGPT and its peers are astonishingly powerful – capable of generating code, explanations, and ideas in seconds. On the other hand, I worry about a growing temptation to outsource thinking to these models. I approach this discussion with strong opinions, loosely held – I’ll state my views confidently, but I’m ready to adjust them as I learn more. In that spirit, let’s explore how LLMs can be amazing accelerators for experienced users while potentially becoming crutches that hamper genuine learning among students.

LLMs: Accelerators for Experts, Not Shortcuts for Students

It’s clear that expert researchers and developers can leverage LLMs as productivity boosters, while less experienced students might misuse them as cheat codes. An expert programmer, for example, might use an LLM to save time on boilerplate code or to get a quick refresher on an API – essentially treating the LLM as an accelerator. Because of their strong foundation, they can critically assess the AI’s suggestions and integrate them appropriately. In contrast, a student still learning the ropes might be tempted to have the LLM do their homework. This is where the alarm bells ring: if a beginner relies on the AI to solve problems for them, they skip the struggle that builds intuition and skill. One experienced engineer put it succinctly: you still need solid fundamentals and intuition when using an LLM, otherwise “you’re at the same whims of copypasta that have always existed” . In other words, without prior knowledge, a student using an LLM may simply copy answers without understanding – the age-old trap of imitation without comprehension, now turbocharged by AI.

Students need to work through problems independently – an essential part of learning that no AI should replace. In my teaching philosophy, I emphasize that struggle isn’t a bug; it’s a feature of learning. Wrestling with a tough math problem or debugging code for hours can be frustrating, but it develops critical problem-solving skills and deep understanding. If a student bypasses that process by asking an LLM for the answer, they might get the solution right now but lose out in the long run. Recent research backs this up: high schoolers who used ChatGPT to help on practice problems solved more exercises correctly in practice, but scored significantly worse on the real test . Why? Because the AI became a crutch – the students weren’t developing their own problem-solving muscles. The researchers bluntly titled their paper “Generative AI Can Harm Learning,” noting that students with AI assistance often just asked for answers and failed to build skills on their own. This cautionary tale reinforces my stance: students need to learn to think, not just to prompt an AI.

Debugging the AI: The Challenge of Trusting LLM Outputs

One big hurdle with LLM-generated content is debugging or verifying it – especially for beginners. When an LLM writes code or explains a concept, it does so with supreme confidence (and no indication of uncertainty). A novice might be completely oblivious if that code has a subtle bug or the explanation has a slight error. The illusion of correctness is strong – the answer sounds authoritative. Seasoned experts usually approach AI output with healthy skepticism: they test the code, double-check facts, and use their experience to sniff out nonsense. A beginner, however, might take the output at face value and run into trouble when things don’t work. Debugging someone else’s (or something else’s) solution can be harder than doing it yourself from scratch. I’ve seen students struggle to fix code that “the AI told them would work,” feeling lost because they don’t understand the solution enough to tweak it. This scenario can be more time-consuming and discouraging than if they’d tried it themselves initially.

In the coding context, a darkly funny saying is circulating: “AI isn’t a co-pilot; it’s a junior dev faking competence. Trust it at your own risk.”. That captures the situation well – LLMs sound confident but can make rookie mistakes. For an experienced coder, the LLM is like a junior assistant who needs supervision. For a novice, that “assistant” might confidently lead them off a cliff regarding a buggy approach or a misinterpreted concept. The challenge, then, is teaching learners to not blindly trust LLM outputs. They must learn to ask: “Does this answer make sense? Why does this code work (or not)? Can I verify this claim?” Without that critical eye, using LLMs can become an exercise in blind faith – the opposite of the analytical mindset we aim to cultivate in education.

Quick Answers vs. Deep Understanding

There’s also a qualitative difference between skimming an AI-generated answer and engaging in deeper learning through traditional resources. I’ll admit, it’s incredibly tempting to fire off a question to ChatGPT and get a neatly packaged answer, rather than digging through the official documentation or searching forums. It saves time in the moment. But I’ve found that what I gain in speed, I often lose in depth. Reading official documentation or a detailed StackOverflow thread might take longer, but it exposes me to the why and how, not just the what. Often, those sources include caveats, different viewpoints from commenters, or related tips that an LLM’s single answer might gloss over.

In fact, one developer quipped that LLMs are a more fluent but also more lossy way of interfacing with Stack Overflow and tutorials. The AI might give you a quick synopsis of what’s out there, but it can lose nuance and detail – kind of like reading only the summary of a long discussion. When a topic is well-covered on forums or documentation, an LLM can indeed fetch a quick answer tailored to your question. However, if the topic is unusual or not well-represented in the training data, the AI may give you irrelevant or incorrect info (“circular nonsense,” as that developer said). By contrast, if you take the time to read through documentation or ask peers, you can usually piece together a correct solution and also understand the context. I personally recall many times when slogging through a tricky manual or a long Q&A thread taught me things I didn’t even know I was missing. Those “Aha!” moments often come from the deeper dive, not the quick skim. So, while LLMs can serve up answers on a silver platter, there’s a richness in traditional learning methods that we shouldn’t lose. Quick answers have their place – especially when you already grasp the fundamentals – but for true learning, there’s no real substitute for digging in and doing the reading and thinking.

LLMs as a Tool, Not a Necessity

All that said, I’m not advocating we throw out LLMs entirely. Far from it! I see them as valuable tools – just not essential ones for learning. We should treat access to LLMs similarly to how we treat access to power tools in a workshop. A power drill is incredibly useful and can speed up construction, but a good carpenter still needs to know how to use a hand tool and understand the building principles; not every task requires the electric drill. Likewise, an LLM can accelerate certain tasks for a knowledgeable user, but a student should first learn how to hammer nails (solve problems) by hand before reaching for the power drill of AI. If one doesn’t understand the basics, the fancy tool can be detrimental or dangerous.

It’s also worth noting that LLMs are a convenience, not a right or requirement. Many of us learned skills and completed research long before these models existed. Students today should view ChatGPT or similar AI as an optional aid that can occasionally help clarify or inspire – not as a default first step for every problem. In fact, sometimes, I encourage students to pretend they don’t have access to an AI assistant to simulate real problem-solving conditions. If they get truly stuck after earnest effort, then using an LLM as a tutor or to get a hint is fine. But immediately resorting to the AI at the first sign of difficulty can become a bad habit.

Another practical aspect is that the AI landscape is rapidly evolving and chaotic. There’s a diversity of tools available now, with new models and versions coming out all the time – and it’s not apparent which one is best for a given task. For example, today we have:

OpenAI’s GPT-4 (ChatGPT) is a leading model known for its strong capabilities. It is often used for complex tasks (though it requires a subscription or access and has limits).

Between me writing this post and publishing it, Grok.com model version 3 became generally available, and it beat out all other models in every benchmark.

Google Bard – another conversational AI that is freely accessible and integrates some up-to-date information but might lag in coding accuracy compared to GPT -4.

Anthropic’s Claude – an AI with a very large context window (great for feeding lots of text) but less commonly available.

Open-source LLMs (e.g., LLaMA 2, Falcon, etc.) are models you can run or fine-tune yourself. They offer flexibility and privacy but require technical know-how and often lack the quality of top-tier models.

This zoo of AI models means that there’s no single standard tool everyone must use – and each comes with trade-offs. The “best” choice can depend on the task, personal preference, or even ethical considerations (like keeping data private). Given this uncertainty, I view LLMs as helpful accessories in learning rather than core essentials. If a student doesn’t have access to GPT-4, it’s not the end of the world – they can still learn effectively via textbooks, websites, and their reasoning. Conversely, having the fanciest AI doesn’t automatically make one a better learner or researcher; it always depends on how you use it.

Guidelines for Use: Finding the Balance

So, what’s the practical way to balance leveraging LLMs and ensuring real learning happens? My current recommendation (admittedly a strong opinion, loosely held) is a somewhat conservative approach: do not provide students automatic access to LLMs in official learning settings, but don’t ban them outright. In our lab, for instance, I don’t hand out ChatGPT accounts or integrate an AI into the core curriculum. Students are expected to grapple with assignments using their minds (and resources like books, notes, and the internet). If they choose to consult an LLM on their own time, that’s their decision – but we don’t encourage it or build our teaching around it. This approach conveys that we value the learning process over just getting the answer. It also avoids any notion that using the AI is “required” or officially endorsed, which might make some students uncomfortable or overly reliant.

For researchers and more advanced learners, I take a case-by-case stance. In research, time is precious, and the problems are often open-ended. If an LLM can speed up a literature review, help brainstorm experimental designs, or even generate some boilerplate code for data analysis, I’m open to its use. The key is that the researcher must remain in the driver’s seat. We evaluate: Does using the LLM meaningfully benefit the project? Are we double-checking whatever it produces? In some cases – for example, when writing a quick script to format data – using AI is a harmless shortcut. In other cases – like deriving a critical formula or core algorithm – it might be too risky to trust the AI or simply crucial for the researcher’s growth to solve it manually. We also consider ethical and privacy factors: feeding proprietary research data into a public AI may be a bad idea, for example. There’s no one-size-fits-all rule here; it requires judgment. But broadly, students and beginners get more restrictions (for their own good), while experienced folks have more leeway with careful oversight.

(I am writing this while I have the capability to infer at 8 tokens per second on my own Deepseek R1 model – so privacy can be debated.)

My Personal Approach (Strong Opinions, Loosely Held in Action)

To lay my cards on the table: I’m not just preaching from an ivory tower – I actively grapple with how I use LLMs in my daily work. I’ll share a personal approach that reflects the balanced philosophy I’ve been discussing. I do use ChatGPT (and other LLMs) as a kind of writing and brainstorming partner. For example, when drafting narration scripts for a presentation or exploring how to phrase a concept clearly, I’ll have a chat with the AI. It’s fantastic for generating a few different ways to explain an idea, or even giving me a rough narrative flow that I can then personalize. In those cases, I treat the LLM like a collaborator who helps me articulate thoughts – it genuinely accelerates my work without detracting from my understanding (since the experience must first come from me to guide the AI).

However, when it comes to coding or solving research problems, I deliberately stay “hands-on”. If I’m learning a new programming language or tackling a tricky bug in my code, I resist the urge to ask the AI to fix it for me. I’m refining my skills and reinforcing my knowledge by working through it myself. It’s slower and sometimes more painful, but it’s the productive struggle I believe in. I often remind myself that every error I debug and every algorithm I write from scratch is an investment in my future abilities. Using AI to do those things for me would feel like cheating myself out of learning. So in practice, I use LLMs for acceleration in areas where I’m already competent(writing, summarizing, ideating), and avoid using them as a crutch in areas where I’m still growing (learning new tech, building intuition in a domain). This personal rule of thumb has served me well so far – it lets me enjoy the benefits of AI augmentation without losing the satisfaction (and long-term benefits) of doing hard things on my own.

Conclusion: Proceed with Caution and Curiosity

In closing, I maintain that LLMs are potent allies in modern research and learning – but we must engage with them thoughtfully. As an educator, I want to produce thinkers and problem-solvers, not just people who can play “20 questions” with an AI until it spits out an answer. The long-term effects of widespread LLM use on learning and cognition are still unknown. Will students of the future struggle to think independently if they grow up always consulting an AI? Or will they reach even greater heights by offloading tedious tasks to machines and focusing on creativity? We don’t fully know yet. That uncertainty is precisely why a critical, go-slow approach feels right to me at this stage. Let’s use these fantastic tools and constantly ask ourselves why and how we’re using them. By holding our strong opinions loosely, we stay open to change: if evidence down the line shows that deeper LLM integration improves learning without drawbacks, I’ll happily adapt. This is written from the vantage point of being exposed to ChatGPT3 through all models since March 2025, not vantage enough at all in the scale of AI model development. Until then, I’ll continue championing a balanced path – one where human intuition, struggle, and insight remain at the center of learning, with AI as a supportive sidekick rather than the star of the show. After all, the goal as an educator is to get answers faster and cultivate minds that can understand and question the world – with or without an LLM whispering in our ear.

decentralized and distributed systems

Pointers for distributed vs decentralised:

Some bookmarks to read if you are a distributed systems researcher [1]

  • A decentralized system is a subset of a distributed system.
  • The primary difference is how/where the “decision” is made and how the information is shared throughout the control nodes in the system.
  • Decentralized means that there is no single point where the decision is made.
  • Every node makes a decision for it’s own behaviour and the resulting system behaviour is the aggregate response.
  • A key characteristic of decentral systems is that typically no single node will have complete system information.
  • “Distributed means that the processing is shared across multiple nodes, but the decisions may still be centralized and use complete system knowledge” says coinbase in their blog post
  • A scenario to think of:
    • Some control algorithms I’ve seen for multiple quad-copter control are purely distributed in that a central over-seer gives optimization problems to each copter to solve then return the solution.
    • The over-seer will then issue commands based on the aggregate result.
  • Here’s a philosophical question:
    • if the over-seer is “voted” into office by the nodes, is it decentralized or centralized?
    • I’d have to say decentralized, but it is arguable says MaRi Eagar
    • then I tend to ask what is distributed systems?

Keywords that matter

when you start the debate (here central systems are included): [2]

  • Points of Failure / Maintenance
  • Fault Tolerance / Stability
  • Scalability / Max Population
  • Ease of development / Creation
  • Evolution / Diversity

References:

  1. What is the difference between decentralized and distributed systems?
  2. Centralized vs Decentralized vs Distributed

DNSed: A simple useable internet name for large scale IoT

Intent

When there is a city wide Wireless Sensor Network (WSN), this has to be resolved with anything meaningful, say name of where it is located. then this has to be the name that it should be resolved to.

to creat DNSed, as in past tense in English for DNS. To DNS the shit out of the IoT. To create an amazing network and to overload the DNS servers. To create everything out in the open, so everything in the Hollywood movies can come true.

Scenario

  • When a water tank level indicator at place called “Meereen”.
  • There is a number for the water tank which is 256.

then, this can be described in the internet nomenclature as

  • domain name: meereen.got
  • object: water tank
  • number: 256
  • sensor type: level indicator

this would translate to an internet name of “level.256.water.meereen.got”

usually, there is only a sensor in a an area and they are organised in cluster.

in that case, Meereen’s water tank is being referenced, and the sensor 256 is being addressed where the level is being asked for, https://256.water.meereen.got/level where level is a service provided by the sensor

 

Possibility:

It is possible to use BIND9 to build a DNS server, then create the zone records to point to the different sensors. the tutorial gives a good insight on deploying a BIND9 DNS server [3]. There are very good python libraries available in such an instance to build an DNS server and then work with their API. The following are some interesting DNS APIs for python to process DNS records on server.

[1] http://www.dnspython.org

[2] https://pypi.python.org/pypi/easyzone/1.2.1

Implementation:

In this effort, the implementation takes advantage of the REST API provided by DigitalOcean to make the DNS. as the idea is to create a very dynamic name resolution for IoT devices and this does not involve building a DNS server from scratch. The DNSed will be a library that will used in the IoT devices as well to communicate to the central server which will be further proxied to the DNS Server of DigitalOcean. This architecture would provide a method to have a better security by not distributing the API keys throughout the network on every device.

The functional block diagram below tries to describes this exact architecture

drawit-diagram-2

References:

[1] http://www.dnspython.org

[2] https://pypi.python.org/pypi/easyzone/1.2.1

[3] https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-14-04

[4] https://developers.digitalocean.com/documentation/v2/#domain-records

[5]
drawit-diagram-1

SensyLight: sensible atmosphere using Internet of Things

https://vimeo.com/192196471

The above video is from a research lab at the MIT Media Lab called Responsive Environments. They have a really interesting article [1] about a multimodal mediated work environment.

Internet of Things has been of great buzz these days. It is interesting, but why is it interesting? Just made a project/home lighting on this project.

So, here is the scenario for the internet of things. The thing in the Internet of Things is the web controlled lights – LED strip. The “control” part of the lights is managed by the Arduino. The task of Arduino would be to “GET” data that matters and send that info to the light strip. The ways in which the LED strip can be manipulated from the Arduino can be listed as

  • 1 LED can have 3 inputs, R G B.
  • Each R G B can value from 0 – 255 which is 256 values.
  • There are 32 LEDs in the strip.

Which makes a lot of math and logical decisions for the Arduino to handle. That is the whole point of networking these devices, now they have access to on-demand computing resources. This means we need the medium to connect the Arduino to the internet. That is done using the WiFi module which communicates with the Arduino using USART communication.

There are two ways to handle the information flow:

  • To directly to give out RGB information an hour
    • A lot of data transfer between the devices, but all of the computing, the decision is taken care of by the remote server
    • the device is highly dependent on the connection for operation
  • To query the server for Sunlight information (sunrise and sunset) and compute the colour information.
    • Having an update system to change the “compute” algorithm makes it highly robust.
    • Gets information for a day / a week and then “compute” with the algorithm. Also, listen for any settings like
      • Party lights
      • Work lights
      • get back to sunlight operation

Tools used:

Low cost, easy implementation of mediated atmospheres, to make your apartment to provide sensible lighting that can help harmonize the body and mind with the circadian rhythm.

[1] 17161.JosephA.Paradiso.Preprint1.pdf

[2] 192196471

Developing for ESP8266 using Arduino IDE

Cut to action steps:

  1. Install Arduino IDE
  2. Install board support packages to compile for ESP8266
    1. http://arduino.esp8266.com/stable/package_esp8266com_index.json
    2. How and where to do it!
      1. first add that URL in the additional board managers URL
      2. now goto the board manager and look for ESP8266 and install the package
      3. compile your first program, don’t upload yet
      4. To upload, if you have NodeMCU, Arduino takes care of turning the boot-loader mode. if any other, then better to put it yourself into boot-loader mode.

Enjoy ESP8266 development!

 

I have an app idea, which cloud provider to choose?

There are millions of cloud providers out there, may be not, but there are enough to confuse you with their features and creative billing terms.

Ofcouse, its traditional VPS style and not using Docker to pack your app.

Now, the two cloud provider I choose to choose between are

Why this two?

I am not paid any one of those cloud providers, that further more vaguer for the reasoning. Being said that, to see from the perspective of highly scalable apps there are two philosophies.

  • I build my app using a framework from my cloud provider and my service provider will make it easier to deploy and scale up or down on demand
  • I setup everything and orchestrate the deployment process using chef, puppet or similar application and write my own logic for processing the on demand scaling

yes, ordered in the same order as the service provider. I will put my two cents of my philosophy in software development and this totally depends on the type of developer.

one follows the guidelines laid out by a framework to strictly develop using those or to use libraries to build ones own app philosophy which dictates its own framework as you build it up.

The fight is between libraries and frameworks, when you know what you are building and the final line is the light at the end of the tunnel, its probably much easier to find the suitable framework and nail it! important thing here would be that everything would have been already thought out for you by the developers. Whereas when you are building something that improvises over time, I prefer developing using libraries which gives a greater scope for solving problems.

Libraries are my way of doing. Choose generic libraries build out the app and improvise over time. frameworks might die out but standard libraries usually stay.

After those two cents, comes the drool factor, Does someone have a command line fetish in your team, stop reading here and starting using digitalocean.

So, whats the framework am I getting myself when i use AWS would be the next question! AWS has an amazing product line and most of them are amazing. I love how they built simple-storage-service s3, relational-database-service RDS or elasticache. But my fallout was using the elastic-bean-stalk EBS which is basically a framework that warps elastic-compute-cloud EC2, RDS and s3 and can be supplemented with all the other million products they offer.


comparing them for features of the two will be for another day

The advantages are

  • easily point-and-click and tell your app to scale up and down automatically
  • all services/servers are in one virtual-private-cloud
  • scalable online for block storage
  • create database, cache replications and clusters on the go
  • of course, elastic load balancer… its so elastic it scales up and forgoes provisions after the peak

all of it points towards high availability for delivering your app the two things I would point out and not be embarrassed about them are

  • the cost at which it comes, mostly any startup wants to be lean

thats a framework, its also well supported by packages for most of the app development frameworks and libraries that you can import and give the URI, username and password and good to go.

Now, looking at the digital ocean, there is no product offering except for selling a highly available, well distributed cloud. start a VPS, migrate to any location, make it available at any data centre at the same price. The whole look is amazing at digital ocean and I love them for being progressive as a company and to offer a service that is startup – developer friendly.

Here, you get mailed with a IP and root password to ssh into and the rest is history. Everything is open and its up to the developer to set the standards and formalise rules for the app. Choose the stack for development and create a deploy strategy.

i feel pretty flexible and always suggest it with a strong positive feeling that anything is possible / everything is possible if one can envision the requirement.

So, that app we developed, I started out without a clear vision on EBS but we wanted to do something with consuming web API from social media. It was first text, then came the images and now we are working with rendering videos. The first library we wanted in python required third party system packages and that wasn’t being installed due to repository problem. that was the first fall out from EBS to EC2. EC2 proved clearly the way to go. its open, its also a stackless framework-less VPS which only supports SSH with key based authentication. that ended up in messing up with deploying from different machines and losing access to the machine. Of course there is a guide to get your stuff back, but its just a pain during development. Then we switched to digital ocean, devOps took some time but three weeks later it was time to ship the first version!

Digital ocean wins on two grounds for me is framework-less development with developer friendly billing. Write me if you want know more about all the other issues because the deployment is 98% and I will continue to setup the system 🙂

Installing MEAN stack for Fullstack application development

The best one liner for what MEAN stack is given in the following picture.Screen Shot 2015-01-18 at 22.48.40

MEAN stack is more like LAMP.

M = MongoDB

E = ExpressJS

A = AngularJS

N = NodeJS

MEAN Stack Logo

There has been a lot of development from Google for the AngularJS and NodeJS. They are minimalistic and javascript based, for now cutting edge web development tools.

For installing MEAN stack in ubuntu, follow the commands to set up your MEAN Stack. I deployed my server in Digitalocean which is like my obsessed service for cloud deployment.

Install MongoDB
#~ sudo apt-get install mongodb
Install NodeJS and Npm
#~ sudo apt-get install nodejs npm
and create a symlink
#~ sudo ln -s /usr/bin/nodejs /usr/bin/node
Install Bower
#~ sudo npm install -g bower
Install Grunt
#~ sudo npm install -g grunt-cli
Install MEAN
sudo npm install -g mean-cli
Init your first App
$ mean init testApp
type in your IPaddress with port 3000
http://xxx.xxx.xxx.xxx:3000

TI CC2530DK – Contiki OS – Internet of Things

This blog post is an effort to create a one stop information for starting off your Contiki project with cc2530DK.

There is enough information already available on Github wiki. This post is more than an extension to have all information under one place and as usual my way of documenting my projects!

Continue reading “TI CC2530DK – Contiki OS – Internet of Things”

WiFi Positioning System – Using Python and Google Geolocation API

I consider there is these following steps involved for such a program.

I will keep this as a documentation as well as a progress report to keep track of the project.

  1. Reading all the required information
    1. Reading SSID in MAC
      • Using Airport Shell command
      • Here is how it should look: [viraldownloader id=180]
    2. Reading SSID in Linux (Ubuntu), Windows
      • identify shell command for linux/Ubuntu
      • identify shell command for windows
  2. Parsing them in JSON format
    1. Parsing information into required information into prescribed format
  3. CURL and Get the Location information in JSON
  4. Parse it and display on google
  5. Building a GUI

Here is the gitHub repository for the project that I am working on.

https://github.com/akrv/pyWPSLocalisation

Feel free to contribute/contact it is interesting for you aswin[at]southpaw.in

All about Google WiFi Positioning System

WiFi Positioning system is a new way to get precise localisation. It is used in conjunction with GPS to achieve better accuracy. Read through to know how there is a slight privacy intrusion and how you can take care of your privacy issues. I am also sharing some interesting things about this WiFi Positioning System (WPS) that Google offers through its developer API.

It is interesting that Google asks for you to sign up for logging the access point (AP) information in your android phone. Well if you knew when and where it is asked, you will surely hit NO!

They collect your AP information mostly without clear notice and then you have to pay to use the API to access this information. Atleast this is what Google does.

Well some digging says it is just done periodically. My conclusions of how AP information tagged with location is logged are as follows

  • It is somewhere connected to location reporting from Google Location Services.
  • It could be just the localisation data that is sent to Google to while you are using your apps that require location.

So Google actually logs all the Access Point (AP) a device connects to and with the help of GPS it is geolocated and the info is tagged and sent to Google servers!

How to opt out of this WPS?