tag:road2clojure.posthaven.com,2013:/posts Clojure 2017-11-28T21:34:36Z Daniel Sada tag:road2clojure.posthaven.com,2013:Post/1207698 2017-11-01T19:34:00Z 2017-11-28T21:34:36Z Triumph of the Nerds Part II

We watched a video in class, "Triumph of the Nerds Part II". It talks about the growth of the computer industry, and how they anchored to the "Bear", which was IBM.

Fun Fact, I've done multiple visits to IBM's campus and every time I visit, it kind of seems like a shell of what it used to be. It is quite interesting to see IBM out of the server business. Selling or spinning it off to Lenovo.

We watched how Microsoft grew out of the small business they had by using "the Bear" to catapult off of their work. By Microsoft licensing BASIC to IBM, they had the control over whatever happened. For me, it is one of the most influential business decisions of the twentieth century.

As Microsoft conserved their lead over IBM by having the control over the development of the software, all IBM basically did is to consult and add management to the work of others. I'm in no position to understand the motivations behind this, but it is absolutely horrific the amount of disregard they had for having smart people, over hard workers.

IBM had good business practices for the previous century, but when the personal computer era came in, it wasn't about smart deals and good business contracts, it was about having enough people to know how to build the best computer systems. This quote by Bill Gates, proves this easily.

"If we weren't still hiring great people and pushing ahead at full speed, it would be easy to fall behind and become a mediocre company."
Bill Gates (Chaire.com, unknown)

At the end, the companies who won, were the ones who hired the best people. This is what revenge of the nerds II reveal to us. It wasn't those who had the best bureoucracy, but the ones who had the best people.

Anonymous. chalre.com http://www.chalre.com/hiring_managers/recruiting_quotes.htm

Cringely, Robert. “Triumph of the Nerds Part II: Riding the Bear”. (1996) Publisher: PBS. seen during class on Tuesday, October 24



]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1206649 2017-10-21T20:33:00Z 2017-11-24T20:13:22Z Language as the Ultimate Weapon

This article makes a review of the implementation of the language "Newspeak" introduced by George Orwell in his novel: "1984", where he reviews and explains how language is powerful to express meaning, intention and ability. He starts by stating the premise of newspeak: "To limit and deter people from thinking outside what we want them to".

Newspeak is a language that seeks to remove non-needed words, by limiting the availability of descriptive adverbs, nevertheless establishing a basic context of the words. For example: something very good would be "doubleplusgood" (using modifiers to a word, instead of adding more words before the word). If you wanted to express that something is very bad, you would say: it is "doubleplusbad" which is pretty good. It is interesting to note that this systems works similar to some of the Asian cultures, where the context of a word can be changed by intonation, or the prefix attached to a word.

The author delves deeper into an analysis of the methods of control employed by Orwell in his book to control the mind. By it being optional, but easier to use, it is used to limit the thoughts of the people in the Party's control.

We can draw an extended comparison between using more difficult languages and standard languages. (Let's assume for a second that difficult languages are functional programming languages, not just because they are difficult by themselves, but because we are less familiarized with them.) Difficult languages let us express our full arrange of human concepts in the language, just as normal language (for example fractions or infinity). Nevertheless they are more difficult to use, so by having available this easier languages, we make the choice to go for the easier ones, whether we like it or not, as Jem Berkes mentions in his essay.

Berkes, Jem. 2000. Consulted November 9th 2017. Written February 27, 2000; Modified May 9, 2000. http://www.berkes.ca/archive/berkes_1984_language.html



]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1203164 2017-10-19T02:24:00Z 2017-11-28T21:32:56Z Critique to my fellow students: Promises of Functional Programing (Students?)

I couldn't decide what to write about the Promises of Functional Programming, that is, until I found the blog entries by my partners. In first instance, and I quote, I found Estaban's synthesis fell short.

Something interesting about functional languages is how they manage concurrency and how they maintain the data in a coherent state; the key here is that pure functional code has no variables, which leads to no data coherence issues or need for locking. If there are no variables to lock, then there are no way functions access these non-existent variables and change the way they behave. 

Really man? This is your 8th entry on your clojure blog, and you are still using innmutability as a good resource to judge Clojure? Specially when one of the best topics to get out of the article is the subtle way where he jabs functional programming on the back?

Of course, the answer is no: the pure functional programs I’ve described to this point will just heat up your computer. You need side effects if you want your programto have any interaction with the realworld. But you can and should limit side effects to very few places.

This seems minor, but just amplifying this, we can see that other sides of the class are equally as pale. Josep's analisis is also lackluster.
The principal funcionality  of functional programming is that you compute by composing functions. A function in a mathematical is something that always return the same output to the same input without any change.  To solve these we cant use variable in our functions instead we use loops that evaluate a function with different parameters over each turn or lap.
Josep here tries to explain the eval and apply loop in a lackluster way. Sadly, Rick and Dick had already told us about the computability of lisp as eval and apply methods of functionality. You could have talked about the interesting transformation of dialetic programming with concurrency as it base.

Another example of more of the same is Luis Espinoza's analysis of a functional language. SAD.

Other of the pure programs’ benefits is the capability to receive a function as an input or produce a function as an output. As weird as it sounds, it is an amazing capability that helps to execute programs inside other programs without the need of stores values (yet again) and produce a faction that produces the expected value over and over 

Hinsen, Konrad. The Promises of Functional Programming (2009) Consulted on Octuber 15, 2017. Retrieved from: http://webcem01.cem.itesm.mx:8005/s201713/tc2006/the_promises_of_functional_programming.pdf

GIl, Esteban. Chapter 8: More robust, more compact, and more easily parallelizable; For an unlimited time offer, we present you: Functional Programming (2017)Consulted October 16, 2017, Retrieved from https://pla01375048.blogspot.mx/2017/10/chapter-8-more-robust-more-compact-and.html

Romagosa, Josep The Promises of Functional Programming (2017) Consulted October 16, 2017, Retrieved from https://programminglangaugesjosep.blogspot.mx/2017/10/the-promises-of-functional-programming.html

Espinoza, Luis. Functional Languages: The Dream (2017) Consulted October 16, 2017, Retrieved from https://programlgsluisespinosa.blogspot.mx/2017/10/functional-languages-dream.html

]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1202349 2017-10-11T22:12:00Z 2017-11-28T21:27:53Z Rick Hickey on Clojure

On this review, we are going to examine Rick Hickey's comments and remarks on the Software engineering Podcast 


"This episode is a conversation with Rich Hickey about his programming language Clojure. Clojure is a Lisp dialect that runs on top of the JVM that comes with – among other things – persistent data structures and transactional memory, both very useful for writing concurrent applications."


The episode features Rick explaining the rationale behind clojure, which proves to be incredible well spoken. The first point he makes is that he wanted to create a language that was portable, so having it on the JVM really provides the flexibility that we've seen on new languages like JRuby. The JVM, has been proven to be incredibly fast. 


He also mentions that clojure has a strong mathematical root, as combining sets, vectors and maps. They resemble more their mathematical equivalent, which is good for solving complex mathematical equations.. For me personally I think computer scientist are going to find the clojure syntax more compatible with complex set theory equations more appellable than other languages. Specially because of the different implications of vectors and maps being bijective.


As mentioned in our previous blog with Dick, Clojure lets immutability be part of our stack, which is a massive advantage over other stacks. as behavior is clearly defined.


Clojure also allows you to have a consistent API with the JVM and Java. Which creates a rich set of applications that can interact with one another that allow different paths of combination. We could think about a website designed in clojure interacting with JRuby and Apache Camel, which by itself, proposes to be quite interesting.


[Podcast] Software Engineering Radio. Ep 158. Rich Hickey on Clojure (2010) Listened on October 10 2017. Retrieved from http://www.se-radio.net/2010/03/episode-158-rich-hickey-on-clojure/
]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1196568 2017-10-07T02:09:38Z 2017-11-28T21:26:42Z Triumph of the Nerds Part I Triumph of the nerd is without a doubt an incredible remembrance of the past of computer. Back when tech billionaires were on the scale of some billions, where a computer was seen as a hobbies artifact. It is incredible to see the advancement in computers throughout the years. I’m amazed by how efficient we are at optimizing the technologies we have to be more proactive.

This was an amazing watch, and reminds us of the novelty of our industry. IT also impresses by Although you may not realize it, you are quantum. It can be difficult to know where to begin. How should you navigate this ever-present world?
One of the most amazing things I've seen in this gem of a film is the amount of newness present in our industry. We are literally seeing change go faster tthan ever before. Some of the people born in the new generations can't imagine a world without internet. Do you imagine how wonderful it is to be born in a world where every question can be answered in the internet?

This video is insightful as to the impact of small things that happened in garages. It is also complimentary to all the advance Intel did in their processors. For me, It is similar to the offspring of life. If we didn't have the enriched pool of nutrients in the world in order for an accident to generate life, we wouldn't have had life. Similarly, if Intel hadn't advanced so much in the transistor world, a personal computer wouldn't have been possible.

Sometime this story seems to be painted as if It was a highly calculated degree of uncertainity, but for the computer enthusiasts who won the world, business was their final motive, not progress of humanity, which was only a byproduct of the decisions they took.

 Cringely, Robert “Triumph of the Nerds Part I: Impressing their Friends”.  (1996) PBS. 



]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1189379 2017-09-06T05:14:00Z 2017-11-28T21:19:21Z Revenge of the Nerds

We've seen that Paul Graham is a massive fanboy of Lisp. He mentions that:

"As one data point on the curve, at any rate, if you were to compete with ITA and chose to write your software in C, they would be able to develop software twenty times faster than you. If you spent a year on a new feature, they'd be able to duplicate it in less than three weeks. Whereas if they spent just three months developing something new, it would be five years before you had it too."

Twenty times faster. Really?

To be honest, it takes at least 20 times more to think about the correct abstraction to be implemented in Lisp, not taking into account the amount of hours you'd spend interating lisp with whatever code standard you desire.

He gives a really interesting example: Write an accomulator.
In Lisp:
(defun foo (n) (lambda (i) (incf n i)))
in C++
[](int n, int i){return n + i}
So while I could agree that in 2002 languages like Lisp were more powerful than C++ and other languages due to the lack of Lambda expressions. Most languages today implement lambda expressions natively, and meta-programming is a must in plenty of languages. I'd say that the overall power of languages has risen to the occation, and given enough time, languages will converge in to a canonnical point where they all have the same power due to the evolution of languages.

It is laughable that Before C++11 they had to write this:

public interface Inttoint { public int call(int i); } public static Inttoint foo(final int n) { return new Inttoint() { int s = n; public int call(int i) { s = s + i; return s; }}; }
And It wouldn't even solve the problem.

For me it is the new era of programming languages, where there are some cannonical standards set up by functional programming which are being implemented by every language.


Graham, P Revenge of the Nerds (2002) Consulted on September 6th 2017. Retrieved from http://www.paulgraham.com/icad.html]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1189376 2017-08-30T05:04:00Z 2017-11-28T21:28:05Z Dick Gabriel On Lisp

Today we are going to discuss the main topic of Dick Gabriel's podcast on Software Engineering Radio.

In this podcast he discusses the creation on Lisp in Stanford.

The topic I want to talk about is: Why functional programming is making a comeback into the software engineering field, and why it didn't do it before.

Having automatic garbage collection and a meta programming via lists on top of a compiler creates a big problem that only processing power solves: Overhead.

When Dick Gabriel invented Lisp, it was considered real slow to implement a program in Lisp. The amount of overhead per instruction is monumental to programs for architectures that handle RAM below 128 MB. Once we had the massive capacity of today's computing power, we can implement Garbage collection in whim, like in Erlang without over-extending our capacity of software.

It is also quite interesting to me that Lisp died down. For me one of the most important things that came out of Lisp is that everyone hates the parenthesis way of coding, Plenty of people have mentioned that they prefer Erlang to Lisp. A Parenthesis based structure also causes overhead to the programmer as he has to make sure that every parenthesis they make matches to another parenthesis.

Nowadays, it seems that the only implementations Lisp has is in very specialized web-apps that require meta-programming to be coded. It is quite interesting that you can code lisp in lisp, as Dick mentioned, but I wouldn't consider it an advantage over other programming languages.

One last thing that was very interesting is the notion that coding can be considered an Art. And the compatibility between writing literature and writing code. They both require a certain discipline to be executed correctly. With enough repetition and enough practice, you can achieve excellence in both according to Dick Gabriel.

[Podcast] Software Engineering Radio. Ep 84. Dick Gabriel on Lisp (2008) Listened on August 30, 2017. Retrieved from http://www.se-radio.net/2008/01/episode-84-dick-gabriel-on-lisp/



]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1186487 2017-08-22T17:01:00Z 2017-11-28T21:16:10Z Beating the Averages Would you say functional programming lets you create and be more efficient in your language?  I have always sustained the point that if we were to create a messaging service, the almost perfect way to do it is without mutable state in a functional programming language. Nevertheless, this is only because I was able to expose my mind to a different programming languages.

I would have to disagree with Paul Graham on this one, coding in a functional programming languages, and having your job postings in them, elevates your costs and your available staff to a fraction of the already small pool of software engineers. Yes, you have advantages that are created due to the language, but hiring coders is becoming an increasingly difficult problem, and it is compounded if you ask for coders with "Extensive Lisp experience" and "Expert in Clojure" is going to be a hell of a ride.

Paul Graham has been a figure in the startup world because of his relationship with Y combinator. As the time has advanced, it seems that most of his posts are lauded by the community, In my personal experience, I've seen that most of his posts are a hit or miss for different types of communities.

But he does have a point, if 90% of startups fail, and 90% of startups are using the same languages, trying out something new, would probably work really good. But knowingly keeping the language to a set standard of language is really problematic as advice.

There is another argument which mentions that programmers who dabble in clojure are already smart, so that is why they code in clojure. So really, you are looking for programmers who code in functional languages, because that is a point that he is trying to make: Hire smart coders, and you'll have a good startup.


Graham, P. Beating the Averages (2001) Consulted on Aug 22, 2017. Retrieved from http://www.paulgraham.com/avg.html]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1183769 2017-08-15T05:44:46Z 2017-11-28T21:09:09Z The Semicolon Wars

This is the first installment in a series of articles that I'll be reviewing to add some content to my blog. The first article to review is going to be "The Semicolon Wars" by Brian Hayes.

The article was published in the acclaimed magazine "American Scientist".This article starts by creating a metaphor between the languages spoken in the world, and the programming languages in the world. One of my highlights of the article, is the following quote:

"That means that we've been inventing one language a week, on average, ever since Fortran."

I recommend this article if you really want to pique your curiosity start, like me, a deep dive in Wikipedia, searching for languages older than Google. One of my favorite searches was the "Simula 67" language. Which is really amazing to see. It looks like the weird son of Visual Basic with C

Simula 67 code for a Sigma function. [Thanks Wikipedia]

Real Procedure Sigma (k, m, n, u);
   Name k, u;
   Integer k, m, n; Real u;
Begin
   Real s;
   k:= m;
   While k <= n Do Begin s:= s + u; k:= k + 1; End;
   Sigma:= s;
End;

There are conventions as long as there are variants, the author mentions. I do think it is a fun and  insightful thought. Which is why I decided to do my opinionated echelon of the best programming languages (and also making other programmers mad in the process.)

Tabs vs Spaces
tabs, as tabs are resizable to each one's comfortable view. But I should probably switch to spaces, because Programmers that use spaces earn more

Naming Conventions
droopyCamelCase for all methods
CamelCase for all classes
_  for private members.
_  for spaces (javascript go away with your - )

IDE
Sublime text for life. IntelliJ and Webstorm for all other things

One of the interesting things that the article made me reflect about is Hendrik Einchenhardt's quote:

"shared mutable state is the root of all evil."
As a final note, regarding the Author's comments on Lisp.


Hayes, B. The Semicolon Wars American Scientist (2006) Consulted Aug 14 2017. Retrieved from http://webcem01.cem.itesm.mx:8005/s201713/tc2006/semicolon_wars.pdf 


]]>
Daniel Sada
tag:road2clojure.posthaven.com,2013:Post/1181914 2017-08-08T22:01:12Z 2017-08-08T22:01:12Z About me

Programming Languages

- My expectations:

I will be able to code in Clojure, observing the new trends in programming languages, including functional programming in an efficient way.

· Your hobbies and personal interests.

I love playing video games, specifically Rocket League, but I also exercise almost daily, and I try to read at least 30 minutes a day. Lately I am very interested in psychology, so I am reading and studying a lot of this.

  Books, music, movies, TV shows, etc. Which you have recently enjoyed.

Books you've enjoyed a lot lately: Influence by Robert B. Ciadini. Rework, by Jason Fried. Think Like a Freak, by Freakonomics, and Paul Allen's Idea Man. Also, the series that I liked the most is Black Mirror.

]]>
Daniel Sada