Piping fun in shell with fortune and cowsay

Somebody mentioned seashells.io to me. A nifty little service that let’s you pipe output from your shell’s command line directly to the web.

What better use for this than to pipe random funny quotes?

TL;DR

If you want to check out the output – just go here https://seashells.io/v/FCPsK8Sh. It’s running from my shell – so may die any moment.

Show me how!

First, you need to install a couple of packages.

  • cowsay prints an ascii image to the screen, that looks like a cow ( or one of the specified animals).
  • fortune prints a random quote or a “fortune-cookie” type message from a collection of quotes
  • fortune-min is needed on some systems (like Ubuntu), as fortune only comes with the engine, not the db of quotes. Not needed on mac.
  • seashell is a client for seashells.io website. You don’t have to install it, you can just use netstat. It’s up to you. But you do need python & pip available.
sudo apt-get install -y cowsay fortune fortunes-min

# If you are on macOSX, brew is your friend
brew install cowsay fortune 

# if you want seashells client instead of nc
pip install seashells

Now that we have prerequisites, let’s actually use the magic of pipe to combine all the tool togeather!

Note: The choice of animals available to cowsay varies by distribution . For instance, macOSx has blowfish but ubunutu‘s package, doesn’t

If you use fish shell

# Let's wrap some functionality into a handy function
function random_quote
  set animal (random choice {default,dragon,dragon-and-cow,elephant,moose,stegosaurus,tux,vader})
  fortune -s | cowsay -f $animal
end

# a trick to pipe from loop to another process. Fish only.  
fish -c 'while true; sleep 15; random_quote; end' | nc seashells.io 1337

If you use bash shell

random_quote() {
  choices=("dragon" "dragon-and-cow" "elephant" "moose" "stegosaurus" "tux" "vader")
  animal=${choices[$RANDOM % ${#choices[@]} ]}
  fortune -s | cowsay -f $animal
}

while true; do sleep 15; random_quote; done | nc seashells.io 1337

Если бы языки программирования были бы машинами

Below is my literary translation ( with some small changes and additions ) of a post on Mike Vanier’s website – If programming languages were cars. Translated and posted with author’s permission.

Ниже – мой литературный перевод заметки на сайте Майкла Ваниера, с небольшими добавлениями и немного отсебятины. Переведено и напечатано с разрешения автора.

  • Ada – это аццкий танк. Большой и толстый, времён 2-ой мировой, чем-то напоминает русский T-34 или американский Шерман М-4. Люди смеются над тобой когда ты им говоришь, что ты в танке. Но ты, блин, ещё посмеёшся над ними, когда наступит война, и они будут ездить на своих спортивных машинах по полю битвы. Хорошо смееётся тот, кто смеётся последний. Особенно если у него есть план, и он в танке.

  • Assembly – чисто двигатель. Машину надо построить самому, вручню подвести нефть из трубы, нефть переработать на месте, и всё это не выключая двигателя. Зато если ты аккуратен – попрёт, что твой запорожец, из анекдота, с авиационным двигателем.

  • ASP.NET – машина класса ехтра-люкс, которая хочет попасть в гараж каждего автолюбителя, как это удалось сделать главному её конкуренту. Правда ездит она только по дорогам построенным специально для неё, в случае поломки вам надо выписивать специалного механика из дорогой мастерской и запасные части, а также спойлера, диски, и трубо, стоят сумашедших денег.

  • Basic – простая машинка, для поездок в ближайший овощной магазин. Однажды популярная среди начинающих машин, была переделана крупным ПО производителем. Новая машина пригодна для поездок на более дальние расстояния, лишь издалека напоминая предыдущую модель. А-ля Toyota Corolla – 1984 и 2000.

  • C – спортивная машина, которая может ехать очень быстро, но ломается каждые 100 км.

  • Cobol – поговаривают что была такая машина, но ни один уважающий себя водитель не признается, что ездил на такой. Прячется в подвалах очень крупных гаражей. Типа инвалидки с зиловским двигателем.

  • C# – конкурентная модель симейных седанов. Однажды проехавшись на таком, вы уже не сможете пересесть на другую машину. Ваш седан просто не разрешит вам.

  • C++ – затюнингованая Си, обладает кучей всяких крутых новых кнопочек и фишечек, может проехать 500км, прежде чем поломается, но когда уж поломоается, никто не знает почему. И без-политра тут не обойдёшся.

  • dBase – это Deloarean языков програмирования. Одно время – это была самая модная тачка на районе. Так должны были виглядеть машины будушего. Когда вы садитесь за руль этой машины, вы чувствуете себя немного как тот сумашедший профессор из “Назад В Будущее”.

  • Eiffel – машина, в которую встроен инструктор по-вождению, разговаривающий с сильным французским акцентом. Он поможет вам быстро понять и исправить ваши ошибки, но не смейте прирекаться – или вас обматерят и выкинут из машины.

  • Erlang – это автопарк машин, которые едут вместе, чтобы доставить вас по месту назначения. Требуется опыт, чтобы научится управлять этим табуном, но уже если научитесь, то не не захотите учиться ездить по-другому. К тому же не важно если одна из лошадей выпадет из табуна – упряжка всё равно дотянет вас до места назначения.

  • Forth – машина которую вы собираете сами из конструктора. Она не выглядет как машина и даже не ведёт себя как ни одна другая. Зато очень эксклюзивно – ведь машина марки Forth – ездит только задом наперёд.

  • Fortran – достаточно примитивная машина, которая может ездить, только по очень прямым дорогам. Владельцы – этой машины будут до посининения доказывать вам, что это не правда, и просто у всех остальнх слишком неправильный прямой взгляд на дороги.

  • Java – это семейный вагон. Им относительно легко управлять, он не слишком быстр, но и в меру безопасен.

  • Haskell – не совсем машина. На самом деле вовсе не машина – а абстракция машина, которой вы должны описать как бы вы себя вели если бы были машиной. После чего, вам нужно будет абстракцию воплатить в реалном мире. При этом как работает прототип вы знать не имеете права. Вы так же можете сделать множество копий вашей абстрактной машины, после чего вы сможете сделать много одинкаовых поездок на этих копиях.

  • Lisp – похож на машину, но если у вас есть смекалка и лобзик, вы можете из него сделать и самолёт и атомную подводную лодки. Вы лишь ограничены своей фантазией и лобзиком. К сожелению никто вам не верит – все думают, что это всего лишь старый советский анекдот.

  • Mathematica – продукт попыток сделать из Лиспа – навигационый спутник. Может расчитать оиптимальный маршрут до места назначения, но и стоит эта машина как спутник.

  • Matlab – дешовый вариант Математики, на подобе, распечатаных карт. Очень удобна для передвижения по знакомой местности, но стоит вам попаст в чащёбу, и вы быстрее выберетесь пешком.

  • Ocaml – европейские автопроизводители постарались над её сексуальным дезайном. Она не такая быстрая как Си, но почти никогда не ломается, в отличии от своих амерканских скоростных аналогов. Правда из-за того, что делали её во Франции, приборная доска, комьютерный чип и руль находятся в совершенно неожиданных местах.

  • Perl – говорят, что это очень классная точила, но книга по эксплуатации, написана по-олбански, а логика управления – отчасти напоминает женскую. Оданко если вы научитесь управлять этой машиной, вам уже не захочется пересаживаться на другю.

  • PHP – это как Экарус. В него набито куча народу, в него иногда не заедешь легко в маленкий дворик, но всем хочется такой поводить и желательно оранжего цвета.

  • Prolog – делает за вас всё автоматически, после того как вы дадите эй инструкции – но усилий которые вам на это потребуются, с лихвой хватило бы чтобы уже сбегать туда и обратно два раза.

  • Python – это замечательная машина для начинающих. Если вы никогда не поедете на болото, не заберётесь на вершину вулкана или не полетите в космос, другое средство передвижения вам и не потрбуется.

  • Ruby – машина, которя пострил один японский автостроитель в подсобке, из останков того что осталось после аварии между Пёрлом, Питоном и Смолтоком. Правда некоторые водители жалуются: ” На хера в машине три руля?”, но не задумиваются они над тем, что первый руль может отказать, а второй просто не захочет с вами разговаривать. Правда поговоривают , что её скоро перестроют с одним рулём, но с 6-ю колёсами для увеличения проходимости и скорости.

  • Smalltalk – очень маленкая машина, придуманая для начинаюших водителей и конструкторов. Она не быстра, но зато вы можете сделать из неё трех-колёсный мопед или веложабу. Единстевенное маааааленкое отличие: вы ей не управляете, вы посилаете смс-ки что бы она сделала, то что вы хотите.

  • Visual Basic – машина которая ездит на вас!