too

Bantam Tools Acquires Evil Mad Scientist

Bantam Tools Acquires Evil Mad Scientist to Accelerate Development of Next Generation Art and Handwriting Machines Windell Oskay and Lenore Edman of Evil Mad Scientist named CTO and COO of Bantam Tools  PEEKSKILL, N.Y, January 16, 2024 — Bantam Tools, the desktop CNC manufacturer that builds exceptional computer controlled machines for innovators, is excited to … Continue reading Bantam Tools Acquires Evil Mad Scientist




too

Introducing the Bantam Tools NextDraw™

Bantam Tools proudly unveils its latest advancement in proven plotter technology with the launch of the new Bantam Tools NextDraw™ series of drawing and handwriting machines. Engineered for artists, innovators, and educators seeking exceptional versatility and performance, Bantam Tools now offers a trio of new models designed for drawing and handwriting. “The Evil Mad Scientist … Continue reading Introducing the Bantam Tools NextDraw™



  • Bantam Tools NextDraw

too

Here’s a miniature vise for your hobby tool chest

NEWS—The Ray Studio hand vise seems like the perfect tool for hobbyists who like to paint small figures, glue small parts, and more. The weighted handle provides a grip for one hand or you can place it on a table. Or you can remove the handle altogether. The split vise features slots for rods to […]




too

vindarel: Running my 4th Common Lisp script in production© - you can do it too

Last week I finished a new service written in Common Lisp. It now runs in production© every mornings, and it expands the set of services I offer to clients.

It’s the 4th service of this kind that I developed: - they are not big - but have to be done nonetheless, and the quicker the better (they each amount to 1k to 2k lines of Lisp code), - they are not part of a super advanced domain that requires Common Lisp superpowers - I am the one who benefits from CL during development, - I could have written them in Python - and conversely nothing prevented me from writing them in Common Lisp.

So here lies the goal of this post: illustrate that you don’t need to need a super difficult problem to use Common Lisp. This has been asked many times, directly to me or on social media :)

At the same time, I want to encourage you to write a little something about how you use Common Lisp in the real world. Sharing creates emulation. Do it! If you don’t have a blog you can simply write in a new GitHub repository or in a Gist and come share on /r/lisp. We don’t care. Thanks <3

We’ll briefly see what my scripts do, what libraries I use, how I deploy them, what I did along the way.

Needless to say that I dogfooded my CIEL (beta) meta-library and scripting tool for all those projects.

Table of Contents

Scripts n°4 and 2 - shaping and sending data - when you can write Lisp on the side

My latest script needs to read data from a DB, format what’s necessary according to specifications, and send the result by SFTP.

In this case I read a DB that I own, created by a software that I develop and host. So I could have developed this script in the software itself, right? I could have, but I would have been tied to the main project’s versioning scheme, quirks, and deployment. I rather had to write this script on the side. And since it can be done on the side, it can be done in Common Lisp.

I have to extract products and their data (price, VAT...), aggregate the numbers for each day, write this to a file, according to a specification.

To read the DB, I used cl-dbi. I didn’t format the SQL with SxQL this time like in my web apps (where I use the Mito light ORM), but I wrote SQL directly. I’m spoiled by the Django ORM (which has its idiosyncrasies and shortcomings), so I double checked the different kinds of JOINs and all went well.

I had to group rows by some properties, so it was a great time to use serapeum:assort. I left you an example here: https://dev.to/vindarel/common-lisps-group-by-is-serapeumassort-32ma

Dates have to be handled in different formats. I used local-time of course, and I still greatly appreciate its lispy formatter syntax:

(defun date-yymmddhhnnss (&optional date stream)
  (local-time:format-timestring stream
                                (or date (local-time:now))
                                :format
                                '((:year 4)
                                  (:month 2)
                                  (:day 2)
                                  (:hour 2)
                                  (:min 2)
                                  (:sec 2)
                                  )))

the 2 in (:month 2) is to ensure the month is written with 2 digits.

Once the file is written, I have to send it to a SFTP server, with the client’s codes.

I wrote a profile class to encapsulate the client’s data as well as some functions to read the credentials from either environment variables, the file system, or a lisp variable. I had a top-level profile object for ease of testing, but I made sure that my functions formatting or sending data required a profile parameter.

(defun send-stock (profile &key date) ...)
(defun write-stock (profile filename) ...)

Still nothing surprising, but it’s tempting to only use global parameters for a one-off script. Except the program grows and you pay the mess later.

SFTP

To send the result through SFTP, I had to make a choice. The SFTP command line doesn’t make it possible to give a password as argument (or via an environment variable, etc). So I use lftp (in Debian repositories) that allows to do that. In the end, we format a command like this:

lftp sftp://user:****@host  -e "CD I/; put local-file.name; bye"

You can format the command string and run it with uiop:run-program: no problem, but I took the opportunity to release another utility:

First, you create a profile object. This one-liner reads the credentials from a lispy file:

(defvar profile (make-profile-from-plist (uiop:read-file-form "CREDS.lisp-expr"))

then you define the commands you’ll want to run:

(defvar command (put :cd "I/" :local-filename "data.csv"))
;; #<PUT cd: "I/", filename: "data.csv" {1007153883}>

and finally you call the run method on a profile and a command. Tada.

Deploying

Build a binary the classic way (it’s all on the Cookbook), send it to your server, run it.

(during a testing phase I have deployed “as a script”, from sources, which is a bit quicker to pull changes and try again on the server)

Set up a CRON job.

No Python virtual env to activate in the CRON environment...

Add command line arguments the easy way or with the library of your choice (I like Clingon).

Script n°2 and simple FTP

My script #2 at the time was similar and simpler. I extract the same products but only take their quantities, and I assemble lines like

EXTRACTION STOCK DU 11/04/2008
....978202019116600010000001387
....978270730656200040000000991

For this service, we have to send the file to a simple FTP server.

We have a pure Lisp library for FTP (and not SFTP) which works very well, cl-ftp.

It’s a typical example of an old library that didn’t receive any update in years and so that looks abandoned, that has seldom documentation but whose usage is easy to infer, and that does its job as requested.

For example we do this to send a file:

(ftp:with-ftp-connection (conn :hostname hostname
                                   :username username
                                   :password password
                                   :passive-ftp-p t)
      (ftp:store-file conn local-filename filename))

I left you notes about cl-ftp and my SFTP wrapper here:

Scripts n°3 and n°1 - specialized web apps

A recent web app that I’m testing with a couple clients extends an existing stock management system.

This one also was done in order to avoid a Python monolith. I still needed additions in the Python main software, but this little app can be independent and grow on its own. The app maintains its state and communicates it with a REST API.

 

It gives a web interface to their clients (so my clients’ clients, but not all of them, only the institutional) so that they can:

  • search for products
  • add them in shopping carts
  • validate the cart, which sends the data to the main software and notifies the owner, who will work on them.

The peculiarities of this app are that:

  • there is no user login, we use unique URLs with UUIDs in the form: http://command.client.com/admin-E9DFOO82-R2D2-007/list?id=1
  • I need a bit of file persistence but I didn’t want the rigidity of a database so I am using the clache library. Here also, not a great activity, but it works©. I persist lists and hash-tables. Now that the needs grow and the original scope doesn’t cut it any more, I wonder how long I’ll survive without a DB. Only for its short SQL queries VS lisp code to filter data.

I deploy a self-contained binary: code + html templates in the same binary (+ the implementation, the web server, the debugger...), with Systemd.

I wrote more on how to ship a standalone binary with templates and static assets with Djula templates here:

I can connect to the running app with a Swank server to check and set parameters, which is super helpful and harmless.

It is possible to reload the whole app from within itself and I did it with no hiccups for a couple years, but it isn’t necessary the most reliable, easiest to set up and fastest method. You can do it, but nobody forces you to do this because you are running CL in production. You can use the industry’s boring and best practices too. Common Lisp doesn’t inforce a “big ball of mud” approach. Develop locally, use Git, use a CI, deploy a binary...

Every thing that I learned I documented it along the way in the Cookbook ;)

Another app that I’ll mention but about which I also wrote earlier is my first web app. This one is open-source. It still runs :)

 

In this project I had my friend and colleague contribute five lines of Lisp code to add a theme switcher in the backend that would help him do the frontend. He had never written a line of Lisp before. Of course, he did so by looking at my existing code to learn the existing functions at hand, and he could do it because the project was easy to install and run.

(defun get-template(template &optional (theme *theme*))
  "Loads template from the base templates directory or from the given theme templates directory if it exists."
  (if (and (str:non-blank-string-p theme)
           (probe-file (asdf:system-relative-pathname "abstock" (str:concat "src/templates/themes/" theme "/" template))))
      ;; then
      (str:concat "themes/" theme "/" template)
      ;; else :D
      template))

He had to annotate the if branches :] This passed the code review.

Lasting words

The 5th script/app is already on the way, and the next ones are awaiting that I open their .docx specification files. This one was a bit harder but the Lisp side was done sucessfully with the efficient collaboration of another freelance lisper (Kevin to not name him).

All those tasks (read a DB, transform data...) are very mundane.

They are everywhere. They don’t always need supercharged web framework or integrations.

You have plenty of opportunities to make yourself a favor, and use Common Lisp in the wild. Not counting the super-advanced domains where Lisp excels at ;)


Links

I have done some preliminary Common Lisp exploration prior to this course but had a lot of questions regarding practical use and development workflows. This course was amazing for this! I learned a lot of useful techniques for actually writing the code in Emacs, as well as conversational explanations of concepts that had previously confused me in text-heavy resources. Please keep up the good work and continue with this line of topics, it is well worth the price! [Preston, October of 2024]




too

born too early

Today on Married To The Sea: born too early


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!






too

The Internet Took the Opportunity to Photoshop Donald Trump With a Blank Sign and Ran With It

Has Trump seen people holding signs on the internet before? It never turns out well.




too

Are women really no better off in the workplace after #MeToo?

The #MeToo movement seemed poised to help us create more equitable workplaces — where women thrive as much as men. Unfortunately, we have yet to see this come to fruition in any significant way. And, in some cases, the backlash has made it even more difficult for women to get ahead. The hashtag #MeToo was […]

The post Are women really no better off in the workplace after #MeToo? appeared first on DiversityJobs.com.




too

NFPA to develop fire risk assessment tool in response to tragic high-rise fires incidents

In light of a recent series of fires in high-rise buildings with combustible facades, including the Grenfell tower fire, the National Fire Protection Association (NFPA) has initiated a project to develop a fire risk assessment tool for these types of buildings to assist local authorities globally with fire safety in their communities.




too

CC Legal Tools Recognized as Digital Public Goods

“Power Grid” by Ram Joshi is licensed via CC BY-NC-ND 2.0. We’re proud to announce Creative Commons’ Legal Tools have been reviewed and accepted into the Digital Public Goods Alliance (DPGA) DPG Registry. The DPGA is a multi-stakeholder initiative, endorsed by the United Nations Secretary-General, that is working to accelerate the attainment of the UN…

The post CC Legal Tools Recognized as Digital Public Goods appeared first on Creative Commons.



  • About CC
  • Licenses & Tools
  • Sustaining the Commons
  • Digital Public Goods
  • DPGA
  • DPGs

too

How to Clean and Sanitize Kitchen Gadgets and Tools: Your Ultimate Guide

Explore tips and techniques for deep-cleaning your kitchen tools and gadgets. Learn how to sanitize your everyday cooking utensils effectively, ensuring a healthier cooking environment and longer-lasting kitchenware. Perfect for home cooks and hygiene enthusiasts.

The post How to Clean and Sanitize Kitchen Gadgets and Tools: Your Ultimate Guide appeared first on Unclutterer.




too

The Best Cleaning Tools for Every Kitchen Task: Your Ultimate Guide

Uncover the top cleaning tools for every kitchen task in our detailed guide. From scrub brushes to microfiber cloths, we outline the best ways to keep your kitchen spotless. Learn how to clean smarter, not harder, with these proven tips and tricks.

The post The Best Cleaning Tools for Every Kitchen Task: Your Ultimate Guide appeared first on Unclutterer.




too

My heart almost stood still

The following letter was written exactly 100 years ago. It’s a remarkable piece of writing that never fails to move me. And because you deserve it, above the transcript I’ve included audio of the letter being read by the lovely Juliet Stevenson, taken from the Letters of Note: Music audiobook. Born in Alabama in 1880, Helen Keller




too

I CAN SMELL STOOPID.




too

Cats make good bookmarks too




too

Feed us nao Stoopy Hooman!

The triplets can wait!




too

$70 Xbox/Microsoft Gift Card (Digital Delivery) - $59 (Can be used to buy Xbox/Microsoft hardware too)

Eneba has $70 Xbox Gift Card (Digital Delivery) for around $59 after applying code X70US in cart.

  • Note: Price is after service fees and applying code X70US in cart.

You can purchase the code(s) and redeem to add balance to your Microsoft account.

  • Both the Microsoft and Xbox cards work just the same. Once redeemed to your Microsoft account, you can spend your balance at Microsoft Store online, on Windows, and on Xbox. You can get the latest apps, games, movies, TV shows, and Surface, Xbox, and accessories. (Source)

Add balance to your Microsoft account and use to purchase items from Microsoft Store online. Black Friday deals from Microsoft Store can be found here.
 

Note:

  • Price is after service fees and applying discount code X70US.
  • Deals ends tonight.
  • Eneba codes usually sell out fast.
  • Xbox Gift cards do not currently work at physical Microsoft Stores.
  • You currently cannot buy Microsoft 365 with a gift card.





too

Learn about co-design tools

We would like to invite you to a free event on Monday, 3rd October to learn about co-design, and tools that can support it. We’ve run two recent co-design projects - one with older people and practitioners who worked together to improve the pathway from hospital to home; and the other with people who access (or may in the future access) self-directed support (SDS), and practitioners from the Pilotlight project.

read more





too

F&S gingen weer naar kantoor (NRC, vr, 30-08-24)




too

Too Much Magic: Wishful Thinking, Technology, and the Fate of the Nation

Paperback, Hardcover, Kindle, Audiobook – July 9, 2013




too

Don’t too seriously…

Keep live the natural… Photo courtesy of Chris Carlier. Found on a bag in Japan. 




too

Too Pure; 17 Wholesome Dog Memes

Doggies, puppies, doggies, and more doggies! Do you love dogs as much as we do and can't get enough of them? Your'e welcome for what you're about to witness!

Dogs are literally (almost) impossible to hate, and we are biased here but its the truth okay. They will do anything for us to love them, and no matter how terrible the event we endured, they will do everything to get us to at least smile and laugh. We truly don't deserve these wondrous pets. These loyal canines are case and point.

If you are looking for some of the cutest dogs in all the land, well these are definitely up to sniff. Check out these dogs just looking for their new best friend, how could you say no?

Not saying one can ever have enough of dogs, but are you looking for some more general wholesomeness? Say no more, we will provide for you. 





too

Our ancestor Lucy may have used tools more than 3 million years ago

An analysis looking at the hand bones of australopithecines, apes and humans reveals that tool use likely evolved before the Homo genus arose.




too

02 – The Internet Musician – Music Tools for the Indie Artist/Songwriter

Show notes for Episode #2: Subscribe to the Internet Musician Podcast with iTunes: In this episode, I present “Music Tools for the Indie Artist”, a topic that I recently presented to a local songwriting group.  Specifically, I present the tools and process I use to capture and preserve those moments of musical inspiration–no matter whether they strike […]




too

Google’s AI Tool Big Sleep Finds Zero-Day Vulnerability in SQLite Database Engine

Google said it discovered a zero-day vulnerability in the SQLite open-source database engine using its large language model (LLM) assisted framework called Big Sleep (formerly Project Naptime). The tech giant described the development as the "first real-world vulnerability" uncovered using the artificial intelligence (AI) agent. "We believe this is the first public example of an AI agent finding




too

THN Recap: Top Cybersecurity Threats, Tools, and Practices (Oct 28 - Nov 03)

This week was a total digital dumpster fire! Hackers were like, "Let's cause some chaos!" and went after everything from our browsers to those fancy cameras that zoom and spin. (You know, the ones they use in spy movies? ????️‍♀️) We're talking password-stealing bots, sneaky extensions that spy on you, and even cloud-hacking ninjas! ???? It's enough to make you want to chuck your phone in the ocean.




too

IcePeony and Transparent Tribe Target Indian Entities with Cloud-Based Tools

High-profile entities in India have become the target of malicious campaigns orchestrated by the Pakistan-based Transparent Tribe threat actor and a previously unknown China-nexus cyber espionage group dubbed IcePeony. The intrusions linked to Transparent Tribe involve the use of a malware called ElizaRAT and a new stealer payload dubbed ApoloStealer on specific victims of interest, Check Point




too

Security Flaws in Popular ML Toolkits Enable Server Hijacks, Privilege Escalation

Cybersecurity researchers have uncovered nearly two dozen security flaws spanning 15 different machine learning (ML) related open-source projects. These comprise vulnerabilities discovered both on the server- and client-side, software supply chain security firm JFrog said in an analysis published last week. The server-side weaknesses "allow attackers to hijack important servers in the




too

THN Recap: Top Cybersecurity Threats, Tools, and Practices (Nov 04 - Nov 10)

⚠️ Imagine this: the very tools you trust to protect you online—your two-factor authentication, your car’s tech system, even your security software—turned into silent allies for hackers. Sounds like a scene from a thriller, right? Yet, in 2024, this isn’t fiction; it’s the new cyber reality. Today’s attackers have become so sophisticated that they’re using our trusted tools as secret pathways,




too

New Phishing Tool GoIssue Targets GitHub Developers in Bulk Email Campaigns

Cybersecurity researchers are calling attention to a new sophisticated tool called GoIssue that can be used to send phishing messages at scale targeting GitHub users. The program, first marketed by a threat actor named cyberdluffy (aka Cyber D' Luffy) on the Runion forum earlier this August, is advertised as a tool that allows criminal actors to extract email addresses from public GitHub




too

THE LAW AND THE FACTS ARE ON OUR SIDE, BUT WE SHOULD BE USING EMOTION, TOO

Historically, both law and facts are on the gun owners’ side of the “gun control” debate, and the Other Side had relied largely on emotion.  I respectfully submit that emotion is something our side should play to, as well. I made that point recently at the 2024 Gun Rights Policy Conference in San Diego last […]





too

‘Invincible Fight Girl’ Creator Explains How This Original Series Survived Cartoon Network’s Internal Drama

Juston Gordon-Montgomery's action-packed series with a lot of big ideas will debut this weekend on Adult Swim and Max.





too

The Cartoon Brew Livestream: How Far ‘Moana 2’ Will Go At The Box Office

Watch our livestream starting 11am Pacific / 2pm Eastern.




too

Personal feeds – a tool with a personal touch…

We are excited to announce the release of beta version of a new and long-awaited tool – Personal Feeds. In its first iteration it will allow you to create personal feeds and add items from other content feeds. You may have already used custom feeds for that in our Feeds Reader. But the main difference […]

The post Personal feeds – a tool with a personal touch… appeared first on RSSground.com.




too

Vote For New RSS Ground Tools And Features

They say if voting made any difference they wouldn’t let us do it. That’s not entirely true. We, at RSS Ground, completely depend on what our users request and require. That’s why we always ask you for your feedback. Please take part in our traditional poll and help us draw up a plan for future […]

The post Vote For New RSS Ground Tools And Features appeared first on RSSground.com.




too

The Cannabis Question Outreach Toolkit and Community Events




too

NOVA Universe Revealed Outreach Toolkit

The NOVA Universe Revealed Community Outreach Toolkit contains strategies for organizing events around the content of the five-part series as well as examples of hands-on activities and a wide range of multimedia educational resources aligned to the content of each episode.




too

Deep learning tool helps NASA discover 301 exoplanets

NASA scientists used a neural network called ExoMiner to examine data from Kepler, increasing the total tally of confirmed exoplanets in the universe.




too

Weathering the Future Outreach Toolkit

Use this toolkit to organize community screenings which educate the public, provide a space to discuss local impacts, and brainstorm community solutions.




too

Secrets in Your Data Outreach Toolkit and Events

Use the Secrets in Your Data Outreach Toolkit to organize screenings and events in your community about personal data privacy and security online.




too

India Abraham: Healing physical and psychological scars through medical tattooing


Jerusalemite of the week: India Abraham is a practitioner of medical tattooing who had already helped scores of people before Oct. 7, but her work has taken on even greater significance since then.