viernes, 10 de febrero de 2017

How to improve anything you write in 2 minutes

man on computer
You're busy, so I'll keep this quick.
Following are the simplest tips I can give you to easily — and forever — improve the quality of your writing.
Delete the word "that"
Delete the words "I think"
Avoid words that end in "-ing"
Short sentences, short paragraphs
Shrink your opening sentence.
The word "that" can be removed from your writing at least 90% of the time, and it will instantly make your sentence stronger.
Example: "You believe that I'm lying, but I'm not," becomes, "You believe I'm lying, but I'm not."
It adds nothing. Remove it to strengthen your point.
Example: "I think this is a good sentence," becomes, "This is a good sentence."
In most cases, the "-ing" softens your word and adds no value. Your writing will read better if you avoid it.
Example: "The experiences we're seeking end up being underwhelming and even disappointing," becomes, "The experiences we seek often underwhelm and disappoint."
Most sentences can be cut in half. Don't be afraid to have a two- or three-word sentence.
Keep paragraphs to less than three sentences.
White space is your reader's friend.
Make it compelling, but keep it short and conversational.
Example: "This is a post that's going to help you become a better writer," becomes, "I can help you."
Josh Spector is a digital marketing consultant and creator of the 10 Ideas Worth Sharingnewsletter. The former head of digital media and marketing for The Academy of Motion Picture Arts and Sciences, he continues to oversee digital strategy for The Oscars in addition to working with entertainment industry clients and creative professionals. He can be found on Twitter @jspector.
Read the original article on Medium. Copyright 2017.

Source: http://www.businessinsider.com/how-to-improve-anything-you-write-in-2-minutes-2017-2

lunes, 6 de febrero de 2017

Frases en latín que no pueden morir

Beati hispani, qvibvs vivere bibere est“Dichosos los hispanos, para los que vivir es beber”.
Aprender idiomas es una herramienta que nos permite conocer otras culturas y formas de pensamiento. Los idiomas nos llevan a distintos litorales y abren nuestra mente, pero existen muchos lenguajes más con los que nos podemos comunicar, como las etimologías grecolatinas. Esas frases que quizá durante un año nos hicieron aprender en la preparatoria y bien terminado el año escolar olvidamos poco a poco, o simplemente fuimos perdiendo la practica en la expresión de grandes ideas por medio de una lengua cuya enseñanza ha decaído en los últimos cincuenta años.

Personajes como Benjamin Franklin, Thomas Jefferson y Theodore Roosevelt tenían algo en común, todos eran versados en latín. La enseñanza de esta lengua fue obligatoria para todos los que recibieran una educación formal desde la Edad Media, y en algunos lugares prevaleció hasta mediados del siglo XX. El conocimiento del latín solía abrir las puertas a otras ramas del conocimiento como la ciencia, la religión, el derecho y la filosofía, pues todo el conocimiento hasta el siglo XVI fue escrito en este idioma en gran parte de Europa. El latín era parte central de la educación en occidente, junto a la retórica y la gramática. Por medio de ella los hombres aprendían a comunicarse, pensar y hablar.
Con el paso del tiempo, la educación comenzó a dar paso a otro tipo de materias, la introducción de la aritmética fue inevitable y el pensamiento humanístico aprendió a coexistir con otro tipo de formación académica. Durante el siglo XIX, la gente priorizó una educación alternativa, enfocada en los negocios y el pensamiento matemático, y poco a poco el latín perdió su importancia, sin embargo la gente lo aprendía durante toda su formación estudiantil. Fue hasta los años sesenta del siglo pasado que los estudiantes pidieron un cambio en la estructura académica que les permitiera establecer las clases que querían tomar, por lo que el latín prácticamente desapareció de la educación occidental.

Sin embargo, no debemos dejar que siglos de tradición se pierdan. Aprender latín demuestra un conocimiento invaluable en tiempos modernos, aprender esta lengua expande nuestra cultura y nos ayuda a prepararnos para aprender otros idiomas, pues muchos surgieron del latín y del latín vulgar. Las siguientes frases en latín son algunas que aún hoy podemos usar para referirnos a alguna circunstancia o problema, para expresar alegría, resignación y muchos sentimientos más que amplían su significado al expresarlos de esta forma.
Adhuc Stantes – Todavía en píe
Abyssus abyssum invocat – Un abismo convoca otro abismo. (Un pecado incita a otro pecado)
Aequam memento rebus in arduis servare mentem – Recuerda conservar la mente serena en los momentos difíciles
Alea iacta est – La suerte está echada
Amor Omnia Vincit – El amor todo lo vence
Ars longa, vita brevis – El arte es largo, la vida es corta
Bene curris, sed extra vium – Corres bien, pero por el camino equivocado
Carpe Diem, tempus fugit – Aprovecha el día, el tiempo se va
Cogito ergo sum – Pienso, entonces existo



De nihilo nihilum – 
De la nada, nada puede salir
Divide et vinces – Divide y vencerás
Fiat iustitia et pereat mundus – Haz justicia aunque para ello se destruya el mundo
Forsan et haec olim meminisse juvabit – Tal vez, algún día, aún a esto lo avivará el recuerdo
Homo homini lupus est – El hombre es un lobo para el hombre
In medio, virtus – En el medio (está) la virtud
nlitteratum plausum non desidero – No deseo el aplauso de los ignorantes

Resultado de imagen para latin
Intelligenti pauca – Al inteligente, pocas (razones)
Ipso facto – Por el mismo hecho
Natura omnes homines aequales genuit – La naturaleza engendró iguales a todos los hombres
Non metuit mortem qui scit contemnere vitam. – No teme la muerte el que sabe despreciar la vida

Nunc est bibendum – Ahora, bebamos
Para bellum – Preparense para la Guerra
Requiescat in pace – Descanse en paz
Res, non verba – Hechos, no palabras
Veritas filia temporis – La verdad es hija del tiempo
 Vanitas vanitatum et omnia vanitas – Vanidad de vanidades, todo es vanidad
Veni, vidi, vici – Vine, vi, vencí

Vox populi, vox dei – La voz del pueblo es la voz de Dios


Resultado de imagen para latin

Source: http://culturacolectiva.com/frases-en-latin-no-pueden-morir/
Soruce:   The Art of Manliness

viernes, 3 de febrero de 2017

7 algorithms and data structures every programmer must know




In programmers life algorithms and data structures is most important subject if they want to go out in the programming world and make some bucks. Today, We will see what they do and where they are used with simplest examples. This list is prepared keeping in mind their use in competitive programming and current development practices.

1. Sort Algorithms

Sorting is the most heavily studied concept in Computer Science. Idea is to arrange the items of a list in a specific order. Though every major programming language has built-in sorting libraries, it comes in handy if you know how they work. Depending upon requirement you may want to use any of these. 
Merge Sort 
Quick Sort 
Bucket Sort 
Heap Sort 
Counting Sort 

More importantly one should know when and where to use them. Some examples where you can find direct application of sorting techniques include: 

Sorting by price, popularity etc in e-commerce websites 

2. Search Algorithms

Binary Search (in linear data structures)

Binary search is used to perform a very efficient search on sorted dataset. The time complexity is O(log2N). Idea is to repeatedly divide in half the portion of the list that could contain the item, until we narrow it down to one possible item. Some applications are: 

When you search for a name of song in a sorted list of songs, it performs binary search and string-matching to quickly return the results. 

Used to debug in git through git bisect

Depth/Breadth First Search (in Graph data structures)

DFS and BFS are tree/graph traversing and searching data structures. We wouldn’t go deep into how DFS/BFS work but will see how they are different through following animation.


Applications: 

Used by search engines for web-crawling 
Used in artificial intelligence to build bots, for instance a chess bot 
Finding shortest path between two cities in a map and many other such applications 

3. Hashing

Hash lookup is currently the most widely used technique to find appropriate data by key or ID. 
We access data by its index. Previously we relied on Sorting+Binary Search to look for index whereas now we use hashing.
The data structure is referred as Hash-Map or Hash-Table or Dictionary that maps keys to values, efficiently. We can perform value lookups using keys. Idea is to use an appropriate hash function which does the key -> value mapping. Choosing a good hash function depends upon the scenario.

Applications:

In routers, to store IP address -> Path pair for routing mechanisms
To perform the check if a value already exists in a list. Linear search would be expensive. We can also use Set data structure for this operation.

4. Dynamic Programming

Dynamic programming (DP) is a method for solving a complex problem by breaking it down into simpler subproblems. We solve the subproblems, remember their results and using them we make our way to solve the complex problem, quickly.

*writes down “1+1+1+1+1+1+1+1 =” on a sheet of paper* What’s that equal to?
*counting* Eight!
*writes down another “1+” on the left* What about that?
*quickly* Nine!

How’d you know it was nine so fast? 
You just added one more 
So you didn’t need to recount because you remembered there were eight! 

Dynamic Programming is just a fancy way to say ‘remembering stuff to save time later’ 
Applications:

There are many DP algorithms and applications but I’d name one and blow you away,
Duckworth-Lewis method in cricket.

5. Exponentiation by squaring

Say you want to calculate 232. Normally we’d iterate 32 times and find the result. What if I told you it can be done in 5 iterations?
Exponentiation by squaring or Binary exponentiation is a general method for fast computation of large positive integer powers of a number in O(log2N). Not only this, the method is also used for computation of powers of polynomials and square matrices.

Application: 

Calculation of large powers of a number is mostly required in RSA encryption. RSA also uses modular arithmetic along with binary exponentiation. 
6. String Matching and Parsing

Pattern matching/searching is one of the most important problem in Computer Science. There have been a lot of research on the topic but we’ll enlist only two basic necessities for any programmer.

KMP Algorithm (String Matching)
Knuth-Morris-Pratt algorithm is used in cases where we have to match a short pattern in a long string. For instance, when we Ctrl+F a keyword in a document, we perform pattern matching in the whole document.
Regular Expression (String Parsing)
Many a times we have to validate a string by parsing over a predefined restriction. It is heavily used in web development for URL parsing and matching.

7. Primality Testing Algorithms

There are deterministic and probabilistic ways of determining whether a given number is prime or not. We’ll see both deterministic and probabilistic (nondeterministic) ways.

Sieve of Eratosthenes (deterministic)
If we have certain limit on the range of numbers, say determine all primes within range 100 to 1000 then Sieve is a way to go. The length of range is a crucial factor, because we have to allocate certain amount of memory according to range.

For any number n, incrementally testing upto sqrt(n) (deterministic)
In case you want to check for few numbers which are sparsely spread over a long range (say 1 to 1012), Sieve won’t be able to allocate enough memory. You can check for each number n by traversing only upto sqrt(n) and perform a divisibility check on n.

Fermat primality test and Miller–Rabin primality test (both are nondeterministic)
Both of these are compositeness tests. If a number is proved to be composite, then it sure isn’t a prime number. Miller-Rabin is a more sophisticated one than Fermat’s. Infact, Miller-Rabin also has a deterministic variant, but then its a game of trade between time complexity and accuracy of the algorithm.

Application: 

The single most important use of prime numbers is in Cryptography. More precisely, they are used in encryption and decryption in RSA algorithm which was the very first implementation of Public Key Cryptosystems 

Another use is in Hash functions used in Hash Tables 


sábado, 28 de enero de 2017

A Guide to Mathematical Emotions