<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7693718602652484364</atom:id><lastBuildDate>Sat, 18 Aug 2018 09:41:22 +0000</lastBuildDate><category>Gaming</category><category>Languages</category><category>Japanese</category><category>Law &amp; Practice</category><category>Coding</category><category>People &amp; Society</category><category>Music</category><category>Tablature</category><category>Work &amp; Learning</category><category>Python</category><category>Writing</category><category>Learning</category><category>French</category><category>History</category><category>Malay</category><category>Miscellaneous</category><title>Cuttings</title><description>Things of interest.</description><link>http://www.wanzafran.com/</link><managingEditor>noreply@blogger.com (X)</managingEditor><generator>Blogger</generator><openSearch:totalResults>106</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-2791360557750004364</guid><pubDate>Thu, 04 Jan 2018 15:22:00 +0000</pubDate><atom:updated>2018-01-05T18:36:40.475+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>Java Almost Requires An IDE</title><description>&lt;div class=&quot;excerpt&quot;&gt;&lt;p&gt;An IDE as an-almost compulsory requirement is not a particularly desirable language trait.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;I use PyCharm and Sublime Text all the time, but I like that I don&#39;t need them to program well.  And the following is &lt;a href=&quot;https://www.reddit.com/r/vim/comments/4ywpdj/survey_which_language_do_you_use_vim_for/d6so1i6/&quot;&gt;why I&#39;m not particularly attracted to Java&lt;/a&gt;: &lt;/p&gt; &lt;blockquote&gt;     &lt;p&gt;The consensus seems to be that Java was designed to be used with an IDE. Many design choices made the language overly verbose under the assumption that the IDE will generate code for you.&lt;/p&gt;     &lt;p&gt;A few concrete examples:&lt;/p&gt;     &lt;ul&gt;         &lt;li&gt;You are expected to make all fields private and use them via accessors(yea, I know, in OOP you should externalize as least as possible - but in Java even structish classes are expected to use the property convention), but there is no nice property syntax. The assumption is that the IDE will generate getters and setters for your, and automatically fold them to hide the clutter.&lt;/li&gt;         &lt;li&gt;Want to iterate over a loop? You&#39;ll need to create a for loopa with the full type of the iterator object and all that other verbose glue. Again - the IDE will do that for you.&lt;/li&gt;         &lt;li&gt;Ridiculously long package names. (unconfirmed - I think I read somewhere that the original idea was to make them look like reversed domain names so that javac can reverse them and grab packages from the internet). Doesn&#39;t matter - just use the classes, and the IDE will add the imports for you(asking you to choose between several options if it can&#39;t decide by itself). ...&lt;/li&gt;     &lt;/ul&gt;     &lt;p&gt;I personally write Java with Vim. I use the javacomplete2 plugin both for autocompletion and for import insertion. It can also generate getters and setters, but I tend to prefer to use Lombok, a library that uses annotation metaprogramming to magic away lots of glue code.&lt;/p&gt;     &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2018/01/java-almost-requires-ide.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-1405377932461134969</guid><pubDate>Tue, 02 Jan 2018 14:04:00 +0000</pubDate><atom:updated>2018-01-02T22:04:15.558+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">People &amp; Society</category><title>Genuinely Technical Modesty</title><description>&lt;p&gt;For all his technical knowledge knowledge and abilities, &lt;a href=&quot;https://github.com/thechangelog/transcripts/blob/master/podcast/the-changelog-201.md&quot;&gt;Richard Hipp sure is humble&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;    &lt;p&gt;Richard Hipp: Yeah, and plus I wouldn&#39;t know how to do that. &lt;span class=&quot;highlight&quot;&gt;One of the reasons people really like working with this is we are a 100% engineering shop. There&#39;s no sales talk. When you talk to somebody at our company, you&#39;re getting direct no-nonsense talk with an engineer; you&#39;re not talking to sales people. And that&#39;s different&lt;/span&gt;. And that&#39;s not to knock the sales aspect of things. I understand that, and you have to do that in a lot of occasions, and those people work really hard, but we&#39;re just doing it a little bit differently.&lt;/p&gt;      &lt;p&gt;You mentioned, maybe it was during the break, you quoted something from the article about how people tell me I could have made a lot of money on this if I had any business sense. And I believe them, I probably could have. By hiring some sales people, I could probably make a lot of money, get rich. But &lt;span class=&quot;highlight&quot;&gt;you know what, we make enough. It&#39;s not a lot. I&#39;m driving a 10-year-old Civic, but that&#39;s fine. That&#39;s all I need&lt;/span&gt;.&lt;/p&gt;      &lt;p&gt;You know, everybody - I&#39;m getting off-topic - has this threshold where they get enough money. When you have nothing, you wanna make money, everybody wants that. But at some point you get enough money, so &quot;Okay, now I have enough money, now other things become more important. Family, free time, working in the community, charities... Whatever.&quot; And that threshold is different for different people. &lt;span class=&quot;highlight&quot;&gt;Some people, they don&#39;t reach that threshold until they get into the billions, other people reach it at a few tens of thousands. Me and the people that are on the team, our thresholds are kind of low, so we&#39;re okay&lt;/span&gt;.&lt;/p&gt; &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2018/01/genuinely-technical-modesty.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-241482007308596087</guid><pubDate>Sun, 17 Dec 2017 03:00:00 +0000</pubDate><atom:updated>2017-12-17T11:12:52.633+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>To Know C</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;On those who know C, and those who actually don&#39;t.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;A Redditor &lt;a href=&quot;https://www.reddit.com/r/cscareerquestions/comments/6mhz2u/is_c_worth_learning_in_2017/dk2t3bl/&quot;&gt;writes&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;     &lt;p&gt;You&#39;d be surprised at how people simply don&#39;t understand or know the basics of the language. We rather focus on how well the candidate knows the basics. &lt;span class=&quot;highlight-text&quot;&gt;Pointers are key&lt;/span&gt; and you should know how to use them like the back of your hand. Being able to &lt;span class=&quot;highlight-text&quot;&gt;use C data structures like structs, enums, etc. are also vital. Being able to manipulate data at both the byte level and the bit level&lt;/span&gt; (do you understand bit masking, bitwise logic, etc.).&lt;/p&gt;     &lt;p&gt;When we conduct interviews, we don&#39;t focus on the algorithms or data structures that you see in higher level languages because that gets rather difficult in a language like C. We will ask things like do you &lt;span class=&quot;highlight-text&quot;&gt;know how to reverse an array or find content in strings as these require you to fundamentally understand memory, pointers&lt;/span&gt;, etc. and they aren&#39;t necessarily difficult algorithms. We do ask questions that try to see how well someone knows some of the tricks that you see in C, like &lt;span class=&quot;highlight-text&quot;&gt;doing multiplication/division by 2 using bit shifting, checking if a number of even or odd by bit checking instead of using modulo, etc&lt;/span&gt;.&lt;/p&gt;     &lt;p&gt;Beyond the language itself, you also have to have a good understanding of how the code interacts with the OS. A big one is do you understand stack vs. heap? We may ask how you would write a function that returns an array (many candidates will try to create an array on the stack in the function which obviously doesn&#39;t work vs. using the heap or creating it on the stack in the calling function). Do you understand the basics of how functions are called and the implications of that (i.e. buffer overflows leading to security vulnerabilities)? A lot of OS basics are important to us, like understanding paging and the memory hierarchy. ...&lt;/p&gt;     &lt;p&gt;Basically, and I think you can tell, is that we want our C developers to be more than someone who can write a C program and compile it. We want &lt;span class=&quot;highlight-text&quot;&gt;someone who understands what every line of code in the program is doing and how that program interacts with the OS and the hardware. This takes a lot of knowledge and is a lot different than higher level programming languages where such information isn’t as important as knowing how to apply the tools&lt;/span&gt; of the language. [...]&lt;/p&gt;  &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/to-know-c.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-6532026484041883790</guid><pubDate>Sat, 16 Dec 2017 04:58:00 +0000</pubDate><atom:updated>2017-12-16T12:59:34.800+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><category domain="http://www.blogger.com/atom/ns#">Work &amp; Learning</category><title>Sketch, Draft, Craft</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;Craftsmen of the arts (digital or analogue) do experiment.&lt;/p&gt;&lt;/div&gt;  &lt;blockquote&gt;     &lt;p&gt;For a long time I felt bad about this, just as I once felt bad that I didn&#39;t hold my pencil the way they taught me to in elementary school. &lt;span class=&quot;highlight-text&quot;&gt;If I had only looked over at the other makers, the painters or the architects, I would have realized that there was a name for what I was doing: sketching&lt;/span&gt;. As far as I can tell, the way they taught me to program in college was all wrong. You should figure out programs as you&#39;re writing them, just as writers and painters and architects do.&lt;/p&gt;         &lt;p&gt;Realizing this has real implications for software design. It means that a programming language should, above all, be malleable. A programming language is for thinking of programs, not for expressing programs you&#39;ve already thought of. It should be a pencil, not a pen. Static typing would be a fine idea if people actually did write programs the way they taught me to in college. But that&#39;s not how any of the hackers I know write programs. &lt;span class=&quot;highlight-text&quot;&gt;We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler&lt;/span&gt;.&lt;/p&gt;     &lt;p&gt;&lt;strong&gt;Paul Graham&lt;/strong&gt;, &lt;em&gt;Hackers and Painters&lt;/em&gt;&lt;/p&gt;  &lt;/blockquote&gt; </description><link>http://www.wanzafran.com/2017/12/sketch-draft-craft.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-9061103934990333554</guid><pubDate>Sat, 16 Dec 2017 04:22:00 +0000</pubDate><atom:updated>2017-12-16T12:23:15.807+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><category domain="http://www.blogger.com/atom/ns#">Work &amp; Learning</category><title>When Defying Simplicity </title><description> &lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;Of the obviousness of deficiencies in simple/complicated designs.&lt;/p&gt;&lt;/div&gt; &lt;blockquote&gt;     &lt;p&gt;I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are &lt;em&gt;obviously&lt;/em&gt; no deficiencies and the other way is to make it so complicated that there are no &lt;em&gt;obvious&lt;/em&gt; deficiencies.&lt;/p&gt;     &lt;p&gt;- &lt;strong&gt;Charles Antony Richard Hoare&lt;/strong&gt;, &lt;em&gt;&#39;The Emperor&#39;s Old Clothes&#39;, via the 1980 ACM Turing Award Lecture&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;The above proposition also applies to other domains of craft practice.&lt;/p&gt;</description><link>http://www.wanzafran.com/2017/12/when-defying-simplicity.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-3908557584647108236</guid><pubDate>Fri, 15 Dec 2017 05:20:00 +0000</pubDate><atom:updated>2017-12-15T13:23:43.648+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>The Breakings of Julia</title><description> &lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;The low-level diving tinkerability of Julia.&lt;/p&gt;     &lt;/div&gt; &lt;p&gt;Haven&#39;t explored Julia, but this is &lt;a href=&quot;https://www.evanmiller.org/why-im-betting-on-julia.html&quot;&gt;an interesting point to consider&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;    &lt;p&gt;I read about Julia a while back, and thought it sounded cool, but not like something I urgently needed. Julia is a dynamic language with great performance. That&#39;s nice, I thought, but I&#39;ve already invested a lot of time putting a Ferrari engine into my VW Beetle — why would I buy a new car? Besides, nowadays a number of platforms — Java HotSpot, PyPy, and asm.js, to name a few — claim to offer &quot;C performance&quot; from a language other than C.&lt;/p&gt;         &lt;p&gt;Only later did I realize what makes Julia different from all the others. &lt;em&gt;Julia breaks down the second wall — the wall between your high-level code and native assembly&lt;/em&gt;. &lt;span class=&quot;highlight-text&quot;&gt;Not only can you write code with the performance of C in Julia, you can take a peek behind the curtain of any function into its LLVM Intermediate Representation as well as its generated assembly code — all within the REPL&lt;/span&gt;. [...]&lt;/p&gt;             &lt;p&gt;Bam — you can go from writing a one-line function to inspecting its LLVM-optimized X86 assembler code in about 20 seconds.&lt;/p&gt;         &lt;p&gt;So forget the stuff you may have read about Julia&#39;s type system, multiple dispatch and homoiconi-whatever. That stuff is cool (I guess), but if you&#39;re like me, &lt;span class=&quot;highlight-text&quot;&gt;the real benefit is being able to go from the first prototype all the way to balls-to-the-wall multi-core SIMD performance optimizations without ever leaving the Julia environment&lt;/span&gt;.&lt;/p&gt;          &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/the-breakings-of-julia.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-3140521484765773094</guid><pubDate>Thu, 14 Dec 2017 17:14:00 +0000</pubDate><atom:updated>2017-12-16T12:14:21.607+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Work &amp; Learning</category><title>The Python Paradox</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;The paradox: those who get the better job learn the things they don&#39;t need for it.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Mind you: this article was written in 2004. Python was &lt;a href=&quot;https://en.wikipedia.org/wiki/History_of_Python&quot;&gt;only version 2.4 then&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;     &lt;p&gt;I didn&#39;t mean by this that Java programmers are dumb. I meant that Python programmers are smart. It&#39;s a lot of work to learn a new programming language. And &lt;span class=&quot;highlight-text&quot;&gt;people don&#39;t learn Python because it will get them a job; they learn it because they genuinely like to program and aren&#39;t satisfied with the languages they already know&lt;/span&gt;.&lt;/p&gt;     &lt;p&gt;Which makes them exactly the kind of programmers companies should want to hire. Hence what, for lack of a better name, I&#39;ll call &lt;span class=&quot;highlight-text&quot;&gt;the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they&#39;ll be able to hire better programmers, because they&#39;ll attract only those who cared enough to learn it. And for programmers the paradox is even more pronounced: the language to learn, if you want to get a good job, is a language that people don&#39;t learn merely to get a job&lt;/span&gt;.&lt;/p&gt; &lt;/blockquote&gt; </description><link>http://www.wanzafran.com/2017/12/the-python-paradox.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-3115242545858421900</guid><pubDate>Tue, 12 Dec 2017 15:28:00 +0000</pubDate><atom:updated>2017-12-14T20:25:27.541+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Law &amp; Practice</category><title>Innocent Until Proven Guilty</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;On the need to prove guilt, and of being innocent until proven otherwise.&lt;/p&gt;&lt;/div&gt; &lt;blockquote&gt;     &lt;p&gt;Even in the very few instances where the accused has intrusted his defender with a full confession of his crime, we hold it to be clear that he may still be lawfully defended. The guilt of which he may be conscious, and which he may have so disclosed, he has still a right to see distinctly proved upon him by legal evidence. To suborn wretches to the commission of perjury, or procure the absence of witnesses by bribes, is to commit a separate and execrable crime; to tamper with the purity of the judges, is still more odious: But &lt;span class=&quot;highlight-text&quot;&gt;there is no reason why any party should not, by fair and animated arguments, demonstrate the insufficiency of that testimony, on which alone a righteous judgment can be pronounced to his destruction. Human beings are never to be run down, like beasts of prey, without respect to the laws of the chase&lt;/span&gt;. If society must make a sacrifice of any one of its members, let it proceed according to general rules, upon known principles, and with clear proof of necessity: let us carve him as a feast fit for the gods, not hew him as a carcase for the hounds. Reversing the paradox above cited from Paley, we should not despair of finding strong arguments in support of another, and maintain that &lt;span class=&quot;highlight-text&quot;&gt;it is desirable that guilty men should sometimes escape, by the operation of these general rules, which form the only security for innocence&lt;/span&gt;.&lt;/p&gt; &lt;p&gt;- Sydney Smith, &lt;em&gt;The Edinburgh Review: Or Critical Journal&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/innocent-until-proven-guilty_12.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-5827254716186565568</guid><pubDate>Fri, 08 Dec 2017 00:15:00 +0000</pubDate><atom:updated>2017-12-15T18:09:33.310+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>The Song of Java Braces</title><description>&lt;div class=&#39;excerpt&#39;&gt;         &lt;p&gt;When coders become song lyricists.&lt;/p&gt;&lt;/div&gt;   &lt;p&gt;Someone presents a notoriously right-braced Java code.&lt;/p&gt; &lt;p&gt;The folks at  &lt;a href=&quot;https://www.reddit.com/r/ProgrammerHumor/comments/7i0xzi/time_to_end_the_debate/&quot;&gt;Programmer Humor&lt;/a&gt; then decide to sing:&lt;/p&gt; &lt;blockquote&gt;      &lt;p&gt;When first I saw the brace, I was petrified! &lt;br /&gt;    Kept thinking, who would ever try to put them on the side?! &lt;br /&gt;    But then I spent so many nights, thinking how your program&#39;s wrong, &lt;br /&gt;    My beard grew long, found out how Python gets along &lt;br /&gt;    But now you&#39;re back, with no stack trace &lt;br /&gt;    I just walked in to find you here, looking for that edge case &lt;br /&gt;    I should have wrote much better docs &lt;br /&gt;    I should have made sure my mem was freed &lt;br /&gt;    If I&#39;d have known for just one second you&#39;d be maintaining after me &lt;br /&gt;    Go on now go, Stack Overflow &lt;br /&gt;    Just sign up now, &#39;cause you need to get to know, &lt;br /&gt;    Weren&#39;t you the one who wrote code this weird? &lt;br /&gt;    Didja think I&#39;d accept it, Didja think this PR&#39;d get cleared? &lt;br /&gt;    Oh no, not I. You will revise. &lt;br /&gt;    The one thing I can say for sure, is this code won&#39;t comply, &lt;br /&gt;    We&#39;ve got a great style guide, &lt;br /&gt;    Examples of how you should write, &lt;br /&gt;    You will revise, you will revise&lt;/p&gt;&lt;/blockquote&gt;    &lt;p&gt;In addition:&lt;/p&gt; &lt;blockquote&gt;      &lt;p&gt;And so your brace, is in outer space &lt;br /&gt;    I just compiled your code with a sad look upon my face&lt;/p&gt;&lt;/block&gt;&lt;/blockquote&gt; </description><link>http://www.wanzafran.com/2017/12/the-song-of-java-braces_8.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-3332359113173659267</guid><pubDate>Wed, 06 Dec 2017 17:45:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.450+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Law &amp; Practice</category><title>A Reputation Without Oil</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;On advocates known to be frank, honest and sound.&lt;/p&gt;&lt;/div&gt;  &lt;blockquote&gt;     &lt;p&gt;Perhaps &lt;span class=&quot;highlight-text&quot;&gt;the most valuable thing the lawyer brings into the courtroom when he is an advocate is his reputation. His reputation for candor and soundness is worth three points in his brief and a marvelous opening for his oral argument&lt;/span&gt;. If his reputation is bad, I don&#39;t care what he says or how he says it — he is climbing a glass mountain in shoes covered with oil.      &lt;p&gt; - Hon. Charles D. Breitel&lt;/p&gt; &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/a-reputation-without-oil_7.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-8115809490639021665</guid><pubDate>Sun, 03 Dec 2017 04:08:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.476+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>Declarative, Imperative, Functional Sandwiches</title><description>&lt;div class=&quot;excerpt&quot;&gt;   &lt;p&gt;Programming paradigms and sandwiches.&lt;/p&gt;&lt;/div&gt; From &lt;a href=&quot;https://www.reddit.com/r/learnprogramming/comments/62asvk/are_there_jobscareer_paths_that_just_utilize_sql/dfllz3g/&quot;&gt;Reddit&lt;/a&gt;:   &lt;blockquote&gt;     &lt;p&gt;&lt;span class=&quot;highlight-text&quot;&gt;Declarative&lt;/span&gt; programming says, &quot;Make me a sandwich.&quot;&lt;/p&gt;     &lt;p&gt;&lt;span class=&quot;highlight-text&quot;&gt;Imperative&lt;/span&gt; programming says, &quot;Get peanut butter. Get a knife. Get bread. Scoop peanut butter using the knife. Spread peanut butter knife over bread.&quot;&lt;/p&gt;     &lt;p&gt;&lt;span class=&quot;highlight-text&quot;&gt;Functional&lt;/span&gt; programming says (and here the analogy breaks down a little), &quot;Transform a closed jar of peanut butter into an open jar of peanut butter. Transform the open jar of peanut butter and a knife into a knife with peanut butter on it. Transform the knife and a slice of bread into a sandwich.&quot;&lt;/p&gt;  &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/declarative-imperative-functional_3.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-5827192849278202569</guid><pubDate>Sat, 02 Dec 2017 07:02:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.501+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>SQL: WHERE vs HAVING</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;SQL&#39;s WHERE/HAVING can be a bit unintuitive.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;See &lt;a href=&quot;https://stackoverflow.com/a/9253267/283169&quot;&gt;Stack Overflow&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;     &lt;p&gt;WHERE clause introduces a condition on &lt;em&gt;individual rows&lt;/em&gt;; HAVING clause introduces a condition on &lt;em&gt;aggregations&lt;/em&gt;, i.e. results of selection where a single result, such as count, average, min, max, or sum, has been produced from &lt;em&gt;multiple&lt;/em&gt; rows. Your query calls for a second kind of condition (i.e. a condition on an aggregation) hence HAVING works correctly.&lt;/p&gt;     &lt;p&gt;&lt;span class=&quot;text-highlight&quot;&gt;As a rule of thumb, use WHERE before GROUP BY and HAVING after GROUP BY&lt;/span&gt;. It is a rather primitive rule, but it is useful in more than 90% of the cases.&lt;/p&gt; &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/sql-where-vs-having_2.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-3127614597219744511</guid><pubDate>Sat, 02 Dec 2017 06:54:00 +0000</pubDate><atom:updated>2017-12-15T01:44:49.100+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><category domain="http://www.blogger.com/atom/ns#">Python</category><title>Choice - of Pandas and SQL</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;As to when to use Pandas, regular SQL or SQLite.&lt;/p&gt;&lt;/div&gt; Says &lt;a href=&quot;https://www.reddit.com/r/datascience/comments/2w7zc9/do_you_prefer_python_or_sql_for_data_manipulation/cootnen/&quot;&gt;Reddit&lt;/a&gt;:  &lt;blockquote&gt; &lt;p&gt;You can do queries and aggregations in both SQL and Python&#39;s Pandas.&lt;/p&gt; &lt;p&gt;If your datasets are &lt;strong&gt;small and transient&lt;/strong&gt;, and you only need to manipulate them in memory as part of your program, use Pandas. Pandas can be thought of as a DSL that extends Python&#39;s array type by adding a DataFrame object.&lt;/p&gt; &lt;p&gt;If your datasets are &lt;strong&gt;large (or potentially large) and persistent&lt;/strong&gt;, do it in a proper SQL database. You will will have an easier time scaling up, and it opens the doors to functionality and performance optimizations you would not have had otherwise (e.g. indexing, query optimizations, nested queries, partitions, etc.).&lt;/p&gt; &lt;p&gt;If your datasets are &lt;strong&gt;small but persistent&lt;/strong&gt;, use an in-between solution like SQLite.&lt;/p&gt; &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/12/choice-of-pandas-and-sql_2.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-8171222995866420365</guid><pubDate>Mon, 02 Jan 2017 16:35:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.545+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>Debugging: Twice As Hard As Writing Code</title><description> &lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;Been experiencing this quite a bit. Glad I&#39;m in that &quot;not smart enough&quot; category. &lt;/p&gt;&lt;/div&gt; &lt;blockquote&gt;    &lt;p&gt;&quot;&lt;span class=&quot;highlight-text&quot;&gt;Debugging is twice as hard as writing the code&lt;/span&gt; in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.&quot;&lt;/p&gt;     &lt;p&gt;– Brian W. Kernighan, co-author of The C Programming Language and the &quot;K&quot; in &quot;AWK&quot;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2017/01/debugging-twice-as-hard-as-writing-code_3.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-1759133682860203834</guid><pubDate>Thu, 06 Oct 2016 13:23:00 +0000</pubDate><atom:updated>2017-12-15T01:44:35.573+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><category domain="http://www.blogger.com/atom/ns#">Python</category><title>Inverting (vs Zipping) Dictionary Values and Items</title><description>  &lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;On the inversion of a dictionary&#39;s key/values.&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;David Beazley wrote, in Item 1.8 of Python Cookbook 3 (&quot;Calculating with Dictionaries&quot;):&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;In order to perform useful calculations on the dictionary contents, it is often useful to invert the keys and values of the dictionary using zip().&lt;/p&gt; &lt;div class=&quot;code-block&quot;&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;min_price = min(zip(prices.values(), prices.keys()))&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;...&lt;/p&gt; The solution involving zip() solves the problem by &quot;inverting&quot; the dictionary into a sequence of (value, key) pairs. &lt;/p&gt;&lt;/blockquote&gt; &lt;h3&gt;Observations&lt;/h3&gt;   &lt;p&gt;The above plagued me for a while until I finally &#39;got&#39; it. Here&#39;s how I&#39;d explain it instead:&lt;/p&gt;   &lt;ol&gt;&lt;li&gt; &lt;p&gt;&lt;em&gt;zip()&lt;/em&gt; does not actually &#39;invert&#39; the dictionary. It only creates an iterable &lt;em&gt;zip&lt;/em&gt; object. &lt;/p&gt;&lt;/li&gt; &lt;li&gt; &lt;p&gt;To actually make a dictionary from the &lt;em&gt;zip&lt;/em&gt; object, apply &lt;em&gt;dict()&lt;/em&gt; to it.&lt;/p&gt;&lt;/li&gt; &lt;li&gt; &lt;p&gt;The &lt;em&gt;zip&lt;/em&gt; object merely preserves the order of its arguments; i.e. you get the &#39;inverted&#39; dictionary because the above code uses values-keys (rather than keys-values). Example:&lt;/p&gt;&lt;/li&gt; &lt;/ol&gt; &lt;div class=&quot;code-block&quot;&gt;&lt;pre&gt;&lt;code&gt;prices = {&lt;br /&gt; &#39;ACME&#39;: 45.23,&lt;br /&gt; &#39;AAPL&#39;: 612.78,&lt;br /&gt; &#39;IBM&#39;: 205.55,&lt;br /&gt; &#39;HPQ&#39;: 37.20,&lt;br /&gt; &#39;FB&#39;: 10.75&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;zipped_not_dict = zip(prices.values(), prices.keys())&lt;br /&gt;zipped_dict = dict(zip(prices.values(), prices.keys()))&lt;br /&gt;&lt;br /&gt;print(prices.values(), prices.keys(), sep=&quot;\n&quot;)&lt;br /&gt;print(&quot;---------------------------&quot;) &lt;br /&gt;print(zipped_not_dict, zipped_dict, sorted(zipped_dict), sep=&quot;\n&quot;)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;...which outputs:&lt;/p&gt; &lt;div class=&quot;code-block&quot;&gt;&lt;pre&gt;&lt;samp&gt;dict_values([205.55, 45.23, 37.2, 10.75, 612.78])&lt;br /&gt;dict_keys([&#39;IBM&#39;, &#39;ACME&#39;, &#39;HPQ&#39;, &#39;FB&#39;, &#39;AAPL&#39;])&lt;br /&gt;---------------------------&lt;br /&gt;&amp;lt;zip object at 0x0133B148&amp;gt;&lt;br /&gt;{10.75: &#39;FB&#39;, 205.55: &#39;IBM&#39;, 45.23: &#39;ACME&#39;, 612.78: &#39;AAPL&#39;, 37.2: &#39;HPQ&#39;}&lt;br /&gt;[10.75, 37.2, 45.23, 205.55, 612.78]&lt;br /&gt;&lt;/samp&gt;&lt;/pre&gt;&lt;/div&gt; &lt;h3&gt;Alternative&lt;/h3&gt;    &lt;p&gt;Another Pythonic way to invert key-values is by dictionary comprehension:&lt;/p&gt; &lt;div class=&quot;code-block&quot;&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;reversed_key_value_dict = {v:k for k, v in dict_name.items()}&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;</description><link>http://www.wanzafran.com/2016/10/inverting-vs-zipping-dictionary-values_6.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-3686894625786495875</guid><pubDate>Mon, 11 Jul 2016 18:58:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.587+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Gaming</category><title>Refunctin&#39; Blocks</title><description> &lt;div class=&quot;img-shadow img-screenshot&quot;&gt; &lt;img src=&quot;https://c2.staticflickr.com/9/8573/27631712833_1ed9e389fb_b.jpg&quot;  title=&quot;Waters of Refunct&quot; /&gt; &lt;p&gt;From &lt;strong&gt;Refunct&lt;/strong&gt;.&lt;/p&gt;&lt;/div&gt;    &lt;p&gt;Refunct is simple: you give grassy verdure life to tiles, jump on red buttons, and slide through pipes, and do little more than that.&lt;/p&gt; &lt;p&gt;Yet overall, Refunct looks and feels &lt;em&gt;beautiful&lt;/em&gt;: the game and (especially) its music strongly convey serenity. Notwithstanding its less-ambitious goals, I&#39;d definitely take more of Refunct.&lt;/p&gt;</description><link>http://www.wanzafran.com/2016/07/refunctin-blocks_12.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-5768429588358536876</guid><pubDate>Mon, 11 Jul 2016 14:33:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.609+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><category domain="http://www.blogger.com/atom/ns#">Python</category><title>SublimeREPL&#39;s Slow Printing/Freezing - A Solution</title><description>&lt;p&gt;Sublime Text 3 may freeze if you use print long outputs via SublimeREPL. I&#39;m not quite sure why.&lt;/p&gt; &lt;p&gt;I face this issue often, as I prefer to use the interpreter in Sublime Text (so as to avoid IDLE). Thankfully, someone on Github has deduced &lt;a href=&quot;https://github.com/wuub/SublimeREPL/issues/469#issuecomment-204310636&quot;&gt;its potential cause and a solution&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&quot;...It appears sublimeREPL buffers everything that it needs to print before updating the screen. This seems to be done one symbol at a time, and can cause performance issues with long strings. To change this functionality, go to the main plugin file (Packages\SublimeREPL\sublimerepl.py) and find the function handle_repl_output() in the ReplView class.&quot;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I don&#39;t understand Sublime Text&#39;s code base, but I tested his suggestions today, which works perfectly with Python 3 once you amend it to use range() instead of xrange() (as the &lt;a href=&quot;https://docs.python.org/3.1/whatsnew/3.0.html&quot;&gt;latter has been deprecated&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Here&#39;s the modified code, to help anyone else out:&lt;/p&gt; &lt;div class=&quot;code-block&quot;&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    def handle_repl_output(self):&lt;br /&gt;        &quot;&quot;&quot;Returns new data from Repl and bool indicating if Repl is still&lt;br /&gt;           working&quot;&quot;&quot;&lt;br /&gt;        if self.repl.apiv2:            &lt;br /&gt;            try:&lt;br /&gt;                while True:&lt;br /&gt;                    packet = self._repl_reader.queue.get_nowait()&lt;br /&gt;                    if packet is None:&lt;br /&gt;                        return False&lt;br /&gt;&lt;br /&gt;                    self.handle_repl_packet(packet)&lt;br /&gt;&lt;br /&gt;            except queue.Empty:&lt;br /&gt;                return True&lt;br /&gt;           &lt;br /&gt;        else:&lt;br /&gt;            try:&lt;br /&gt;                packet = self._repl_reader.queue.get_nowait()&lt;br /&gt;                if packet is None:&lt;br /&gt;                    return False&lt;br /&gt;                for _ in range(1000):&lt;br /&gt;                    try:&lt;br /&gt;                        packet += self._repl_reader.queue.get_nowait()&lt;br /&gt;                    except queue.Empty: break&lt;br /&gt;&lt;br /&gt;                self.handle_repl_packet(packet)&lt;br /&gt;                return True&lt;br /&gt;&lt;br /&gt;            except queue.Empty:&lt;br /&gt;                return True&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;The changes I see: A single &lt;em&gt;if&lt;/em&gt; clause is added above &lt;em&gt;try&lt;/em&gt;; an entire &lt;em&gt;else&lt;/em&gt; clause is added after. Restoration requires only that you remove those, which is a fairly simple task.&lt;/p&gt; &lt;p&gt;As he further suggests, to improve the text speed, scroll down to &lt;em&gt;def update_view_loop(self)&lt;/em&gt;, then update as follows: &lt;em&gt;sublime.set_timeout(self.update_view_loop, 1)&lt;/em&gt;. &lt;/p&gt;</description><link>http://www.wanzafran.com/2016/07/sublimerepl-slow-printingfreezing_11.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-7762461953564576774</guid><pubDate>Sat, 09 Jul 2016 12:25:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.656+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coding</category><title>The Lawgiving Coder</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;Coders as creators of universes and law.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Said Joseph Weizenbaum in &lt;em&gt;In Computer Power and Human Reason&lt;/em&gt;:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;...&lt;span class=&quot;highlight-text&quot;&gt;The computer programmer is a creator of universes for which he alone is the lawgiver&lt;/span&gt;. Universes of virtually unlimited complexity can be created in the form of computer programs. Moreover, and this is a crucial point, systems so formulated and elaborated act out their programmed scripts. They compliantly obey their laws and vividly exhibit their obedient behaviour. &lt;span class=&quot;highlight-text&quot;&gt;No playwright, no stage director, no emperor, however powerful, has ever exercised such absolute authority to arrange a stage or field of battle and to command such unswervingly dutiful actors or troops&lt;/span&gt;.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2016/07/the-lawgiving-coder_9.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-5784411835166561272</guid><pubDate>Sat, 12 Mar 2016 07:19:00 +0000</pubDate><atom:updated>2017-12-15T17:36:18.985+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Music</category><category domain="http://www.blogger.com/atom/ns#">Tablature</category><title>Tifa Funk - Interlude Solo (&quot;Tifa&#39;s Theme&quot; by Tetrimino)</title><description>&lt;div class=&quot;excerpt&quot;&gt;     &lt;p&gt;My transcription of the piano interlude from &quot;Tifa Funk&quot;. &lt;/p&gt;&lt;/div&gt;  &lt;p&gt;The solo starts from 2:01.&lt;/p&gt; &lt;div class=&quot;video-playback&quot;&gt;&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/q8DYvDSR4_g&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;p&gt;The original piece is actually &lt;a href=&quot;https://www.youtube.com/watch?v=fbOqcR-BORo&quot;&gt;rather melancholic&lt;/a&gt;; this one has a jazzy/airy feel. I like it. (And I especially adore the transition between the B (b4) to A (b5) chords.) &lt;/p&gt;       &lt;div class=&quot;tablature-data&quot;&gt;                  &lt;table&gt;         &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Title &lt;/td&gt;            &lt;td&gt; &quot;Tifa Funk&quot;&lt;/td&gt;        &lt;td&gt;                          &lt;/tr&gt;        &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Source &lt;/td&gt;            &lt;td&gt; &lt;a href=&quot;https://youtu.be/q8DYvDSR4_g?t=2m1s&quot;&gt;YouTube&lt;/a&gt; &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Play Type &lt;/td&gt;            &lt;td&gt; Cover &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Played By &lt;/td&gt;            &lt;td&gt; Tetrimino &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Tempo &lt;/td&gt;            &lt;td&gt; 136.75 &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Tuning &lt;/td&gt;            &lt;td&gt; Standard E &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td class=&quot;tablature-header&quot;&gt;Transcribed &lt;/td&gt;            &lt;td&gt; 12.03.2016 / 2:25 AM &lt;/td&gt;        &lt;/tr&gt;        &lt;/table&gt;    &lt;/div&gt;  &lt;div class=&quot;tablature-guitar&quot;&gt;   &lt;pre&gt;&lt;br /&gt;&lt;br /&gt;e-12h17p12----12---12----|----------------------|-----------------------&lt;br /&gt;B----------15---------15-|----------------------|-----------------------&lt;br /&gt;G------------------------|--14--12-10-12-----10-|--12h14p12-----10------&lt;br /&gt;D------------------------|----------------12----|-----------12-----12---&lt;br /&gt;A------------------------|----------------------|-----------------------&lt;br /&gt;E------------------------|----------------------|-----------------------&lt;br /&gt;&lt;br /&gt;e----------------------------------/13-13~-----------|------------------&lt;br /&gt;B-------------------------13-15-13--13-13~-----------|------------------&lt;br /&gt;G-12--10-12-14---12-13-14------------------13/14--12-|------------------&lt;br /&gt;D----------------------------------------------------|------------------&lt;br /&gt;A----------------------------------------------------|------------------&lt;br /&gt;E----------------------------------------------------|------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e----------------------------------------------------------------------&lt;br /&gt;B-------15-13----------------------------------------------------------&lt;br /&gt;G-12-14-------14-------------------------------------------------------&lt;br /&gt;D----------------12/15--17------------10----11h12----------------------&lt;br /&gt;A-------------------------------10-12----12-------11h12-8----8h10---8--&lt;br /&gt;E---------------------------------------------------------10-----------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e---------------------------------------------------------------------&lt;br /&gt;B---------------------8-------------6-------6----6/8----10~-----------&lt;br /&gt;G-------------------7---9-10----5-7---7-5-7-5--6--------10~-----------&lt;br /&gt;D----------------10----------------------------7----------------------&lt;br /&gt;A-------5-8-7---------------------------------------------------------&lt;br /&gt;E---5-8---------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;e-------------------------------------|--10---------------------------&lt;br /&gt;B--10-10-10-10-8----------------5-----|-----8h10--8----8--------------&lt;br /&gt;G--10-10-10-10--------7-6---------7---|-------------10---10------8----&lt;br /&gt;D-------------------8-------5-7-------|----------------------12--8----&lt;br /&gt;A-------------------------------------|-------------------------------&lt;br /&gt;E-------------------------------------|-------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e--------10--10---10------------------|----10---8---------------------&lt;br /&gt;B--------10--10-------10--------------|----10---8----10----12-10~-----&lt;br /&gt;G-----8------------------10----10--12-|-10-----------10----12-10~-----&lt;br /&gt;D-5-8-7---------------------12--------|-----------10----12------------&lt;br /&gt;A-------------------------------------|-------------------------------&lt;br /&gt;E-------------------------------------|-------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e--------------------------------13----13-15-16-13-16-17-20-17-20-22--&lt;br /&gt;B--------------------13----13-15----15--------------------------------&lt;br /&gt;G--------10-10-12-14----14--------------------------------------------&lt;br /&gt;D--10-12--------------------------------------------------------------&lt;br /&gt;A---------------------------------------------------------------------&lt;br /&gt;E---------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;</description><link>http://www.wanzafran.com/2016/03/tifa-funk-interlude-solo-theme-by_12.html</link><author>noreply@blogger.com (X)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/q8DYvDSR4_g/default.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-4723307129577141986</guid><pubDate>Sat, 05 Mar 2016 11:42:00 +0000</pubDate><atom:updated>2017-12-15T17:36:02.293+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Music</category><category domain="http://www.blogger.com/atom/ns#">Tablature</category><title>Rather Be (Alexa Goddard&#39;s Version)</title><description>&lt;div class=&quot;excerpt&quot;&gt;     &lt;p&gt;My tab of Alexa Goddard&#39;s acoustic cover of Clean Bandit&#39;s &quot;Rather Be&quot;.&lt;/p&gt;&lt;/div&gt;    &lt;div class=&quot;video-playback&quot;&gt;&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/Qeeho8sMu-M&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;p&gt;Some points:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p&gt;I&#39;ve only highlighted the notes/chords. Listen to the cover for the comping/strumming patterns.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;In the chorus, the comp accents don&#39;t fall on the 4/4 beats, and there&#39;s no real transition between the D#m7 and EM7 chords.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;          &lt;div class=&quot;tablature-data&quot;&gt;        &lt;table&gt;               &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Title&lt;/td&gt;                &lt;td&gt; &quot;Rather Be&quot;&lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Source&lt;/td&gt;                &lt;td&gt; &lt;a href=&quot;https://youtu.be/Qeeho8sMu-M&quot;&gt;YouTube&lt;/a&gt; &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Play Type&lt;/td&gt;                &lt;td&gt; Cover &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Played By&lt;/td&gt;                &lt;td&gt; Alexa Goddard&lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Tuning&lt;/td&gt;                &lt;td&gt; Standard E &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Transcribed&lt;/td&gt;                &lt;td&gt; 05.03.2016 / 11:59PM &lt;/td&gt;            &lt;/tr&gt;          &lt;/table&gt;    &lt;/div&gt;      &lt;div class=&quot;tablature-guitar&quot;&gt;   &lt;pre&gt;&lt;br /&gt;INTRO/CHORUS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   G#m7&lt;br /&gt;e-------------------------------------------7--|-----------------------&lt;br /&gt;B--11h12--h14-----11-------7h9--p7----------7--|-----------------------&lt;br /&gt;G--11-------------11-------8---------8------8--|-----------------------&lt;br /&gt;D--11h13----------11-------9---------9------9--|---C#m7-----D#m7-------&lt;br /&gt;A--11-------------9--------7---------9---------|-----------------------&lt;br /&gt;E------------------------------------7---------|-----------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BRIDGE&lt;br /&gt;&lt;br /&gt;e----------------------------|-----------------------------|&lt;br /&gt;B---------4--/5----4----/5---|---------4--/5----4----------|&lt;br /&gt;G---------6--------4----/6---|---------6--------4----------|&lt;br /&gt;D--EM7----5--------4----/7---|--EM7----5--------4----4-----|&lt;br /&gt;A---------6-------------(7)--|---------6-------------4-----|&lt;br /&gt;E------------------4---------|------------------4----2-----|&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHORUS&lt;br /&gt;                            x3&lt;br /&gt;e----------------------------|--------------------------------|---------&lt;br /&gt;B-----------------------11---|-------------------------11-----|---------&lt;br /&gt;G-----------------------9----|-------------------------11-----|---------&lt;br /&gt;D--G#m7-----D#m7--EM7---11---|---G#m7-----D#m7--EM7----11-----|---C#m7--&lt;br /&gt;A-----------------------10---|-------------------------9------|---------&lt;br /&gt;E----------------------------|--------------------------------|---------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDING CHORD (after last C#m7)&lt;br /&gt;&lt;br /&gt;e---0~--------|&lt;br /&gt;B---0~--------|&lt;br /&gt;G---1~--------|&lt;br /&gt;D---2~--------|&lt;br /&gt;A-------------|&lt;br /&gt;E---2---------|&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;</description><link>http://www.wanzafran.com/2016/03/rather-be-alexa-goddard-version_5.html</link><author>noreply@blogger.com (X)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Qeeho8sMu-M/default.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-6992249079097882593</guid><pubDate>Sun, 07 Feb 2016 18:09:00 +0000</pubDate><atom:updated>2017-12-15T17:36:57.215+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Music</category><category domain="http://www.blogger.com/atom/ns#">Tablature</category><title>Eye to Eye (Jonathan Young&#39;s Version)</title><description>&lt;div class=&quot;excerpt&quot;&gt; &lt;p&gt;My transcription of Jonathan Young&#39;s cover of &quot;Eye to Eye&quot;.&lt;/p&gt;   &lt;/div&gt;  &lt;p&gt;This song is originally from &lt;em&gt;A Goofy Movie&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;My tab isn&#39;t a verbatim reproduction; I&#39;ve only highlighted the important notes.&lt;/p&gt; &lt;div class=&quot;video-playback&quot;&gt;&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/l6gZReAb8oI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;        &lt;div class=&quot;tablature-data&quot;&gt;        &lt;table&gt;                         &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Title&lt;/td&gt;                &lt;td&gt;&quot;Eye to Eye&quot;&lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Source&lt;/td&gt;                &lt;td&gt;&lt;a href=&quot;https://youtu.be/l6gZReAb8oI&quot;&gt;YouTube&lt;/a&gt; &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Play Type&lt;/td&gt;                &lt;td&gt;Cover &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Played By&lt;/td&gt;                &lt;td&gt;Jonathan Young  &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Tuning&lt;/td&gt;                &lt;td&gt;Drop D  &lt;/td&gt;            &lt;/tr&gt;             &lt;tr&gt;                &lt;td class=&quot;tablature-header&quot;&gt;Transcribed&lt;/td&gt;                &lt;td&gt;07.02.2016 &lt;/td&gt;            &lt;/tr&gt;         &lt;/table&gt;    &lt;/div&gt; &lt;div class=&quot;tablature-guitar&quot;&gt;   &lt;pre&gt;&lt;br /&gt;[PART A]&lt;br /&gt;                                          x8&lt;br /&gt;e------------------------------------------|&lt;br /&gt;B------------------------------------------|&lt;br /&gt;G------------------------------------------|&lt;br /&gt;D---------0-0----0-0--------0-0--x-0-x-0---|&lt;br /&gt;A--2----2-0-0----0-0-2----2-0-0--x-0-x-0-2-|&lt;br /&gt;D--2----2------------2----2--------------2-|&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VERSE - Follows [Part A], with rhythmic variations&lt;br /&gt;&lt;br /&gt;BRIDGE                  &lt;br /&gt;&lt;br /&gt;                        &lt;br /&gt;                        &lt;br /&gt;e-------|-----|--------|&lt;br /&gt;B-------|-----|--------|&lt;br /&gt;G-------|-----|--------|&lt;br /&gt;D-----2-|-----|---2-2--|&lt;br /&gt;A--0--0-|-[A]-|-0-0-4--|&lt;br /&gt;D--0----|-----|-0------|&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHORUS &lt;br /&gt;&lt;br /&gt;   I used &#39;.&#39; to reflect the extended A5&lt;br /&gt;   while the B5 is just one beat&lt;br /&gt;--------------------------------|&lt;br /&gt;--------------------------------|&lt;br /&gt;--------------------------------|&lt;br /&gt;-6-2-4----6-4-2.4--6-2-4------0-|&lt;br /&gt;-4-0-2-2--4-2-0.2--4-0-2-2--0-0-|&lt;br /&gt;-------2-----------------2--0---|&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VERSE 2: Almost like Part A. Mostly rhythmic variations, and &lt;br /&gt;a hammer-on transition lick on the low strings - not transcribing.&lt;br /&gt;&lt;br /&gt;BRIDGE -&gt; CHORUS &lt;br /&gt;&lt;br /&gt;CHORUS TO SOLO&lt;br /&gt;&lt;br /&gt;For the first time ever~~~ We&#39;re seein it~~~ &lt;br /&gt;e--------------------------------------------&lt;br /&gt;B--------------------------------------------&lt;br /&gt;G--------------------------------------------&lt;br /&gt;D---------------------------2----------------&lt;br /&gt;A-0-------------------------0----------------&lt;br /&gt;D-0------------------------------------------&lt;br /&gt;&lt;br /&gt;Eye to eye~~        Eye to eye&lt;br /&gt;------------------------------------------------&lt;br /&gt;------------------------------------------------&lt;br /&gt;------------2-----------------------------------&lt;br /&gt;------------0-----------------------------------&lt;br /&gt;----------------------------2-------------------&lt;br /&gt;----------------------------2-------------------&lt;br /&gt;&lt;br /&gt;SOLO - [Not transcribed]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOLO TO BRIDGE KEY CHANGE &lt;br /&gt;&lt;br /&gt;(replace bar 4 of chorus)   If you&#39;re ever lonely       Stop&lt;br /&gt;e-------------------------|-----------------------------------&lt;br /&gt;B-------------------------|-----------------------------------&lt;br /&gt;G-------------------------|-----------------------------------&lt;br /&gt;D-2~---4~-----------------|---------------------7~------------&lt;br /&gt;A-0~---2~-----------------|---------------------5~------2-----&lt;br /&gt;D-------------------------|-----------------------------2-----&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Play [Part A] again&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BRIDGE         KEY CHANGE CHORUS           &lt;br /&gt;KEY CHANGE &lt;br /&gt;&lt;br /&gt;e------------|----------------------------|&lt;br /&gt;B------------|----------------------------|&lt;br /&gt;G------------|----------------------------|&lt;br /&gt;D---2-4--6~--|-8-4-6----6-8-4.6--8-4-6----|&lt;br /&gt;A-0-0-2--4~--|-6-2-4-4--4-6-2.4--6-2-4-4--|&lt;br /&gt;D-0----------|-------4-----------------4--|&lt;br /&gt;             |&lt;br /&gt;             | Alternative chord:&lt;br /&gt;            A|-1---&lt;br /&gt;            D|-1---&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt; ENDING - &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;------------2-x-x-x--2-2--------2-2-------x-2-x-2-------&lt;br /&gt;-2-----4--4-2-x-x-x--2-2--4---4-2-2-x-x-x-x-2-x-2-4-4---&lt;br /&gt;-2-----4--4---------------4---4-------------------4-4---&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;</description><link>http://www.wanzafran.com/2016/02/eye-to-eye-jonathan-young-version_8.html</link><author>noreply@blogger.com (X)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/l6gZReAb8oI/default.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-2280388792798822178</guid><pubDate>Sun, 24 Jan 2016 10:07:00 +0000</pubDate><atom:updated>2017-12-14T21:38:26.032+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Law &amp; Practice</category><title>Prayers Like Magic</title><description> &lt;p&gt;Your prayers to court are, in a way, akin to incantations:&lt;/p&gt; &lt;ol class=&quot;indent&quot;&gt;     &lt;li&gt;&lt;p&gt;They&#39;re purposefully-designed. &lt;/p&gt;&lt;/li&gt;     &lt;li&gt;&lt;p&gt;They must be cast (drafted) a specific way, and by the right spells (rules of court).&lt;/p&gt;&lt;/li&gt;     &lt;li&gt;&lt;p&gt;Succeed, and a specific relief is bestowed, to &#39;cure&#39; a man of his legal ailments.&lt;/p&gt;&lt;/li&gt;     &lt;li&gt;&lt;p&gt;Fail, and nothing happens. (Or &lt;a href=&quot;http://www.imdb.com/title/tt0083907/&quot;&gt;that which should not magically be summoned, is&lt;/a&gt;.)&lt;/p&gt;&lt;/li&gt; &lt;/ol&gt; </description><link>http://www.wanzafran.com/2016/01/prayers-like-magic_24.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-7607734431212267412</guid><pubDate>Sun, 24 Jan 2016 02:13:00 +0000</pubDate><atom:updated>2017-12-14T18:55:34.918+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Learning</category><title>Information versus Knowledge</title><description>&lt;p&gt;&lt;a href=&quot;http://takingnotenow.blogspot.my/2016/01/samuel-johnson-on-information.html&quot;&gt;Information on an item of knowledge&lt;/a&gt; is &lt;em&gt;not&lt;/em&gt; knowledge of the subject matter itself:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&quot;...It&#39;s interesting to see that he makes a distinction between knowledge and meta-knowledge, calling the latter &quot;information.&quot; It&#39;s also interesting to see that since 1775 the second kind of knowledge (meta-knowledge, that is) has increased almost exponentially as compared with the first kind. Some people lament this. I believe that it is an inevitable byproduct of the growth of knowledge of the first kind, and therefore not to be lamented, but to be better understood than it is even now.&quot;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2016/01/information-versus-knowledge_24.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-6213161911109891935</guid><pubDate>Sun, 03 Jan 2016 05:31:00 +0000</pubDate><atom:updated>2017-12-15T01:42:15.696+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Music</category><category domain="http://www.blogger.com/atom/ns#">Work &amp; Learning</category><title>Creators And Their Gems (Polished or Otherwise)</title><description>&lt;div class=&quot;excerpt&quot;&gt;    &lt;p&gt;Not all work will turn out gems.&lt;/p&gt;  &lt;/div&gt; &lt;p&gt;Says a Redditor:&lt;/p&gt;   &lt;blockquote&gt;&lt;p&gt;Prince is infamous for creating huge amounts of stuff and just shelving it too.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Answers &lt;a href=&quot;https://www.reddit.com/r/todayilearned/comments/3xt6d3/til_michael_jackson_composed_songs_despite_not/cy7rg57&quot;&gt;another Redditor&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;Most professional writers/musicians do this. In fact &lt;span class=&quot;highlight-text&quot;&gt;I would wager all writers that are known for consistently putting out great songs &lt;em&gt;only&lt;/em&gt; do this. It&#39;s the only way to put out amazing work consistently. No one, and I mean &lt;em&gt;no one&lt;/em&gt; actually only writes great songs every time. There&#39;s a lot of bad ideas in that process that will never see the light of day and never even be spoken of outside of fellow writers/musicians and friends because those songs just weren&#39;t good enough&lt;/span&gt;.&lt;/p&gt; &lt;p&gt;The hard part is being consistent over many years and powering through the many poor outcomes so that you get to the one great outcome, and rinse and repeat. The people who can do that without burning out are the ones who make it to the tippity top.&lt;/p&gt; &lt;p&gt;What&#39;s funny is you&#39;ll have one-hit wonders where they power through the poor outcomes, get their first great outcome, and don&#39;t realize that&#39;s the process required to make many hits, and they just put out every idea they create afterwards and wonder why only one or two songs did really well and they can&#39;t seem to make it happen with their other songs and get discouraged.&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;highlight-text&quot;&gt;They think these amazing musicians never make bad music, but that&#39;s just not the case. They make bad music all the time, but they never show anyone. They only release the greats, and so they are &lt;em&gt;constantly&lt;/em&gt; working and writing song after song&lt;/span&gt;, waiting for that one great idea to come about.&lt;/p&gt; &lt;p&gt;No one, not even Michael Jackson, writes a good song every time. I would wager all my possessions that if all of his unreleased songs were in fact released, most of them would be mediocre or disappointing (but still very interesting to hear). Those songs aren&#39;t meant to be heard by anyone except for him and whoever may have worked on them, and people they showed that they trusted asking for feedback. Otherwise he would have released them.&lt;/p&gt; &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2016/01/creators-and-their-gems-polished-or_3.html</link><author>noreply@blogger.com (X)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7693718602652484364.post-4089566094015672478</guid><pubDate>Mon, 21 Dec 2015 14:08:00 +0000</pubDate><atom:updated>2017-12-14T22:08:22.493+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Law &amp; Practice</category><category domain="http://www.blogger.com/atom/ns#">People &amp; Society</category><title>Emails and English Weather</title><description>&lt;div class=&quot;excerpt&quot;&gt;   &lt;p&gt;The English sure love their weather.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;I&#39;m reading some emails from an English firm of solicitors.&lt;/p&gt;   &lt;p&gt;Despite the formal contents, almost every email of theirs ends with a description of the weather. E.g:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; &quot;...Trust you are keeping well from wet and rainy London&quot; &lt;br /&gt;&quot;...Kind regards from a very hot London&quot;&lt;/p&gt;  &lt;/blockquote&gt;</description><link>http://www.wanzafran.com/2015/12/emails-and-english-weather_21.html</link><author>noreply@blogger.com (X)</author></item></channel></rss>