"tools" entries

Four short links: 30 April 2015

Four short links: 30 April 2015

Managing Complex Data Projects, Graphical Linear Algebra, Consistent Hashing, and NoTCP Manifesto

  1. More Tools for Managing and Reproducing Complex Data Projects (Ben Lorica) — As I survey the landscape, the types of tools remain the same, but interfaces continue to improve, and domain specific languages (DSLs) are starting to appear in the context of data projects. One interesting trend is that popular user interface models are being adapted to different sets of data professionals (e.g. workflow tools for business users).
  2. Graphical Linear Algebra — or “Graphical The-Subject-That-Kicked-Nat’s-Butt” as I read it.
  3. Consistent Hashing: A Guide and Go Implementation — easy-to-follow article (and source).
  4. NoTCP Manifesto — a nice summary of the reasons to build custom protocols over UDP, masquerading as church-nailed heresy. Today’s heresy is just the larval stage of tomorrow’s constricting orthodoxy.
Four short links: 17 October 2014

Four short links: 17 October 2014

2FA, Copy Image Text, Electric Garbage Trucks, and MSFT's Q

  1. Time to Enable Two-Factor Authentication on Everything (Gizmodo) — instructions for enabling 2fa on Google, Facebook, and other common consumer Internet services. (via BoingBoing)
  2. Project Napthaautomatically applies state-of-the-art computer vision algorithms on every image you see while browsing the web. The result is a seamless and intuitive experience, where you can highlight as well as copy and paste and even edit and translate the text formerly trapped within an image. Chrome extension. (via Anil Dash)
  3. Garbage Trucks and FedEx Vans (IEEE) — Foo alum, Ian Wright, found traction for his electric car biz by selling powertrains for garbage trucks and Fedex vans. Trucks have 20-30y lifetime, but powertrains are replaced several times; the trucks for fleets are custom; and “The average garbage truck in the U.S. spends $55,000 a year on fuel, and up to $30,000 a year on maintenance, mostly brake replacements.”
  4. Microsoft’s Quantum Mechanics (MIT TR) — the race for the “topological qubit”, involving newly-discovered fundamental particles and large technology companies racing to be the first to make something that works.

To IDE or Not to IDE?

Choosing the right tool for the beginning programmer

You’ve picked the language you want to learn, and you’ve learned more about the various language paradigms. You want to get started writing some actual code—but what tool do you use? With almost all languages, you can start writing code in any old text editor available to you, and that’s what programmers used to do, decades ago. Any good engineer, though, will find tools to make his or her job easier, and that’s where the Integrated Development Environment (IDE) comes into play. So now you need to learn how to use a tool before you can learn the language? Not necessarily. Although many programmers consider “should I use an IDE?” to be a question with an obvious answer, they don’t necessarily agree on what that answer is.

Read more…

Four short links: 3 October 2013

Four short links: 3 October 2013

USB in Cars, Capture Presentations, Amazon Redshift, and Polytweeting

  1. Hyundia Replacing Cigarette Lighters with USB Ports (Quartz) — sign of the times. (via Julie Starr)
  2. Freeseerfree, open source, cross-platform application that captures or streams your desktop—designed for capturing presentations. Would you like freedom with your screencast?
  3. Amazon Redshift: What You Need to Know — good write-up of experience using Amazon’s column database.
  4. GroupTweetAllow any number of contributors to Tweet from a group account safely and securely. (via Jenny Magiera)
Four short links: 30 September 2013

Four short links: 30 September 2013

Google Code Analysis, Deep Learning, Front-End Workflow, and SICP in JS

  1. Steve Yegge on GROK (YouTube) — The Grok Project is an internal Google initiative to simplify the navigation and querying of very large program source repositories. We have designed and implemented a language-neutral, canonical representation for source code and compiler metadata. Our data production pipeline runs compiler clusters over all Google’s code and third-party code, extracting syntactic and semantic information. The data is then indexed and served to a wide variety of clients with specialized needs. The entire ecosystem is evolving into an extensible platform that permits languages, tools, clients and build systems to interoperate in well-defined, standardized protocols.
  2. Deep Learning for Semantic AnalysisWhen trained on the new treebank, this model outperforms all previous methods on several metrics. It pushes the state of the art in single sentence positive/negative classification from 80% up to 85.4%. The accuracy of predicting fine-grained sentiment labels for all phrases reaches 80.7%, an improvement of 9.7% over bag of features baselines. Lastly, it is the only model that can accurately capture the effect of contrastive conjunctions as well as negation and its scope at various tree levels for both positive and negative phrases.
  3. Fireshell — workflow tools and framework for front-end developers.
  4. SICP.js — lots of Structure and Interpretation of Computer Programs (the canonical text for higher-order programming) ported to Javascript.

From “Web Development” to the “Web Platform”

Defining a powerful toolkit

The rise of the phrase “web platform” over the past few years makes me very happy.

For years, I’ve been looking for a good term that would cover HTML, CSS, JavaScript, and a few related technologies. The terminology has long been tricky, as the mostly-forgotten “webmaster” broke into smaller pieces: “web designer”, “web developer”, and sometimes “web administrator”. (Some web administration faded into general system administration, while other aspects have grown into their own discipline of web operations.)

Read more…

End-to-End JavaScript Quality Analysis

Velocity 2013 Speaker Series

The rise of single-page web applications means that front-end developers need to pay attention not only to network transport optimization, but also to rendering and computation performance. With applications written in JavaScript, the language tooling itself has not really caught up with the demand of richer, assorted performance metrics necessary in such a development workflow. Fortunately, some emerging tools are starting to show up that can serve as a stop-gap measure until the browser itself provides the native support for those metrics. I’ll be covering a number in my talk at Velocity next month, but here’s a quick sneak preview of a few.

Code coverage

One important thing that shapes the overall single-page application performance is instrumentation of the application code. The most obvious use-case is for analyzing code coverage, particularly when running unit tests and functional tests. Code that never gets executed during the testing process is an accident waiting to happen. While it is unreasonable to have 100% coverage, having no coverage data at all does not provide a lot of confidence. These days, we are seeing easy-to-use coverage tools such as Istanbul and Blanket.js become widespread, and they work seamlessly with popular test frameworks such as Jasmine, Mocha, Karma, and many others.

Complexity

Instrumented code can be leveraged to perform another type of analysis: run-time scalability. Performance is often measured by the elapsed time, e.g. how long it takes to perform a certain operation. This stopwatch approach only tells half of the story. For example, testing the performance of sorting 10 contacts in 10 ms in an address book application doesn’t tell anything about the complexity of that address book. How will it cope with 100 contacts? 1,000 contacts? Since it is not always practical to carry out a formal analysis on the application code to figure out its complexity, the workaround is to figure out the empirical run-time complexity. In this example, it can be done by instrumenting and monitoring a particular part of the sorting implementation—probably the “swap two entries” function—and watch the behavior with different input sizes.

As JavaScript applications are getting more and more complex, some steps are necessary to keep the code as readable and as understandable as possible. With a tool like JSComplexity, code complexity metrics can be obtained in static analysis steps. Even better, you can track both McCabe’s cyclomatic complexity and Halstead complexity measures of every function over time. This prevents accidental code changes that could be adding more complexity to the code. For the application dashboard or continuous integration panel, these complexity metrics can be visualized using Plato in a few easy steps.

Read more…

Four short links: 23 May 2012

Four short links: 23 May 2012

Complex Exploit, Better Coding Tools, Online Coding Tools, and DIY 3D-Printed Dolls

  1. Tale of Two Pwnies (Chromium Blog) — So, how does one get full remote code execution in Chrome? In the case of Pinkie Pie’s exploit, it took a chain of six different bugs in order to successfully break out of the Chrome sandbox. Lest you think all attacks come from mouth-breathing script kiddies, this is how the pros do it. (via Bryan O’Sullivan)
  2. The Future is Specific (Chris Granger) — In traditional web-MVC, the code necessary to serve a single route is spread across many files in many different folders. In a normal editor this means you need to do a lot of context switching to get a sense for everything going on. Instead, this mode replaces the file picker with a route picker, as routes seem like the best logical unit for a website. There’s a revolution coming in web dev tools: we’ve had the programmer adapting to the frameworks with little but textual assistance from the IDE. I am loving this flood of creativity because it has the promise to reduce bugs and increase the speed by which we generate good code.
  3. Best Online Editors For Teaching HTML/CSS/JS (Pamela Fox) — Over the past few months, I’ve been teaching in-person classes on HTML, CSS, and JavaScript, as part of GirlDevelopIt San Francisco. Along the way, I’ve experimented with various online consoles and editors, and I thought I’d share my experience with using them for teaching.
  4. Makie — design a doll online, they’ll 3d-print and ship it to you. Hello, future of manufacturing, fancy seeing you in a dollhouse!

Developer Week in Review: Everyone can program?

There's a big gap between easy-to-use tools and competent programming.

Apple is the latest in a long line of entities that want to bring software development to the masses. Here's why that idea, in general, is doomed to fail.

Four short links: 15 February 2012

Four short links: 15 February 2012

DNS Benchmarking, Intro to Macroeconomics, Materials-Sensing Cameras, and 3D Printing Lab Messed Around

  1. Namebench (Google Code) — hunts down the fastest DNS servers for your computer to use. (via Nelson Minar)
  2. Primer on Macroeconomics (Jig) — reading suggestions for introductions to macroeconomics suitable to understand the financial crisis and proposed solutions. (via Tim O’Reilly)
  3. Smarter Cameras Plumb CompositionA new type of smarter camera can take a picture but also assess the chemical composition of the objects being imaged. This enables automated inspection systems to discern details that would be missed by conventional cameras. Interesting how cameras are getting smarter: Kinect as other significant case in point. (via Slashdot)
  4. Not So Open — 3D printing lab at the University of Washington had to stop helping outsiders because of a crazy new IP policy from the university administration. These folks were doing amazing work, developing and sharing recipes for new materials to print with (iced tea, rice flour, and more) (via BoingBoing)