HNHacker News
TopNewBestAskShowJobs

rads

689 karma · joined February 26, 2009

Radford Smith (contact@radsmith.com)
submissionscomments
rads··on What It Takes to Truly Delete Data
If @realDonaldTrump deletes a tweet, it's against the Twitter ToS to republish it using a bot.

When it does happen I've seen people post screenshots of the old tweet. This doesn't prove anything more than trivial knowledge of the Chrome Web Inspector.

I've thought about distributing a program so people can keep their own local archives of important tweets. There are plenty of ways to achieve this already, but that's besides my point.

How can we make it obvious when an important figure deletes a tweet without breaking Twitter's ToS?

rads··on Git-scm.com status report
High availability is the standard these days and you don't get that with a single Raspberry Pi.
rads··on Fission: Serverless Functions as a Service for Kubernetes
Thanks, I was hoping someone would come along with some real data!
rads··on Fission: Serverless Functions as a Service for Kubernetes
In case anyone else was wondering how the auto keep-warm feature is implemented: it's a CloudWatch Event that runs the Lambda every four minutes by default.

While this probably keeps the majority of the requests warm, I would expect that there would still be some cold ones every now and then. Amazon doesn't provide a guarantee in how the containers get recycled.

This is just me speculating, though.

rads··on Pixie – A small, fast, native Lisp
The data structures in Clojure are built on shallow 32-way trees. When you "change" a map or a vector, the algorithm only copies from the root node down to the parent of the leaf you're changing. That's log32(N) copied nodes in a tree of N nodes total.
rads··on Announcing Rust 1.13
The argument only applies to unchecked exceptions because those can happen from anywhere without being mentioned by the calling code. It's easy to sneak through a layer of abstraction since the bubbling is implicit.

The `try!()` in this case is analogous to checked exceptions. It makes the bubbling explicit.

rads··on You Don't Need
That's a false dichotomy. Business apps become huge codebases due to lack of engineering discipline and cutting corners to make deadlines. It happens regardless of whether the code is written for the browser or the server because there is no environment that will substitute for the skill that is necessary to control complexity in businesses which are inherently unpredictable.
rads··on Ask HN: Who wants to be hired? (November 2016)
Radford Smith

https://github.com/rads

Clojure and remote jobs strongly preferred.

• Location: Berkeley, CA

• Remote: Yes. I've been working remote for almost 3 years now.

• Willing to relocate: No

• Technologies: Full Stack. Clojure/Script, JavaScript, Python, Ruby, PHP, Java. Kafka, React, Redux, AWS, PostgreSQL, MySQL, SASS, Rails.

• Résumé/CV: http://radsmith.com/resume.pdf

• Email: contact@radsmith.com

rads··on Music for Programming
I recently discovered the work of Laurie Spiegel, whom I now have great respect for. My personal favorite song by her is the opener from her only album "The Expanding Universe":

https://www.youtube.com/watch?v=rN3uYELX8iQ

Regardless of whether you fall in love with the music, it's worth knowing about her as a pioneer of computing. And yes, she also happens to be a woman.

https://en.wikipedia.org/wiki/Laurie_Spiegel

> Best known for her use of interactive and algorithmic logic as part of the compositional process, Spiegel worked with Buchla and Electronic Music Laboratories synthesizers and subsequently many early, often experimental and prototype-level music and image generation systems, including GROOVE system (1973–1978), Alles Machine (1977) and Max Mathews's RTSked and John R. Pierce tunings (1984, later known as the Bohlen–Pierce scale) at Bell Labs, the alphaSyntauri for the Apple II (1978–1981), the McLeyvier (1981–1985).

rads··on Show HN: KQ – Simple Job Queue for Python Using Kafka
He means the software requires Kafka as a dependency, not that the foundation is sponsoring it. The claim of "designed primarily for ease of use" is a personal one, not hard to make.
rads··on Eve: Programming designed for humans
On my first admittedly unfair impression I feel the same way, but I'd love to be proved wrong. Chris Granger is a serious programmer whose work deserves careful consideration.
rads··on When Blind People Do Algebra, the Brain's Visual Areas Light Up
While I understand that "programming is not visual" is a common point of view, I strongly disagree with it. See here:

http://worrydream.com/LearnableProgramming/

rads··on Microservices
Exactly. This is great advice.
rads··on Is Clean Code Necessary?
I agree with this. It reminds of a post I read a little while ago from Cognitect:

> When you’re working with high leverage, you don’t have to put as much investment in to get the same functionality or value out. Because your code is simpler and easier to create, it can be considered disposable. And with disposable code, you don’t feel the compulsion to keep it, like you would with the old paradigm boat anchor projects. It all adds up to this: data orientation drives antifragility, enabling you to change individual vectors, and your entire organization more swiftly.

http://blog.cognitect.com/blog/2016/6/28/the-new-normal-data...

The implication is that when your code becomes less important the data model becomes more important in response.

rads··on Prince Has Died
I just heard a story from a listener of The Current about exactly that: Prince pulled up in a van at her friend's house with a couple other people and spread the word.
rads··on The Story Behind the New WordPress.com
As a developer at Automattic, the most interesting thing about this to me is that our whole workflow is now public. There are lots of companies that release their code, but it's rare that they also make their development process transparent.
rads··on Waitin' (on Leiningen)
It's a joke, people. Among the other things he's doing in Thailand, he actually is selling keyboards and seems to be quite content with his situation:

http://technomancy.us/177

rads··on The Ebola Wars
Yeah, but don't forget the complexity of the hardware you need to run ebola versus a website. Our bodies provide most of the implementation details.
rads··on Why CoffeeScript Isn't the Answer
A little further down the same post [1]:

Given that a safe path through the JavaScript minefield isn’t enough, it seems like we need a detailed map of the minefield. Many books and blogs have been written to provide that map. JavaScript: The Definitive Guide by David Flanagan is one of the most detailed of those books. The JavaScript Garden is a good place to start learning about the mines online. [2]

[1] http://www.walkercoderanger.com/blog/2014/02/javascript-mine...

[2] http://bonsaiden.github.io/JavaScript-Garden/

rads··on Iconic – An Icon System Designed for the Modern Web
It's important to think about your performance needs before you add any kind of third-party dependency. In production, you might consider using IcoMoon to create your own font with just the icons you need. [1] This library provides everything you need to do that.

The predefined classes give you flexibility when you're developing, but there's nothing stopping you from using your own names. There's also @extend in SASS that allows you to mix in icon styles to your application's classes without adding duplicate rules. [2]

[1] http://icomoon.io/app

[2] http://sass-lang.com/documentation/file.SASS_REFERENCE.html#...

rads··on Ask HN: Who is hiring? (February 2014)
I couldn't find a specific email address to send the application, so I just used info@pathable.com. Is there a better way to contact you guys?
rads··on The Future of JavaScript MVCs
This sounds like a case of simple, not easy: http://www.infoq.com/presentations/Simple-Made-Easy

You could add a timestamp to each todo with two changes:

https://github.com/swannodette/todomvc/blob/gh-pages/labs/ar...

    (defn handle-new-todo-keydown [e {:keys [todos] :as app} owner]
    ...
            (om/update! app [:todos] conj
              {:id (guid) :title (.-value new-field)
               :created-at (js/Date.)  ;; <-- add this line
               :completed false :order (count todos)})
    ...)
https://github.com/swannodette/todomvc/blob/gh-pages/labs/ar...

    (defn todo-item [{:keys [id title editing completed] :as todo} {:keys [comm]}]
    ...
                ;; change this line
                (dom/label #js {:onDoubleClick #(handle-edit % todo m)} (str
    (:title todo) (:created-at todo)))
    ...)
rads··on The Future of JavaScript MVCs
The main features David talks about in the post are available in vanilla JavaScript:

> If you're a JavaScript developer, I think taking a hard look at React is a really good idea. I think in the future, coupling React with a persistent data structure library like mori could bring JS applications all the way to the type of flexible yet highly-tuned architecture that Om delivers.

I think there are a couple reasons Mori and other libraries like it haven't caught on in the JS mainstream:

1. It's clunky to use them in vanilla JS compared to the default mutable objects and arrays. While you gain simpler semantics, the code becomes harder to read, and that tradeoff isn't always worth it.

2. Most JS developers are not experienced with building programs around immutable values.

rads··on The Future of JavaScript MVCs
I've seen two libraries suggested on the React mailing list:

http://swannodette.github.io/mori/

https://github.com/hughfdjackson/immutable

The first one uses the same data structures from ClojureScript.

rads··on The Monster Truck Madness 2 website has been taken down
Welcome to the Microsoft Outwars Website!
rads··on New Relic now supports Node.js
Some advantages:

- Yes, built-in async support is very important

- Everyone has to write JS at some point anyways -- it helps to take advantage of what everyone already knows

- You can easily share code between the client and the server

- There are tons of modules available on NPM already

- The compile-to-JS languages are getting more practical every day, and you can integrate them with existing JS code

If you consider time spent learning a platform compared to what you get out of it, Node.js is probably the best bang for your buck today.

rads··on How to make your code imply responsibilities
> First, the name merely combines two values. What will happen when requirements change and we need to ensure that the provided experience includes at least 3 years of activity? The meaning of has_public_experience? will change along with its behavior and lead to surprises for developers unfamiliar with these particular details. It will no longer merely be existince of experience allowed for the public.

The problem is not the boolean, it's that we're using the wrong name for the method. Just choose a better name:

    class ProfilePresenter < ::Presenter
      def display_experience?
        profile.has_experience? && profile.experience_public?
      end
    end
The advantage of this over a block is that you can use this in more than one spot on the page. What if you wanted to show a special badge for users with experience in a different place? You'll end up extracting out this logic anyways -- it will just be hidden by another layer.

> This leads us to the second problem: the intent of the method is to display features, not query for values. Were we to stick with a query method like has_public_experience? we would end up considering the content inside the view along with the meaning of the method every time we read this code.

When you move up and down the ladder of abstraction[1], make it clear. When you're talking about "has_experience? && experience_public?", the new name "with_experience" does not communicate that we're hiding details, nor does "block.call" when you look at the new method. The name "display_experience?" makes it clearer that we're now moving to a higher rung, the view.

[1] http://worrydream.com/LadderOfAbstraction/

rads··on Google Has Spent $21 Billion on Data Centers
Why would they put a data center in Manhattan? Don't these things usually go where the space is relatively cheap?
rads··on 4.2.2.2: The Story Behind a DNS Legend
Google has one of their own: https://code.google.com/p/namebench/
rads··on Bootstrap 3 RC2
Bootstrap isn't the source of monotonous websites. It just makes them look better.
← PreviousPage 2 of 4Next →