Profile

Cover photo
Dan Lentz
Works at Consumer Reports Magazine
Lives in Greenwich, CT
730 followers|315,937 views
AboutPostsPhotosVideos+1's

Stream

Dan Lentz

Shared publicly  - 
 
John McCarthy, visionary innovator of key algorithmic techniques such as recursion and condescension.

_(credit: http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html)_
2
Nick Alcock's profile photoDan Lentz's profile photoJimmy Arogén's profile photo
6 comments
 
+Nick Alcock​ Yes, he must have an angry wife ☺
Add a comment...
 
Ok, for anyone following my adventures optimizing clj-uuid, I've gotten another substantial win.   Check it out:

#'uuid/v1:                                      443 nanoseconds
#'java.util.UUID/randomUUID: 2000 nanoseconds

========================================================
user> (criterium/bench (uuid/v1))

Evaluation count: 139356300 in 60 samples of 2322605 calls.
Execution time mean: 443.707611 ns

user> (criterium/bench (java.util.UUID/randomUUID))

Evaluation count : 30850980 in 60 samples of 514183 calls.
Execution time mean : 2.012861 µs


Also, the test suite has much greater coverage with individual tests for each v1, v,3, v4, v5 uuid version.  And, finally, there more interesting notes about some of the esoteric details of the node-id representation and the way it is calculated to disambiguate it from any legal 802 MAC hardware address.  And more....

http://danlentz.github.io/clj-uuid

#clojure   #uuid   #algorithm   #programming   #optimization  
clj-uuid is a Clojure library for generation and utilization of UUIDs (Universally Unique Identifiers) as described by IETF RFC4122. This library extends the standard Java UUID class to provide true v1 (time based) and v3/v5 (namespace based) identifier generation. Additionally, a number of ...
3
1
Nick Alcock's profile photoDan Lentz's profile photo
13 comments
 
No, although the whole issue of determining a node address is surprisingly problematic and the solution somewhat esoteric. One interesting thing is that I set the bit that would correspond to the "multicast" bit in an 802 mac address. No network card will ever return an address with this bit set. So, the node id chosen will be distinct from any time based I'd generated using a MAC based node address.
Add a comment...

Dan Lentz

Shared publicly  - 
 
Clojure, Java, Emacs, Scala, ... ... docs for your iPad.  

I use Dash for Mac about 100 times a day.  It's indispensable.
2
1
Tassilo Horn's profile photoDan Lentz's profile photoNash Maruvada's profile photo
5 comments
 
hardcore, Tassilo. :)
Add a comment...

Dan Lentz

Shared publicly  - 
 
I did some work to reduce consing and our generation of v1 (time-based) UUID's using clj-uuid are now about 40% faster than invoking the JVM's java.util.UUID/randomUUID static method:  

user> (criterium.core/bench (uuid/v1))

Evaluation count : 51250020 in 60 samples of 854167 calls.
Execution time mean :  1.130674 µs

user> (criterium.core/bench (java.util.UUID/randomUUID))

Evaluation count : 31868100 in 60 samples of 531135 calls.
Execution time mean : 1.920089 µs


Also, I've done some work on the v3/v5's which now correctly and consistently handle string representation (utf8) and support namespaced hashing of arbitrary clojure/java objects.
clj-uuid. A Clojure library extending java.util.UUID with true v1 (time based) and v3/v5 (namespace based) identifiers. View the Project on GitHub danlentz/clj-uuid · Download ZIP File · Download TAR Ball · View On GitHub ...
1
1
Dan Lentz's profile photo
Add a comment...

Dan Lentz

Shared publicly  - 
 
clj-uuid v.0.1.2 has escaped testing and is now at large on the interwebs
[ANN] clj-uuid: thread-safe, performant unique identifiers, danl...@gmail.com, 2/16/15 5:25 PM. Hello Clojurians,. I've just been polishing my modest library, clj-uuid and would like to invite everyone to have a look if such a thing might be of interest.
1
1
Dan Lentz's profile photo
Add a comment...

Dan Lentz

Shared publicly  - 
 
+Mark Derricutt I just realized that Black Sails had returned for season two. You watching this?
1
Mark Derricutt's profile photo
 
Haven't managed to get to it yet but I saw that it had restarted. 
Add a comment...
Have him in circles
730 people
Accident Injury Centers of Atlanta's profile photo
ДашаДаша Путешетсвенница's profile photo
savior michael's profile photo
Alex KULIK's profile photo
Руские Сериалы's profile photo
Alejandrina Lash's profile photo
Edward Conrad's profile photo
Nirmalya Sengupta's profile photo
karim idrissi's profile photo

Dan Lentz

Code, gists and libs  - 
 
 
Ok, for anyone following my adventures optimizing clj-uuid, I've gotten another substantial win.   Check it out:

#'uuid/v1:                                      443 nanoseconds
#'java.util.UUID/randomUUID: 2000 nanoseconds

========================================================
user> (criterium/bench (uuid/v1))

Evaluation count: 139356300 in 60 samples of 2322605 calls.
Execution time mean: 443.707611 ns

user> (criterium/bench (java.util.UUID/randomUUID))

Evaluation count : 30850980 in 60 samples of 514183 calls.
Execution time mean : 2.012861 µs


Also, the test suite has much greater coverage with individual tests for each v1, v,3, v4, v5 uuid version.  And, finally, there more interesting notes about some of the esoteric details of the node-id representation and the way it is calculated to disambiguate it from any legal 802 MAC hardware address.  And more....

http://danlentz.github.io/clj-uuid

#clojure   #uuid   #algorithm   #programming   #optimization  
clj-uuid is a Clojure library for generation and utilization of UUIDs (Universally Unique Identifiers) as described by IETF RFC4122. This library extends the standard Java UUID class to provide true v1 (time based) and v3/v5 (namespace based) identifier generation. Additionally, a number of ...
13 comments on original post
1
Dan Lentz's profile photo
 
Dammit, I knew as soon as I went and posted something with numbers I'd find some low hanging fruit I overlooked.  So now, 10x as fast.

#'uuid/v1:                    201 nanoseconds
#'java.util.UUID/randomUUID: 2012 nanoseconds


clj-uuid> (criterium.core/bench (uuid/v1))

Evaluation count :        302673360 in 60 samples of 5044556 calls.
Execution time mean : 201.153073 ns
Add a comment...

Dan Lentz

Shared publicly  - 
 
The intent of UUIDs is to enable distributed systems to uniquely identify information without significant central coordination.
2
Add a comment...

Dan Lentz

Code, gists and libs  - 
 
 
I did some work to reduce consing and our generation of v1 (time-based) UUID's using clj-uuid are now about 40% faster than invoking the JVM's java.util.UUID/randomUUID static method:  

user> (criterium.core/bench (uuid/v1))

Evaluation count : 51250020 in 60 samples of 854167 calls.
Execution time mean :  1.130674 µs

user> (criterium.core/bench (java.util.UUID/randomUUID))

Evaluation count : 31868100 in 60 samples of 531135 calls.
Execution time mean : 1.920089 µs


Also, I've done some work on the v3/v5's which now correctly and consistently handle string representation (utf8) and support namespaced hashing of arbitrary clojure/java objects.
clj-uuid. A Clojure library extending java.util.UUID with true v1 (time based) and v3/v5 (namespace based) identifiers. View the Project on GitHub danlentz/clj-uuid · Download ZIP File · Download TAR Ball · View On GitHub ...
View original post
1
Add a comment...

Dan Lentz

Shared publicly  - 
 
Veni, vidi, +1i
2
Add a comment...

Dan Lentz

Code, gists and libs  - 
 
 
clj-uuid v.0.1.2 has escaped testing and is now at large on the interwebs
[ANN] clj-uuid: thread-safe, performant unique identifiers, danl...@gmail.com, 2/16/15 5:25 PM. Hello Clojurians,. I've just been polishing my modest library, clj-uuid and would like to invite everyone to have a look if such a thing might be of interest.
View original post
1
Dan Lentz's profile photoIvan Pierre's profile photo
2 comments
 
Yep...
Add a comment...

Dan Lentz

Shared publicly  - 
 
Some recent optimizations to bitwise operations means that my clj-uuid clojure uuid library now generates time-based UUID's around 25% faster than JVM built-in java.util.UUID/randomUUID static method.  yay!
clj-uuid - RFC4122 Unique Identifiers (v1,v3,v4,v5) for Clojure
2
Add a comment...
Story
Tagline
Alpha Nerd in Beta Test
Work
Occupation
Consultant / Software Developer
Skills
Clojure, Common-Lisp, Graph Database, Datomic, Software Development
Employment
  • Consumer Reports Magazine
    Software Engineer, Graph Database, 2014 - present
  • Bridgewater Associates
    Software Engineer, Research Technology, 2014 - 2014
Basic Information
Gender
Male
Dan Lentz's +1's are the things they like, agree with, or want to recommend.
[ANN] clj-uuid: thread-safe, performant unique identifiers - Google Groups
groups.google.com

[ANN] clj-uuid: thread-safe, performant unique identifiers, danl...@gmail.com, 2/16/15 5:25 PM. Hello Clojurians,. I've just been polishing

Computer History Museum Makes Historic CP/M Operating System Source Code...
globenewswire.com

MOUNTAIN VIEW, Calif., Oct. 1, 2014 (GLOBE NEWSWIRE) -- The Computer History Museum (CHM) announced today that it has made available origina

Datomic - Google Groups
groups.google.com

Laurent Bertrand, 6:50 AM. Entity ids and d/with, mbosse...@netflix.com, 6:43 AM. Datomic For EAV Modeling in Health Research, Delon Newman,

GNU Privacy Guard (GPG) Tutorial
xahlee.info

Generate Public & Private Keys. first, generate your public & private key pair. gpg --gen-key. Just follow the interactive command line inst

clojure : 1.7.0-alpha1 - Track your JARs at VersionEye
www.versioneye.com

Clojure core environment and runtime library....

Why Anti-Authoritarians are Diagnosed as Mentally Ill
www.madinamerica.com

In Bruce Levine's career he as spoken with hundreds of people diagnosed with ODD & ADHD. An astonishing number of these people are also anti

Blue Marlin: The Giant Ship That Ships Other Ships
twistedsifter.com

When one needs to transport a large number of ships (perhaps they aren't ocean-ready), move a gigantic oil rig (like BP's Thunder Horse PDQ)

danlentz/clj-hangman
github.com

Contribute to clj-hangman development by creating an account on GitHub.

Amazing Programming Quotes - Lifengadget
www.lifengadget.com

There are some quotes which are really amazing programming quotes, some are funny, some astonishing.Here is the list of quotes that impresse

Keyboard shortcuts for Google Drive on the web - Drive Help
support.google.com

Google Drive on the web has a variety of keyboard shortcuts that you can use to accomplish different types of actions like selecting a docum

GitPrint.com - Easily print GitHub markdown
gitprint.com

Printing Markdown with GitPrint. Simply view any Markdown file on GitHub, then in your URL bar replace the github.com part of the URL with g

Paste number 140913: read-until
paste.lisp.org

(defun read-until (stream until &optional recursive) "Read from a stream (filling up a string) while: * until-string : the read input ends w

Concur.next — References
www.tbray.org

These, “refs” for short, are one of the three tools offered by Clojure to make concurrency practical and manageable. Herewith a walk-through

Concur.next — Idiomatic Clojure
www.tbray.org

I’m starting to wind down my Clojure research, but I’m feeling a little guilty about having exposed people to my klunky Lisp-newbie code, pe