Over the past few weeks I started going through the core Clojure API. I didn’t think it would go quickly, but I am realizing what a large project it is.
I will probably also start looking at Luminus again.
I am still going through Simply Scheme. I am on chapter 8.
I may also start going through the Clojure API. I have tried 4Clojure a few times, and I tried the Kotlin Koans. I don’t think that is a good way for me to learn. I have a Kotlin book that I am looking at. I have thought about going through the functions on the Clojure Cheat Sheet, but I would need some way to keep track of what I have done. I made a page with a list of the functions in the core Clojure API for version 1.8. I have thought about this for a while, but recently I found a page called “One Weird Trick To Become a Clojure Expert“, which advocates going through the API. I may not go alphabetically.
Plus, unlike the Kotlin API, the core Clojure API is small enough that you can actually get through it without feeling overwhelmed.
I also found out that lein and boot do not work with JDK 1.9 on Ubuntu. I gathered from web searches that Clojure 1.9 will solve the issue. It seems to work fine on Windows 10.
This week I worked more on Simply Scheme. I got done with Chapter Six. Chapter Seven looks pretty short.
The Austin Clojure group had a code get-together at Cafe Express. There were only a few of us there. I worked on Simply Scheme.
One thing a lot of veteran Lisp/Scheme people do not like about Clojure is that it uses other characters for data structures (vectors, maps, sets) in places where other Lisps just use parentheses. I think I agree with Clojure for changing things a bit. I think it makes things more clear. There was a line about this topic in Chapter 7 of Simply Scheme that made me think about this:
Like cond, let uses parentheses both with the usual meaning (invoking a procedure) and to group sub-arguments that belong together.
Someone on Hacker News somewhere warned that if a site uses WebAssembly, a site could prevent you from blocking ads if they really wanted to force you to see them. Stay tuned.
This week (and especially this weekend) were not too productive. I was hoping to look at some Clojure libraries for TensorFlow.
But I started out updating one of my laptops to Ubuntu 17, and I was unable to log in. So I downloaded Ubuntu Gnome and spent a lot of time trying to get that right. I hate hate hate the default Gnome window manager (I think it is called “mutter”). I tried to switch to another window manager, locked myself out, and then I tried to install Mint.
For some reason I was not able to burn the iso files, so I re-installed Ubuntu Gnome and figured out how to get compiz t work to make it somewhat usable.
I also thought about working on an nftables firewall, but there are some migration utilities that will be available in the next version of Ubuntu. I think the next version is coming out in a month.
This weekend I made another attempt at some numeric programming. I have been working on a Clojure library named Neanderthal. It can use CUDA, OpenCL or native libraries. Instead of using BLAS and LAPACK for native libraries, it uses the Intel Math Kernel Library.
In order to use the native library, I installed the Intel MKL library. I did have a bit of trouble with the library. This worked:
For some reason, the “export” had to be on the front. I tried without, and I got an error. But I was able to copy and paste the code from the native example here.
I was able to get the code running from the first OpenCL example.
These are some packages I installed to get the OpenCL example to work:
aptitude install ocl-icd-opencl-dev
aptitude install dkms
aptitude install beignet-opencl-icd
I will also look at TensorFlow. There are a few libraries that let you use Clojure.
This week I finally got done with chapter 2 of Programming Kotlin.
IntelliJ IDEA sometimes takes a while to start up; at least it feels like it takes a while. Downloading Kotlin for the first time was a very slow process. So far it is a pretty interesting language. I am still not ready to make Android apps with it. I do think that Kotlin might wind up being the replacement for Java, despite what the Scala crowd thinks. Languages that look like a cat walked across your keyboard have limited appeal.
Anyway, no progress on Scheme or Clojure. My future at my current company is still uncertain, so I might need to get back to Clojure.
Not a whole lot to report.
I am still going slowly through Simply Scheme, and also Programming Kotlin by Stephen Samuel and Stefan Bocutiu.
I tried Kotlin koans, but frankly I don’t learn a language well with koans. I started the book on Kotlin and Android because the local Android meetup covered the first ten chapters at the beginning of the month. But going through that was kind of rough because I don’t know much about Kotlin or Android.
I should probably stick to one thing to make progress. I found out my project at work will be ending soon, so either I have to find a new project or a whole new company.
I have going through backup CDs and DVDs lately. Some of the files were tar files. The names of the tar files had names of my computers as part of them. I have had a lot of computers over the past decade, desktops and laptops, running Linux and Windows.
Here are some of the computer names that I found:
Not a whole lot of news on the programming/technology front this week.
I am trying to clean up my place. I have a box of DVDs and CDs with data back ups, camera pix, git projects and all sorts of stuff on them. An external drive could store all that and take up a lot less space, so I have been copying all the disks to the external drive while binge-watching shows online.
Hopefully more Kotlin progress soon.
I got a book on Android and Kotlin by a guy in Spain named Antonio Leiva. I started going through it. I don’t know too much Kotlin or much about Android, do it is a bit of a hard slog sometimes. Here is his github repo for the book. The Android meetup will have a meeting about it on August 1. I plan on being ready.
I have to learn more about Android. What is an Activity? What is an Adapter? I will have to figure this out.
Here is the Android javadoc.
I think Kotlin will be huge. I think making Kotlin an official Android language will change the JVM language landscape. I have a feeling I will not be doing a lot of Groovy in the future.
When Ceylon came out, I did not see what the point of it was. It did not fill a niche that was not filled by Java, Groovy Clojure or Scala. So another JVM language gaining momentum is a bit surprising.