Lisp-like html as a replacement to bbcode/markup/textile - <AUTHOR> http://188.8.131.52/ <comment><USER2> This would never replace bbcode.

The best thing to replace that is markdown.

People don't really grok tags very well at all.

BBCode only works because of WYSIWYG editors that do the work for the user. That and the wide acceptance meaning that sites like Flickr produce BBCode embed statements.

Markdown works well for people just typing in plain text but still getting something formatted without trying to tag things.

If you have a WYSIWYG editor then who cares whether this is used... and as the embed stuff isn't compatible why pick this over BBCode?

If you don't have a WYSIWYG editor, and assuming you're in a web page and a textfield, then markdown works superbly well (ignoring the ugly image syntax).

I struggle to see, given the title and mention of BBCode, how the linked article overcomes any of the issues of the existing methods or offers any benefit.

Not to say that there isn't a place for this... but BBCode isn't it.

<comment><USER3> > BBCode only works because [...]

Any board out there is full of posts with broken quotes and markup. I don't think BBCode works. It's widespread but it doesn't mean it works.

I otherwise agree with your points.

<comment><USER4> his underlying point, and he as much as said it, is that bbcode IS successful because it WAS successful.

when it was born, it was convenient because it looked and acted like html while limiting the users ability fuck things up. at the same time it didn't go confusing the machine that was going to process it. it was clearly never designed for anything but bridging that gap... some 15+ years ago.

Flickr produces bbcode embeds, but imgur produces like 8 different embeds. existing adoption is not the sole mark of success for anything digital. facebook anyone?

the wysiwyg editors make it easier to generate "human usable code that limits fucking up". It matters because users can still fuck things up but for some reason they need to be able to read it.

THAT is why this type of thing should be used (on the developer level) as a replacement. It's easy to read, it's easy to grasp, it's consistent and it's no more difficult to parse (for erlang or haskell or php) at the server level than bbcode.

</comment></comment></comment><comment><USER5> I think that this is an interesting experiment, and reminds me of Clojure's hiccup[1] library.

In hiccup, you model html to be rendered as nested vectors and maps, such that

        bar

becomes

        (html [:span {:class "foo"} "bar"])

Where this is a real win is when you realize that it's just data:

        (html [:ol
                (for [x (range 1 4)]
                  [:li x])])

Lisps are well suited to model html.

[1] <https://github.com/weavejester/hiccup>

<comment><USER6> Ruby has had these type of libraries for years. The original is probably Markaby, but today there are alternatives that are both faster (<https://github.com/camping/mab/>) and has more features (<http://erector.rubyforge.org/>).

It's an interesting concept, but I find that (1) it's hard to work on it together with designers and (2) for larger templates I don't find it that elegant.

<comment><USER7> The theme between these efforts seems to me: Instead of a separate language in a separate world, our views are normal objects/data (in all their glory and power) that happen to know how to print themselves as html.

<comment><USER8> I'm certainly no cultist of MVC, but I would tend to agree with them that tightly coupling presentation details to the basic model is usually unwise.

<comment><USER6> You're not supposed to put these into your models. You should create a different class/method that accepts models and returns HTML:

        class TweetWidget
          def initialize(tweet)
            @tweet = tweet
          end

          def content; … end
        end

</comment></comment></comment></comment></comment><comment><USER9> Looks a lot like TeX, which is a good thing. In fact this might even be better. I'm tired so I might be missing an obvious weakness but to take the analogy a bit further here are some comparisons between this suggestion and a more TeX-like version.

The author's suggestion:

      {b {i This is in italics and bold.}}
      {Henny+Penny We can use google fonts anywhere if we just import them first with the google-font code}
      {macro foobar {u {b %s}}}

TeX-like (yes I'm making up the keywords):

      {\b {\i This is in italics and bold.}}
      {\font {Henny+Penny} We can use google fonts anywhere if we just import them first with the google-font code}
      {\macro {foobar} {\u {\b #1}}}

I would definitely prefer the first alternative over the TeX-like. The analogy also suggests though that instead of HTML "
" you could have a TeX-like atom "\br" instead of "{br}"; saves only one character, but easy to see inside a block of text.

<comment><USER10> Why don't browsers support TeX anyway? Maybe it could even be embedded in a HTML page, like SVG.

       <!doctype html>
       <tex>
       Hello, World
       \bye
       </tex>

<comment><USER11> There is actually an XML version of TeX: <http://getfo.org/texml/>

</comment></comment></comment><comment><USER12> Nice experiment.

There's an issue with curly braces { }. When typing in Russian (and in other Cyrillic languages) you need to switch keyboard layout before and after each curly brace. It quickly becomes tiresome to do: type-in-russian, switch- layout, type-{, switch-layout, type-in-russian etc.

This problem also exist in Markdown too: square brackets [ ] and curly braces { } both live on the same keys as Russian 'Х' and 'Ъ'. Typing Russian Markdown with links is tiresome. Curiously, the only easy to type characters in Cyrillic layout are parens ( ).

 _Update._ I wrote about JCUKEN layout above: <http://en.wikipedia.org/wiki/JCUKEN>. But on some keyboards the layout is extended. E.g. Mac keyboard allows you to enter square brackets [ ] with `~ key in default Russian layout [1, 2]

[1]: [http://store.storeimages.cdn-apple.com/2544/as- images.apple....](http://store.storeimages.cdn-apple.com/2544/as- images.apple.com/is/image/AppleInc/MC184RS?wid=800&hei=800)

[2]: [http://store.apple.com/ie- business/product/MC184RS/B/apple-w...](http://store.apple.com/ie- business/product/MC184RS/B/apple-wireless-keyboard)

<comment><USER13> Out of curiosity, do Russian developers permanently use an English layout, or just map these keys elsewhere?

<comment><USER12> Switching layout is not an issue when typing code. You just type in English because keywords and API are obviously in English. The problem exist only for markup languages where you type prose.

Still (in addition to English letters) these are hard to type in Russian layout: { } ' @ # $ ` (and more - depends on a keyboard and operating system).

 _Update._ I've just noticed square brackets [ ] on my (Cyrillic) Mac keyboard. They are on a key with tilde ~ and backtick `. Before this very comment I didn't know I could type square brackets in Cyrillic layout... This should make Markdown much easier!

<comment><USER14> Actually on Mac with a combination of alt/option key and the letter you should be able to right {} in cyrillic without switching layout. Search a little, and openthe "keyboard viewer" tool.

</comment></comment></comment></comment><comment><USER15> You just reinvented the RTF spec. It quickly gets out of hand, trust me.

<comment><AUTHOR> I can say html is better than RTF, and I like this syntax more than html. It accepts _style attributes on any tag so I do not encourage command stacking.

</comment></comment><comment><USER16> If you look at the old Scribe, it used a markup like in this example:

        @hemlock runs in the editor process and interacts with other Lisp processes
        called @i[eval servers].  A user's Lisp program normally runs in an eval
        server process.  The separation between editor and eval server has several
        advantages:
        @begin[itemize]
        The editor is protected from any bad things which may happen while debugging a
        Lisp program.

        Editing may occur while running a Lisp program.

        The eval server may be on a different machine, removing the load from the
        editing machine.

        Multiple eval servers allow the use of several distinct Lisp environments.
        @end[itemize]

To make things italic, you would write @i[some text here]. Longer commands would be like in the itemize example. Each paragraph would be an item in this simple version.

</comment><comment><USER17> Xarn came up with a very similar implementation of an s-expression-based markup language a few years ago:

[http://cairnarvon.rotahall.org/2010/05/25/towards-a- better-b...](http://cairnarvon.rotahall.org/2010/05/25/towards-a-better- bbcode/)

It's fun to play around with for a minute, but unless you really like /prog/, you're rarely going to want that kind of flexibility in basic text formatting. Still, a sexpcode parser would make for a decent board gimmick, so I'm kind of surprised that no one (that I can remember, anyways) used it for that.

</comment><comment><USER18> Minor downside: You have to ensure that the contents of a {code ..} block have all their open-brackets matched with close-brackets. This can be quite tricky with larger code examples. The bbcode [/code] equivalent is slightly less problematic.

Other than that it looks like a good alternative.

<comment><USER19> In my opinion all tags should have an optional short/long form i.e.: {code ..} and {code}..{/code}.

</comment></comment><comment><USER20> you mean like CURL? <http://en.wikipedia.org/wiki/Curl_(programming_language)> \- used it years ago and it did not make my life easier.

<comment><AUTHOR> but curl is a programming language itself. This is intended to be safe and primarily for markup. I did change from parens to angle brackets because of curl. It made much more sense because brackets are much less used in everyday chat, on non programmer sites. I made this after I made an html parser, so it's parsed in very much the same way. Curl is very very different.

</comment></comment><comment><USER21> Years trying to move the style to the css and be semantic in the html.

I like it, but comes a little bit late. 8 years ago probably was nicer.

<comment><USER22> Cgi.tcl (<http://expect.sourceforge.net/cgi.tcl/>) has been around since the mid-nineties. Also, htmlgen (<http://tclxml.sourceforge.net/xmlgen/htmlgen.html>).

</comment></comment><comment><USER23> I've found HAML (<http://haml.info/>) to be my ideal reduced HTML syntax, strange not to see it mentioned here.

<comment><USER24> HAML is fantastic overall, but there are two ways in which I don't think it's addressing the same problem as something like this:

* Whitespace-sensitive means I don't want to use it in a text-field in a browser -- in an editor I can have guide lines to show me the indentation levels and what lines up with what, and keyboard shortcuts for indenting/unindenting blocks quickly.

* Nesting and inline stuff just doesn't work well since you'd end up with stuff like a %b on one line and then an %i on the next line unless you just went plain-HTML for the line. HAML is much more suited for page structure, and not so great for inline content.

Something like the following line is really cool with a quasi-TeX feel: "Using multiple tags: {b {i This is italics and bold.}}"

</comment></comment><comment><USER25> That look nice, but four things:

divs. How to write something like
Test lore ipsum
 ? Does this have a chicken scheme style named parameters?

Inline HTML, especially useful for macros. {html i} should become i

A unification


Ask HN: Apps for travel - <AUTHOR>

I traveling to the United States this October. I was wondering, what would some imp. Apps be so that Im able to enjoy the trip ? <comment><USER2> When I'm travelling internationally, a currency converter is always a good one to have.

You can try searching for public transit apps specific to the cities you'll be visiting. Depending on where you'll be travelling, there are some nice ones that have built-in maps of the transit system, trip planning, and real-time departure estimates. For a city like San Francisco, you may need more than one to cover the various public transit providers available (BART vs MUNI, etc). Lacking a specific app, you may want to just bookmark mobile versions of the public transit provider's website.

I also like installing a maps program that can make use of offline data. On Android, there's OsmAnd. That way, even if you no longer have data service, you can use the GPS to get a sense of where you are and what's nearby.

TripIt can be nice for keeping your travel itinerary easily accessible \-- but of course it's always good to have hardcopies either on your person or in your carry-on.

Good luck!

</comment><comment><USER3> 1\. Yelp - useful for reviews.

2\. Foursquare - for place recommendations

3\. ForeverMap 2 - for offline maps

4\. Uber/Lyft/Sidecar - useful when it's not easy to take cabs or public transports

<comment><USER4> When you get the chance, check out [Bonjournal]([https://bonjourn.al](https://bonjourn.al))!

[Bonjournal]([https://bonjourn.al](https://bonjourn.al)) is the simple way to record and share your travel adventures. The app helps you easily collect all the beautiful moments, stories and pictures from your journey into a single narrative.

\- Create beautiful travel journals, even without internet connection. \- Share your travel journals via Facebook, Twitter and email. \- Export your journals to PDFs, to enjoy them forever. \- Follow your friends along their journeys. \- Explore the experiences of fellow travel enthusiasts.

[Bonjournal]([https://bonjourn.al](https://bonjourn.al))

</comment></comment><comment><USER5> Definitely Yelp. It's huge over here.</comment>


Python is better than Perl6 - <AUTHOR> http://everythingsysadmin.com/2011/01/python-is-better-than-perl6.html

<comment><USER2> Of course Python is better than Perl6. The latter does still not exist in a final form.</comment>


Subresource Integrity and Upgrade-Insecure-Requests Are Now Supported in Edge - <AUTHOR> https://www.troyhunt.com/subresource-integrity-and-upgrade-insecure-requests-are-now-supported-in-microsoft-edge/ <comment><USER2> He links to the browser SRI test page [https://reporturidemos.azurewebsites.net/sri- test](https://reporturidemos.azurewebsites.net/sri-test)</comment>


How to get Momentum when Fundraising - <AUTHOR> https://medium.com/startup-grind/how-to-get-momentum-when-fundraising-6826ba8c52e2#.gya6w074e <comment><USER2> From the perspective of someone who works in fundraising for a non-profit, and has worked for a startup in the past, I find this article really interesting. A lot of the points here touch on ideas that are well-known in the non-profit fundraising community. Based on his experiences fundraising, it seems like startups could draw a lot on fundraising experiences in the non-profit world. On the flip-side, I've found that my experience in the for-profit world has been a massive leg-up on the other individuals in the non-profit world.

The more I think about it, the more I see parallels between non-profits and start-ups. Their day-to-day existence relies on fundraising. There is generally more work than workers, requiring employees to have a broad skill set and prioritize work effectively.

One of the biggest things that I think ties start ups and non-profits, is that their success relies heavily on who is advising them, be it a board, investors, or other stakeholders. I think good guidance is at least as important as money for any organization, especially in the beginning.

<comment><AUTHOR> I haven't worked in non profits but I imagine these techniques work in most industries, as they're based on scarcity which influences most of us.</comment></comment>


Forbes Opens The E-mail Time Capsule - <AUTHOR> http://blogs.forbes.com/davidewalt/2010/11/05/forbes-email-time-capsule/

<comment><USER2> The one thing that amazes me is the pace of technological change. It also points to how ingrained e-mail has become in our daily lives. Though it is easy to change e-mail addresses I think everyone has one or two that have become their personal mark.

And it still blows my mind that some people will have e-mail addresses over 20 years old.

</comment><comment><USER3> Certainly a very interesting project and one in think we can keep tabs on our progress</comment>


Klisp – An implementation of the Kernel programming language - <AUTHOR> http://klisp.org/ <comment> def- > Try that in your programming language ;)

Short circuiting in Nim, seems simple enough:

        template myAnd(a, b: bool): bool =
          if a: b
          else: false

<comment><USER2> This doesn't quite hit the mark. The example given in Klisp will work with an arbitrary number of arguments. What looks to be the second of two named arguments, _e,_ is actually the dynamic environment from which _$and?_ is called.

<comment><USER3> > _e, is actually the dynamic environment from which $and? is called._

I.e. this and operator is an anti-deluvial beast once known in the Lisp word as a FEXPR.

If a compiler is developed, every such operator will have to be reimplemented as a macro.

<comment><USER4> Context:

Special Forms in Lisp [0] by Kent Pitman (1980) is about FEXRs vs. MACRO:

> It is widely held among members of the MIT Lisp community that FEXPR, > NLAMBDA, and related concepts could be omitted from the Lisp language with > no loss of generality and little loss of expressive power, and that doing so > would make a general improvement in the quality and reliability of program- > manipulating programs.

> There are those who advocate the use of FEXPR's, in the interpreter for > implementing control structure because they interface better with certain > kinds of debugging packages such as TRACE and single-stepping packages. Many > of these people, however, will admit that calls to FEXPR's used as control > structure are bound to confuse compilers and macro packages, and that it is > probably a good idea, given that FEXPR's do exist, to require compatible > MACRO definitions be provided by the user in any environment in which > FEXPR's will be used. This would mean that a person could create a FEXPR > named IF, provided he also created an IF MACRO which described its behavior; > the FEXPR definition could shadow [12] the MACRO definition in the > interpreter, but programs other than the interpreter could appeal to the > MACRO definition for a description of the FEXPR's functionality.

[0] [http://www.nhplace.com/kent/Papers/Special- Forms.html](http://www.nhplace.com/kent/Papers/Special-Forms.html)

<comment><USER3> But, of course, if you just write the macro IF, it's pointless to then write a FEXPR. This is because the interpreter can use the IF macro just fine. Nobody is going to write every operator twice in a large code base, first as a FEXPR operator and then a macro operator. It's extra development work, plus extra work to validate that the two behave the same way and are maintained in sync.

Kent is writing very theoretically there and being very generous to the idea.

Single stepping through macro-expanded code is perfectly possible. There is no debugging disadvantage between stepping through a macro-expanded control flow operator, versus one which is interpreted. In both cases, the single-stepping interpreter can know the source code location where the argument expressions came from and jump the cursor there, providing visual stepping.

Not to mention that compiled code can be stepped through a source code view; countless programmers have been doing this in C for decades, and similar languages. Given that we can write an if statement in C, compile it and step through it in gdb, the position that we benefit from an FEXPR to do the same thing in a Lisp interpreter is rather untenable.

</comment></comment></comment></comment></comment><comment><USER5> IO:

        myand := method(
            if(call evalArgAt(0), call evalArgAt(1), false)
        )

        myand(true, 3 println)  # prints 3 to stdout
        myand(false, 3 println) # nothing happens

This should also be possible in TCL. Scala has some kind of lazily eval'ed arguments, too. And, of course, Haskell has this built-in.

EDIT: better example code.

<comment><USER5> (forgot to mention, this IO code generalizes to any number of arguments)

</comment></comment><comment><USER6> Cool! I read Shutt's thesis on Kernel years ago, but I didn't know there was an implementation available yet.

Vau interpreters can actually be simpler than lambda interpreters, and make a great playground for language design. I wrote a blog post back in 2012 about converting a simple Python Lisp interpreter into a vau interpreter ([http://gliese1337.blogspot.com/2012/04/schrodingers- equation...](http://gliese1337.blogspot.com/2012/04/schrodingers-equation-of- software.html)), and that eventually grew into an undergraduate capstone paper on designing the denotational semantics of and implementing another vau-based language called Vernal ([https://github.com/gliese1337/CS598R](https://github.com/gliese1337/CS598R)).

I don't expect any of these will ever become mainstream industry languages, but they have a theoretical elegance and simplicity that makes them fun to play with for the theoretically-minded.

<comment><USER7> There's also wat.js and my wat-pl port to perl5.

They're _vastly_ fun for prototyping complicated logic in.

</comment></comment><comment><USER8> Kernel is what I really want scheme to be. It's like scheme, but better. And if you're wondering why I say better, more first-class objects is always a good thing.

<comment><USER9> That's a pretty simplistic explanation. There are lots of ways to mess up Lisp in an attempt to enable the style of meta-programming that Kernel supports. What distinguishes Kernel from these other approaches (many of which have been seriously considered in the past) is mostly what you're _not_ able to do in Kernel. That is, the vau construct still allows encapsulation in a useful way. Kernel may have "more things first class" than Lisp, but that's not all that sets it apart.

<comment><USER8> That's certainly one way of looking at it, and it IS one of the reasons I like kernel. fexprs > macros because of this.

</comment></comment></comment><comment><USER10> Fexprs do not offer that much vs. mere static compile-time macros, but they're making compilation impossible, limiting an implementation to a lowly and buggy interpreter.

</comment><comment><USER11> Can't build it on Debian, getting:

        /usr/include/features.h:374:25: fatal error:    sys/cdefs.h: No such file or directory
        #  include <sys/cdefs.h>

(I installed uuidcdef, for what it's worth).

Also I don't understand the code for the operator _and_ , isn't it gonna return #t whenever x is null?

<comment><USER12> Builds just fine on Arch Linux.

Maybe this article might help you: [http://askubuntu.com/questions/470796/fatal-error-sys- cdefs-...](http://askubuntu.com/questions/470796/fatal-error-sys-cdefs-h-no- such-file-or-directory/)

<comment><USER11> Yep, it works, thanks for pointing it!

</comment></comment></comment><comment><USER13> One of Shutt's advisors (on his thesis) was Shriram Krishnamurthi who certainly understands Scheme deeply. Makes me curious to read the thesis in an effort to understand what's new and interesting here.

</comment><comment><USER14> In Swift:

       func myAnd(lhs: Bool,
                  rhs: @autoclosure () -> Bool) -> Bool
       {
         return lhs ? rhs() : false
       }

(Heavily inspired by [https://medium.com/swift-programming/facets-of-swift- part-5-...](https://medium.com/swift-programming/facets-of-swift- part-5-custom-operators-1080bc78ccc#.j2kertet1). Not tested; any bugs likely are mine)

<comment><USER4> I don't know Swift, but it seems[0] that it is not possible to apply this with multiple arguments, like in the original example (e.g. (and a b c d)).

[0] [https://stackoverflow.com/questions/29750244/variadic- autocl...](https://stackoverflow.com/questions/29750244/variadic-autoclosures- in-swift-1-2)

</comment></comment><comment><USER15> > Kernel is a Scheme-like programming language by John N. Shutt in which all > objects are first-class.

Ok, but what problems are this programming language trying to address?

<comment><USER16> What problems were a Turing machine designed to "address"? Sometimes the things that have the most value are the things that we can't wrap our minds around yet. Think forward.

<comment><USER17> The Entscheidungsproblem: [https://en.wikipedia.org/wiki/Entscheidungsproblem](https://en.wikipedia.org/wiki/Entscheidungsproblem)

</comment></comment></comment><comment><USER18> [http://clojure.org/](http://clojure.org/) used to have a macro definition of either (and) or (or) somewhere on one of its basic pages. They reorganized it recently though so I can't find it. But yeah, I'm not really sure what Klisp offers over Clojure so far. This sensationalist version of a hello-world isn't really anything new or special so far.

<comment><USER19> You cannot pass macros as values as they do not exist at runtime. (So no macros can be passed to map/reduce as opposed to the fexprs).

P.D. Msimoni has written about fexprs (and a Lisp dialect with fexprs on JS, wat.js) if you want to read about them some more.

<comment><USER18> Long ago, when I was learning Clojure, and thought "it's so inconsistent that I can't pass `if` to a function," I would have found fexprs interesting. But I've since thought about it more and realized there's absolutely no need for it at all.

</comment></comment></comment><comment><USER20> > Try that in your programming language ;)

Does this count?

        function and(a,b) { return (a ? b ? b : false : false) }

<comment><USER8> Now try to run this:

        and(false, console.log("This shouldn't run"))

A critical part of the semantics of the kernel function, and the javascript built in &&, is that they are _short circuit_, that is, they only evaluate the second value if the first value evaluates to false. This is very important if you're programming with side effects.

<comment><USER21> This is from the SBCL source, and I think it's pretty elegant:

        (defmacro and (&rest forms)
          (cond ((endp forms) t)
                ((endp (rest forms))
                 ;; Preserve non-toplevelness of the form!
                 `(the t ,(first forms)))
                (t
                 `(if ,(first forms)
                      (and ,@(rest forms))
                    nil))))

<comment><USER7> Right, what's interesting about klisp is that you can define that as something that can be called at runtime, rather than having to be implemented as compile-time macro expansion.

I sort of regard operative lisps as "lisp, but even more so", as it were (and for sheer brain melting power when prototyping weird logic they're even more fun than normal lisps, at least to me)

<comment><USER8> I just like them because fexprs are in some ways more elegant and easier to understand than macros.

</comment></comment></comment></comment></comment><comment><USER22> #define and &&

heh

<comment><USER23> Yep, had the same thought. #define AND(a,b) a && b

<comment><USER24> See answer above about arbitrary number of arguments.</comment></comment></comment>


Billboards that doubles as a bench or a shelter or a ramp - <AUTHOR> http://interfsce.com/chronicles/2013/6/6/smarter-ideas-for-smarter-cities

<comment><USER2> Nicely executed but not really new, as any real estate agent on a bus stop bench will tell you.

I'd prefer to see "Art that doubles as a bench or a shelter or a ramp." We have quite enough advertising.</comment>


AWS Development: The Dark Art of VPC Networking - <AUTHOR> https://www.verypossible.com/blog/aws-development-dark-art-of-vpc-networking <comment><USER2> Setting up a VPC brought back a nostalgic feeling of manually setting up subnets and routes on unix boxes.</comment>


Myths in Cycling (1): Wider Tires Are Slower (2018) - <AUTHOR> https://janheine.wordpress.com/2018/01/03/12-myths-in-cycling-1-wider-tires-are-slower/ <comment><USER2> > The UCI requires a minimum wheel size of 55 cm, yet racers use 700C wheels > that are 10 cm larger than required. If wheel weight mattered as much as > most cyclists imagine, then pros using the smallest wheels would win every > race. And yet, even though many have tried smaller wheels, all have returned > to 700C wheels – probably because the larger wheels handle better due to > their optimized rotational inertia. (But that is a topic for another post.)

I know this! The answer is because the neutral van only carries 700c wheels. If a rider gets a flat the wheel needs to be replaced quickly thus it's advantageous to use the most common wheel type. It is explained in this video by a professional cyclist: [https://www.youtube.com/watch?v=jLnwR0ZxhcI](https://www.youtube.com/watch?v=jLnwR0ZxhcI)

Wider tires are discussed in this video (also by GCN): [https://www.youtube.com/watch?v=yrHxQg1OW0A](https://www.youtube.com/watch?v=yrHxQg1OW0A) They also find that wider tires are slightly faster. Although they discuss widths of 23 vs 25 or 28 mm which seem like a minor difference for most cyclists. But probably makes a world of difference for professionals.

</comment><comment><USER3> Although I, since a couple of years, ride (and preach) 50mm tires I believe it should be mentioned that Jan Heine's writings aren't exactly independent and objective research. He makes his money selling (mostly) wide and supple tires (Rene Herse, formerly Compass). They're not always as superior[1] as he likes to point out.

If you want to try wider tires (and your frame can fit them) there are alternatives to (the expensive) Compass tires. Try Maxxis DTH for 26" wheels and Torch for 28". Panaracer makes a bunch of supple and wide models. Pacenti Pari-Moto (made by Panaracer) nice and cheap. Also have a look at Schwalbe G-One Speed (available in a wide selection of sizes). Maxxis are cheaper in the US, Schwalbe are cheaper in Europe.

[1] [https://www.bicyclerollingresistance.com/tour- reviews/compas...](https://www.bicyclerollingresistance.com/tour- reviews/compass-bon-jon-pass-2018)

</comment><comment><USER4> Since there's a placebo effect mentioned in the article, I wonder if they double-blinded the tests? They don't say if they did, and it would be hard to do.

</comment><comment><USER5> Surprised clipless pedals aren't included in the list of myths.

These sorts of myths exist in many sports; I am fascinated by them.

<comment><USER6> What's the myth with clipless pedals?

<comment><USER7> I suspect OP is referring to the idea that you can get significant power returns on the upstroke with clipless pedals. This is definitely questionable. However clipless pedals are still a good idea because your feet don't slide off the pedals. Especially in wet weather they are dramatically safer than flat pedals.

<comment><USER8> What about the flat pedals with metal nubs standing out? I've tried those and sliding on these pedals was pretty much impossible, at least with the shoes I used.

<comment><USER7> I _think_ I know what you are talking about. Basically it depends on the situation. With clipless pedals, your feet are pretty much locked in place without having to think about it. With flat pedals, they are only really in contact with the pedal when you are pushing down.

If you are riding a bike leisurely at say 12 kph down the street, clipless pedals aren't going to be useful and might even get in your way. If you are riding in traffic at 30-40 kph, then they can literally be a life saver. Over 90 RPM it's hard to keep your feet on the pedals. So if you need a sudden burst of speed when in a low gear, then this will make sure your feet on on the pedals. Also if it's raining and you hit a pot hole, for instance, your feet will be on the pedals. This really helps in keeping control.

If you've never tried them before, I highly recommend it. I never once fell off my bike due to clipless pedals, although some people do. Even though some people fall off when they first start, I've _never_ met anyone who preferred flat pedals after trying clipless for a while.

The one place I would _not_ use clipless pedals is if I was doing a lot of off-road stuff. I know some people use them anyway, but if you need to put your foot down regularly, it's pretty difficult IMHO.

<comment><USER9> It depends what kind of off-road you mean, but for downhill MTB clipless use has overtook flat pedals. There has been a bit of a resurgence in the use of flat pedals though with Sam Hill's recent wins on flats. I am still a fan of flats for downhill, but I learned riding on flats.

</comment></comment></comment></comment></comment></comment><comment><USER10> I think the most common myth is that you should get an athletic bike if you want to get into bicycling.

</comment><comment><USER11> This is not a new theoretical result, but it is a new practical reality. Tires are built differently today due to better materials like multi-layer puncture- resistant weaves. It used to be a thick layer of rubber in the middle and relatively weak sidewalls, so the contact profile would be nearly cylindrical. Lower pressures were awful, and the sidewalls would blow out on a bigger tire above 60psi.

There are a few other differences that matter a lot in the peloton. Power transfer is important for holding a tight draft. A pro on 28s will definitely notice a delayed/muted impulse response over 23s. I believe this also affects pedaling efficiency, as any MTB racer on a soft tail will attest. Narrow tires also give much better handling/braking and therefore much faster descents. Fat tires braking gives this weird kick-back that feels like it's tossing you over.

Still, I ride fatties. I love the way they smooth out the road. But they're not necessarily faster.

<comment><AUTHOR> The width is crawling upwards for the pro riders. No sub 25mm tire was used in the Tour de France the last two years, iirc.

I can't see them going over 30mm though. The article underplays aerodynamics in my opinion.

<comment><USER12> Any idea if pro riders increasing their tire size is associated with them also transitioning to disk brakes? Disks solve at least half the problem - braking. (Narrow tires may still handle better in other ways though).

<comment><AUTHOR> Yeah, disk breaks are definitely helping the trend. From the head mechanic of EF Education last year:

«The disc-brake thing has gained real momentum, so on those frames you can certainly run wider tires because there's the clearance for it. I could see it evolving to 26mm or 27 mm as the standard road-racing tire, sure. Why not.»

[https://www.businessinsider.com/tour-de-france-wider- tires-l...](https://www.businessinsider.com/tour-de-france-wider-tires-lower- pressure-faster-2018-7?r=US&IR=T)

</comment></comment></comment></comment><comment><USER13> Makes gravel bikes even more attractive.</comment>


Numerical Modeling [pdf] - <AUTHOR> http://flh.fhwa.dot.gov/innovation/td/geotech/velocity/documents/05_chapter_3_numerical_modeling.pdf

<comment><USER2> I'd love to see some modern tools to make developing models easier.

Most of our models are built on top of already existing models so we have this huge corpus of C and Fortran spanning from mid 80's. I'm partially guilty for this myself my first instinct when it comes to a new project is to reach for C and "pinch" huge chunks of algorithms from existing code (and most of those algorithms probably came from GSL or NR or similar originally). I can knock up a prototype very quickly since I don't have to rewrite heaps of "boiler plate" algorithms but then I have to deal with the pain of fine tuning the C code. Re-factoring C or Fortan is not great. I'd love to be able to use a higher level language.

I'm kind of aware of languages like Python, R and Julia but don't have the time at the moment to learn them.

<comment><USER3> 15 years or so ago I worked at a company that built one of those CAE (Computer Aided Engineering) programs, it was called I-deas (but has since been renamed), and yeah we had tons of core numerical code in Fortran that we just linked in and used. A lot of it came from the 70s and well it worked pretty well.

<comment><USER2> Yeah that's kind of where I'm coming from as well we have these huge collection of Fortran which is basically 'good enough'.

It's only when you hit some niche corner case and you have to dive in to the guts that you start wishing you had something more modern.

</comment></comment></comment><comment><USER4> One thing you don't see as much in the data minjng world, but should, is developing euqations for modeling various business phenomena. This is a bit different from regular statisitcal and machine learning approaches since it lets you ask 'what if' questions and get some idea of what might happen.

</comment><comment><USER3> This is from DOT (US Dept. Of Transportation).

This is part of a larger series.

[http://flh.fhwa.dot.gov/innovation/td/geotech/velocity/](http://flh.fhwa.dot.gov/innovation/td/geotech/velocity/)</comment>


Ask HN: Community to buy pre-made mobile designs - <AUTHOR> Does anyone know of a good community that cultivates premade mobile app designs / templates for purchase?<p>For example, Themeforest has many themes and there are communities where designers can submit their logo designs for purchase. Is there a similar community for mobile app designs? <comment><USER2> [http://graphicriver.net/](http://graphicriver.net/) has some, mostly for games.

</comment><comment><USER3> [https://myapptemplates.com](https://myapptemplates.com) \- Disclosure: I founded the site.</comment>


The beginning of the end of Google, and why Apple is the creator's friend - <AUTHOR> http://www.guardian.co.uk/technology/pda/2011/jul/27/google-apple-html5

<comment><AUTHOR> The era of search is not over. It's just getting started.

<comment><AUTHOR> Other thoughts...

"Every word on every Google page is in the same typeface. No brand images appear other than Google's. This action essentially neutered the production values of every high end content creator."

During the 90's portal wars, search companies like Yahoo filled search result pages with brand images. The idea was to keep the user engaged on the search portal for as long as possible.

Then Google came along and said, hey, our goal is to actually get users off the search result page and to their content as fast as possible. That is why I use Google search. It gets me to high end content faster than anyone else can. IMO, this doesn't decrease production value of the content, it actually makes it better.

"Long term, focus on HTML5. The sooner you commit to HTML5, the more likely you will produce something of economic value."

FWIW, Google's platform is the web, and they are really advocating and pushing the HTML5 spec. For the past 3 years, Google Chrome has been leading the way in this area: <http://html5readiness.com></comment></comment>


Craigslist sent a cease-and-desist to my newborn startup - <AUTHOR> http://blog.swappel.com/blog/swappel-craigslist-cease-and-desist-survival-guide/

<comment><USER2> I stood pretty strongly with Craigslist on the whole PadMapper thing, because it seemed like they were in the right.

On this, I don't really think so. I'm not sure why I feel that way - they only real difference is the side of the user equation, but it seems like this move is more aggressive stifling by Craigslist, whereas the former was more protective.

<comment><AUTHOR> Well that's certainly how we felt too. As time goes on it's becoming more obvious why they are getting so aggressive. I believe it's because they feel threatened. People are starting to compete with them like AirBnb etc and I think their backed into a corner.

We literally told their lawyers that we would change anything they wanted about the feature so it would provide 100% benefit to Craigslist and our users instead of driving us traffic. That wasn't enough apparantely

<comment><USER2> I suppose the only real alternative, then, would be compete with them on the network effect.

Good luck.</comment></comment></comment>


Benford's law: statistical technique for sniffing out fraudulent data - <AUTHOR> http://mathworld.wolfram.com/BenfordsLaw.html

<comment><USER2> <http://searchyc.com/submissions/benford?sort=by_date>

<http://news.ycombinator.com/item?id=1429336></comment>


Amazon drivers "work illegal hours" - <AUTHOR> http://www.bbc.co.uk/news/uk-england-37708996 <comment><USER2> Some highlights:

      Drivers for agencies contracted by the internet giant told an
      undercover reporter they were expected to deliver up to 200
      parcels a day.

      Amazon Logistics requires agency drivers to be self-employed,
      and therefore not entitled to the minimum wage or employment
      rights like sick pay or holiday pay.

      Tonia Novitz, professor of labour law at Bristol University,
      said in her opinion drivers contracted by AHC should not be
      classed as self-employed, because they do not determine their
      own routes, days of work or rest periods.

      In a statement Amazon said: "As independent contractors of our
      delivery providers, drivers deliver at their own pace, take
      breaks at their discretion, and are able to choose the
      suggestion route or develop their own."

It seems so easy to get away with anything.

<comment><USER3> So much in the name of free market goes on. If IT industry will be allowed to progress unchecked, natural monopolies will emerge and it won't be good for consumer,smaller businesses relaying on big boys, and employees. But seems like free market cool aids is being served and drunk happily by the world.

On the contrary strong labour Laws and high productivity rate in quite a few European countries is a fact ignored conveniently by power greedy moguls. If left unchecked, they will happily move us back gloomy dawn of Industrial Age when it was ok to force workers to toil to death.

Adam smith didn't dream of monopolistic and unregulated market but only one part of his capitalism theory is cherry picked. Unregulated capitalism is a recipe for disaster.

Edit: fixed typos.

<comment><USER3> Edit 2: Don't understand the down votes. Some explanation will help.

<comment><USER4> Honestly? You are promoting a policy of the traditional left (I say traditional left because the overton window has moved) on a forum that has a significant number (if not outright majority) of right/libertarian leaning people.

In theory that shouldn't get you a downvote but it does, much like reddit where you aren't supposed to get downvoted for an on topic post but you do if people disagree with you.

There has been a lot of talk recently of self re-enforcing echo chambers, ironically enough on here which is one of them.

Bias exists in all communities with no exceptions as far as I can tell.

For what it's worth I was arguing that programmers need to either unionise or have a professional chartered body (like Accountants, Lawyers and Engineers) decades ago, the writing has been on the wall for quite a while.

Getting programmers to agree what that would look like though would be a massive exercise in "cat hearding".

Unions aren't perfect but the abscence of Unions isn't perfect _either_ , few things are and the question has to be "broadly, what is better for most people" and I think that is either _really strong labour laws_ or _unionisation_.

Historically unionisation has occurred most when there is an abscence of strong labour laws (in the US and the UK this was certainly true, the reason a 40 hour work week is considered "standard" is because of unions (and Henry T Ford arguably)).

<comment><USER5> Yeah, I'm finding it really quite interesting to watch my total karma vary by 5 to 10 points as people read my comments. Maybe I should graph it on munin, would be interesting.

In regards to a union, perhaps that or a guild would be ideal, similar to the other major unions in the US. Strong labor laws generally do not get passed in a vacuum, often its at the behest of the union that good labor laws get passed to protect workers.

I'm a very pro-Union person myself, I've seen & experienced what an employer with total power and a divided workforce can do, and you are essentially powerless. The true power of a union is the ability to organize with your coworkers to walk out and picket your employer to fight for better working conditions & proper pay, which is a powerful tool to level the playing field.

Otherwise, you are a replaceable cog in the machine to your employer, since they can generally handle a fair amount of churn, just not a work stoppage.

<comment><USER6> You know you got some seriously good thought when your karma starts to swing like that. The opposite is, all of my posts with more than 30 points are stupidly obvious stuff that nobody would miss, but were slightly funny on the context.

<comment><USER5> Sure, what I write may be good, but it is polarizing. Its much easier to get karma writing the obvious answer that OP may not know as compared to writing about controversial things like worker protections & how their destruction hurts everyone, or how Soylent is unhealthy and we know very little about nutrition overall, let alone anywhere near enough to try to engineer a product to replace food entirely.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> This seems to be a common trend among tech companies. Misclassify employees,pay them a less than is legal, design the program to force them violate a bunch of laws, all the while telling them not to violate laws. Then claim you can't control them because they are contractors. Maybe when you get caught pay a token fine admit no wrong doing and reclassify the employees or shut the thing down.

<comment><USER8> I am a automotive tech worker. i dont know how a lawyer determines h1b minimum wage but i get paid a lot less than Americans in my company who dont even have a masters degree. Yes its very easy to trick the laws

<comment><USER9> Does one really have to have a masters degree to be a automotive tech? In any case at least you can change employers with reasonable ease, not like the workers on L1 visa who can either put up or pack the bags and go home.

<comment><USER8> i should have said automotive engineering

</comment></comment></comment></comment><comment><USER10> Are we glossing over the fact that none of these drivers work for Amazon?

> A BBC reporter got a job with AHC services

I think the real issue at play here is the use of contract workers to skirt labour laws. Perhaps governments need to stop differentiating between part time and full time workers given the assumption everyone needs to make a living wage some how, even if it is through multiple "part time" jobs.

Just throwing out thoughts.

<comment><USER11> The UK is already doing this, first with Uber, but also several, large, local delivery startups.

The tax loss is significant, so I don't expect the situation to last very long.

<comment><USER10> What's causing the tax loss? Businesses fleeing the country?

<comment> jon-wood People not paying income tax and national insurance - they're classified as contractors, so technically they're responsible for their own deductions, but I'd be very surprised if many of them are actually paying anything.

<comment><USER11> That's what I was thinking of, but it's probably also that they simply aren't paying as much in wages.

The older companies at least pay minimum wage + overtime when needed.

<comment><USER10> Makes a lot of sense. I didn't think about the forgone taxes. Probably quite significant.

</comment></comment></comment></comment></comment></comment><comment><USER12> Reading the article I understand that the agency who subcontract drivers for Amazon is making them "work illegal hours", not Amazon itself.

Now I am not saying that Amazon is not doing that, I am just saying that no evidence is presented on the fact that Amazon is aware of what is happening with the drivers.

<comment><USER13> I agree but it wouldn't be a headline if the title did not include a well known name like Amazon.

<comment><USER14> Market power gets you headlines, so it isn't exactly surprising that there is overlap between abusive labour practices and making the news.

</comment></comment></comment><comment><USER15> Engineers are not immune to such wage-fixing practices

[https://en.wikipedia.org/wiki/High- Tech_Employee_Antitrust_L...](https://en.wikipedia.org/wiki/High- Tech_Employee_Antitrust_Litigation)

even family-oriented companies like Pixar worked against their employees

[http://www.cartoonbrew.com/artist-rights/animation-wage- fixi...](http://www.cartoonbrew.com/artist-rights/animation-wage-fixing- lawsuit-explainer-community-131812.html)

</comment><comment><USER16> It's interesting how almost everyone here seems to be assuming that Amazon is at fault, and accepting the reporter's story as complete, accurate and unbiased...

<comment><USER17> Do you have any reason to suggest that it isn't?

<comment><USER16> Yes... the simple observation that everybody has an agenda. I don't consider any news source to be worthy of being taken at face value. I feel we should be at least somewhat skeptical of, well, pretty much everything.

</comment></comment></comment><comment><USER18> Big Tech needs to start receiving the same level of scrutiny Big Banks do. Trump wants to crack down on Amazon -- a good first step.

</comment><comment><USER19> The next time you buy stuff with free shipping from Amazon Prime just remember some driver gets screwed on their wage.

<comment><USER20> While you're right in quite a few areas, I have only had one package delivered by OnTrac. Literally everything else is USPS or UPS (and maybe one FedEx)

</comment></comment><comment><USER21> I read a great piece recently that explains why these big tech-cum-delivery companies treat their drivers so poorly. Worth checking out: [https://medium.com/@review/the-food-delivery-death- star-85f9...](https://medium.com/@review/the-food-delivery-death- star-85f9a121313)

<comment><USER22> A great read indeed, but I don't think it explains anything. All it left me with were more questions: "why, oh my god, why???"

In the end, all those examples (except forkable?) are just glorified directories. They also do payment, which makes them so attractive for investors (finger in the real money stream, not just hoping for crumbs tossed to yet another ads service), but also comes with the responsibility to think about non-fixed cost, something that much of the startup bubble seems to have forgotten that it even exits. I hope that I'm the end, lean directory specialists, payment specialists and so on will keep the upper hand. Food delivery is not Amazon, where even if I order from marketplace I would love to forget that I'm not really dealing with Amazon. In food delivery, even if I do the transaction through an aggregator service, I'm all interested in the individual kitchen and would ideally about the aggregator service. Buying on Amazon marketplace I would prefer to get the goods from Amazon directly instead of some nameless seller, buying from a food aggregator I would prefer it if the transaction convenience would be available directly from the individual kitchen.

</comment></comment><comment><USER23> The whole "contract only" work environment hearkens back to the 1920s and 30s.

</comment><comment><USER24> Walmart does this all the time in Asian markets.

</comment><comment><USER25> Amazon is supposed to make money with innovation, not exploitation.

</comment><comment><USER26> Nobody is forcing those drivers to work for Amazon. If there are people willing to work in described conditions, that should be nobody business except involved parties.

<comment> jon-wood > If there are people willing to work in described conditions, that should be > nobody business except involved parties.

Involved parties like the person who gets hit by a van driven by someone who hasn't had a break in the last 14 hours, and is paying more attention to the device telling him where the next delivery is than the road.

<comment><USER26> Most countries have a law regarding dangerous driving.

<comment><USER27> Why should they have laws against dangerous driving? If someone runs into someone else, that's an issue between the two of them that should be resolved with pistols at dawn, the way that gentlemen used to do it.

/s

<comment> wav-part There is a difference between a law 99% consent on and a law 33%.

</comment></comment></comment></comment></comment><comment><USER5> Is this news? They do this right in their hometown, wage theft by Amazon is an institution. They "ask" employees to come in an hour or two early for a shift, and stay a few hours late.

Unless the BBC is trying to organize Amazon workers to hit the streets and fight for better working conditions and/or a union, this isn't newsworthy or noteworthy.

<comment><USER28> To be honest, how does Amazon attract talent despite a pretty universal reputation of being a horrible place to work.

I'd rather work for Microsoft or big blue than Amazon any day.

<comment><USER5> At least here in the states, workers rights are very poor, and Amazon will hire nearly anyone. I know that they were only offering homeless in Seattle & Bellevue nigh shift hours as a temp employee, which meant they could not live in a shelter or rehab since they would start work a few hours after the curfew. Really a great helping hand Jeff, throwin' em to the wolves!

<comment><USER29> That's one way to look at it, but for context, what other firms were offering work to the homeless?

<comment><USER30> Amazon also has some undeveloped land that they have turned over to an organization that runs homeless shelters to provide housing for the years in between when the land is developed.

But yes. Amazon is a terrible place to work and we are all just too dumb to quit. Oh, and we all hate homeless people, I guess.

<comment><USER5> Sure, they occasionally help out Mary's Place and the like, not disputing that. Many other companies do so too.

From what I've heard from Amazon workers, from drinking with them on Cap Hill, or from my own neighbors who work there, or my Cousin who was a higher up there & left, or from my friends, on average its not a great place to work. There _are_ good teams, but compared to what I've heard from IBM or Microsoft employees it sounds worse than working at either of them, and on par with working at Adobe Seattle over in Fremont.</comment></comment></comment></comment></comment></comment>


Men speak 7 times more than women in adverts - <AUTHOR> https://www.thememo.com/2017/06/23/cannes-lions-2017-sexist-advertising-sexism-marketing-awards-2017/ <comment><USER2> Females drive 70-80% of all consumer spending[1]. I can't think of a much more market-driven, focus group and A/B tested industry than video advertising.

Hmmm.

[1] - [https://www.forbes.com/sites/bridgetbrennan/2015/01/21/top-1...](https://www.forbes.com/sites/bridgetbrennan/2015/01/21/top-10-things- everyone-should-know-about-women-consumers/#5dbeb2036a8b)

</comment><comment><USER3> For those that may be interested, last year a very large analysis was done on screenplays to see which gender had the most lines in movies. You can probably guess the results, but if you're curious, here it is: [https://pudding.cool/2017/03/film- dialogue/](https://pudding.cool/2017/03/film-dialogue/)

<comment><USER4> Love this kind of well made data visualization, at least for me it packs a powerful message.

I wish the OP article had done something similar. As is, it basically just hand picked percentages from separate sources and paired them with vague calls to action leaving me wondering what the raw data looks like.

</comment></comment><comment><USER5> . . . in "adverts" that won or were near winners in a film contest.

 _The groundbreaking research used automated technology to analyse 10 years of Cannes Lions Film, Film Craft winners and shortlists, and revealed a stark underrepresentation of women in advertising._

</comment><comment><USER6> So what does this imply exactly?</comment>


Show HN: Spacegray — A Hyperminimal UI Theme for Sublime Text - <AUTHOR> http://kkga.github.io/spacegray/ <comment><USER2> Looks very neat. I'm not sure about the green color for the quick-find popup. I'm used to more contrast there. Otherwise, great work.</comment>


4chan Founder Unleashes Canvas On The World - <AUTHOR> http://techcrunch.com/2011/01/31/4chan-founder-unleases-canvas-networks/ <comment><USER2> It sounded interesting so I clicked through to the actual 'Canvas' website. I am a little disappointed to see that the site is set up to require facebook for requesting invites.

It seems like we are getting closer and closer to facebook being our single online "ID Card" and I'm more than a little afraid of that. I don't think facebook is evil, though I know some people do, I just think they have a more caviler attitude towards privacy than I'd like. I hope we end up with a more open / distributed way to authenticate and identify ourselves...

Maybe open ID could catch on if facebook became an open ID provider?

<comment><USER3> In this case it might be possible that he just doesn't want /b/ to turn it into a giant ocean of puke right from the beginning.

<comment><USER4> Most of the people on /b/ who would be a problem have facebook trolling accounts, anyway.

</comment></comment></comment><comment><USER5> That looks awful, it looks like 4chan but trying to appeal to the facebook crowd. Where did the 625k go?

<comment><USER6> "The Facebook crowd" is...everybody.

<comment><USER7> \-- except me

<comment><USER8> Congratulations, you are a very special snowflake, in a bucket of fairly non- moneytizable snowflakes.

</comment></comment></comment></comment><comment><USER9> Anyone have a beta invite?

</comment><comment><USER10> I think it's really impressive - the design is fantastic, especially for a startup whose site just launch.

I, too, think Facebook is a bottleneck to keep the tossers out, but I hope Poole/moot finds another way to throttle abuse and trolls eventually.

</comment><comment><USER11> so .. am i right in saying that it's a SFW + a more PC version of 4chan with a few elements similar to say, buzzfeed.com ?

</comment><comment><USER12> Am I a total moron, or is the signup site broken? I've tried my facebook email address, the email address I used to sign up for an invite, my facebook username, and a username of my own choosing, and in all cases, it tells me "Connecting with Facebook is required."

</comment><comment><USER13> I feel like this will also degenerate into another cesspool. What value is this to society?

<comment><USER14> It's probably less of being valuable to society and more of finally monetizing the culture he helped create.

<comment><USER13> I can certainly appreciate that. Just seems like he's a pretty talented guy who could be developing something of value. Just my humble opinion! :P

<comment><USER15> Telling someone that what they choose to work on is not of value is very condescending.</comment></comment></comment></comment>


My Stutter Made Me a Better Presenter - <AUTHOR> https://medium.com/@joshdholtz/my-stutter-made-me-a-better-presenter-409d165fe0e4

<comment><USER2> In an age of information, giving the student a choice is a really smart move!</comment>


99 USD micro notebook gets Debian support - <AUTHOR> http://sharism.cc/2010/05/02/along-comes-debian/

<comment><USER3> This is wonderful, and I want to want this, but this seems like a fine RMS torture device. A 320 pixel screen, divided by 80, is... 4 pixels per character. Time to bring out the old HP-49G mini font. And I find myself thinking, "Oh, I can plug in an external keyboard." But that wouldn't be copyleft hardware. But I want to want this, and I want to get this. Imagine that! My own little copyleft computer, that lives in my pocket and only talks to me, and doesn't talk to any of the bad computers.

Imagine the shock, when you're listening to music on your headphones, and your friend asks, "What are you listening to?" And you pull this _thing_ out of your pocket.

By the way, it's slightly hard to find, so here's a closeup of the keyboard: <http://sharism.cc/wp-content/uploads/2009/12/kbd1.png>

<comment><USER4> They leave the place for alternative layout (i.e. Russian) on the tiny keys, nice!

Other than that, can anyone explain why RMS favors MIPS-based Loongson CPU and these guys - MIPS based Ingenic XBurst ? How are these CPUs any more open than any other (i.e Intel, or any ARM core)

<comment><USER5> As far as I know, RMS doesn't care, it's just that by commercial accident, systems that are particularly open in other ways have tended to be MIPS based.

</comment></comment></comment><comment><USER6> Here's a review of the nanonote:

[http://www.linux.com/news/embedded- mobile/netbooks/296251:a-...](http://www.linux.com/news/embedded- mobile/netbooks/296251:a-review-ben-nanonote-gets-small-with-embedded-linux)

</comment><comment><USER7> I almost bought one, but they don't ship to Ireland, so I tried the EU distributers page. To purchare it, I need to create an account - <USER2> special there - but.. why do they need my gender and date of birth to buy stuff from them?? So.. nope, not buying it now.

<comment><USER8> Where does it say what countries they ship to? I couldn't see any such information on the site.

<comment><USER7> If you try to checkout, it will only display shipping options if they ship to the country in your address (I tested it, with Ireland it disn't display options, but had a link to the page; with the US it let you choose from two fedex options and gave price of shipping).

If you go to the distributer page, it links three distributers: EU, china and asia.

On a side note, I emailed the EU distributer and the guy was pretty helpful and friendly and said he'll consider removing gender and date of birth as compulsaroy options. If he does, I'll probably buy one.

<comment><USER8> Ah, thanks. I wonder why they list Ireland in the country selection if they won't ship there.

<comment><USER7> They list every country in the country selection for the addresses.. future expansion I guess...??

</comment></comment></comment></comment></comment><comment><USER9> I expect this thing has incredible battery life, but it doesn't seem to be on the website.

<comment><USER4> Maybe not; the battery itself should be tiny.

I think they just never got around to measuring battery life.

<comment><USER9> Alas, you're right. I get 2.5-3.5 hours from my eee PC's 4400mAh battery; they have a 850mAh. Even though they have a much smaller screen and slower CPU, which will draw less power, a x5 smaller battery is definitely tiny.

Still, to get it down to 126 grams is amazing (incl. battery) <http://sharism.cc/specs/> My eee weighs x8 (1000 grams).

</comment></comment></comment><comment><USER5> I have one, they're a good toy.

I haven't managed to do anything useful yet, although as I bought it mainly to have a small device that runs "vi" I'm happy.

</comment><comment><USER10> A slightly modified version of the hardware could make a great graphing calculator...</comment>


Google Pursuing a Return to China - <AUTHOR> http://www.wsj.com/articles/google-negotiates-a-return-to-china-1441408051

<comment><USER2> Same stuff, without paywall. I hate when people link to paywalled sites. [http://business.financialpost.com/fp-tech-desk/google-inc- se...](http://business.financialpost.com/fp-tech-desk/google-inc-seeks-to- head-back-to-china-this-fall-after-five-year-absence-report)</comment>


Build open source projects without configure script - <AUTHOR> https://nanxiao.me/en/build-open-source-projects-without-configure-script/ <comment><USER2> I've been a C dev for a long time but this bullshit still makes me want to repeatedly stab myself in the eye with random sharp objects. For most projects you get away with just running autoconf, sometimes you need autoreconf, then there is libtoolize, random arguments you might need to pass, aclocal which was said to go away soon since two decades or so. I've looked at the Wikipedia page so many times trying to finally grasp this but simply running all the related commands with random arguments until it works is much easier.

Cmake is referred to as bloated and admittedly its DSL is awkward and annoying but just using it when you want to compile something is straight forward.</comment>


In memory of Aaron Swartz: a collection of PDFs from PDFtribute - <AUTHOR> http://edward.io/pdftribute/index.php

<comment><USER2> An important thing to remember, is that many journals already permit self- archiving of publications (ie. uploading a pre-print to a personal server or an institutional repository). In fact, about 70% of large publishers automatically allow some form of self-archiving, and for the others, many have been successful including a copyright addendum with the copyright-transfer document, retaining some rights (<http://scholars.sciencecommons.org/>). FAQ on self-archiving (<http://www.eprints.org/openaccess/self-faq/>).

At my university, we keep running workshops, there are student staff in the library willing to help upload articles to the repository if you just e-mail them, etc, but still, most academics won't take the five minutes to do this, even if they have the right.

This doesn't mean that the academic publishing system shouldn't change, it absolutely should. And there's also a lot of value in "liberating" academic publications that would otherwise not be free. But I hope people would become more aware of what is already possible, and legal!

<comment><USER3> Agreed, a lot of people don't know their current rights. One major reason is because that information is typically buried in some unintuitive legalese deep in some publisher's website. To work around that problem... this is a very useful database that will allow you to easily check what a journal/publisher allows you to do with your publications: <http://www.sherpa.ac.uk/romeo/>

Most in my field at least allow you to put postprints (the final version of the paper, but not formatted by the journal's typesetters) online, although there are a few stragglers who don't let you do anything.

</comment></comment><comment><USER2> As long as these PDFs are exposed publicly (and linked to, which a tweet with or without #pdftribute will take care of), they will mostly be indexed by Google Scholar, which does a decent job of extracting metadata using heuristics etc.

Of course, it would be much better if people started embedding machine- readable metadata in PDFs (totally possible, see for example <http://code.google.com/p/pdfmeat/>), and if there was some agreed-upon format for bibliographic microformats, that could be embedded in websites listing articles.

We also eventually need an open alternative to Google Scholar. GS is great, and I use it every day (and love that you can output BibTex for example), but it has no API (and will never have one because of deals with publishers), actively resists automatic access, is a black-box in terms of how data is gathered, etc. Think of "Open Scholar" to Google Scholar as analogous to OSM vs GMaps. OSM might not look as pretty, or be as consistent in the beginning, but it enables a whole range of applications that GMaps doesn't. (And at least GMaps does have a fairly good API, even if it charges for overuse, GS has nothing).

(These are just some thoughts I've made, as I've been experimenting with an open scholar workflow, trying to share as much of the "byproduct" of the research, including rich notes and summaries, my own bibliography with links to OA pubs where they exist etc: <http://reganmian.net/wiki/researchr:start>).

Another thing I've found working on my project, where I try to expose OA links to as many pubs as possible, and regularly rescan to see if they are still available (and still OA), is how quickly documents disappear... Hosting on private pages is convenient, but fragile. Ideally, people would upload papers to university repositories, subject repositories like Arxiv.org, etc.

<comment><USER4> Thanks for contributing to this thread - I've been looking for something like this for years!

<comment><USER2> Let me know if you want to discuss further - I've lot's of ideas, but not able to make most of it happen by myself. For example, here are a bunch of (unfinished) notes about an open alternative to Google Scholar, and open social API to share citations/notes, etc. <http://reganmian.net/wiki/ideas_for_scrobblr>

</comment></comment></comment><comment><USER5> Cool effort.

But ... its a score to jstor. It's unorganized.

But ... science if full of noise and crappy publications these days anyway. Lots of ways to do the same thing, unprooven and only exists because everybody has to publish to stay relevant.

Now: How to really improve science ? My suggestion: A big python framework for each field of study. That has implementations of the real algorithms and models for comparison and benchmarking and even real life implementation.

See as example in the robotics field, ROS ( Robotics Operating System) . Ros is like a basis glue framework where universities and individuals can publish their code. Its decentralized, it has simulators so that scientists do not need to own the physical robots and can even compare(diff) results and algorithms in a very fast way.

The simulator can have a embedded browser + wiki + quora that explains X.

evolution: physical paper -> PDF -> simulator.

<comment><USER6> It's not meant to be a competitor to JSTOR, as much as this is a statement in honor of someone.

A framework like that would be awesome, but that has a different meaning from the collection of personal pdf posts/uploads each individual on Twitter contributed.

<comment><USER2> For someone who has been working on OA and scholarly publications for a few years, it's a bit tricky to enter these kinds of debates. On the one hand, I want to respect Aaron's legacy, and am very touched by the spontaneous and organized moves to honor him. On the other hand, I am very interested in these issues, and love discussing them, seeing how we can do things better.

For smogzer, there is some interesting research on how knowledge from the research literature can be better represented. For example using concept mapping, see this great paper by Simon Buckingham-Shum (who has many others): <http://oro.open.ac.uk/6463/1/kmi-04-28.pdf>. Anita de Waard has given many presentations on semantic and executable papers, for example [http://www.slideshare.net/anitawaard/executing-the- research-...](http://www.slideshare.net/anitawaard/executing-the-research- paper).

</comment></comment></comment><comment><USER7> Cool stuff, have you seen this yet?

<http://pdftribute.net/>

<comment><USER8> I think this website is different from PDFtribute.net because it actually collects and stores the PDFs rather than just having links to the Twitter posts.

From the 'About' section of the website, you can see it uses PDFtribute.net to help scrape links.

<comment><USER7> I missed that part (the usage of pdftribue.net for scraping), thanks!

</comment></comment></comment><comment><USER8> Looking through all the files that are uploaded, there are a lot more non- English documents than I expected; I randomly clicked on 2. It's amazing how there is support from around the world.

</comment><comment><USER9> It is a great loss to know such an entrepreneur has died because of legal problems. I, myself, have faced similar been in a similar situation. I feel that Aaron was a martyr for the open source of academic papers. Unfortunately he will not see his impact on this modern and technology dependent world.

R.I.P. Aaron Swartz!

</comment><comment><USER2> Nice short article: 10 things you can do to really support Open Access: [http://phylogenomics.blogspot.de/2013/01/10-things-you- can-d...](http://phylogenomics.blogspot.de/2013/01/10-things-you-can-do-to- really-support.html)

</comment><comment><USER10> Nice idea!

Also, some metadata aggregation (title, author, tags, date published) capabilities wouldn't hurt anyone.

</comment><comment><USER11> in memory of Swartz, 1 million ebooks for free download

<http://ebookoid.com></comment>


Distro Chooser - <AUTHOR> https://distrochooser.de/?l=2 <comment><USER2> 1/25 suitable after only 3 questions. I think the selection might be flawed.

Anyway, any reasoning that divides distros between easy to use and hard to use is nonsense. Just because I'm used to Linux doesn't mean Ubuntu isn't the right distro for me. The questionnaire logic goes: well, you're capable of running this distro so you should run this distro.

Reality is if you're a developer you either use RHEL because that's what corporate chose or you use Ubuntu because that is the platform chosen by library devs and unless you use it as well you will waste time sorting out issues.

If you're a user then it doesn't matter what distro you use, they're all fine. If you want to play games then your best bet is Ubuntu.

<comment><USER3> If you're a user then it doesn't matter what distro you use, they're all fine.

Not at all true. Lots of people prefer Mint, for instance. I'm one, and one reason is for me the Ubuntu gui is just awful. Or what if you need really high security?

One of the main things that scares people off of Linux is the hundreds of distributions. Telling them it doesn't matter which one they pick isn't going to help with this.

<comment><USER4> > Lots of people prefer Mint

They shouldn't, their security story is atrocious.

[http://www.techrepublic.com/article/why-the-linux-mint- hack-...](http://www.techrepublic.com/article/why-the-linux-mint-hack-is-an- indicator-of-a-larger-problem/)

<comment><USER5> God damnit... Gonna have to switch back to Debian again -_-. And I was so liking Linux Mint MATE

</comment></comment></comment></comment><comment><USER6> I like all of the questions it's asking, and appreciate the guidance. One thing that would really polish this off, though, is to put some extra time into the results page.

The explanations of what distinguishes each distribution are, to me, a wall of Linux jargon that is all familiar (Slackware was my primary OS for a while in the late '90s and early '00s), but also largely meaningless. From a user perspective, I'm interested in a tool like this precisely because I've got no idea whether I should prefer GNOME or Unity or KDE nowadays, and I don't really care to take the time to sift through the flamewars to find out. So when I'm dropped into the results and the top results are five different flavors of Ubuntu distinguished by what desktop environment they use, and the explanatory text for each largely boils down to, "Portmanteau-of-Ubuntu- and-$DesktopEnvironment is Ubuntu with $DesktopEnvironment", I'm left feeling like the tool has taken me on a short ride around the neighborhood and then dropped me off exactly where I started.

</comment><comment><USER7> asking for the preferred package manager is a bit too much of a giveaway

<comment><USER8> Yes, it is. Having said that, the package manager is usually associated with a repository - e.g. most distro's using apt will give the user access to the Debian and/or Ubuntu repositories. Perhaps repository size/philosophy/etc. is what the question was really after. If that is the case, it ought to be reworded though.

</comment></comment><comment> k-mcgrady Pretty cool. I've dipped my toes in Linux over the years with Ubuntu being the distro I used longest. I tried it recently and wasn't too impressed with the UI. This was suggesting Mint to me and after a quick look on the site I may give it a try. I always liked KDE too and it suggested Kubuntu which might be worth looking into as well.

As for the site you could make the questions shorter/more easily readable. A radio button instead of a hyperlink would be much more intuitive for selection (and possibly auto-advancing to the next question once an option is selected).

<comment><USER9> > I always liked KDE too and it suggested Kubuntu which might be worth looking > into as well.

Try KDE Neon, its Ubuntu based.

</comment></comment><comment><USER10> I thought the recommendations are excellent for me.

Plenty of useful feedback from other users here. The one idea I'd develop from what one other said was improving the results page descriptions. You could actually use a couple of question responses to mildly tailor the descriptions - eg, a less experienced user could have text with a lower level of assumptions made and a more experienced user would get responses more relevant to where they were.

Finally, I'd have preferred to know it was a probabilistic recommendation up- front (as was initially concerned that I'd rule out choices with some responses)

</comment><comment><USER11> Why is everyone suggesting NixOS to me?

<comment><USER12> Haha yep.

It put Arch (what I use) first, immediately followed by nixOS for me.

I'm really tempted to install and play with it, the premise sounds awesome, however time is not infinite

<comment><USER13> Same for me, although I currently use Antergos which is (kind of?) based on Arch, third on the list for me. Was already wondering if I should try plain Arch Linux or NixOS sometime, will probably give both of them a try soon.

</comment></comment></comment><comment><USER8> Neat tool! Still needs some polish though:

1) The English translation feels a little bumpy (as compared to the German).

2) The presentation of the various distros should be a little more considerate of newbies (see bunderbunder's earlier comment).

3) A few questions need rethinking, especially the one on the target manager (see blueside's comment) and the one about the community.

Otherwise: great idea, concisely executed.

</comment><comment><USER14> I bit odd not to ask for WHAT I care a lot. E.g. security, updates, age of packages, support, etc.

<comment><USER11> Security is hard to measure. Age of packages is one of the questions. Support is also the topic of several questions (paid/wiki/community..).

</comment></comment><comment><USER15> Are there any Distros that can be installed persistent to a USB on Windows, that boot UEFI? I formerly used Puppy Linux, but the UEFI installation didn't work with Rufus.

<comment><USER16> Unetbootin will create bootable USB drives with persistence for Ubuntu-based distros. Otherwise, with a big enough drive you could just do a normal install to it.

<comment><USER15> I tried Unetbootin with Linux Mint, but it didtn't work with uefi. The full installation after the live boot may work.

</comment></comment></comment><comment><USER17> That directed me to the exact distro I'm using. Nice. :D

<comment><USER18> It seems a bit odd to me to ask whether the user has ever used a Linux system before, then ask which package manager they'd prefer (without an "I don't care" option).

I chose pacman, as I'm already using Arch, yet the best match for me was Debian with 87%.

<comment><USER19> You can signal "I don't care" by pressing the Next Question button without selecting an answer. Not obvious though.

<comment><USER13> It does say "You can leave questions unanswered" at the start, which can be seen as saying it's an "I don't care" option.

</comment></comment></comment></comment><comment><USER20> Looks useful but I found it was too much effort to fill out. I think you could easily reduce the amount of text per question e.g. the first one could be rewritten to something like this:

I'm good at fixing computer issues myself 1) Agree 2) Disagree

Also, if you move on to the next question automatically after an answer is given instead of having to press "next" the process would be a lot quicker.

<comment><USER21> > Looks useful but I found it was too much effort to fill out

The primary purpose of this tool is to help someone choose an OS, which is a significant decision for many people. If a 5-10 minute survey to help answer this question is too much work, I don't think you are the target audience.

<comment><USER20> > The primary purpose of this tool is to help someone choose an OS, which is a > significant decision for many people. If a 5-10 minute survey to help answer > this question is too much work, I don't think you are the target audience.

Why make something more effort than it needs to be...? You could use that argument to justify needlessly laborious processes for lots of things. Keep in mind also that the user might be skeptical the advice they get at the end is any good so if it looks like too much work they may give up.

<comment><USER22> He's arguing it isn't more effort than it needs to be, and that carefully reading and evaluating questions about your operating system usage are standard when selection an OS.

</comment></comment></comment></comment><comment><USER21> I was a bit skeptical while answering the questions, but the recommendations were spot-on and I gave them 5 stars. Top result was my current distro, NixOS, which I wasn't expecting because this is a fairly uncommon distro. I appreciate how thorough the list of distros seems to be.

</comment><comment><USER23> It's about right. It picked Slackware, which I used for years. I'm surprised how far down on the list Arch was, as I'd used that too...

I just wish BSDs were an option here (I know, I know, not the goal here). I'm bullish on OpenBSD.

</comment><comment><USER24> The proposed distro (Debian) was spot on for me. You could probably split the questionnaire between people who want to try linux for the first time, and people who want to try a new distro.

</comment><comment><USER25> It just pinpointed Debian, however I think asking about the package manager creates too big of a bias for a "chooser".

pick: next button messes with the browser history.

</comment><comment><USER26> It guessed Xubuntu. I'm using Xubuntu at the moment. How it then jumped from that to Slackware...damfino.

</comment><comment><USER27> rolling versus non?

</comment><comment><USER28> Seems to be broken without JavaScript turned on?</comment>


Design/code reviews in a startup - <AUTHOR>

I'm working with 5 other developers in a startup-like environment (within a large defense company actually... go figure!).  Until now our code base has been small enough that we've been able to get by without design and code reviews.  However, our code base is growing as is our team.
There are several formal processes for doing this (Fagan inspection, over the shoulder, tool-assisted, etc.)  A developer at MS even came up with a lightweight inspection (url: http://www.stickyminds.com/getfile.asp?ot=XML&id=7152&fn=XDD7152filelistfilename1%2Epdf).
The problem I see with a lot of these processes is that they interrupt your work flow and decrease productivity.  I don't want to take an hour out of every other day to go through these reviews, but would it be too much to spend half a day every other week doing these reviews (and what would be the best day for this -- Friday?)
I think it would be great if we could get a discussion going about what others in similar situations have tried and what works and what doesn't?
Thanks all!! <comment><USER2> Every formal code review I ever sat through was a painful experience that went on for longer than planned, covered way less code than planned, resulted in minor improvements at best and had zero long-term impact on the quality of the codebase.

Of the many reasons for this, I'll mention one: by the time a code review takes place, the key design decisions surrounding that part of the system have typically already been made. To do a retroactive redesign during a meeting is out of the question; that would be more work than writing the original code in the first place. So all people end up doing is scrutinizing tiny things like null checks. I'm not saying those don't matter; of course they do, but they're only a small part of making good code.

So the code-review approach boils down to saying "do the big stuff on your own and look over the small stuff together". That seems backwards to me.

(By the way, I'm talking about commercial projects. There's an entire literature around formal inspections, as you know, and good results have been said to be obtained with them, but if you want to go that route you're talking about heavy-duty process control, slowing development to a glacial pace that is unworkable for most commercial software.)

I've personally observed two things that do work. First, pair programming. It's not for everybody (the community here, for example, is largely derisive of it), and I'm not arguing for it in general. But there's no question that it does what code reviews are supposed to (but don't).

The other thing I've observed to work is to write the code individually but review it on checkin. That's how we do it on my current project. We'll either watch the repository and look over changes as they are committed, or email a patch and ask for review. This kind of review isn't as efficient or as comprehensive as writing the code together in the first place, but it does allow major problems to be caught and dealt with quickly (at the cost of some rework).

</comment><comment><USER3> Unfortunately I work for a big company, and our team has a ridiculous 150+ designers/developers - how anything gets done is beyond me.

Also unfortunately, it fell upon me to review as much of the code produced as possible for some time. It wasn't a horrible job, but it opened my eyes just how beginner some of these developers seemed, and to how useful code reviews can be.

I never attempted to organise tradition 'sit-down' reviews - it wouldn't have been a good use of peoples time (and 90% of the team are in india!) - I just checked out a particular module and scanned it for red flags, repeated code and attempted to build up an understanding of what it was supposed to do.

Doing that caught many design flaws and simplified many chunks of spaghetti code, not to mention abuse of the database (bad queries, unnecessary queries etc) etc, so I think it was a good use of time.

Catching design flaws at this post implementation review stage is not really productive however, as its too expensive to fix them.

My solution to that was to do white board sessions with the designers, then ask someone to write up the outcome in a couple of pages to be quickly reviewed by the other members at that meeting - doing that was essential, as the number of times miss-understandings were caught before a code editor was even opened was amazing!

So basically, I think that code reviews have their place, but my feeling is that a sit down meeting is generally overkill. I also reckon that they are much more important (perhaps exponentially so) in a large team with many potential mediocre programmers than in a startup with several much more competent hackers!

I have never tried pair programming, but I know a lot of people are fans of it - I can see how it would be useful in a big corporation when someone is implementing someone else's vision, but struggle to see how it would work in a small startup. In the startup, surely people would be trying things and molding the vision in ones head until something useful comes out? I certainly hope to give it a try someday to see how it goes ...

</comment><comment><USER4> I've been in your position with a team that's quadrupled (including international staff). In the team's I've worked in it tends to work on trust, committed alot of code and senior then it's probably not going to be reviewed. Still earning your stripes then a more detailed design and an over the shoulder before commit and/or a formal review post module completion.

I tend to think you have to trust your team so I've tended even for junior guys to operate in permissive mode (I've yet to revoke someone's commit privileges). Small teams have a great advantage in that they can communicate more efficiently and often deliver quicker. If your team is growing and you can't trust (or grow to trust) what devs are committing then you're going to have longer term problems. Code reviews to me are more about mentoring and growing new staff, not enforcing 'good' code. The first question is always how could you have done this better. Why did you do it this way? Smart teams self correct so getting people to think about these things themselves tend to mean they don't repeat mistakes.

What really works is automating your success conditions, especially dumb stuff like formatting and dumb bug checking. Use continuous integration, in our dev team check in will get it running through all the tests including a full ui regression every night so if it makes it through that then it's already reasonably good. Cruise control integrated with .net and java checkstyle findbugs etc, turning warnings on as errors in the build means simple dumb stuff just doesn't happen. If someone consistently breaks the build or is checking in broken stuff then a switch to review first works. Breaking a build in our teams sends an email to the 'list of shame' (all the devs on the team) so people tend to avoid breaking it. We also don't allow any build to be broken for more than 24 hours (usually < 1 during business hours). It's all about tradeoffs and if it's a good tightly knitted team then code reviews tend to become less important.

In a distributed dev team, working remotely or getting close to release then I've found review board really good. <http://www.review-board.org/> I found people commit to the continuous integration system, if it breaks they fix it and upload a diff or patch to review board. People get emailed and can mange their time more effectively, they pick the best time for reviews themselves. A 'ship it' from any of our senior team means it's done and hosed.

</comment><comment><USER5> Where I work we use a simple version of Scrum.

Following the sprint review at end of every 2-4 week sprint, each developer either gives a short demo of the new features or changes they completed or a short review of the most significant code changes they made. Those who focused on features generally prefer to give demos while those who focused on bug fixes usually ask for quick reviews of just the most important changes. In total these meetings can go a few hours but they only happen on average once or twice a month so they don't interrupt the daily workflow.

We mostly just use our Trac wiki for reviews but I've been thinking of suggesting something like <http://www.review-board.org> when we get bigger.

</comment><comment><USER6> A couple arguments in favour of inspections, Fagan-style:

\- Although it takes a brutal-seeming amount of time, many teams get a net time savings thanks to earlier bug detection.

\- It's a learning experience for everyone involved, so there is a deeper preventative aspect. This can be especially valuable for the new members of your team as you grow.

If you do inspections, and find just one bug that would have been nasty down the line, it's easy to emotionally understand the benefits. Without that experience it's hard to be convinced that it really works. Then again, you feel awful when you go through a 2-hour inspection with four people and don't find anything severe.

Be careful with Fridays, especially in the afternoon. In my experience meetings of any sort don't go well at that time. I'd suggest other weekdays around 10am or 2pm. These seem to be ideal for some reason.

As for frequency of inspections, it depends on how much code you're churning out. I personally think it's reasonable to only inspect particularly challenging, complex, difficult-to-test or critical aspects of the system.

</comment><comment><USER7> What sort of problems are you trying to catch?

Niggling little bugs or major design flaws? Both?

Code reviews, as this brutal group process done after the code is committed, are wrong IMO. It's better to talk out the design before any code is written, or circulate a design note. (Not a full design document; the only good design docs are written after the code.)

As for catching the niggling little bugs, or generally improving your approach in the small, pair programming and check-in review work well.

Check-in review is simply a convention that someone else has to read your diff before it's checked into the repo. You can make that an informal or formal part of your check-in process. It works really well; not only does it catch mistakes but it puts the incentive on the reviewee to write readable code, so they won't have their colleague complaining they don't understand what's going on.

That may sound like a lot of work but it's not. Once everyone gets to the point where they know how to write readable code, the check-in review takes just a few minutes out of each developer's day.

</comment><comment><USER8> Design and Code Reviews sit somewhere far on the slow-and-formal-and-clunky hand side of the spectrum between them and pair programming, but essentially achieve the same aims. Both pair programming and peer reviews (of code or otherwise) have the same aims and same results:

1) fewer bugs (peer reviews / pair programming is the most efficient known method to reduce the number of bugs, by far - testing is a distant second)

2) better spread of knowledge around the team

It's important to realise that they're the same tool, just twisted into a different shape. Pair programming is essentially taking the peer review concept and making it continuous rather than applying it at a regular interval.

In a startup environment, I'd recommend pair programming rather than code reviews, because it tends to provide a greater return, and it feels more nimble and fresh.

To ease yourself into it, you could start with pair programming days once a week, and see how people like it...

Daniel

</comment><comment><USER9> You could try a cool method of random inspection. Have a daemon that listens for submissions to your tree. With a random chance (you determine probability) have it email the contextual diff (maybe even highlighted full diff) and the changelist description to a random developer.

</comment><comment><USER10> We use Crucible:

<http://www.atlassian.com/software/crucible/>

It's all very informal and the reviewer can do the review in their own time, it works very well.

</comment><comment><USER11> Why not make it informal - just ask some other developer to give you feedback on your code?

</comment><comment><USER12> Try pair programming (unofficial, informal, real-time code reviews+collaboration)

</comment><comment><USER13> Good standards make code reviews trivial.

Well defined, zero tolerance, guidelines virtually eliminate the need for code reviews. Variable naming, standard routines, syntax, how to do iteration, branching, common functions, etc., etc. etc., should all be outlined clearly, agreed upon, and adhered to.

I prefer to look at it this way...

Code Review: No one gets out of this room alive until this is right (whatever that means).

Standards Compliance: Wanna play? Good. Follow the rules.

Oh, and please don't give me that age old argument about how standards limit creativity; if this small price for quality software is too limiting for you, then go play by yourself.

<comment><USER14> Code reviews should be much more to with medium to big ideas, not small details. Small details should be trivial to a good hacker.

so: "You've got that wired in backwards", "Tim built one of those over here", "When we implement foo, that'll bar" & "That's a security hole because ...." are good.</comment></comment>