- To provide resources for library and framework authors to ensure that BEAM languages have a rich, vibrant ecosystem with a high degree of developer experience. Main Objectives
- Provide and maintain best practices on library and framework standardization, documentation, code, and distribution. Collaborate to work on and make proposals for underlying tooling that improve the experience for library/framework authors and users.
- Provide more visibility into the library ecosystem of Elixir on behalf of both authors and users.
- (if Build and Packaging want to move this here, we could also take this over) Improve the user experience in generating and accessing documentation from the shell, IDEs, web pages, and more.
import { | |
createContext, | |
ReactNode, | |
useCallback, | |
useContext, | |
useEffect, useMemo, | |
useRef, | |
useState | |
} from "react"; | |
import {Channel, Presence, Socket} from "phoenix"; |
TLDR:
- Export a haskell function with
foreign export
. - Create a C wrapper that calls
hs_init
when the library is loaded. - Compile the
.hs
and.c
wrapper withghc
, linking withlHSrts-ghc8.6.5
- Use it from C by linking as usual.
(For more details, see here.)
For anyone who develops software on Windows (but needs quick access to a Linux terminal), here's a quick and easy way to get it with MSYS2.
Before starting, install "MSYS2" with default settings.
- From Windows search, launch 'regedit.exe'
- Navigate to "
HKEY_CLASSES_ROOT\Directory\Background\shell
" - Right-click on 'shell' and select
New>Key
. Call this keyMSYS2
. - Now right-click on 'MSYS2' and select
New>Key
. Call this keycommand
- Select
command
and then double-click on (Default). Set 'Value data' to"C:\msys64\msys2_shell.cmd" "-here"
import io, string, sys, zlib | |
CH3_DMF_VOL_IS_DS_VOL = False | |
def sane(a): | |
cap = True | |
t = "" | |
for i in a.decode(): | |
if i in string.ascii_letters + string.digits + "_": | |
t += i.upper() if cap else i | |
cap = False |
import JavaScriptCore | |
extension JSContext { | |
subscript(key: String) -> Any { | |
get { | |
return self.objectForKeyedSubscript(key) | |
} | |
set{ | |
self.setObject(newValue, forKeyedSubscript: key as NSCopying & NSObjectProtocol) | |
} |
Using MSYS2 with Visual Studio Code is extremely easy now thanks to the Shell Launcher extension by Tyriar.
First, install the extension and reload Visual Studio Code.
Then, open the settings.json
to edit your settings.
Add the field shellLauncher.shells.windows
. I recommend using autocompletion here so that all the default shells are added.
You should having something like this now:
I recently built a small agent-based model using Python and wanted to visualize the model in action. But as much as Python is an ideal tool for scientific computation (numpy, scipy, matplotlib), it's not as good for dynamic visualization (pygame?).
You know what's a very mature and flexible tool for drawing graphics? The DOM! For simple graphics you can use HTML and CSS; for more complicated stuff you can use Canvas, SVG, or WebGL. There are countless frameworks, libraries, and tutorials to help you draw exactly what you need. In my case, this was the animation I wanted:
(Each row represents a "worker" in my model, and each rectangle represents a "task.")
Dr. Mark B. Lundeberg, 2018 August 30
bitcoincash:qqy9myvyt7qffgye5a2mn2vn8ry95qm6asy40ptgx2
Since version 2.1, GnuPG is able to use the very same secp256k1 elliptic curve signature algorithm (ECDSA) as used in bitcoin. Quite soon Bitcoin Cash will add a new script opcode OP_CHECKDATASIG that is able to check signatures not just on the containing transaction, but also on arbitrary data. For fun, let's try to intersect the two signature systems and see what can be done!