about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorelioat <hi@eli.li>2023-07-05 10:43:15 -0400
committerelioat <hi@eli.li>2023-07-05 10:43:15 -0400
commita67803aa847860695dbba921a1f36d18f1ac0f8c (patch)
treee9551a049aa3810b40d05f43be4e95c5b9bcc664
parent821db84eb2161fd936420efc296cabad0ad156e6 (diff)
downloadtour-a67803aa847860695dbba921a1f36d18f1ac0f8c.tar.gz
*
-rw-r--r--.clj-kondo/.cache/v1/clj/build.transit.json1
-rw-r--r--.clj-kondo/.cache/v1/clj/elioat.bbplayground.transit.json1
-rw-r--r--.clj-kondo/.cache/v1/lock0
-rw-r--r--.lsp/.cache/db.transit.json1
-rw-r--r--clj/README.md22
-rw-r--r--clj/bbplayground/.gitignore29
-rw-r--r--clj/bbplayground/CHANGELOG.md24
-rw-r--r--clj/bbplayground/LICENSE214
-rw-r--r--clj/bbplayground/README.md80
-rw-r--r--clj/bbplayground/build.clj17
-rw-r--r--clj/bbplayground/deps.edn17
-rw-r--r--clj/bbplayground/doc/intro.md3
-rw-r--r--clj/bbplayground/pom.xml54
-rw-r--r--clj/bbplayground/resources/.keep0
-rw-r--r--clj/bbplayground/src/elioat/bbplayground.clj12
-rw-r--r--clj/bbplayground/test/elioat/bbplayground_test.clj7
16 files changed, 482 insertions, 0 deletions
diff --git a/.clj-kondo/.cache/v1/clj/build.transit.json b/.clj-kondo/.cache/v1/clj/build.transit.json
new file mode 100644
index 0000000..37b5d5f
--- /dev/null
+++ b/.clj-kondo/.cache/v1/clj/build.transit.json
@@ -0,0 +1 @@
+["^ ","~$lib",["^ ","~:row",5,"~:col",1,"~:name","^0","~:ns","~$build","~:top-ns","^5","~:type","~:symbol"],"~$version",["^ ","^1",6,"^2",1,"^3","^9","^4","^5","^6","^5","^7","~:string"],"~$main",["^ ","^1",7,"^2",1,"^3","^;","^4","^5","^6","^5","^7","^8"],"~$test",["^ ","^1",9,"^2",1,"~:fixed-arities",["~#set",[1]],"^3","^<","^4","^5","^6","^5","^7","~:fn"],"~$ci",["^ ","^1",12,"^2",1,"^=",["^>",[1]],"^3","^@","^4","^5","^6","^5","^7","^?"],"~:filename","/Users/elimellen/Code/tour/clj/bbplayground/build.clj"]
\ No newline at end of file
diff --git a/.clj-kondo/.cache/v1/clj/elioat.bbplayground.transit.json b/.clj-kondo/.cache/v1/clj/elioat.bbplayground.transit.json
new file mode 100644
index 0000000..82f0c94
--- /dev/null
+++ b/.clj-kondo/.cache/v1/clj/elioat.bbplayground.transit.json
@@ -0,0 +1 @@
+["^ ","~$greet",["^ ","~:row",4,"~:col",1,"~:fixed-arities",["~#set",[1]],"~:name","^0","~:ns","~$elioat.bbplayground","~:top-ns","^7","~:type","~:fn"],"~$-main",["^ ","^1",9,"^2",1,"~:varargs-min-arity",0,"^5","^;","^6","^7","^8","^7","^9","^:"],"~:filename","/Users/elimellen/Code/tour/clj/bbplayground/src/elioat/bbplayground.clj"]
\ No newline at end of file
diff --git a/.clj-kondo/.cache/v1/lock b/.clj-kondo/.cache/v1/lock
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.clj-kondo/.cache/v1/lock
diff --git a/.lsp/.cache/db.transit.json b/.lsp/.cache/db.transit.json
new file mode 100644
index 0000000..6e1a7d9
--- /dev/null
+++ b/.lsp/.cache/db.transit.json
@@ -0,0 +1 @@
+["^ ","~:classpath",["~#set",[]],"~:project-hash","","~:project-root","/Users/elimellen/Code/tour","~:kondo-config-hash","1e4e36e9328ed284bde8f90567c93a5706c9edc8188700dfac3af99a6f96a6ec","~:dependency-scheme","jar","~:analysis",null,"~:analysis-checksums",["^ "],"~:project-analysis-type","~:project-and-full-dependencies","~:version",11,"~:stubs-generation-namespaces",["^1",[]]]
\ No newline at end of file
diff --git a/clj/README.md b/clj/README.md
new file mode 100644
index 0000000..17da159
--- /dev/null
+++ b/clj/README.md
@@ -0,0 +1,22 @@
+install [`clj-new`](https://github.com/seancorfield/clj-new), 
+
+```bash
+$ clojure -Ttools install com.github.seancorfield/clj-new '{:git/tag "v1.2.399"}' :as clj-new
+```
+
+start new projects using `clj-new`
+
+```bash
+$ clojure -Tclj-new app :name myname/myapp
+$ cd myapp
+```
+
+start nrepl, 
+
+```bash
+$ bb --nrepl-server 1667
+```
+
+open vscode and then go nuts!
+
+[info on calva in vs code](https://calva.io/)
\ No newline at end of file
diff --git a/clj/bbplayground/.gitignore b/clj/bbplayground/.gitignore
new file mode 100644
index 0000000..abb9785
--- /dev/null
+++ b/clj/bbplayground/.gitignore
@@ -0,0 +1,29 @@
+.calva/output-window/
+.classpath
+.clj-kondo/.cache
+.cpcache
+.DS_Store
+.eastwood
+.factorypath
+.hg/
+.hgignore
+.java-version
+.lein-*
+.lsp/.cache
+.lsp/sqlite.db
+.nrepl-history
+.nrepl-port
+.portal
+.project
+.rebel_readline_history
+.settings
+.socket-repl-port
+.sw*
+.vscode
+*.class
+*.jar
+*.swp
+*~
+/checkouts
+/classes
+/target
diff --git a/clj/bbplayground/CHANGELOG.md b/clj/bbplayground/CHANGELOG.md
new file mode 100644
index 0000000..07e9d7d
--- /dev/null
+++ b/clj/bbplayground/CHANGELOG.md
@@ -0,0 +1,24 @@
+# Change Log
+All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).
+
+## [Unreleased]
+### Changed
+- Add a new arity to `make-widget-async` to provide a different widget shape.
+
+## [0.1.1] - 2023-07-05
+### Changed
+- Documentation on how to make the widgets.
+
+### Removed
+- `make-widget-sync` - we're all async, all the time.
+
+### Fixed
+- Fixed widget maker to keep working when daylight savings switches over.
+
+## 0.1.0 - 2023-07-05
+### Added
+- Files from the new template.
+- Widget maker public API - `make-widget-sync`.
+
+[Unreleased]: https://github.com/elioat/bbplayground/compare/0.1.1...HEAD
+[0.1.1]: https://github.com/elioat/bbplayground/compare/0.1.0...0.1.1
diff --git a/clj/bbplayground/LICENSE b/clj/bbplayground/LICENSE
new file mode 100644
index 0000000..d921d3d
--- /dev/null
+++ b/clj/bbplayground/LICENSE
@@ -0,0 +1,214 @@
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from
+a Contributor if it was added to the Program by such Contributor itself or
+anyone acting on such Contributor's behalf. Contributions do not include
+additions to the Program which: (i) are separate modules of software
+distributed in conjunction with the Program under their own license
+agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and
+such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under
+Licensed Patents to make, use, sell, offer to sell, import and otherwise
+transfer the Contribution of such Contributor, if any, in source code and
+object code form.  This patent license shall apply to the combination of the
+Contribution and the Program if, at the time the Contribution is added by the
+Contributor, such addition of the Contribution causes such combination to be
+covered by the Licensed Patents. The patent license shall not apply to any
+other combinations which include the Contribution. No hardware per se is
+licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other
+intellectual property rights of any other entity. Each Contributor disclaims
+any liability to Recipient for claims brought by any other entity based on
+infringement of intellectual property rights or otherwise. As a condition to
+exercising the rights and licenses granted hereunder, each Recipient hereby
+assumes sole responsibility to secure any other intellectual property rights
+needed, if any. For example, if a third party patent license is required to
+allow Recipient to distribute the Program, it is Recipient's responsibility
+to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license
+set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on
+or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within
+the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if any, in a manner that reasonably allows subsequent Recipients to identify
+the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a
+manner which does not create potential liability for other Contributors.
+Therefore, if a Contributor includes the Program in a commercial product
+offering, such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor") against any
+losses, damages and costs (collectively "Losses") arising from claims,
+lawsuits and other legal actions brought by a third party against the
+Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in
+a commercial product offering.  The obligations in this section do not apply
+to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must:
+a) promptly notify the Commercial Contributor in writing of such claim, and
+b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such claim
+at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers
+warranties related to Product X, those performance claims and warranties are
+such Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON
+AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
+EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
+CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the
+appropriateness of using and distributing the Program and assumes all risks
+associated with its exercise of rights under this Agreement , including but
+not limited to the risks and costs of program errors, compliance with
+applicable laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by the
+parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted
+under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and
+does not cure such failure in a reasonable period of time after becoming
+aware of such noncompliance. If all Recipient's rights under this Agreement
+terminate, Recipient agrees to cease use and distribution of the Program as
+soon as reasonably practicable. However, Recipient's obligations under this
+Agreement and any licenses granted by Recipient relating to the Program shall
+continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to
+time. No one other than the Agreement Steward has the right to modify this
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as the Agreement
+Steward to a suitable separate entity. Each new version of the Agreement will
+be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this
+Agreement, whether expressly, by implication, estoppel or otherwise. All
+rights in the Program not expressly granted under this Agreement are
+reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial
+in any resulting litigation.
diff --git a/clj/bbplayground/README.md b/clj/bbplayground/README.md
new file mode 100644
index 0000000..f84b166
--- /dev/null
+++ b/clj/bbplayground/README.md
@@ -0,0 +1,80 @@
+# bbplayground
+
+FIXME: my new application.
+
+## Installation
+
+Download from https://github.com/elioat/bbplayground
+
+## Usage
+
+FIXME: explanation
+
+Run the project directly, via `:exec-fn`:
+
+    $ clojure -X:run-x
+    Hello, Clojure!
+
+Run the project, overriding the name to be greeted:
+
+    $ clojure -X:run-x :name '"Someone"'
+    Hello, Someone!
+
+Run the project directly, via `:main-opts` (`-m elioat.bbplayground`):
+
+    $ clojure -M:run-m
+    Hello, World!
+
+Run the project, overriding the name to be greeted:
+
+    $ clojure -M:run-m Via-Main
+    Hello, Via-Main!
+
+Run the project's tests (they'll fail until you edit them):
+
+    $ clojure -T:build test
+
+Run the project's CI pipeline and build an uberjar (this will fail until you edit the tests to pass):
+
+    $ clojure -T:build ci
+
+This will produce an updated `pom.xml` file with synchronized dependencies inside the `META-INF`
+directory inside `target/classes` and the uberjar in `target`. You can update the version (and SCM tag)
+information in generated `pom.xml` by updating `build.clj`.
+
+If you don't want the `pom.xml` file in your project, you can remove it. The `ci` task will
+still generate a minimal `pom.xml` as part of the `uber` task, unless you remove `version`
+from `build.clj`.
+
+Run that uberjar:
+
+    $ java -jar target/bbplayground-0.1.0-SNAPSHOT.jar
+
+If you remove `version` from `build.clj`, the uberjar will become `target/bbplayground-standalone.jar`.
+
+## Options
+
+FIXME: listing of options this app accepts.
+
+## Examples
+
+...
+
+### Bugs
+
+...
+
+### Any Other Sections
+### That You Think
+### Might be Useful
+
+## License
+
+Copyright © 2023 Elimellen
+
+_EPLv1.0 is just the default for projects generated by `clj-new`: you are not_
+_required to open source this project, nor are you required to use EPLv1.0!_
+_Feel free to remove or change the `LICENSE` file and remove or update this_
+_section of the `README.md` file!_
+
+Distributed under the Eclipse Public License version 1.0.
diff --git a/clj/bbplayground/build.clj b/clj/bbplayground/build.clj
new file mode 100644
index 0000000..f9b7f7f
--- /dev/null
+++ b/clj/bbplayground/build.clj
@@ -0,0 +1,17 @@
+(ns build
+  (:refer-clojure :exclude [test])
+  (:require [org.corfield.build :as bb]))
+
+(def lib 'net.clojars.elioat/bbplayground)
+(def version "0.1.0-SNAPSHOT")
+(def main 'elioat.bbplayground)
+
+(defn test "Run the tests." [opts]
+  (bb/run-tests opts))
+
+(defn ci "Run the CI pipeline of tests (and build the uberjar)." [opts]
+  (-> opts
+      (assoc :lib lib :version version :main main)
+      (bb/run-tests)
+      (bb/clean)
+      (bb/uber)))
diff --git a/clj/bbplayground/deps.edn b/clj/bbplayground/deps.edn
new file mode 100644
index 0000000..0c510ce
--- /dev/null
+++ b/clj/bbplayground/deps.edn
@@ -0,0 +1,17 @@
+{:paths ["src" "resources"]
+ :deps {org.clojure/clojure {:mvn/version "1.11.1"}}
+ :aliases
+ {:run-m {:main-opts ["-m" "elioat.bbplayground"]}
+  :run-x {:ns-default elioat.bbplayground
+          :exec-fn greet
+          :exec-args {:name "Clojure"}}
+  :build {:deps {io.github.seancorfield/build-clj
+                 {:git/tag "v0.8.2" :git/sha "0ffdb4c"
+                  ;; since we're building an app uberjar, we do not
+                  ;; need deps-deploy for clojars.org deployment:
+                  :deps/root "slim"}}
+          :ns-default build}
+  :test {:extra-paths ["test"]
+         :extra-deps {org.clojure/test.check {:mvn/version "1.1.1"}
+                      io.github.cognitect-labs/test-runner
+                      {:git/tag "v0.5.0" :git/sha "48c3c67"}}}}}
diff --git a/clj/bbplayground/doc/intro.md b/clj/bbplayground/doc/intro.md
new file mode 100644
index 0000000..bfb3bf5
--- /dev/null
+++ b/clj/bbplayground/doc/intro.md
@@ -0,0 +1,3 @@
+# Introduction to bbplayground
+
+TODO: write [great documentation](http://jacobian.org/writing/what-to-write/)
diff --git a/clj/bbplayground/pom.xml b/clj/bbplayground/pom.xml
new file mode 100644
index 0000000..3db43d4
--- /dev/null
+++ b/clj/bbplayground/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>net.clojars.elioat</groupId>
+  <artifactId>bbplayground</artifactId>
+  <version>0.1.0-SNAPSHOT</version>
+  <name>elioat/bbplayground</name>
+  <description>FIXME: my new application.</description>
+  <url>https://github.com/elioat/bbplayground</url>
+  <licenses>
+    <license>
+      <name>Eclipse Public License</name>
+      <url>http://www.eclipse.org/legal/epl-v10.html</url>
+    </license>
+  </licenses>
+  <developers>
+    <developer>
+      <name>Elimellen</name>
+    </developer>
+  </developers>
+  <scm>
+    <url>https://github.com/elioat/bbplayground</url>
+    <connection>scm:git:git://github.com/elioat/bbplayground.git</connection>
+    <developerConnection>scm:git:ssh://git@github.com/elioat/bbplayground.git</developerConnection>
+    <tag>v0.1.0-SNAPSHOT</tag>
+  </scm>
+  <dependencies>
+    <dependency>
+      <groupId>org.clojure</groupId>
+      <artifactId>clojure</artifactId>
+      <version>1.10.3</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+  </build>
+  <repositories>
+    <repository>
+      <id>clojars</id>
+      <url>https://repo.clojars.org/</url>
+    </repository>
+    <repository>
+      <id>sonatype</id>
+      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+    </repository>
+  </repositories>
+  <distributionManagement>
+    <repository>
+      <id>clojars</id>
+      <name>Clojars repository</name>
+      <url>https://clojars.org/repo</url>
+    </repository>
+  </distributionManagement>
+</project>
diff --git a/clj/bbplayground/resources/.keep b/clj/bbplayground/resources/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/clj/bbplayground/resources/.keep
diff --git a/clj/bbplayground/src/elioat/bbplayground.clj b/clj/bbplayground/src/elioat/bbplayground.clj
new file mode 100644
index 0000000..41bb5bc
--- /dev/null
+++ b/clj/bbplayground/src/elioat/bbplayground.clj
@@ -0,0 +1,12 @@
+(ns elioat.bbplayground
+  (:gen-class))
+
+(defn greet
+  "Callable entry point to the application."
+  [data]
+  (println (str "Hello, " (or (:name data) "World") "!")))
+
+(defn -main
+  "I don't do a whole lot ... yet."
+  [& args]
+  (greet {:name (first args)}))
diff --git a/clj/bbplayground/test/elioat/bbplayground_test.clj b/clj/bbplayground/test/elioat/bbplayground_test.clj
new file mode 100644
index 0000000..3f6f548
--- /dev/null
+++ b/clj/bbplayground/test/elioat/bbplayground_test.clj
@@ -0,0 +1,7 @@
+(ns elioat.bbplayground-test
+  (:require [clojure.test :refer :all]
+            [elioat.bbplayground :refer :all]))
+
+(deftest a-test
+  (testing "FIXME, I fail."
+    (is (= 0 1))))