Programmable drones with Clojure/Java support?
I watched Carin Meier's great talk last year at OSCon on "The Joy of flying robots with Clojure" (http://www.youtube.com/watch?v=Ty9QDqV-_Ak&html5=1), and seen her work on clj-drone (https://github.com/gigasquid), and have wanted a hackable drone ever since. I'm now in a position to purchase one, and was wondering what the options were if I wanted a programmable drone (ideally with Clojure). The Google namespace for "clojure drone" is dominated by clj-drone, which is designed for AR Parrot (http://ardrone2.parrot.com/), but my searches haven't found much else. Are there any / many alternatives to AR Parrot if I want to program one in Clojure/Java? JPH -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Programmable drones with Clojure/Java support?
Thanks for the amazingly detailed response John! And here's some related news for good timing: http://www.suasnews.com/2014/10/31767/linux-foundation-and-leading-technology-companies-launch-open-source-dronecode-project/. I wonder how much of this is accessible via Clojure? On 10/14/2014 01:08 PM, John Wiseman wrote: > Hi, JPH. I'm interested in clojure + drones too. I'll try to describe the > relevant parts of the current landscape as I see it. > > Unless you're writing your own firmware, at the moment most higher level > drone programming is done with libraries that communicate with a remote > drone, over a comms link: > >- clj-drone <https://github.com/gigasquid/clj-drone>. The Clojure >library by Carin Meier/gigasquid that speaks the AR.Drone protocol. >Includes some computer vision (with OpenCV) and belief-oriented > programming. >- turboshrimp <https://github.com/wiseman/turboshrimp>. My fork of >clj-drone. Fewer dependencies (OpenCV is not required) and can run on >Android. Focuses more on drone control/protocol without mixing in higher >level concepts like belief-oriented programming. Supports receiving >telemetry data from AR.Drone, like altitude, speed, heading, GPS location, >onboard vision capabilities (marker identification), etc. >- mavjava ><https://github.com/geeksville/arduleader/tree/master/thirdparty>. A >Java library that implements the MAVLink protocol, which is the currently >the leader in the "open drone communications protocol" category. MAVLink >is spoken by a lot of different drone systems including APM >Autopilot/Arducopter/Arduplane <http://ardupilot.com/> by 3D Robotics >and PIXHAWK/PX4 <https://pixhawk.ethz.ch/> by ETH. The AR.Drone >supports a subset of MAVLink. >- Drone API <http://dev.ardupilot.com/wiki/droneapi-tutorial/>. This is >a Python library that speaks MAVLink but provides higher-level >functionality for management of waypoints, etc. It's Python, but is >relevant because MAVLink is a rather low-level, somewhat annoying protocol >and this code will be useful to look at if you want to build higher level >abstractions on top of MAVLink. > > The AR.Drone is a fun platform because the API is easy, the drone itself > has a lot of functionality (video, wifi, GPS) and can be flown indoors. It > usually just works. It has an ARM CPU running Linux and has USB, which > makes it easy to cross-compile your own code, run it on-board, and > interface to other hardware. E.g. see these experiments with connecting a > software defined radio to the drone so it can pick up aircraft > transponders: Augmented Reality Display of Air Traffic for Drones > <http://lemondronor.com/blog/indexphp/2013/5/augmented-reality-display-of-air-traffic-for-drones> > and Cheap ADS-B on Amateur Drones > <http://lemondronor.com/blog/indexphp/2013/4/cheap-ads-b-on-amateur-drones>. > The AR.Drone is limited by wifi range and payload capability, and it is > closed software and hardware. > > APM Autopilot is the current leader of open source drone hacking. It runs > on lots of different drone platforms (including the AR.Drone) and is open > hardware and software. The comms links are typically 1 km/line of sight, > and there are a variety of payloads available. The software is very > capable, though it's not always stable. The development process is > maturing, but it still has a way to go (today's announcement of the > creation of the Dronecode foundation <https://www.dronecode.org/about> is a > good sign). It uses the NuttX OS on really limited hardware (168 MHz > Cortex M4F CPU w/ 256 KB RAM, compared to the AR.Drone's 1 GHz ARM Cortex > A8 w/ 1 GB RAM), which is annoying, though they have just started > experimenting with a port to Linux on a Beaglebone Black. An example of > some awesome hacking using APM is the search & rescue work done by > CanberraUAV <http://canberrauav.org.au/2014-uav-challenge/>. > > The PX4FMU autopilot is by the same group that came up with the PX4 > hardware that APM Autopilot currently uses, and while it's probably not as > mature as APM it seems to have a lot of potential. > > My current project is porting this demo I did last year of voice control of > an AR.Drone, using Python running on a laptop, to clojure running on an > Android phone: https://www.youtube.com/watch?v=uhBa11gdbeU > > > John > > > > > > On Mon, Oct 13, 2014 at 8:20 PM, JPH wrote: > >> I watched Carin Meier's great talk last year at OSCon on "The Joy of >> flying robots with Clojure" >> (http://www.youtube.com/watch?v=Ty
Re: [ANN] thi.ng/crypto - GPG/OpenPGP keypair generation, file/stream encryption helpers
GPG integration is a requirement for an upcoming project. Glad to have two options to choose from! If you end up collaborating, please share your planned path forward so I know which project to track. :) On 10/23/2014 03:45 PM, Karsten Schmidt wrote: > W00t! Thanks for the heads up! That looks far more fully featured > indeed... bookmarked! > > Btw. I did search GH for "clojure gpg" and nothing turned up, should > have searched for PGP instead... oh well! :) > > On 23 October 2014 18:18, Andrey Antukh wrote: >> Hi Karsten >> >> There it already exist that: https://github.com/greglook/clj-pgp >> And not directly related to pgp but reladed with bouncycastle and encryption >> api: https://github.com/niwibe/buddy >> >> Would be awesome to colaborate! >> >> Greetings. >> Andrey >> >> 2014-10-23 18:26 GMT+02:00 Karsten Schmidt : >>> Hi all, just a quick heads up for those who might want to integrate >>> some encryption features into their projects and not struggle with a >>> complex Java API to do so. This small library provides some utility >>> functions atop of Bouncycastle's OpenPGP provider: >>> >>> http://thi.ng/crypto >>> >>> Example: >>> >>> (require '[thi.ng.crypto.core :refer :all]) >>> >>> ;; generate a new RSA keypair, private w/ identity & passphrase, save >>> as armored files >>> (-> (rsa-keypair 2048) >>> (generate-secret-key "al...@example.org" "hello") >>> (export-keypair "alice.pub.asc" "alice.sec.asc" true)) >>> ; => nil >>> >>> ;; create dummy file >>> (spit "foo.txt" "hello world!") >>> ; => nil >>> >>> ;; note: for files `encrypt-file` can be used alternatively, >>> ;; but `encrypt-stream` is more general purpose >>> (encrypt-stream "foo.txt" "foo.gpg" (public-key "alice.pub.asc")) >>> ; => nil >>> >>> ;; decrypt with secret key & passphrase >>> (decrypt-stream "foo.gpg" "foo-decrypted.txt" (secret-key >>> "alice.sec.asc") "hello") >>> ; => # >>> >>> (slurp "foo-decrypted.txt") >>> ; => "hello world!" >>> >>> Best, K. >>> -- >>> Karsten Schmidt >>> http://postspectacular.com >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clojure@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >> >> >> >> -- >> Andrey Antukh - Андрей Антух - / >> >> http://www.niwi.be >> https://github.com/niwibe >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with your >> first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Latest web framework for clojure
On 02/26/2014 09:13 AM, Aravindh S wrote: > Hi All, >I have been reading clojure for sometime now. I am at a point where I > want to learn a web framework. I see many options available for clojure > where few are built upon others. So if I am to learn one, which framework > does the community recommend? > > Thanks > Aravindh.S > I recommend Luminus (www.luminusweb.net), which is an opinionated mix of popular clojure libraries. I also wrote a post as a kind of overview of the various Clojure web components (https://hackworth.be/2013/12/10/navigating-clojure-web-stack/). That was written back when I'd first started with Clojure and trying to understand how all the pieces fit together, compared to my experiences with Ruby. Hope that helps, JPH -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: I want to get sha1 of a string
I've had good experiences with https://github.com/xsc/pandect. You can also use Java interop like this: https://gist.github.com/prasincs/827272 JPH On 03/02/2014 12:26 AM, action wrote: > do like this: > (ns clojurewerkz.support.hashing > (:require [clojurewerkz.support.internal :as i]) > (:import [com.google.common.hash Hashing HashFunction HashCode])) > but: > FileNotFoundException Could not locate clojurewerkz/support__init.class or > cloju > rewerkz/support.clj on classpath: clojure.lang.RT.load (RT.java:443) > how to set the dependencies, or other solution? > > Think you > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: How did you learn Clojure?
The example I use for starting a new language is talking to a remote JSON API. Plenty to choose from, lets you experiment with libraries (http, json), and work with data structures. Also having "lein new " speeds things along, since you're not paralyzed on how to begin. JPH On 03/21/2014 09:08 AM, Marcus Blankenship wrote: > Hi Folks, > > I'm a post technical PM who's fascinated by Clojure, and want to learn it, > but am having a hard time without a "real" project to work on. It's actually > excited me so much I'm considering hanging up my PM hat and diving back in > the "programmer pool" again! > > My problem appears to be 1) focus, and 2) fear. Focus because I can't (yet) > earn a living on a clojure project, so it must be done during "off hours". > Fear because it's harder and more different than the old OO languages I've > used in the past. > > So I'm curious: how did you learn Clojure well enough to be proficient with > it, or how are you working on learning it? > > Anyone else facing the focus + fear dilemma? > > Sent from my iPhone > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Writing tests for a live trading API?
Hi all. I'm still relatively new to Clojure and I haven't spent much time on testing before. I've recently written some libraries to talk to Bitcoin exchanges (clj-havelock, clj-btce, cryptick), and I'd like to add tests to them. I'd like some advice around how to test against a live service (there is not test service available) where there's a financial impact if something goes wrong (someone buys/sells by accident). My manual REPL-testing usually involve creating several orders with price spreads that are unlikely to execute. For instance, selling 1 Litecoin for 1 Bitcoin. Buying 1 Bitcoin for $5 USD. My concern is if someone runs the tests with bad inputs, resulting in real orders being executed. I can write tests that pull in API credentials from a file in my home directory, and define price ranges for orders outside the normal spread. These could then be fed into the tests. However, would it be better to try and mock the trading API responses rather than do it live? Or perhaps require a flag to run dangerous tests? Ultimately I want to be able to demonstrate the libraries are mature with good test coverage, but I'm worried about the right approach. Any advice would be appreciated. Thanks in advance, JPH -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Woops
Sorry all, somehow I hit the send button multiple times while editing. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: What's clojure killer app? I don't see any.
I think that because of Clojure's resistance to heavy-weight frameworks, you won't necessarily see a "killer app" in the way Rails was for Ruby. I think the killer feature of Clojure is the sum of its parts. At first glance it's hard to immediately see the value, but once you start plugging together reliable components, taking advantage of the Java interop and tooling from Leiningen, the advantages begin to appear. This doesn't make it easy to advocate until you've first sold your audience on the value of Clojure principles: functional, simple, immutable. On 04/20/2014 12:15 AM, Paulo Suzart wrote: > Hi all, (warning, this is kinda confusing email) > > Been following the list for some time and specially paying attention to > what could be the killer clojure app as Akka is for Scala. > > I keep seeing small libs (I like libs) popping up like ants, but I don't > believe none of them (alone at least) can make clojure explode and become > main technology in a old school /ordinary company. > > People say clojure is good for data. But where are the cases? And more > specifically, where are the frameworks and libs to support it? Are they > talking about wrappers around java for Hadoop? Sigh... > > Pulsar is quite dead, core async isn't clear regarding remoting, and avout? > And lamina? And aleph? Where are the tools that can make clojure to cover > from Web to big data and batch? > > Luminous, caribou, etc, are they going to become the next grails? Huumm.. > Will take lot of time. Clojure Script alone will not go any further than > the current server side. > > What made me give up scala was Scalaz, and I hope the "create thousand > disconnected libs and publish a post with ANN sufix" approach doesn't make > me give up clojure. > > Sorry guys, I've been posting about Clojure since 2009, and still can't see > it becoming the main technology even being the CTO of the company. > > What is the killer app for you? Or how do you think we can make clojure > supporting apps like Facebook or something big like that? > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.