Word Hammer on SambaNova- Using Cursor AI-Assisted Editor

9-December-2024 By Jeffrey Cooper

Word Hammer on SambaNova- Using Cursor AI-Assisted Editor

This week’s app is called Word Hammer, intended to be a foreign language enhancement application.  It will hammer you on specific concepts until you get it.

This project certainly took longer than expected, though.  I will discuss both the application itself, which I plan to use a lot, and the what-became-arduous process of creating it, or rather, fixing and fine-tuning it and whack-a-mole bug problems.  One goal of this project, besides the app, was to use Cursor’s AI-assisted editor to build the app and fix the bugs.  I intended to push Cursor to do nearly all the work of actual coding, with mixed results.  Later in this article, I will discuss the good, the bad, and my feelings about Cursor (its bugs and capabilities).  On top of this, I also built the app, at least in this initial phase, on top of SambaNova’s APIs.  More on SambaNova below as well.

First, let’s discuss a bit more about this app!  When I do these mini-projects, I try to think of projects that might be useful to me.  As I am learning Spanish, which you can see immediately to the right 😉, I am trying very hard to master the language.  While I am at a B2 level, I have quite a few rough areas that I need to perfect.  Hence, the idea of Word Hammer.  Let’s take a walk through the app.  And by the way- for now at least, the experience is optimized for a laptop or desktop, as the design is not responsive- I don’t recommend trying it on a mobile device, though it will work.  I might adapt it in the future and will update if I do.

Nota para los lectores españoles: Estoy escribiendo mis articulos en dos idiomas mientras lo aprendo. Para mas información, lea este artículo.

La aplicación de esta semana se llama Word Hammer (Martillo de Palabras), intentó ser una aplicación de mejora lenguas extranjeras. Habrá martillarte en conceptos específicos hasta que lo entiendas.

Este proyecto ciertamente llevó más tiempo que esperé. Discutiré ambas la aplicación en sí, cuando planearé usar mucho, y lo que-convirtió-arduo proceso de crearlo, o mejor dicho, arreglarlo y ponerlo a punto y problemas de errores whack-a-mole. Un objetivo del proyecto, además la app, era utilizar el editor asistido-IA de Cursor para construir la app y arreglar los errores. Intenté empujar Cursor para hacer casi todo el trabajo de la codificación real, con resultados mixtos. Luego en este articulo, discutiré lo bueno, lo malo, y mis sentimientos sobre Cursor (sus errors y capacidades). Encima esto, construí también esta app, al menos en esta primera fase, encima las APIs de SambaNova. Más sobre SambaNova a continuación.

Primero, hablemos de un poco más sobre esta app! Cuando hago estos proyectos-mini, trato pensar de proyectos que son útiles para mi. Así estoy aprendiendo español, que se puede ver aquí 😉, Me esfuerzo mucho por dominar el idioma. Mientras estoy en una nivel B2, tengo bastantes areas de dificultades que necesito perfeccionar. De ahí, la idea de Word Hammer. Demos un paseo por la app. Y, por cierto, para ahora, la experiencia esta optimizado para un portátil o desktop, como el diseño no esta responsivo. No recomiendo usar en un dispositivo móvil, aunque funcionará. Podría adaptarlo en el futuro y alcanzaré si hago.

Word Hammer Main Screen

This app is intended to help you master one thing at a time. You can pick the language (free form text) and enter a problem area. For example, in Spanish, I still sometimes confuse “por” and “para.” And “salir” and “dejar” both mean “leave,” but for different usages.  You pick an area, describe the problem, and the app will then “hammer” you with infinite questions, as long as you wish to continue.

Esta app pretende ayudarte a dominar una cosa a la vez. Puedes elegir el idioma (cualquier idioma) y describir un área de problema. Por ejemplo, en español, a veces confundo todavía “por” y “para.” Y “salir” y “dejar” ambos significan “leave,” pero por diferentes usos. Elige una área, describe el problema, y la app te martillará con preguntas infinitas, mientras desees continuar.

Word Hammer Quiz

Once you enter the subject, the app fetches 20 questions from the Llama LLM on SambaNova and proceeds to quiz you.  You will need to type your answers using the alphabet of your target language, so if an accent is needed, you must type the accent to get it right. And verbs might be conjugated.

Because this is coming from an LLM, the nature of Generative AI is that it is, while very good, imprecise and varied.  Sometimes the LLM will make a mistake, also called a hallucination- I can’t help that, so you will have to accept that this happens.  And it seems to have a preference for past tense in the verbs, though it does use other tenses as well.

Una vez entres la tema, la app obtiene 20 preguntas del Llama LLM en SambaNova y empieza preguntarte. Necesitarás entrar tus respuestas usa el alfabeto de la lengua meta, si un acento está necesitado, debe escribir la carácter con el acento. Y, los verbos puede ser conjugado.

Por esto es de un LLM, la naturaleza de la misma de IA Generativo es que es, mientras muy bueno, impreciso y variado. A veces el LLM hará un error, también se llama una alucinación- no puedo ayudar eso, así tendrás aceptar que eso sucede ocasionalmente. Y lo que parece tiene una preferencia para el pretérito en los verbos, aunque hace usar otros tiempos también.

Word Hammer Meters

As you answer the quiz questions, the Total Correct meter will track your progress.  Presumably, you’ll get better as you keep answering questions and correct mistakes you were making.  After at least 20 questions have been answered, a “Trailing 20” meter will appear.  This tracks only the last 20 questions.  If you have made mistakes, this meter will show recent progress, and when it reaches 100%, you have at least temporarily mastered this problem area.  Of course it won’t hurt to come back in a week and try the same problem again, just to reinforce it- that is how we learn.

Mientras respondes las preguntas, el medidor de Total Correct seguirá tu progreso. Presumiblemente, mejorarás mientras respondes más y más preguntas y arreglas los errores hiciste. Después de al menus 20 preguntas, un medidor de “Trailing 20” parecerá. Este sigue indica progreso recientemente, cuando llega a 100%, tienes al menos lo has dominado temporalmente esta área de problema. Por supuesto, es bueno para volver en una semana y probar el mismo problema otra vez, para reforzarlo- lo que como aprender.

Language Examples

I briefly tried this with other languages, which you can see above.  Other than knowing some German, I cannot vouch for the others. But you are likely to get good results from mainstream languages that have a lot of content the LLMs trained on.  My Spanish teacher, who is married to a Ukrainian and is learning Ukrainian, told me that it works quite well in that language, so that bodes well for others.

Some caveats- as you can see from the 4th box above- Hebrew and other Semitic languages that read right-to-left, do not currently render that way.  And I tried Japanese and Mandarin, and there is an outright problem with those languages that I will have to fix.

Summarizing the usefulness of this application, even if you encounter LLM mistakes (the hallucinations), the majority of the questions are generally correct and this will definitely help you. I plan to use it a lot.

Yo probaba brevemente con otros idiomas, que puede ver más arriba. Aparte de entender algo de alemán, no puedo garantizar los otros. Pero probablemente obtendrás buenos resultados de las lenguas mayoritarias que tiene mucho contento en la web que ha entrenado los LLMs. Mi maestro de español, quien está casada con un ucraniano, me dijo que funciona bastante bien en ese idioma, así que es un buen augurio para los demás.

Algunas advertencias- mientras puedes ver de la caja 4ª más arriba- hebreo y otros idiomas semíticos que lee de la derecho a al izquierda, actualmente no renderiza correctamente. Y traté japonés y mandarín, y hay un verdadero problems con esos idiomas y sus caracteres que tendré arreglar.

Para resumir la utilidad de esta aplicación, aunque encuentres errores de LLM ocasionalmente (las alucinaciones), la mayoría de las preguntas generalmente son correctas y esta app definitivamente te ayudará. Planeo utilizar mucho.

Software Bug Alert

 

Bug Alert!

I need to warn you that there is currently a bug- I will fix it, but wanted to get this out as it has taken longer than expected, using Cursor, to get this done (see below).

When you answer a question, you can either hit <Enter>, or click the “Continue” button.  DO NOT MIX MODES at this point- if you start with one method, keep using that method.  I added the buttons in the event you were using mobile devices.  Right now, if you switch modes, it stops checking answers, or double-skips a question, depending which direction you switched.  It has to do with stacked key listeners and I will need to manually fix it.

Necesito avisarte que hay un error- lo arreglaré, pero quería publicar este artículo y app como he llevado más tiempo lo que esperaba, utilizando Cursor, para hacerlo (ve abalo).

Cuando responder una pregunta, puedes golpear <Intro> o pulsar el botón “Continue.” ¡NO MEZCLES LOS MODOS! a este punt- si empieces con un método, continua usar el método. Añade los botones en el evento estás usando un dispositivo móvil. Ahora, si cambiar los modos, la app deja de verificar respuestas, o doble-salta una pregunta, depende cual dirección tu cambió. Tiene que ver con oyentes clave apilados y tendré arreglarlo manualmente.

GitHub Icon


GitHub Repository:
  https://github.com/runningthoughts/Word-Hammer

SambaNova SN40L Inference Chip

SambaNova Chip
Source: SambaNova

Part of this exercise was to try something else new. For the LLM, this time I decided to use SambaNova’s APIs and utilize their accelerated custom hardware (it’s a free account tier for learning how to use them).  The SN40L is a pretty massive chip- I’ve seen one in person at an AI Meetup event they hosted in October.  This type of chip transcends the traditional architectures that have been used for AI- that being NVIDIA’s GPUs, which while super powerful, are not actually optimized for AI.

Una parte del ejercicio era probar algo nuevo. Para el LLM, esta vez decidí utilzar las API de SambaNova y utilizar sus chip hizo a medida (tiene un nivel de cuenta gratis para aprender a utilizarles). La SN40L es un chip masivo- he visto un chip en mano a un Meetup de IA organizó en octubre. Este tipo de chip trasciende las arquitecturas tradicionales que ha usando normalmente para IA- es decir GPUs de NVIDIA, que mientras superpotente, no están optimizados para IA.

SambaNova Performance
Source: SambaNova

How fast are they?  See the above chart, compared to “traditional” LLMs running on popular cloud infrastructures.

The LLM I chose to use was the largest model they hosted- Meta’s open-sourced LLAMA 3.1 405B (405 billion parameters).

If you use the playground at SambaNova, which is similar to ChatGPT or Claude, and simply type in a prompt, it is lightning fast!

This is the LLM backbone of this application in this initial release.  Getting this to work was actually the easiest of tasks- it worked after 1-2 tries, and both o1-mini and Claude Sonnet 3.5 were easily able to map to their APIs, a small testament to the stabilit of SambaNova’s APIs, since both LLMs were trained a while back.  In the near future, I will play around with this more and use some other models they support for comparison.  And I’m sure I’ll have some future projects that can utilize them.

A Note

I did see one peculiar (for LLMs) behavior with Llama on SambaNova. During testing, I reused the same problem area in Spanish, and the LLM’s response was identical each time. This is unusual, as LLMs usually give different results each time due to some purposeful randomness to create variation. Even directly setting the temperature to 0.7, the recommended number, does not seem to change this.  It seems strange to me, and next time I see their representative at a Meetup, I will ask him about this.

¿Cómo son de rápidos? Ve el gráfico arriba, comparado con LLMs “tradicionales” ejecutando en las infraestructuras de nube populares.

El LLM elegí utilizar fue el modelo más grande que tienen- el modelo de Meta LLAMA 3.1 405B (405 mil millones de parámetros).

Si utilizas el Playground de SambaNova, que similar a ChatGPT o Claude, y escribir un prompt simple, ¡es la velocidad del rayo!

Este es la columna vertebral de esta aplicación en esta versión inicial. Hacer que funcione era en realidad la más fácil de las tareas- funcionó después de 1-2 intentos, y ambos o1-mini y Claude Sonnet 3.5 eran poder mapear a sus APIs- una testamenta pequeña a la estabilidad de las APIs de SambaNova, desde ambos LLMs estaban entrenados unas más temprano este año. En el futuro cercano, voy a jugar con el código más y utilizo algunos otros modelos apoyan para comparar. Y estoy seguro tendré unos proyectos futuros que utilizarles.

Una Nota

Vi un comportamiento peculiar (para LLMs) con Llama en SambaNova. Durante las prueba, reutilicé la misma área de problema en español, y la respuesta del LLM era idéntico cada vez. Esto es inusual, así que LLMs generalmente da respuestas diferentes cada vez debido de algo de aleatoriedad intencionada para crear variación. Incluso ajustando directamente la temperatura a 0.7, el numero recomendado, no parece cambiarlo. Lo parece extraño para mi, y la próxima vez que veo el representativo en un Meetup, le pediré sobre esto.

About Cursor- The Good, The Bad, and The Hopeful

Sobre Cursor- Lo Bueno, Lo Malo, y Lo Esperanzador

The Good

There is much good, or much potential, in Cursor. While I originated the code base in OpenAI’s o1-mini, as soon as I created the files, I downloaded Cursor and proceeded to use at that point onwards.

There were times I was just amazed at how well Cursor could go through my code, interpret my descriptions of features or bugs to fix, proposing new or changed code throughout the code base, also adding elements to HTML or styles to CSS as needed.  The original PHP code on the backend was too big and too literal- I prefer PHP to be a minimal backend interface, and when I asked Cursor to “move all the prompt and parameter related elements to JavaScript and pass them to PHP”, it did that with no problem whatsoever, and it worked immediately.

PHP is not my favorite language, by a long shot, so the less I have to do with it, the better.  While I have done some cool JavaScript apps, there are myriad nuances to it, especially when it comes to DOM manipulation and CSS complexity, and Cursor seems to know every trick in the book.  All of this capability expanded my knowledge of JavaScript.  Again, even though I did very significant DOM/SVG manipulation a few years ago with the Connected Gym and Universal Club App simulations, you get rusty quickly if you don’t keep using it.  In this regard, Cursor was a real time-saver.

Lo Bueno

Hay mucho bueno, or mucho potencial, en Cursor. Mientras el código estaba escrito en o1-mini de OpenAI, tan pronto como creí los archivos, descargué Cursor y empecé utilizarlo a ese punto.

Hubo veces cuando era asombroso como bien Cursor funcionó con my código y interpretar mis descripciones de nuevas funciones o errores para arreglar, proponiendo nuevo o cambiado código a lo large de el baso de código, añadiendo elementos a HTML o CSS también según sea necesario. El código de PHP original en el servidor era demasiado grande y literal- prefiero PHP para ser una interfaz mínima con el servidor, y cuando pdeí Cursor a “mover todos los elementos del prompt y de los parámetros a JavaScript y pasearles a PHP,” era no problema y funcionó inmediatamente.

PHP no es mi lengua favorita, ni mucho menos, así que el menos lo uso, mejor. Mientras he codificado varias apps geniales en JavaScript, hay miríada de matices, especialmente cuando manipular el DOM y CSS, y Cursor parece conocer todos los trucos del libro. Todo de esta capacidad expandó mi conocimiento de JavaScript. Otra vez, aunque hice manipulación de DOM/SVG en hace varios años con las simulaciones de Connected Gym y Universal Club App, te oxidas rápidamente si no continua de usarlo. En este respecto, Cursor era un verdadero ahorro de tiempo.

Cursor AI-Assisted Editing
The Good- Hover or touch to expand

To show you a little how it works, I wrote a prompt to generate a new little feature to congratulate you after you get at least 20 answers correct in a row (this is not in the app- I just typed that to demonstrate how it works to get the screenshot).  You either can chat inline with the code or at the right, in a more verbose, complex and interactive way.  Sometimes the changes are spread throughout the code base- you can accept/reject each one, or accept them all at once.  Much of the time, this just works and the changes work.  But, along the way, I began to run into problems.

Para verte un poco como funciona, escribí un prompt para generar un nueva función para felicitarte después de obtienes 20 respuestas correctas seguidos (esta función no esta en la app- era solo para demonstrar para la captura de pantalla). Puedes chatear en línea con el código o a la derecha, en una manera mas verbosa y interactiva. A veces, los cambios está distribuido por todo el baso de código y puedes aceptar/rechazar cada cambio, or aceptar todos a una vez. Mucho del tiempo, esto simplemente funciona y los cambios funcionan. Pero, a lo largo el camino, empecé encontrar problemas.

Cursor Bug
The Bad- Hover or touch to expand

The Bad

In the screenshot above shows one such problem, with the editor itself.  It is buggy.  After some time, it began to target all of the code, both before and after, the function being modified for deletion.  This was puzzling and very annoying.  And, at one point, I apparently accepted changes and didn’t see that it had targeted the code after a function for deletion, and completely lost nearly 200 lines of code, and half a day’s work.  I had not manually made an incremental backup for a few hours and could not dial back just far enough to where the code was deleted and lost quite a few incremental changes, and had to recreate them all over again.  I will have to change my way of working as I was not using, initially, a configuration control like GitHub.  My mistake.  But this was bad.  I had been discussing this project with a friend (Arka) who also had used Cursor, and he confirmed he has also seen this particular bug and actually had stopped using Cursor altogether.

To try to fix this, I closed Cursor and tried to relaunch it. At that point, Cursor simply became unstable and kept crashing after about 1 minute.  Frustrated, I closed everything and rebooted.  After the reboot, Cursor still crashed once or twice, but then, somehow, stabilized.  At that point, this particular code deletion bug did not show up again.  

With Cursor more stable, I proceeded to continue to develop the app and work on the layout.  But by this point, Cursor was becoming less and less useful.  While it could suggest new things and change old things, there was, for lack of a better word, software detritus.  One change would cause a different bug to pop up elsewhere.

Lo Malo

En la captura de la pantalla arriba demuestra un tal problema, con el propio editor. Tiene faltas. Después de algún tiempo, comenzó dirigirse a todo el código, ambos anterior y posterior la función lo que está modificando, ¡para eliminación! Era desconcertante y molesto. Y, en un punto, aparentemente acepté cambios y no vi los cambios que ha dirigirse el código posterior a la function para eliminación, y completamente perdió casi 200 líneas de código, y el trabajo de 1/2 día. No había hecho un backup incremental por horas y no pide regresar los cambios para restaurar el código perdido y perdí bastante varios cambios, y había recrearles todos otra vez. Tendré cambiar mi manera de trabajar como no utilicé, inicialmente, un control de la configuración como GitHub. Mi error. Pero, esto era malo. Había hablando con un amigo quien también había utilizado Cursor, y confirmó que he visto también el mismo problema y ha parado de usarlo en todos.

Para tratar arreglarlo, cerré Cursor y lo relancé. En este punto, Cursor simplemente fue inestable y empezó bloquear constantemente. Con frustración, cerré todos y reinicié mi computadora. Después de reiniciación, Cursor bloqueaba una vez or dos, pero de alguna manera estabilizó. En este punto, el error de la eliminación de código en particular no pareció otra vez.

Con Cursor más estable, procedí a seguir desarrollando la app y trabajar en el diseño. Pero en este punto, Cursor se estaba volviendo menos y menos útil. Mientras que podría sugerir cosas nuevas y cambia cosas viejas, hubo, para falta de una palabra mejor, detritus de software. Un cambio causaría un error diferente parecer en un otro lugar.

whack-a-mole

This whack-a-mole problem became the experience. It was very frustrating. This is also why the bug above exists- if Cursor fixes the bug one way, it creates a different problem. Fixing that recreates the first problem- I ended up in the infinite loop I have found in the past using both Claude and ChatGPT. I decided to publish the app as is with the above-mentioned bug, and will try a fresh approach to break the bottleneck.

The Hopeful

Despite the above situation, I plan to continue using Cursor. One big reason is that another friend (Adrien), from a different meetup, has been using it successfully and swears by it.  He described to me a month ago the process he used, which I did try, in part, to replicate. In the spirit of his optimism, I will refine and continue with it for the moment. 

Este problema de whack-a-mole fue una mala experiencia. Era muy frustrante. Esto es por existe el error arriba- Cursor arregla un error y introduce un otro error. Para arreglar el segundo problema recrea el primer problema otra vez. Terminé en un bucle infinito que encontraba en el pasado con ambos Claude y ChatGPT. Decidí publicar la app tal cual con el problema he mencionado anteriormente y intentaré un nuevo enfoque para romper el cuello de botella.

Lo Esperanzador

A pesar de la situación arriba, planeo continuar a utilizar Cursor. Un razón grande es por un otro amigo de un Meetup diferente, ha sido utilizando Cursor con éxito y lo jura. Describió a mi hace un mes el proceso ha usando, que traté en parte, para replicar. En el espíritu de su optimismo, refinaré y continuaré de momento.

LLM Models

For example, the code was written outside Cursor in OpenAI’s o1-mini, but in Cursor, I had it use Claude’s Sonnet for the edits.  To continue with evolving this rather useful Word Hammer application, I will switch Cursor to use o1-mini, for example, to see if that changes its approach. My friend that previously used Cursor has been preferring to use o1-mini, due to its code-writing prowess compared to others.

Also, I may actually reapproach this application from the beginning, though I would reuse some of the code (like the PHP) and see if I can approach this from a new perspective that, preemptively, attacks the problem where LLMs get into this tangled-up state and start spewing gibberish code.

This is, again, based on the faith of my friend from the Meetup who has said he is super-productive. That provides me some hope that it is me who has to adapt, especially given the current context limitations (how much code this can inspect at a time) of LLMs.

A problem with having AI write your code, is you are now somewhat less familiar with the code, so that when there is a bug, you rely on the AI to fix it. When you have not written the code directly, it takes you longer to figure it out.

I will figure out and adapt to the toolsets- this is a work in progress.

Por ejemplo, el código arriba era escrito afuera de Cursor en o1-mini de OpenAI, pero en Cursor, lo he utilizado Sonnet de Claude para los cambios. Para continuar con evolucionar esta aplicación bastante útil, cambiaré Cursor para utilizar o1-mini, por ejemplo, para ver si que cambie su enfoque. Mi amigo que utilizó Cursor anteriormente ha side utilizando o1-mini, debido a su destreza de escribir de código en relación con otros.

También, en realidad, yo podría volver a abordar esta aplicación desde el principio, aunque reutilizaré algún código (como el PHP) y ver podría acercarse esto de una perspectiva nueva que, preventivamente, ataque el problema dónde LLMs se meten en este estado de enredado y comience vomitar código galimatías.

Esto es, otra vez, basado en la fe de mi amigo del Meetup quien me ha dicho que él está super-productivo. Esto me provee algo de esperanza que lo es me que quien debería adaptar, especialmente dado que las limitaciones de contexto actual (como la cantidad de código que puede inspeccionar en una vez) de LLMs.

Un problema con tener IA escribe tu código está que estás menos familiar con tu código un poco, como cuando tienes un error, confías en IA para arreglarlo. Cuando no has escrito el código directamente, toma más tiempo para lo resolves.

Lo resolveré y adaptaré a las herramientas- este es un trabajo en progreso.

El contenido de estos artículos son un poco avanzado. Necesito utilizar ayuda de DeepL, per trato utilizar lo menos posible. Todavía lo estoy utilizando alrededor 15-20%, porque necesito un más vocabulario y coloquialismos también. Pere con cada publicación, estoy utilizando DeepL menos y menos. Para esta publicación, lo utilicé menos que nunca.

COMMENTS

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe

Subscribe and get a notice when the next article is published.

Thank you for subscribing.

Something went wrong.

Subscribe

Subscribe and get a notice when the next article is published.

Thank you for subscribing.

Something went wrong.