<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Evgeny Pogrebnyak</title>
    <description>The latest articles on DEV Community by Evgeny Pogrebnyak (@epogrebnyak).</description>
    <link>https://dev.to/epogrebnyak</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F89654%2Fe10ac849-00f5-49c8-b70a-78e3c3ac8e8b.jpeg</url>
      <title>DEV Community: Evgeny Pogrebnyak</title>
      <link>https://dev.to/epogrebnyak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/epogrebnyak"/>
    <language>en</language>
    <item>
      <title>Quickly inspect or sanitize PATH variable on both Windows and Linux</title>
      <dc:creator>Evgeny Pogrebnyak</dc:creator>
      <pubDate>Sat, 02 Mar 2024 20:11:13 +0000</pubDate>
      <link>https://dev.to/epogrebnyak/quickly-inspect-or-sanitize-path-variable-on-both-windows-and-linux-2d7f</link>
      <guid>https://dev.to/epogrebnyak/quickly-inspect-or-sanitize-path-variable-on-both-windows-and-linux-2d7f</guid>
      <description>&lt;p&gt;I think &lt;a href="https://www.reddit.com/r/linuxquestions/comments/pgv7hm/comment/hbf3bno/"&gt;this quote&lt;/a&gt; about &lt;code&gt;PATH&lt;/code&gt; environment variable is quite right:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I always get the feeling that nobody knows what a PATH is and at this point they are too afraid to ask.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;PATH&lt;/code&gt; environment variable syntax on Windows and Linux is different, so I wrote my own utility &lt;code&gt;justpath&lt;/code&gt; to be able to explore &lt;code&gt;PATH&lt;/code&gt; more easily.&lt;/p&gt;

&lt;p&gt;I did start with one line commands that show directories line by line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$PATH&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;";"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But what if I wanted to make a list of duplicate directories or show paths that are not valid - not too easy to make a one-liner for this behavior and this is where a Python script comes handy. After install I can do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;justpath --invalid
justpath --duplicates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More options and documentation &lt;a href="https://github.com/epogrebnyak/justpath"&gt;here at project repo&lt;/a&gt;. &lt;br&gt;
&lt;code&gt;justpath&lt;/code&gt; can purge invalid or duplicate paths &lt;br&gt;
and make a new &lt;code&gt;PATH&lt;/code&gt; string that you can use at your &lt;br&gt;
shell startup.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Julia, surprise me! (some astonishments while learning a new programming language)</title>
      <dc:creator>Evgeny Pogrebnyak</dc:creator>
      <pubDate>Sun, 02 Dec 2018 23:51:06 +0000</pubDate>
      <link>https://dev.to/epogrebnyak/julialang-and-surprises---what-im-learning-with-a-new-programming-language--21df</link>
      <guid>https://dev.to/epogrebnyak/julialang-and-surprises---what-im-learning-with-a-new-programming-language--21df</guid>
      <description>&lt;p&gt;In this article I'm listing some checkpoints in learning a new programming language in general and provide entry points to Julia which I find useful. &lt;/p&gt;

&lt;p&gt;My current task was writing a demonstration code in Julia for refreshing undergraduate econometrics(doing this in a language I know is not challenging enough). I wrote this article while doing this task (well, certain times, instead of doing econometrics).&lt;/p&gt;

&lt;p&gt;As a general note, I think there should be something exciting that makes you learn a new programming language. In Python for me it was a clean syntax and easy access to object oriented programming (OOP), in Julia it is the typesystem and functional flavour. Julia is not perfect as the first language because of lagging documentation and a small and version-divided Stack Overflow answer corpus, but it is you are into &lt;em&gt;'start and do'&lt;/em&gt; attitude, there are quite a few benefits to reap. As a younger language Julia assembled concepts and best practices from many predecessors and offers an &lt;a href="https://julialang.org/blog/2012/02/why-we-created-julia" rel="noopener noreferrer"&gt;exciting mix of features&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. What is essential to a new language
&lt;/h2&gt;

&lt;p&gt;All language documentations follow some hidden pattern, but is there one &lt;br&gt;
stated explicitly? Here is my version for a "universal mindmap to learn any  programming language" (next best is &lt;em&gt;"code, code, code"&lt;/em&gt;).&lt;/p&gt;
&lt;h3&gt;
  
  
  Minimum
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;arithmetics, using REPL as a calculator &lt;code&gt;&amp;gt;1+1&lt;/code&gt; prints &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;variable assignment &lt;code&gt;x = 5; s = "Hello!"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;native data structures (array or list, dictionary, set, tuple)&lt;/li&gt;
&lt;li&gt;function syntax &lt;code&gt;f(x) = 2x&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;flow control (do..end, for/while, if-then-else)&lt;/li&gt;
&lt;li&gt;input and output (print to console, read from file)&lt;/li&gt;
&lt;li&gt;exceptions, try-catch error handling&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Next in line
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Additionally you'd want to look into syntax for arrays, sequences/iteration, comprehension and string operations. &lt;/li&gt;
&lt;li&gt;The statistical langauages would have some versions of a dataframe structure to assist working with tabular datasets. &lt;/li&gt;
&lt;li&gt;Data structures beyond basic types&lt;/li&gt;
&lt;li&gt;Support for OOP and its replacements if no OOP (method broadcasting in Julia)&lt;/li&gt;
&lt;li&gt;Functional features (lambda fucntions, currying, pattern matching, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Soft issues
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;some language philosophy (everything is a... function, expression, object)&lt;/li&gt;
&lt;li&gt;popular libraries and their alternatives&lt;/li&gt;
&lt;li&gt;what language authors had in mind and what is their sense of beauty &lt;/li&gt;
&lt;li&gt;why people stick to this programming language? what backgrounds they came from?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Ecosystem
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;package manager&lt;/li&gt;
&lt;li&gt;interpreter options, compiling to an executable&lt;/li&gt;
&lt;li&gt;IDEs&lt;/li&gt;
&lt;li&gt;debugger&lt;/li&gt;
&lt;li&gt;plotting&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  A more comprehensive view: what is the total of a language?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/a/52341209/1758363" rel="noopener noreferrer"&gt;list of keywords&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;core language, base and standard library&lt;/li&gt;
&lt;li&gt;type system&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  2. Surprises 
&lt;/h2&gt;

&lt;p&gt;While learning Julia I started documenting the surprises: something negative that breaks a "least astonishment" principle, but also something positive, where you say "thank you so much for doing it this way, I was hoping for it in python, R, etc." &lt;/p&gt;

&lt;p&gt;You actually learn from both kind of surprises, in a different way. A negative surprise may have a different reason than neglect or malicious intent, it is a (good or bad) design decision with some ideas behind it. The positives surprises just make you slightly happier. &lt;/p&gt;
&lt;h3&gt;
  
  
  Julia, why?
&lt;/h3&gt;

&lt;p&gt;Julia sometimes seems to be following MATLAB (array manipulation), opposing python (for syntax) and trying to be lisp (functions). Sure, why not inherit good things, but still few things raise eyebrows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keywords &lt;code&gt;function&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt; (Ruby, no!)&lt;/li&gt;
&lt;li&gt;dictionary syntax with &lt;code&gt;=&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Julia, thanks!
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type system&lt;/strong&gt;. If I had to name a single best feature about Julia that would be strong type system. Python type hinting is just about getting there, and Julia already feels like a bit of Haskell: you can have explicit function signatures (makes running things fast and your code transparent) or compiler will try derive them for you (if you do not feel the advantage and excitement of coding that yet).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight julia"&gt;&lt;code&gt;&lt;span class="c"&gt;# This function accepts only string as argument &lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="nf"&gt; greet&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, &lt;/span&gt;&lt;span class="si"&gt;$&lt;/span&gt;&lt;span class="s"&gt;name"&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c"&gt;# This function is defined for integer arguments &lt;/span&gt;
&lt;span class="c"&gt;# and returns a real number&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="nf"&gt; div&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="x"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="kt"&gt;Real&lt;/span&gt;
    &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;throw&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;DivideError&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other big thanks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sas.upenn.edu/~jesusfv/Update_March_23_2018.pdf" rel="noopener noreferrer"&gt;fast compiler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;one line function definitions &lt;code&gt;greet(name::String) = println("Hello, $name")&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;simple start with unit tests with &lt;code&gt;@assert&lt;/code&gt;, &lt;code&gt;@test&lt;/code&gt;, &lt;code&gt;@test_throws&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;mathematic notation greeks support: &lt;code&gt;\beta&amp;lt;tab&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;MATLAB-like array manipulation&lt;/li&gt;
&lt;li&gt;user-defined function &lt;a href="https://julialang.org/blog/2017/01/moredots" rel="noopener noreferrer"&gt;vectorisation&lt;/a&gt; with &lt;code&gt;.f&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;'&lt;/code&gt; is for one character (like &lt;code&gt;'a'&lt;/code&gt;), &lt;code&gt;"&lt;/code&gt; is for string (like &lt;code&gt;"Hello!"&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Julia, I'm learning!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;project structure - Julia very silently assumes a project should have &lt;code&gt;MyModule/src/MyModule.jl&lt;/code&gt; directory structure, I wish it was better documented&lt;/li&gt;
&lt;li&gt;built-in package manager: &lt;code&gt;]&lt;/code&gt; vs &lt;code&gt;pip&lt;/code&gt; (&lt;code&gt;]&lt;/code&gt; starts to win for me)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://discourse.julialang.org/" rel="noopener noreferrer"&gt;own forum&lt;/a&gt; vs &lt;a href="https://stackoverflow.com/questions/tagged/julia-lang" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;overlapping packages of different provenance for similar tasks,
annoying for beginner, but hey it is a young ecosystem (was it this 
way in early python?)&lt;/li&gt;
&lt;li&gt;error messages could be friendlier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one-based list index: with python I almost got convinced zero-based was a true thing&lt;/li&gt;
&lt;li&gt;putting &lt;code&gt;end&lt;/code&gt; and no &lt;code&gt;:&lt;/code&gt; in functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Really black magic to me yet: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.julialang.org/en/v1/manual/metaprogramming/index.html#Functions-on-Expressions-1" rel="noopener noreferrer"&gt;macros/metaprogramming&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Julia, we are hoping
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Julia, why?&lt;/em&gt; is not likely to be corrected, but there are few things that actually may improve. I side with &lt;a href="https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/83" rel="noopener noreferrer"&gt;this user&lt;/a&gt; for Julia development priorities: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compiling to executables &lt;/li&gt;
&lt;li&gt;better error messages &lt;/li&gt;
&lt;li&gt;a debugger&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As also mentioned in that thread, integration with Spyder IDE could be nice. Spyder seems to carry the traditions on RStudio and Matlab for 'scientific experimentation' with code, enabling to try small parts of the code and assemble them to larger programs. Technically, other IDEs do not forbid that, but practically, Spyder is much more convenient for this try-and-see approach, even though I have a feeling it falls out of mainstream IDEs, there is so much focus of Jupyter now. &lt;/p&gt;

&lt;p&gt;Julia documentation - the style of writing that puts &lt;a href="https://docs.julialang.org/en/v1/stdlib/Pkg/index.html#Introduction-1" rel="noopener noreferrer"&gt;large chunks of text before getting practical&lt;/a&gt; is terrible to digest. Hope developers are courageous enough to scrap some part of the documentation for the better. &lt;/p&gt;

&lt;p&gt;However, one should remember to take &lt;a href="https://gist.github.com/richhickey/1563cddea1002958f96e7ba9519972d9" rel="noopener noreferrer"&gt;free software as a gift&lt;/a&gt;, so I'm grateful to what Julia achieved so far and made available for use.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Rules of thumb 
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Do not make Julia your &lt;strong&gt;first programming language&lt;/strong&gt; - there are far less examples on Stack Overflow than python and R (in a magnitude of hundereds vs 5-20 of votes per similar question), which limits quick googling-learning, also choosing a proper library is sometimes ambiguous. Julia borrows heavily from python, R, Matlab, lisp, maybe Haskell, and some features are better exposed and documented there than in Julia. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For some tasks the speedup comes from Julia compiler, but often C-based python libraries almost as faster and better developed. The real sweet spot is ability to do &lt;strong&gt;static typing&lt;/strong&gt;, this will help Julia develop long-term over python (extreme view: any dynamically typed program over 200 lines of code is trash). Yes, we have type annotations in python, but they just produce lint messages so far. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Skip a question which is a better language to learn - &lt;strong&gt;start with some microtasks&lt;/strong&gt; in any language and see where your progress is the fastest. Learn any second language because you are likely in a trap of some sacrifices been made by developpers of the first language you learned. That means you of not likely to write scalable and maintainable programs in the first language of your choice. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pick a small nice &lt;strong&gt;actively maintained project on Github&lt;/strong&gt; to learn about Julia in production. My choice in &lt;a href="https://github.com/TuringLang/Turing.jl" rel="noopener noreferrer"&gt;Turing.jl&lt;/a&gt; and &lt;a href="https://github.com/VMLS-book/VMLS.jl/blob/master/src/VMLS.jl" rel="noopener noreferrer"&gt;VLMS.jl&lt;/a&gt;, based on a great course in linear algebra and applications, but you can check any of &lt;a href="https://github.com/trending/julia?since=monthly" rel="noopener noreferrer"&gt;trending repos&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. Suggested reading
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Priority
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I like all the stack of Quantecon.org both for python and Julia, &lt;a href="https://lectures.quantecon.org/jl/index_learning_julia.html" rel="noopener noreferrer"&gt;there are lectures&lt;/a&gt; and &lt;a href="https://cheatsheets.quantecon.org/julia-cheatsheet.html" rel="noopener noreferrer"&gt;quick cheatsheets&lt;/a&gt;, the pace of delivery and wording look very good to me. Recommended even if you are not in economics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.julialang.org/en/v1/manual/noteworthy-differences/" rel="noopener noreferrer"&gt;How is Julia different from other programming languages&lt;/a&gt; is a good section in Julia docs, very saturated with food for thought.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A central cheatsheet like &lt;a href="https://juliadocs.github.io/Julia-Cheat-Sheet/" rel="noopener noreferrer"&gt;this&lt;/a&gt; and several useful R-Matlb-numpy-Julia comparison charts (&lt;a href="http://hyperpolyglot.org/numerical-analysis2#numpy" rel="noopener noreferrer"&gt;hyperpolyglot&lt;/a&gt;, &lt;a href="https://cheatsheets.quantecon.org/" rel="noopener noreferrer"&gt;quantecon.org&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://ucidatascienceinitiative.github.io/IntroToJulia/Html/WhyJulia#Core-Idea:-Multiple-Dispatch-+-Type-Stability-=%3E-Speed-+-Readability" rel="noopener noreferrer"&gt;Core idea of Julia&lt;/a&gt;, found in a very tidy &lt;a href="http://ucidatascienceinitiative.github.io/IntroToJulia" rel="noopener noreferrer"&gt;introduction Julia&lt;/a&gt; by Chris Rackauckas &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://web.stanford.edu/~boyd/vmls/vmls-julia-companion.pdf" rel="noopener noreferrer"&gt;Vectors, Matrices and Least Squares textbook&lt;/a&gt;, course and Julia package. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.cs.toronto.edu/~jsnell/assets/julia-tutorial.pdf" rel="noopener noreferrer"&gt;Julia for Machine Learning&lt;/a&gt;, exceptionally clean and sane 2014 Julia language presentation, very relevant as an intro. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other book-like choices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We all should all &lt;a href="https://docs.julialang.org/en/v1.1-dev/" rel="noopener noreferrer"&gt;read the docs&lt;/a&gt;, but Julia docs are a bit of a pain to read through in some sections - too much blind text.   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While google you often land to &lt;a href="https://en.wikibooks.org/wiki/Introducing_Julia" rel="noopener noreferrer"&gt;Julia wiki&lt;/a&gt;. I hate the visual design of the site, but selection of topics covered is right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://benlauwens.github.io/ThinkJulia.jl/latest/book.html" rel="noopener noreferrer"&gt;Think Julia: How to Think Like a Computer Scientist&lt;/a&gt; - a replica of similar python book, nice, but a bit too long.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I like Bogumil Kaminski's work and his &lt;a href="http://bogumilkaminski.pl/files/julia_express.pdf" rel="noopener noreferrer"&gt;quick intro&lt;/a&gt; to Julia, it is just 12 pages and gives you an idea of the language (a PDF could use some syntax highlighting, though). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sas.upenn.edu/~jesusfv/Chapter_HPC_8_Julia.pdf" rel="noopener noreferrer"&gt;Julia Tutorial by J Fernandez-Villaverde&lt;/a&gt;, a part of larger work of computational economics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://people.smp.uq.edu.au/YoniNazarathy/julia-stats/exploring-julia-a-statistical-primer-DRAFT.pdf" rel="noopener noreferrer"&gt;Exploring Julia. A Statistical Primer&lt;/a&gt;, nice 200+ pages on stats and Julia.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learn by package
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Example.jl (basic package structure)&lt;/li&gt;
&lt;li&gt;QuantEcon.jl (simple to more complex computational tasks)&lt;/li&gt;
&lt;li&gt;VMLS.jl (learning companion to a great book and course)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example-based introduction
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/DataWookie/MonthOfJulia" rel="noopener noreferrer"&gt;38 excercises with Julia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://samuelcolvin.github.io/JuliaByExample" rel="noopener noreferrer"&gt;Julia By Example&lt;/a&gt;, nice but could use some prioritising/cleaning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stack Overflow and similar on various topics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/19821247/how-to-make-user-defined-function-descriptions-docstrings-available-to-julia" rel="noopener noreferrer"&gt;docstrings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/a/52341209/1758363" rel="noopener noreferrer"&gt;reserved words and undocumented --lisp flag&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/27086159/what-is-the-difference-between-using-and-import-in-julia-when-building-a-mod" rel="noopener noreferrer"&gt;using vs import&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/21056991/access-command-line-arguments-in-julia" rel="noopener noreferrer"&gt;cli args&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/a/31734725/1758363" rel="noopener noreferrer"&gt;is Julia homoiconic?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/33755737/julia-oop-or-not/34928086#34928086" rel="noopener noreferrer"&gt;multiple dispatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@Jernfrost/my-new-workflow-with-julia-1-0-99711103d97c" rel="noopener noreferrer"&gt;workflow with 1.0 packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/21301451/get-a-list-of-current-variables-in-julia-lang" rel="noopener noreferrer"&gt;package introspection with &lt;code&gt;varinfo()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/JuliaLang/julia/issues/30175" rel="noopener noreferrer"&gt;my sad beta-hat on windows story&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tpapp.github.io/post/common-lisp-to-julia/" rel="noopener noreferrer"&gt;lisp roots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/53613663/what-is-in-julia-project-command-line-option" rel="noopener noreferrer"&gt;what is &lt;code&gt;@.&lt;/code&gt; in Julia &lt;code&gt;--project&lt;/code&gt; command line option?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/document/d/1pdfao38w8fgSnEvf1JkF4Dz2EipWJK1TmaNCUXAlRVc/edit" rel="noopener noreferrer"&gt;tentative Pkg3 docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>julia</category>
      <category>julalang</category>
    </item>
  </channel>
</rss>
