1,237 Matching Annotations
  1. Dec 2015
    1. Although I mostly agree with this argument, it leaves out cost. Stronger type checking catches more errors, but at what cost?

      Dimensional analysis is indeed a simple protocol with a well-defined application domain. Type systems in programming languages want to be universal and in most cases compulsory for all of a program. Gradual typing is more flexible, but still assumes that a single type system is good for everything. Could we have type systems as libraries and use them as it seems appropriate?

  2. Nov 2015
    1. Without feedback, there are three options: I can believe, without evidence, that I am an awesome programmer.  I can believe, without evidence, that I am a terrible programmer and quit to go do something else.  Or finally, I can believe, without evidence, that I am a terrible programmer somehow successfully pretending to be an awesome programmer.

      This is a thoughtful, eloquent article. My main takeaway is that perfection is delusional, but good teamwork will overcome flaws and help everyone improve continually. All of these points are forms of feedback, or prerequisites to good feedback.

      • treat coworkers with respect
      • clear, open, honest communication
      • 3 code reviews before release
      • style guidelines
      • pair programming
      • unit tests
      • manual testing
      • user experience surveys
      • user experience analytics
    1. “Many random number generators in use today are not very good. There is a tendency for people to avoid learning anything about such subroutines; quite often we find that some old method that is comparatively unsatisfactory has blindly been passed down from one programmer to another, and today’s users have no understanding of its limitations.”— Donald Knuth; The Art of Computer Programming, Volume 2.

      Mike Malone examines JavaScript's Math.random() in v8, argues that the algorithm used should be replaced, and suggests alternatives.

    1. In my opinion one of the key properties of a scripting language is not to be found in the language itself, but rather the tools that are used to deploy it. Traditionally a script in Perl or Python can just be run, without explicitly invoking a complex compilation and linkage script.

      A good point, but unlike the author, I still feel that having a REPL is also important for distinction as a scripting language, as it facilitates rapid prototyping.

    2. almost all languages are dynamic and involve dynamic typing, even languages like Ocaml and Haskell. Every time your code interprets data and makes choices based on that, you have dynamic typing. The simple fact is that there's no hard and fast distinction between type information and data: constraints on data, such as the format of a stream of text, are type constraints which are beyond the static type system to check, so the checks are done dynamically at run time by your code, and that's dynamic typing!

      An interesting perspective, which is a bit like the dual of the Lisp mantra: "code is data".

  3. Oct 2015
    1. Familiarity with one another’s communication style also helps them respond to each other quickly, and we know from Csikszentmihalyi’s research that immediate feedback is critical to flow.

      Programming specific example: waiting for compile times, etc., is a killer.

  4. Sep 2015
    1. if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program
  5. Jul 2015
    1. Keeping unpure functions clearly named and organized in such a way that they can be easily identified versus pure functions is a common goal of modularizing and organizing Scala applications.
    2. Much like a Unix power user will compose multiple single-purpose tools into a complex piped command, a functional programmer will combine single-purpose function invocations into chains of operations (think Map/Reduce).
    1. In extreme cases, an entire project would stall because I couldn't carve out enough contiguous time to get through the next part of it.

      This is the hardest problem of writing and the ways it gets undermined can be so subtle. A roommate asking, "Is this your sock?" can wreck an afternoon.

  6. Jun 2015
  7. Apr 2015
    1. Do you need to learn code to use The Grid? No coding is required to use The Grid. Just do what you're already doing on Facebook, Twitter, Instagram, etc. Post images, video, and content to your site and our AI Designer will make it beautiful. If you know code, you can extend functionality using our platform tools and API.

      Coding skills are a plus but not necessary. Accessibility!...

  8. Feb 2015
  9. Dec 2014
    1. He said that the rock-star model makes sense only for people with “unique talents, which most people do not have.” Talented coders are like heart surgeons: “I’d rather have one really good heart surgery than three mediocre ones. This is what an economist would call indivisibility.” Like Tom Cruise and heart surgeons, the best programmers will probably always be in demand. The rest of us are more replaceable, Autor said, which means that, in general, given the choice most of us would probably choose to have an employer shield us from the vicissitudes of the marketplace.
    2. don’t need help finding work; rather, they need people to help them navigate their options.
    3. “A bad programmer might write a function that makes a hundred different ‘calls’ to the database,” Guvench said. I could almost see the dreaded spinning beach ball on the screen. A good programmer would find a more efficient way, or “hack.” “He could write a function that would just ask the database one question: ‘Give me these hundred people, along with this data about them.’ ”
    4. “There’s a programming principle called DRY,” Guvench said. “Don’t Repeat Yourself.” A bad programmer might copy and paste a command—“Make this wiggle”—a hundred different times. But a good programmer would turn the command into a handy little function.
    5. “there’s always this pattern that the creatives start out at the bottom of the food chain and are exploited.”
    6. The first quality of good code is that it’s “readable—both by computers and by humans.” Humans, after all, might have to fix it at a later date—when it crashes and there are thousands of angry customers on the phone.
    7. In response, many startups have devised offbeat measures for luring candidates: offices that resemble a Chuck E. Cheese’s, with a music room (at Dropbox) and an indoor tree house (at Airbnb). Scopely, a mobile-game publishing company, rewards a new hire—or anyone who can deliver one—with eleven thousand dollars wrapped in bacon, an oil portrait of himself, and a harpoon gun.
    8. “In their minds, you’re not just paying them to do their job,” one tech executive told me. “You’re paying them for the opportunity cost of not becoming Mark Zuckerberg.”
    9. To prevent a programmer from defecting to Facebook, Google paid him three and a half million dollars in restricted stock options. Facebook has also become known for the “acquihire”: paying millions of dollars to acquire a company in order to poach its tech talent. The company gets shut down, and the engineers work for Facebook.
    10. The computer science taught in colleges still focusses more on theory than on commercial application; the business of teaching practical coding skills has the whiff of trade school. So-called coding “boot camps,” such as General Assembly, founded in 2010, are trying to fill the gap, teaching crash courses in how to design Web sites and write code. But Jake Schwartz, the co-founder and C.E.O. of General Assembly, told me, “There’s simply not enough senior people in the system.”
  10. Nov 2014
    1. There are many ways to start... learn.perl.orgexternal link A brief introductionexternal link Free online Perl books Join your local community Books and More

      Perl's learning resources | http://www.perl.org/learn.html

    1. Python was created by Guido Van Rossum in the early 90s. It is now one of the most popular languages in existence. I fell in love with Python for its syntactic clarity. It’s basically executable pseudocode.

      Helpful concise, Python syntax doc

    1. Full Text Beginning Perl Modern Perl Impatient Perl Extreme Perl Embedding Perl in HTML with Mason Picking Up Perl Perl 5 Internals Practical Mod Perl Perl & LWP

      Full e-books on Perl

    1. The goal of this site is to provide a set of materials in support of my Python for Informatics: Exploring Information book to allow you to learn Python on your own. This page serves as an outline of the materials to support the textbook.

      http://www.pythonlearn.com/ | A great resource for starting programmers looking to build knowledge and gain skills. Open Source Course

  11. Oct 2014
  12. Feb 2014
    1. The Benjamin Franklin Programming Practice Model
      • Find a program that you greatly admire and read it.
      • Takes note on the roles, inputs, and outputs of each major component.
      • Take notes on how the components interact.
      • Rewrite the program.
      • Compare your code with the original.
      • Note where you can improve and study accordingly.
    2. The hard part is teaching the consequences of each choice.

      Once you get the syntax and basic language idioms out of the way this is the real problem that faces us no matter what language we pick.

  13. Jan 2014
    1. Once you abandon entirely the crazy idea that the type of a value has anything whatsoever to do with the storage, it becomes much easier to reason about it. Of course, my point above stands: you don't need to reason about it unless you are writing unsafe code or doing some sort of heavy interoperating with unmanaged code. Let the compiler and the runtime manage the lifetime of your storage locations; that's what its good at.

      Understanding what you should (and should not) reason about in the language you are using is an important part of good programming; and a language that lets you reason (nee worry) about only the things you need to worry about is an important part of a good programming language.

  14. Oct 2013
    1. Three things are required to fully guarantee a repeatable installation using requirements files.

      "Ensuring Repeatability"

  15. Sep 2013
    1. Much as it is not the criminal defense lawyer's place to judge their client regardless of how guilty they are, it is not the doctor's place to force experimental treatment upon a patient regardless of how badly the research is needed, and it is not the priest's place to pass worldly judgement on their flock, it is not the programmer's place to try and decide whether the user is using the software in a "good" way or not.

      Taking this to heart / putting it on my wall.