DAILY NEWS

Stay Ahead, Stay Informed – Every Day

Advertisement
I’m a high-school student and I built a free app to stop forgetting everything over the summer



Hey everyone,

The school year is almost over, and every summer I hit the same problem: by September I’ve forgotten most of what I learned. It happens with everything. I feel confident with math formulas while I’m using them, but after a few months away they look like I’ve never seen them. Same with languages — my English and German feel solid at the end of the year or after finishing a book, and a few weeks later my vocabulary and grammar have basically evaporated.

So I built a small app to fight that, called Revise: https://revise-o1t7.onrender.com/

The idea is simple: give yourself regular practice on the things you’ve actually studied, so they stick. You can practise math, history, languages, chemistry and biology — it generates exercises, reading texts (which you can translate word-by-word right in the app) and flashcards, all on a spaced-repetition schedule so things come back just as you’re about to forget them.

It works with whatever AI you already use: you copy a generated prompt into ChatGPT, Claude or Gemini (the free versions are fine), and paste the reply back. No API key, no subscription. It’s free, and you can install it to your phone from the menu.

I’ve been using it for a while and it’s genuinely helped me remember things, not just learn them once. I’d love your feedback — what’s confusing, what’s missing, what you’d want next (there’s a feedback button in your account settings).

Thanks for reading, and I hope it helps someone! 🙂



Source link

Fraudulent Development



“Hey Claude, how do I do x?”, is how I began each coding session. What’s so wrong with asking AI for help? Was the biggest question I had when I started learning to code. I had a myriad of excuses justifying my use of it; I can iterate faster, know more and have access to the entire internet. Unfortunately, AI can’t actually make you a developer, or a better one.

Okay, but why bring up ethics?

Great question! I’m glad you (I) brought it up! To preface this, I am simply an individual who has seen the downsides of unethical actions and behaviors, especially my own unethical actions and behaviors.

Not unlike many out there (maybe even you), I began my journey to becoming a developer with great excitement and a deep desire to create some pretty dope apps. “Hey Claude, how do I make a static webpage?” Literally the first prompt I made. Not so unethical. Essentially a Google search with extra steps. Now let’s look at the next prompt.

“Hey Claude, I want to make a terminal based dev tool that helps developers warm up in the mornings, can you help me with that?” Even that doesn’t feel entirely unethical. Probably lazy, but not unethical. This next prompt right here, this is the one that made me realize my folly: “I feel over my head, can you just finish this project and make sure to follow Node.js best practices for security”… There it is, this is what I am referring to when I say “unethical”. I gave up, and made AI finish my project, shipped it as my own creation and then sat there like a chump hoping no one would find me out as the fraud that I am.

But Ffyrn, how is that unethical? I lied about the project, I wrote blog posts and social media posts about this amazing new tool that I alone had created. It even got a little over 400 downloads from NPM. Gross, I know. I could give excuses like, well I see other new devs doing this too, or even, AI is the forefront of dev tech and I need to be ready for it. But those have as much logic to them as a puddle of water on the sun (none). I’m not trying to damn anyone for actively using AI, up until now I have had a pretty “anti-ai” vibe in this post. But I do think it can be useful, just under the right conditions. Not how I was using it.

Iterating at the speed of ignorance

“But it helps me iterate faster!!” Okay…so what? Did I miss the beginning of some race? When did speed equate capability? When did speed make a person a better developer? It doesn’t. I got so trapped in the “iterate fast” lifestyle before I even knew how to print a “Hello, World” statement to the terminal, that I missed the entire point of writing code. Which is to have fun and build awesome tools that enrich other peoples lives.

Solving a problem isn’t about how fast you can solve it, or if you use “the best” tools to solve it. What matters is that you understand the problem AND the solution in its entirety. Several times I have prompted AI to give me a wireframe or MVP for an app idea, just to see what it poops out for me. It’s rarely anything actually good or useful. I generally receive a poor retelling of what someone on Reddit said six years ago.

Iterating fast doesn’t matter in my opinion, but if you truly want to iterate fast, go to YouTube, watch a tutorial video, be the post on Reddit that AI scrapes, or even better; read a book! There is a legion of books out there, probably one for the very problem you are facing right now (I just started The Deeper Love of Go by John Arundel!)

The entire internet at your fingertips (like it wasn’t already there…)

We could do a quick google search, and it will yield more accurate answers every time instead of asking AI. Simple right? Maybe too simple. Somehow, I convinced myself I had to use the same tools as other devs, or I’m not a real/successful dev. But for every dev who chooses to use AI as google, there are more who bear the burden of inquisitiveness, refusing to accept AI slop.

I treated AI like it was my own personal access point to the internet. Ask a question and get an answer. Need syntax? AI. Ew, I understand. But as they said in Monty Python, “I got better.” Now, I just google it, or better yet, I go to a Subreddit for my questions (Stack Overflow is absolutely still a viable option, it just seems not as active as in the past).

Good for you, Ffyrn. You learned what every developer learns in CS101. Except not every developer takes CS101, or even CS50 (it’s free on YouTube!!) Most of us get a desire to solve a problem, learn that writing code isn’t just for the Torvalds of the world, and get excited. Raise your hand if this feels like you (okay quickly put it down before someone sees you randomly raising your hand, weirdo).

The big finale

You’ve made it this far? I’m honored! Why does all of this make me a fraud? Is AI bad to use? Can you get better (I did.) The latter two are for you to decide. As for the former, I said I was something I was not. I gallivanted around like I was a developer, when in reality I was simply a poor prompt enthusiast. I can absolutely understand being afraid that people won’t respect you because you are new, which is fair. Respect is earned in this industry, trust is the baseline, and you cannot have either when someone will just copypasta an AI response.

Furthermore, I write this to out myself for my past fraudulence and to give transparency on how I view this topic. Too often I scroll through dev.to or Hacker News and see nothing but articles and posts about how “AI makes you a better developer”, or the latest and greatest AI tool. When I really want to be seeing people building things without the handicap of AI, people challenging themselves and failing. I want to see what I have been told are the day’s of yesteryear. Devs working with each other to make cool shit. Not devs trying to get to the finish line first. And I could absolutely be looking in the wrong places for these things, if so, I apologize for my griping. Please show me where I can find these things, I will be eternally grateful!



Source link

Internet Architecture – DEV Community



Internet Architecture describes how data is organized, transmitted, and managed across networks. Different architectural models serve different needs, some offer a straightforward client-server setup (like a website), while others rely on a more distributed approach (like file-sharing platforms).

Peer-to-Peer (P2P) Architecture

This is when computers and devices are linked directly to each other without the need for a central server. This system can be fully decentralised or partially centralized as the server does some tasks but doesn’t host any of the data. This setup allows nodes to communicate directly with each other, sharing resources such as files, processing power, or bandwidth, without the need for a central server.

For example, three friends finished college and want to share their college photos with eachother. Instead of uploading all the photos to a single website or server, each of them sets up a folder on their own computer that can be accessed by the others. They use a file-sharing program that connects their computers directly.

First, they install a Peer-to-Peer (P2P) file-sharing application on their computer and then select the folder containing the photos to share with the other friends. Everyone preforms the same setup on their computers and once everyone is connected though the P2P application, they can all browse and download photos directly from the other’s shared folders. This allows for a direct exchange of files without the need for a central server.

A popular example of Peer-to-Peer (P2P) architecture is torrenting, as seen with applications like BitTorrent. In this system, anyone who has the file, referred to as a seeder, can upload it, allowing others to download it from multiple sources simultaneously.

Advantages

Scalability – Adding more nodes can increase total resources (storage, CPU, etc.).
Resilience – If one node goes offline, others can continue functioning.
Cost distribution – Resource burden, like bandwidth and storage, is distributed among peers, making it more cost-efficient.

Disadvantages

Management complexity – Harder to control and manage updates/security policies across all nodes
Potential reliability issues – If too many peers leave, resources could be unavailable.
Security challenges – Each node is exposed to potential vulnerabilities.

Client-Server Architecture

This model is one of the most widely used architectures on the Internet. Clients(user devices) send requests, such as a web browser asking for a webpage, and the severs then respond to these requests, like a web server hosting that webpage. This model typically involves centralized servers where data and applications reside, with multiple clients connecting to these servers to access services and resources.

Say, you want to check the weather forecast on a website. You start by opening the web browser on you phone or computer, and proceed to type in the website’s name, e.g., weather.com. When we press enter, the browser sends a request over the Internet to the server that hosts weather.com. This server, a powerful computer set up specifically to store the website’s data and handle requests, receives the query and processes it by locating the requested page. It then sends back the data (regarding the request) to our browser, which receives this information and displays the webpage, allowing us to see the latest weather updates.

Single-Tier Architecture

In a single-tier architecture, the client, server, and database all reside on the same machine. This setup is straightforward but is rarely used for large-scale applications due to significant limitations in scalability and security.

Two-Tier Architecture

The two-tier architecture splits the application environment into a client and a server. The client handles the presentation layer, and the server manages the data layer. This model is typically seen in desktop applications where the user interface is on the user’s machine, and the database is on a server. Communication usually occurs directly between the client and the server, which can be a database server with query-processing capabilities.

Three-Tier Architecture

A three-tier architecture introduces an additional layer between the client and the database server, known as the application server. In this model, the client manages the presentation layer, the application server handles all the business logic and processing, and the third tier is a database server. This separation provides added flexibility and scalability because each layer can be developed and maintained independently.

N-Tier Architecture

In more complex systems, an N-tier architecture is used, where N refers to any number of separate tiers used beyond three. This setup involves multiple levels of application servers, each responsible for different aspects of business logic, processing, or data management. N-tier architectures are highly scalable and allow for distributed deployment, making them ideal for web applications and services that demand robust, flexible solutions.

Advantages

Centralized control – Easier to manage and update.
Security – Central security policies can be applied.
Performance -Dedicated servers can be optimized for their tasks.

Disadvantages

Single point of failure – If the central server goes down, clients lose access.
High Cost and Maintenance – Setting up and sustaining a client-server architecture is expensive, requiring constant operation and expert management , making it costly to maintain.
Network Congestion – High traffic on the network can lead to congestion, slowing down or even disrupting connections when too many clients access the server simultaneously.

Hybrid Architecture

A Hybrid model blends elements of both Client-Server and Peer-to-Peer (P2P) architectures. In this setup, central servers are used to facilitate coordination and authentication tasks, while the actual data transfer occurs directly between peers. This combination leverages the strengths of both architectures to enhance efficiency and performance.

For example, when you open a video confrencing app(eg. Zoom) and log in, the username and password are verified by central servers, which also manage the session by co-ordinating who is in the meeting and controlling access. Once you are logged in and the meeting begins, the video and audio data is transferred directly between your device and other’s, bypassing the central server. This reduces lag and enchances the video quality. By using the central server for initial connection and control tasks, while the bulk of data transfer occurs in a peer-to-peer style, you can reduce the server load and leverage direct, fast connections between peers.

Advantage

Efficiency – Relieves workload from servers by letting peers share data.
Control – Central server can still manage user authentication, directory services, or indexing.

Disadvantage

Complex Implementation – Requires more sophisticated design to handle both centralized and distributed components.
Potential Single Point of Failure – If the central coordinating server fails, peer discovery might stop.

Cloud Architecture

Cloud Architecture refers to computing infrastructure that is hosted and managed by third-party providers, such as AWS, Azure, and Google Cloud. This architecture operates on a virtualized scale following a client-server model. It provides on-demand access to resources such as servers, storage, and applications, all accessible over the Internet. In this model, users interact with these services without controlling the underlying hardware.

Services like Google Drive or Dropbox are some examples of Cloud Architecture operating under the SaaS (Software as a Service) model, where we access applications over the internet without managing the underlying hardware. Below are five essential characteristics that define a Cloud Architecture.

Characteristic

On-demand self-service – Automatically set up and manage the services without human help.
Broad network access – Access services from any internet-connected device.
Resource pooling – Share and allocate service resources dynamically among multiple users.
Rapid elasticity – Quickly scale services up or down based on demand.
Measured service – Only pay for the resources you use, tracked with precision.

Advantages

Scalability – Easily add or remove computing resources as needed.
-Reduced cost & maintenance – Hardware managed by the cloud provider.
-Flexibility – Access services from anywhere with Internet connectivity.

Disadvantages

Vendor lock-in – Migrating from one cloud provider to another can be complex.
Security/Compliance – Relying on a third party for data hosting can introduce concerns about data privacy.
Connectivity – Requires stable Internet access.

Software-Defined Architecture (SDN)

Software-Defined Networking (SDN) is a modern networking approach that separates the control plane, which makes decisions about where traffic is sent, from the data plane, which actually forwards the traffic. Traditionally, network devices like routers and switches housed both of these planes. However, in SDN, the control plane is centralized within a software-based controller. This configuration allows network devices to simply execute instructions they receive from the controller. SDN provides a programmable network management environment, enabling administrators to dynamically adjust network policies and routing as required. This separation makes the network more flexible and improves how it’s managed.

Advantages

Centralized control – Simplifies network management.
Programmability & Automation – Network configurations can be changed quickly through software instead of manually configuring each device.
Scalability & Efficiency – Can optimize traffic flows dynamically, leading to better resource utilization.

Disadvantages

Controller Vulnerability – If the central controller goes down, the network might be adversely affected.
Complex Implementation – Requires new skill sets and specialized software/hardware.



Source link