Junior Developers Can No Longer Write a Working Function Without a Chatbot

At Symisc Systems, PixLab's parent company, we have taken on top engineering students from selective schools either remotely or on-site for their projets de fin d'études, or final-year projects. Some worked on embedded software in C/C++. Others worked on web development in vanilla JavaScript.

One striking pattern is how often even bright students struggle to write a complete, working function without returning to a chatbot for help.

Among the more than 20 students we observed, the tools in use were either ChatGPT or Z.ai's GLM models. Curiously, we did not see anyone using Anthropic's Claude. This was simply something we noticed while working with them, not a formal survey.

An assignment on our Think-Act Desktop Agent gives a good example of what concerned us.

A small dashboard task

A junior developer was asked to write an analytics function for the agent's internal usage dashboard. The task was to retrieve statistics stored as JSON in Redis through the backend and display them on the page using vanilla JavaScript.

He had a master's degree and was actively looking for a job.

During the implementation, he kept returning to his chatbot for elementary questions, including how to get an HTML element by its ID.

That meant looking up document.getElementById().

There is nothing wrong with forgetting a method name. We look things up every day, and using a chatbot for that is perfectly reasonable. What caught our attention was how much of the implementation depended on asking for the next step.

We expected him to need help with our codebase. But inspecting a JSON response, selecting an element and updating its contents should have been familiar enough for him to make progress independently.

Completing the assignment is only part of it

A student can follow a generated implementation and understand each line when it is explained. Writing a similar function from scratch can still be difficult.

The first attempt is where you have to make your own decisions. You inspect the input, decide what to do with it and discover what you misunderstood. Even a small function gives you practice that should make the next one easier.

When the chatbot supplies every step, it becomes harder to know how much of that practice is actually happening.

We build AI products ourselves. We see the usefulness of these tools, and there is no reason to ban them from an internship. But getting the work finished cannot be the only measure of a successful placement. The student should leave more capable than when they arrived.

A reasonable expectation

For a task like this, we think it is reasonable to ask a junior to make an initial attempt before requesting a generated solution. Read the documentation, inspect the response and try the implementation. Then use the chatbot to help with a specific difficulty.

Code review should include a conversation about the work. Ask the student to explain a condition, handle an empty response or make a small change. There is no need for a memory test or an interrogation.

A master's degree does not mean someone knows everything, and nobody expects a junior to work without help. But after implementing one dashboard function, they should be better equipped to write the next.

That is what we want to see: not whether they stop using the chatbot, but whether they need less guidance as they gain experience.

This is how we build our frontends

At PixLab, we use only vanilla JavaScript for frontend development. No React, no Vue. The same approach powers our customer dashboard, which serves thousands of customers, with a backend ingesting millions of real-time API usage records.

We had not removed a framework to make the assignment harder. He was working with the tools we use in production.

Customers rely on that dashboard to check usage for services such as our background removal API. Whether we are displaying those request counts or reviewing Think-Act activity internally, someone needs to understand how the data reaches the screen and why a number might be wrong.

That was the useful part of the assignment: following the data, writing the function and checking its behavior. It was also an opportunity to become comfortable with basic browser development.

Resolving Liveness Detection with FACEIO's Advanced AI Models

Liveness detection is a critical component in biometric security systems, ensuring that the face being scanned is from a live person rather than a photograph, video, or mask. FACEIO, a leader in facial authentication technology, addresses these challenges with its advanced AI models. This blog post explores how FACEIO resolves liveness detection issues, leveraging sophisticated algorithms and security practices.

FACEIO Landing page

What is Liveness Detection?

Liveness detection is a security feature used in facial recognition systems to verify that the scanned face is from a live individual. It prevents spoofing attacks by detecting natural facial movements and responses. Various techniques employed in liveness detection include:

  • Motion Analysis: Detects natural movements such as blinking and head movements.
  • Texture Analysis: Differentiates between the texture of live skin and that of a photograph or screen.
  • Challenge-Response: Prompts the user to perform actions like blinking or smiling to prove liveness.

Implementing Liveness Detection with FACEIO

FACEIO provides an easy-to-integrate solution for facial authentication with built-in liveness detection. Here is a step-by-step guide to activate liveness detection on your FACEIO Application:

  1. Setting Up FACEIO:

  2. Integrating FACEIO SDK:

  3. Initializing FACEIO:

  4. Implementing Liveness Detection:

    • Activate Face Anti-Spoofing first by connecting to the FACEIO Console, then Navigate to the SECURITY tab from the manager main view. Once the target application selected. Activate the Protect Against Deep-Fakes & Face Spoof Attempts security option as shown below:

      async function performLivenessCheck() {
       try {
           const response = await faceio.authenticate({ action: "liveness-check" });
           if (response.livenessScore > 0.9) {
               console.log("User authenticated successfully");
           } else {
               console.warn("Liveness check failed");
           }
       } catch (error) {
           console.error("Liveness check failed", error);
       }
      }
      

Advanced Security Features of FACEIO

FACEIO's commitment to security extends beyond basic liveness detection. Here are some of the advanced features that enhance its security:

  • Multifactor Authentication (MFA): Combine facial recognition with other authentication methods for added security.
  • Customizable User Prompts: Tailor instructions and prompts shown to users during the liveness check.
  • Analytics and Reporting: Access detailed reports on authentication attempts to monitor and improve system performance.

Best Practices for Secure Implementation

FACEIO provides several security best practices to ensure robust protection against spoofing and other security threats:

  • Reject Weak PIN Codes: Ensure users create strong PIN codes during enrollment.
  • Prevent Duplicate Enrollment: Avoid multiple enrollments by the same user.
  • Protect Against Deepfakes: Use liveness detection to counteract spoofing attempts.
  • Forbid Minors: Prevent minors from enrolling in the application.
  • Always Ask for PIN Code: Require PIN code confirmation during authentication for added security.
  • Enforce PIN Code Uniqueness: Ensure each user's PIN code is unique.
  • Ignore Obscured Faces: Reject partially masked or poorly lit faces.
  • Reject Missing HTTP Headers: Prevent requests without proper origin or referer headers.
  • Restrict Domain and Country: Limit widget instantiation to specific domains and countries.
  • Enable Webhooks: Use webhooks for real-time updates on user interactions.

Conclusion

Integrating FACEIO for liveness detection and facial authentication in JavaScript significantly enhances digital security. Its robust API and user-friendly JavaScript library make it easy for developers to implement biometric authentication, preventing spoofing and unauthorized access. FACEIO's advanced features and best practices ensure both security and user experience are prioritized, making it a valuable addition to any web application's defense against modern threats.

For more information, visit the FACEIO website.


Published in: Level Up Coding

fio.js V2.1 Released with Age Verification & Minors Access Restriction

The FACEIO Development Team is thrilled to announce the immediate availability of fio.js V2.1, our cutting-edge Facial Recognition Web Framework with groundbreaking new features with the goal of enhancing security and compliance for your applications.

Over the past few months, we have developed an innovative age verification security option that prevents minors from on-boarding on your application, ensuring your sensitive services remain accessible only to the appropriate age groups.

FACEIO Landing Page

Enhanced Security with Minors Access Prevention 🛡️

Prevent Minors From Enrolling

When activated, this powerful security feature diligently screens and identifies users' age during the on-boarding process, and thus will forbid minors less than 18 years old from enrolling on your application with the fioErrCode.MINORS_NOT_ALLOWED error code being raised if a minor try to on-board on your application, reinforcing your compliance and security measures. This highly requested security feature is immediately available to trigger from the FACEIO Console. Please refer to the updated boilerplate integration code to see this feature in action.

Comply with Jurisdictional Regulations 📜

If your application is offering sensitive services or operating in jurisdictions such as the UK and certain US states that strictly prohibit minors from accessing such services, this security feature is mandatory & invaluable tool for you. By activating it, you can seamlessly align with legal requirements and ensure that only eligible users gain access to your platform.

PAS 1296:2018 Compliance & Age Verification Check

We understand the criticality of meeting industry standards and regulations. That's why we are excited to inform you that PixLab Insight, the default Facial Recognition Engine for FACEIO, is ready to fulfill the PAS 1296:2018 code of practice for online age verification accredited by the UK's Age Check Certification Scheme (ACCS). Our technology guarantees robust age verification capabilities, bolstering your compliance efforts.

Experience the Future of Secure Facial Recognition ✨

At FACEIO, we are committed to providing you with state-of-the-art tools to safeguard your applications and users. The introduction of Minors Access Restriction adds an extra layer of security, giving you peace of mind and enabling you to cater to the right audience for your services.

To explore this exciting new feature and integrate it into your application, simply connect to the FACEIO Console, and activate this option from the Security Tab of your Application Manager. Our comprehensive documentation will guide you through the activation process and assist you in optimizing the functionality for your unique requirements.

24/7 Support & Integration Assistance

We would be thrilled to assist you in implementing the Minors Access Prevention Security Feature or answer any questions you may have. Reach out to our dedicated support team via the FACEIO Console or the Community Forum. Our experts are ready to provide you with top-notch assistance and help you unlock the full potential of FACEIO.

Embrace the power of age verification and elevate the security standards of your FACEIO application. Join us on this exciting journey as we revolutionize facial recognition technology together!

Stay secure, stay compliant, and stay ahead with FACEIO!

fio.js V1.9 Released with Face Duplication Prevention

FACEIO Logo

The PixLab development team is pleased to announce the immediate availability of FACEIO's fio.js V 1.9. A major release which implements highly requested features from our customers including but not limited to:

  • Face Duplication (same user enrolling twice or more) Prevention.
  • Dynamic Session Reloading without Page Refreshing.
  • Faster facial features collection during enrollment.
  • Upto 1.3x faster facial authentication operation.
  • French, Japanese, Vietnamese & Dutch new language packs.

As usual, this update is transparent to our end users & fio.js implementers, and no action is required on your side if you link directly the library from the FACEIO CDN.

Face Duplication Prevention:

Face Duplication Prevention

When enabled, this option shall prevent the same user from enrolling twice or more on your application. That is, if the facial features of the user being enrolled are already recorded, the enroll operation is aborted, and the fioErrCode.FACE_DUPLICATION error code is raised to your host application instead. This option is immediately available to trigger from the FACEIO Console. Please refer to the updated boilerplate code to see this feature in action.

When this option is disabled (default case), it is considered, a no-error operation for the same user to enroll twice or more on your application. This will trigger a collision, and ask the user to confirm his PIN code whenever an authentication operation occurs with the user in question.

Session Reloading without Page Refreshing:

The introduced restartSession() method let you purge the current user session and request a new one. By default, sessions in FACEIO starts following the first call to the enroll() or authenticate() method whichever comes first, and are immutable. After successful call to this method, the old session is discarded, a new one is created, and you can perform another round of calls to enroll() or authenticate() for the same user without reloading (refreshing) the entire HTML page or relying on an external JavaScript function such as location.reload() to do so.

Please note that dynamic session generation via this method are available to the Premium Plans only. Think of upgrading your Freemium application from the FACEIO Console first before calling this method on your frontend

Finally, for additional information & to learn more about implementing FACEIO on your website or web application, please refer to the following documents:

  • Getting Started Tutorial: Learn the fundamentals about implementing facial authentication on a typical web application.
  • Integration Guide: Learn how to implement fio.js, our facial recognition library on your website.
  • Developer Center: Code samples, documentation, support channels, and all the resources yo need to implement FACEIO on your website.
  • Frequently Asked Questions: Get instant answers to the most common questions.
  • Trust Center: Learn how we handle your data securely and in compliance with privacy and legal requirements.