1,255 Matching Annotations
  1. Jan 2016
    1. A thorough primer on C programming, specifically for the Texas Instruments TM4C123 or TM4C1294 microcontrollers. By Jonathan Valvano and Ramesh Yerraballi of UT Austin.

    1. Recurse Center is starting a free one-to-one mentorship program for new programmers called RC Start. Those selected will get three 45-minute sessions with an RC alum, and access to a private forum and mailing list.

      https://www.recurse.com/apply/start

  2. kotlinlang.org kotlinlang.org
    1. Kotlin, a statically typed language that compiles to Java bytecode or JavaScript.

    1. Online disassembler for many different CPUs that takes hexadecimal strings or several executable formats.

    1. Kent C. Dodds shares some ideas about making open source projects friendly to new contributors. He starts with the obvious things: provide guides and good documentation. He suggests adding labels that make beginner-friendly issues easy to find. One idea that was new to me: Write the specification and tests for a new feature, then let someone else implement it.

      How getting into open source has been awesome for me<br> What open source project should I contribute to?

    1. Some people are porting Apple's Swift programming language to the Raspberry Pi. At the time of this post in December 2015, they had the compiler running on RPi 2 with Ubuntu Linux. They did not yet have the Foundation libraries, the Swift Package Manager, or a version for RPi 1, and it was not certain whether it would run on Raspbian Linux.

  3. Dec 2015
    1. “The key is deliberate practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music.”

      Peter Norvig's definition of deliberate practice, from "Teach Yourself to Program in 10 Years" http://norvig.com/21-days.html

    1. repl.it - Web programming environment for several languages: C, C++, Java, C#, F#, Go, Python, Ruby, Lua, Scheme, PHP, Forth, APL

      https://github.com/replit<br> https://twitter.com/amasad<br> https://twitter.com/HayaOdeh

    1. Pronunciations for hexadecimal numbers:<br> 0xB3 "bibbity-three"<br> 0xF5 "fleventy-five"<br> 0xDB "dickety-bee"

      BZARG is the work of Tim Babb, who lives in the San Francisco Bay Area, and is Lighting Optimization Lead for Pixar Animation Studios.

      This blog focuses primarily on graphics, physics, programming, and probably some philosophy and fiction

    1. Figuring out all subclasses of a class is called Class Hierarchy Analysis, and doing static CHA in a language with dynamic code loading is equivalent to solving the Halting Problem.

      Answer to question:

      Why can't the Scala compiler give pattern matching warning for nonsealed classes/traits?

      Elaboration:

      one of the goals of Scala is separate compilation and deployment of independent modules, so the compiler simply cannot know whether or not a class is subclass in another module, because it never looks at more than one module.

      Example: ??? When I try it, it seems to work, but this may be because everything I need is already loaded in the same compilation context. A subsequent answer seems to confirm this:

      It can be done (at least for all classes known at compile time), it's just expensive. You'd completely destroy incremental compilation, because everything that contains a pattern match would effectively have to be recompiled every time any other file changed.

    1. The Red programming language is based on Rebol (a Lisp-like interpreted language), but can compile binaries for several platforms. It is extremely lightweight. It covers the full range of programming tasks, from embedded systems to scripting. It's very young: they are working on a GUI library. http://www.red-lang.org/

    1. In 1980 Joachim Lambek showed that the types and programs used in computerscience form a specific kind of category. This provided a new semantics for talking aboutprograms, allowing people to investigate how programs combine and compose to createother programs, without caring about the specifics of implementation. Eugenio Moggibrought the category theoretic notion of monads into computer science to encapsulateideas that up to that point were considered outside the realm of such theory.
    1. A more active approach would be, for example, to introduce different types for temperatures and masses.

      Assuming that the type system provides for this. And assuming that it doesn't penalize you for doing this, for example by no longer allowing you to multiply both temperatures and masses by a plain scalar factor.

    2. Haskell has a much more expressive type system than less formal languages, and yet the Haskell community is looking for ways to make the type system even more expressive.

      Again I think the problem is that type systems want to be universal, one size fits all. Even Haskell's type system (at least at the level of the '98 standard, I don't dare make a statement about the hundreds of extensions) is not sufficient to implement dimensional analysis. And yet, implementing dimensional analysis on its own is quite straightforward.

    3. 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?

  4. 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".

  5. 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.

  6. Sep 2015
    1. if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program
  7. 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.

  8. Jun 2015
  9. 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!...

  10. Feb 2015
  11. 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.”
  12. 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

  13. Oct 2014
  14. 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.

  15. 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.

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

      "Ensuring Repeatability"

  17. 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.