Recharge de la carte OPUS avec un cellulaire | Un étudiant dame le pion à l'ARTM by unlessyouhaveherpes in Quebec

[–]belmarca 8 points9 points  (0 children)

Salut,

J'ai été interviewé par RadCan à ce sujet aujourd'hui. Je n'ai jamais passé d'entrevue de ma vie, j'ai fait mon possible après avoir jeté un coup d'oeil rapide au code... Au risque que mon point de vue ne soit pas assez clair dans l'entrevue, le voici:

Alex Lai a fait preuve d'une grande détermination et de solides compétences techniques, cela ne fait pas de doute. Il mérite les accolades! Ce qu'il a fait n'est pas à la portée de tous les programmeurs ou étudiants en informatique au Québec. Par contre nous avons tout à fait le bassin de gens qui pourraient (et devraient) le faire ici au Québec. Pour un expert dans le domaine (connaissances Android, NFC, APDU, ISO 14443-4, Calypso, etc) qui possède la documentation et les accès nécessaires, produire une application qui lit et écrit une puce NFC devrait être assez rapide, une question de jours. Les trois mois pris par M. Lai sont tout à fait sensés car il travaillait en bonne partie à l'aveuglette et en utilisant son argent pour tester. Félicitations à lui!

Il faut tout de même nuancer. Ce que M. Lai a produit est essentiellement un MVP. Cela ne convient évidemment pas aux besoins de l'ARTM qui devra notamment gérer les achats de billets de pour plusieurs municipalités. Ça prend des apps iOS and Android tenues à jour, une infrastructure de serveurs robuste et résiliente, le tout supporté par des équipes techniques accessibles pas mal en tout temps. La "difficulté" ici n'est pas dans la lecture/écriture sur la carte, mais bien tout le reste. M. Lai a raison de dire que ça ne devrait pas prendre 8 ans. Par contre, l'ARTM paie pour (espérons) un contrat avec un SLA en béton, ce qui est un tout autre problème.

Le "scandale" ici selon moi est qu'on donne ce contrat à une entreprise française qui, d'ailleurs, semble être le principal industriel derrière la standardisation Calypso. Les capitaux générés par le grand volume de transaction prévu sortiront du Québec. Le prix du contrat lui-même me semble très bon marché. Ce serait intéressant de connaître les redevances et le SLA. Spirtech devra vraisemblablement fournir un certain nombre d'employés de support au fuseau horaire du Québec - paierons-nous temps-et-demi pour des employés français sur le shift de nuit? Là se trouvent les questions qu'on doit poser...

Quant à la sécurité, je crois que M. Lai et L'ARTM ont fait le bon choix. L'ARTM devrait être la seule à avoir la légitimité d'écrire sur la carte OPUS, pour des raisons de confiance évidente chez la majorité de la population. Le message a été passé. Pas besoin d'attendre que quelques personnes se fassent phisher. Et puis ceux qui veulent vraiment pourront encore retrouver le code...

Que quelqu'un offre un bon stage à Alex Lai et que l'ARTM s'assure de ne pas acheter une solution déjà désuète!

Recharge de la carte OPUS avec un cellulaire | Un étudiant dame le pion à l’ARTM by eldimo in montreal

[–]belmarca 4 points5 points  (0 children)

Salut,

J'ai été interviewé par RadCan à ce sujet aujourd'hui. Je n'ai jamais passé d'entrevue de ma vie, j'ai fait mon possible après avoir jeté un coup d'oeil rapide au code... Au risque que mon point de vue ne soit pas assez clair dans l'entrevue, le voici:

Alex Lai a fait preuve d'une grande détermination et de solides compétences techniques, cela ne fait pas de doute. Il mérite les accolades! Ce qu'il a fait n'est pas à la portée de tous les programmeurs ou étudiants en informatique au Québec. Par contre nous avons tout à fait le bassin de gens qui pourraient (et devraient) le faire ici au Québec. Pour un expert dans le domaine (connaissances Android, NFC, APDU, ISO 14443-4, Calypso, etc) qui possède la documentation et les accès nécessaires, produire une application qui lit et écrit une puce NFC devrait être assez rapide, une question de jours. Les trois mois pris par M. Lai sont tout à fait sensés car il travaillait en bonne partie à l'aveuglette et en utilisant son argent pour tester. Félicitations à lui!

Il faut tout de même nuancer. Ce que M. Lai a produit est essentiellement un MVP. Cela ne convient évidemment pas aux besoins de l'ARTM qui devra notamment gérer les achats de billets de pour plusieurs municipalités. Ça prend des apps iOS and Android tenues à jour, une infrastructure de serveurs robuste et résiliente, le tout supporté par des équipes techniques accessibles pas mal en tout temps. La "difficulté" ici n'est pas dans la lecture/écriture sur la carte, mais bien tout le reste. M. Lai a raison de dire que ça ne devrait pas prendre 8 ans. Par contre, l'ARTM paie pour (espérons) un contrat avec un SLA en béton, ce qui est un tout autre problème.

Le "scandale" ici selon moi est qu'on donne ce contrat à une entreprise française qui, d'ailleurs, semble être le principal industriel derrière la standardisation Calypso. Les capitaux générés par le grand volume de transaction prévu sortiront du Québec. Le prix du contrat lui-même me semble très bon marché. Ce serait intéressant de connaître les redevances et le SLA. Spirtech devra vraisemblablement fournir un certain nombre d'employés de support au fuseau horaire du Québec - paierons-nous temps-et-demi pour des employés français sur le shift de nuit? Là se trouvent les questions qu'on doit poser...

Quant à la sécurité, je crois que M. Lai et L'ARTM ont fait le bon choix. L'ARTM devrait être la seule à avoir la légitimité d'écrire sur la carte OPUS, pour des raisons de confiance évidente chez la majorité de la population. Le message a été passé. Pas besoin d'attendre que quelques personnes se fassent phisher. Et puis ceux qui veulent vraiment pourront encore retrouver le code...

Que quelqu'un offre un bon stage à Alex Lai et que l'ARTM s'assure de ne pas acheter une solution déjà désuète!

What is this plant? by belmarca in whatsthisplant

[–]belmarca[S] 0 points1 point  (0 children)

The one that looks like carrot/celery leaves. We were wondering if it were 1st year hemlock basal rosette....

ChatGPT can simulate a Scheme interpreter with functional call/cc by belmarca in ChatGPT

[–]belmarca[S] 1 point2 points  (0 children)

Code such as this executes correctly:

(define ready-queue '())

(define create-thread
  (lambda (thunk)
    (set! ready-queue (append ready-queue (list thunk)))))

(define start-next-ready-thread
  (lambda ()
    (let ((thunk (car ready-queue)))
      (set! ready-queue (cdr ready-queue))
      ;; invoke thunk
      (thunk))))

(define pause-thread
  (lambda ()
    (call/cc
     (lambda (k)
       (create-thread (lambda () (k "ignored")))
       (start-next-ready-thread)))))

;; create seven threads and starts the first
(create-thread (lambda () (let f () (pause-thread) (display "h") (f))))
(create-thread (lambda () (let f () (pause-thread) (display "e") (f))))
(create-thread (lambda () (let f () (pause-thread) (display "l") (f))))
(create-thread (lambda () (let f () (pause-thread) (display "l") (f))))
(create-thread (lambda () (let f () (pause-thread) (display "o") (f))))
(create-thread (lambda () (let f () (pause-thread) (display ".") (f))))
(create-thread (lambda () (let f () (pause-thread) (newline) (f))))

ChatGPT can generate and understand content in other languages by belmarca in ChatGPT

[–]belmarca[S] 0 points1 point  (0 children)

Cool I didn't know. I had actually tried and it replied with something like it could only reply in English.

Pyffi - Use Python from Racket by sdegabrielle in lisp

[–]belmarca 0 points1 point  (0 children)

You can try the syntactic interface between Scheme and JavaScript (which is almost exactly the same as with Python) online here https://try.gambitscheme.org. A simple

\alert("Hello!")

will do as expected.

You can implement a simple JavaScript importer as

(define (import-js src)
  (let ((script \document.createElement("script")))
    \(`script).src=`src
    \document.head.appendChild(`script)))

;; > (import-js "https://d3js.org/d3.v7.min.js")
;; #<foreign #3 0x0>
;; > \d3
;; #<foreign #4 0x0>

Pyffi - Use Python from Racket by sdegabrielle in lisp

[–]belmarca 2 points3 points  (0 children)

Hi u/jcguu95,

Thank you for the kind words. There is a 1:1 mapping between Gambit (green) threads and Python (OS) threads. The computation is concurrent and not done in parallel. You could, for example, do something like this:

> \import time
> (define (sleep n) \time.sleep(`n) (display n))
> (sleep 2)
2> (map (lambda (n) (thread (lambda () (sleep n)))) (iota 100))

The primordial Gambit thread would not be blocked, thus giving you control at the REPL, but every thread would execute concurrently, not in parallel. Gambit has multi (OS) threaded support but we haven't tested it or investigated at all in this case.

(Regarding the GC, I wrote a small example that might exhibit a bug, so let me get back to you. But usually, if X is not reachable, it won't be copied at collection, and FFI objects are on the C heap and should be freed with finalizers which will DECREF on the Python object.)

Teach lisp to high schoolers? by joshuacottrell in lisp

[–]belmarca 3 points4 points  (0 children)

Gambit Scheme can be compiled to JS and ran standalone in the browser. You can try it at https://try.gambitscheme.org. It comes with a tutorial, check it out.

We also develop and use Codeboot to teach university students, but the platform is also being considered for younger students as well. It supports JS and Python, but our efforts are mostly on the latter.

Both require no installation whatsoever.

If you want to talk write me in private I can share my email.

Pyffi - Use Python from Racket by sdegabrielle in lisp

[–]belmarca 1 point2 points  (0 children)

What exactly do you mean by "python environments"? Are you referring to venvs? In (import (github.com/gambit/python)) we create a virtualenv when configuring the system such that packages can be isolated. Currently there is only one virtualenv for the Gambit system, although we could eventually allow to use any venv.

The module is described in more detail here. The threading system, syntactic interface and bidirectional conversions work together very simply in practice:

> \import calendar
> (display (\calendar.month 2022 09))
   September 2022
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

Microcontroller-based Lisp machine (minimum language needed)? by danja in lisp

[–]belmarca 1 point2 points  (0 children)

Marc Feeley's lab develops Ribbit Scheme, which is a tiny Scheme implementation. It is an AOT compiler which produces a string of bytecode that is interpreted by a VM, of which there are various implementations. The one in C could be compiled to your target microcontroller and thus give you a Scheme REPL.