15 ms·
A command-line weather app built using Elixir
- davidw 11y agoIf you like the ascii characters like that, you might also enjoy figlet: http://www.figlet.org/ http://www.figlet.org/
- bshimmin 11y agoYou beat me to it, so I'll just add that figlet in combination with the inestimable cowsay (http://en.wikipedia.org/wiki/Cowsay http://en.wikipedia.org/wiki/Cowsay) produces excellent results.
- tacticiankerala 11y agoI am aware of figlet but, this project was created while learning Elixir and I wanted to do it myself :)
- renekooi 11y agoAnother ASCII art weather (forecast) utility, but in Go: https://github.com/schachmat/wego https://github.com/schachmat/wego
- flaie 11y agoThis is much much better. Closer to "beautiful" than the one featured here.
- lectrick 11y agoYeah, it's beautiful if 1) you think mutable variables are beautiful 2) you think stuffing everything into one file is beautiful 3) you think defining functions at the root namespace is beautiful 4) you think consecutive repeated property accesses stuffed into a consecutively repeating boolean check like this are beautiful: if h.Time == "0" || h.Time == "100" || h.Time == "200" || h.Time == "300" || h.Time == "400" || h.Time == "500" || h.Time == "600" || h.Time == "700" || h.Time == "1400" || h.Time == "1500" || h.Time == "1600" || h.Time == "2300" 5) if you think embedding ANSI color codes across all strings instead of centralizing all that ugliness somewhere is beautiful 6) if you think not separating your command-line-handling code from your problem-modeling code is beautiful (see: Hexagonal Architecture http://alistair.cockburn.us/Hexagonal+architecture http://alistair.cockburn.us/Hexagonal+architecture) 7) If you think having no fucking test suite to speak of, given all that mangled mutating code is beautiful (to me this is the MOST egregious non-beautiful thing in the entire "project") Then, yes. WeGo is beautiful. Frankly I'm shocked that what people call "beautiful" can differ that fucking much.
- commentzorro 11y agoI think the parent was referring to the console display output rather than the code itself.
- lectrick 11y agolol. then I guess I will step off my pedestal and agree. I mean... I think Figlet does a better job than all of these, but anyway
- djm_ 11y agoCan anyone explain why a dependency of this app is a "working Go environment"? I thought one of golang's selling points was the fact that it created a simple binary. As far as I can tell, the Go environment is simply being used as a cheap installer, is that correct?
- laumars 11y agoBecause he's sharing the source code rather than a compiled binary. It's no different to having make + gcc listed as a dependency for C++ code.
- frou_dh 11y agoStrictly there is a little hindrance for the non-gopher user because this won't work until they set up a Go workspace, i.e. decided where they want GOPATH to be, set that, and added $GOPATH/bin to PATH to have the executable be runnable. $ env -i $(which go) get github.com/schachmat/wego package github.com/schachmat/wego: cannot download, $GOPATH not set. For more details see: go help gopath
- laumars 11y agoIndeed, but that's a separate point. The question was why Go was listed as a dependency and my answer was because it's a source code repository. Also, you left off GOROOT from your Go environment :)
- frou_dh 11y ago> The question was why Go was listed as a dependency You may have read it that way but the question was explicitly referring to "working Go environment"
- laumars 11y agoOnly because that was the terminology used on the Github readme. He was quoting it verbatim rather than asking what environmental variables needed setting. The reason I think this is because he also went on to say "I thought one of golang's selling points was the fact that it created a simple binary." which relates directly to discussions people make about JIT compiled (eg Python, Javascript, etc) vs AOT compiled (eg C++ and Go). It's also worth noting that you're only specifically discussing environmental variables, where as a development environment is more than just that. Aside having your build tools in PATH (and lets not forget that gcc and make need this just as much as go does), you need supporting shells for the ./config(ure) scripts, any source libraries for C++ includes, and so forth. So you could equally use the same "working [language] environment" terminology to describe C++ - or in fact any other programming language too. Which is why I think he was asking why he needed Go installed to begin with.
- fit2rule 11y agoThanks, wego is very beautiful and quite useful!
- iamcurious 11y agoUnlike the main post, this is a good use of ASCII art. i.e. to show a drawing/symbol not to make numbers more difficult to parse...
- ZenSwordArts 11y agoWow thanks for sharing.. this is really is beautiful!
- tacticiankerala 11y agoThat's really mind blowing! Thanks for sharing this.
- jalada 11y agoInteresting describing ASCII art as 'beautiful'. You can tell this isn't Designer News :P
- baldfat 11y agoI son't know but I love ncurses software and find the actual UI "beautiful since it gets me the information quickly and quickly lets me get things done. I find my wee-chat with 256 color urxvt with Source Code Pro font in Light Solarized to be the best looking IRC client ever :)
- feld 11y agothis isn't even ncurses, it's just stdout
- iamcurious 11y agoOutputting numbers as ASCII art is not beautiful. Can't parse it, can't pipe it, doesn't deserve to be in the command line.
- tacticiankerala 11y agoLOL!
- nodata 11y agoIt's nice, but it's not beautiful. Let's stop calling everything beautiful.
- teh_klev 11y ago...and "awesome".
- baldfat 11y agoI have used weather an old command line utility for years. http://fungi.yuggoth.org/weather/ http://fungi.yuggoth.org/weather/ Pretty cool to track the temperature with your own home temperature.
- techdragon 11y agoI'm going to be honest... This is an ugly looking pig of a command line tool. The giant ascii art looks bad and does nothing for its usefulness or usability.
- tacticiankerala 11y agoI am sorry for that. It was a hobby project of mine when learning Elixir and I got excited about it.
- masukomi 11y agoI've got nothing against it. it's a fun little hobby app, but yeah, I've got to agree with the commenter above this is FAR from any standard definition of a "beautiful" app.
- tacticiankerala 11y agoI admit that :)
- zaargy 11y agocurl 'http://api.openweathermap.org/data/2.5/weather?q=london&mode=json&units=metric' http://api.openweathermap.org/data/2.5/weather?q=london&mode... &>/dev/null | jgrep -s main.temp | figlet Put this in a function. Done. Gist here since copying and pasting above didn't work. https://gist.github.com/zaargy/384889cb44960e8559d5 https://gist.github.com/zaargy/384889cb44960e8559d5
- feld 11y agoMy first thought was "pipe into figlet, done."
- tacticiankerala 11y agoThat's a good one!
- anc84 11y agoTemperature accurate to three decimals? That's kinda silly. It would be more useful to display the "felt temperature".
- tormeh 11y agoAs well as, you know, the weather? Like temperature is an important part of weather, but it's often not even the most important one.
- digital-rubber 11y agoh o r r i b l e !
- azurelogic 11y agoI'm excited about this not because I want to use it, but because it is a great example of an Elixir app. I'm in the process of learning Elixir, and it was cool to see someone else's code and be able to make sense of most of it. Thanks for posting this!
- ajanuary 11y agoI don't know Elixir, but it does some questionable things. For instance, it appears to read and process the entire ascii_chars.txt file for each character in the output. It's not a big file, but it wouldn't be difficult to read it once.
- tacticiankerala 11y agoI thought of that but for a starter I didn't want to optimise too much. But still it's a good suggestion and I will apply "boy scout rule" for sure!
- tacticiankerala 11y agoI know :). I am learning Elixir as well! Glad that you liked it :)
- rnhmjoj 11y agofunction weather(){curl -s "http://api.openweathermap.org/data/2.5/weather?q=$1&units=metric" | jq .main.temp | figlet -kcf big} $ weather london __ _ _ ___ _____ /_ || || | |__ \ | ____| | || || |_ ) || |__ | ||__ _| / / |___ \ | | | | _ / /_ ___) | |_| |_|(_)|____||____/
- q3k 11y agoBut that's not web-scale and written in a functional language!
- gknoy 11y agoPerhaps I'm a bash noob, but when I try to paste that in my shell, it complains about a syntax error near `{curl`. Am I doing something wrong?
- cocoflunchy 11y agoThere are spacing issues for me. Try function weather() { curl -s "http://api.openweathermap.org/data/2.5/weather?q=$1&units=metric" | jq .main.temp | figlet -kcf big ;}
- rnhmjoj 11y agoI wrote this in zsh. It seems in bash you need to add a space before the bracket
- tacticiankerala 11y agoMay be you should post a gist. The line is getting truncated.
- rnhmjoj 11y agoIt should scroll horizontally.
- lmorris84 11y agoShould be called "temperature" rather than "weather". 21 degrees and...raining? sunny? any cloud? Wouldn't call it beautiful - the ascii art is really distracting.
- jbverschoor 11y agoDoes not work (osx): ~/tmp/elixir-weather $ ./weather Amsterdam =INFO REPORT==== 7-May-2015::16:37:56 === application: elixir exited: {bad_return, {{elixir,start,[normal,[]]}, {'EXIT', {{badmatch,{error,enotsup}}, [{elixir,start,2,[{file,"src/elixir.erl"},{line,34}]}, {application_master,start_it_old,4, [{file,"application_master.erl"},{line,272}]}]}}}} type: temporary Failed to start Elixir. error: {error, {elixir, {bad_return, {{elixir,start,[normal,[]]}, {'EXIT', {{badmatch,{error,enotsup}}, [{elixir,start,2,[{file,"src/elixir.erl"},{line,34}]}, {application_master,start_it_old,4, [{file,"application_master.erl"}, {line,272}]}]}}}}}}
- tacticiankerala 11y agoI will look into this issue. Thanks for reporting :)
- grimmdude 11y agohttp://weather.com/ http://weather.com/
- jhwhite 11y agoYa know, I was just thinking about doing something like this just a couple of days ago, but instead I wrote a python script to get the weather from forecast.io api, then brought that into my tmux status bar.
- tacticiankerala 11y agoThat's great! would be nice if yo could share the source as well.
- jhwhite 11y agoAsk and you shall receive! I'm very much a beginner developer so any feedback would be appreciated. https://gist.github.com/jhwhite/2df093eff1f9bab74144 https://gist.github.com/jhwhite/2df093eff1f9bab74144
- erikb 11y agoThat's not the weather, that's the temperature. But I like the effort put into making interesting little tools!
- tacticiankerala 11y agoyeah.. that's true, it's just shows temperature. Btw, Thanks for your kind words!
- supernintendo 11y agoI'm sorry if this comes across as negative, but this is an example of using the wrong tool for the job, IMO. I love Erlang and Elixir because BEAM gives me easy concurrency, metaprogramming and best of all, fault tolerance via supervisors. For a service that I need to stay alive, this is great. For a simple command line utility, I'd lean more toward a compiled language like Go, Haskell, Common Lisp, etc.
- tacticiankerala 11y agoI completely understand your point. This is a project I created while learning Elixir.