The Potentiometer Handbook (1975) [pdf] - <AUTHOR> https://www.bourns.com/docs/technical-documents/technical-library/corporate/OnlinePotentiometerHandbook.pdf <comment><USER2> Downloading from the link [https://www.bourns.com/pdfs/OnlinePotentiometerHandbook.pdf](https://www.bourns.com/pdfs/OnlinePotentiometerHandbook.pdf) produces a corrupted copy (many pages missing or out of order.) This is a better link: [https://www.bourns.com/docs/technical-documents/technical- li...](https://www.bourns.com/docs/technical-documents/technical- library/corporate/OnlinePotentiometerHandbook.pdf?sfvrsn=182b1126_4)

<comment><USER3> The pages seem to be sorted in alphabetical order. I saw 198, 199, 20, 200, 201 in there. I wonder how that happened...

<comment><USER4> Probably the pages were scanned one by one as individual files and then finally all files were combined.

</comment></comment></comment><comment><USER5> If any electronics youtubers are reading this:

I would love to see a series: _This Is What Electricity Looks Like to Me_ wherein you go through different components and talk about what the operating parameters are, and what different voltages, amperages, etc etc mean for that component.

<comment><USER6> Hate to break it to ya, but this isn't really possible.

I mean, you could have a series that explores and details the basics - ie, what is a resistor, capacitor, etc - and what they are used for, how they work, etc.

But what you are terming "operating parameters" are specific for each part per manufacturer. Now - a carbon-film resistor made by just about any manufacturer is going to be about the same from one to the other, as it's a basic technology. Even so, certain parameters might be different (ie - how much does the resistance change with temperature and humidity might vary between manufacturers). Also, none of that applies if we are talking about wire-wound, or some other kind of resistor (and different manufacturers).

Extrapolate this out to any other passive component, and you'll see the same thing (heck, just capacitors would overwhelm the idea). Get into simple actives (transistors, diodes, leds, etc) - and the amount of variation increases a magnitude, maybe more.

Then drop into other components - integrated circuits, electric motors, light bulbs - heck, even simple wire; you couldn't cover it all.

You'd know this, though, if you had any experience with electronics - which I suppose you don't, or you have little of it - otherwise you wouldn't be asking about such a youtube series.

Instead, you should start with the basics - and for that, you're going to need to read some books (the best would be Horowitz's "Art of Electronics" and Grob's "Basic Electronics"). While it might be possible to condense some of those books into a video series, it won't be a small video series (and if you want honest and in-depth explanations - such a series would not be the most exciting to watch).

<comment><USER7> Not to mention that lots of those parameters only apply to people doing certain things with the component, so that two people who work in different domains with the same part could have very different ideas of what the important parameters are.

</comment></comment></comment><comment><USER8> Thank you for this. I bought a lot of old electric devices in an auction and finally figured out what the last one was a few weeks ago. It was a potentionmeter. What confused me was the wood case it came in. The only example I could find was in the radio museum's website. Reddit's what is this thing subreddit identified it for me, but I was looking to learn more about it.

It is a gorgeous piece from the early 1900s and shows the craftsmanship that went into these earlier devices.

I appreciate you sharing this information.

<comment><USER6> Sure it was a potentiometer?

Usually, potentiometers utilize a carbon-style track for the wiper; a few used a fine "wound wire" on a form for the wiper instead (they tend to handle higher power).

If it is a potentiometer - it will have 3 connections - one to each side of the main resistance element, and a third to the movable wiper. It might be a rotary style, or it might be a linear sliding style.

If it only has two connections - one to the sliding piece, and one to an end of the coil - then in that configuration it would be considered a rheostat (a potentiometer acts as a variable voltage divider, whereas a rheostat acts as a variable resistor/current limiter). If the coil is made of fairly substantial wire - then it was meant for power-controlling usage (if it is a potentiometer or a rheostat - usually a potentiometer can be used like a rheostat, but the opposite isn't possible with modifying the rheostat).

It is also possible it could be a "tunable coil" \- similar to what was used in early crystal radio sets; such a device is not a potentiometer or a rheostat, and shouldn't be used or confused as one.

</comment></comment><comment><USER9> Funny how this is timely for me. I have always had the desire to repair/bend some of my old analog hardware, and one of my recent projects was adding a "tune" feature to the bass drum of my Tr-808. The information on doing this is widely available on the internet, but I didn't realize how difficult it would be to source a 100k log pot. The Pot I did end up finding was Bourns branded. Now that Ive performed the modification, Im ready to dig deeper into it. Ive hired a TR-808 expert to provide me with some guidance through the process. I will not share the information I purchased from him(promised him I would not) but I can refer anyone looking to do the same to him and say this guy is the real deal, and is probably the premier Roland TR analog drum machine expert.

<comment><USER6> > but I didn't realize how difficult it would be to source a 100k log pot

Huh?

[https://www.amazon.com/Alpha-Potentiometer-100K-Audio- Log/dp...](https://www.amazon.com/Alpha-Potentiometer-100K-Audio- Log/dp/B003G6L1QC)

That was done with a google search of "100k log potentiometer"...

Now - maybe you're in a different country or such where it's more difficult to get parts?

<comment><USER9> I did that same search(~6 months ago) and there were none in stock or they were 30USD a piece. I ended up going through an electronics supplier and spending the 2-3 bucks it should have cost.

</comment></comment></comment><comment><USER10> Really amazed that someone found it fit to write a whole book about the humble potentiometer!

<comment><USER7> It doesn't surprise me at all, but then again I have half a shelf in my office dedicated to potentiometer catalogs.

</comment></comment><comment><USER11> > One of the most common digital applications of adjustment potentiometers is > the control of time delay in an integrated circuit monostable (page 87).

My introduction to the humble potentiometer was when my father (in the mid-1970s) became the first man in our street to have (home-made) variable- speed windscreen wipers in his car. He would have loved this book!

</comment><comment><USER12> Skip to Chapter 9 for some lovely comic 70s artwork and a how-not-to guide of how to abuse your potentiometers... :D

</comment><comment><USER13> My first encounter with potentiometers was in the game-paddles of my Apple ][. Of course, I had to replace them by temperature sensitive resistors :) Fun times ...

</comment><comment><USER14> How appropriate, pots are legal now.</comment>


Android Apps on Chromebook - <AUTHOR> http://www.engadget.com/2014/06/25/google-to-bring-android-apps-to-the-chromebook/

<comment><AUTHOR> Why doesn't Google add full Android to Chromebook?</comment>


Jetstrap for Bootstrap - <AUTHOR> http://jetstrap.com/ <comment><USER4> I noticed the "Try Jetstrap free today!" then I saw you mention _"Our first thought was $10/mo for 100 screens"_ [1] which I think is not only underpriced but the wrong pricing structure.

You should implement something like this:

\- User signs up - gets 5 - 10 FREE Screens.

\- Once they've used up their FREE screens take them to a page to purchase more screens.

\- When they have 1-2 FREE Screens remaining you should have a popup which says they've nearly used their free screens up and to buy more (with one option offering to go to payment page & the other leting the user continue what they were doing).

\- On the page where the users can purchase more screens, I wouldn't bother with a monthly subscription plan because that's not what your target audience is interested in.

I'd offer the following options:

100 Screens - $39 ($0.39/Screen)

250 Screens - $95 ($0.38/Screen)

500 Screens - $180 ($0.36/Screen)

[1] <http://news.ycombinator.com/item?id=4572125>

<comment><USER5> The problem with this is that there is no incentive to keep one account.

GoMockingbird (<http://gomockingbird.com>) is an example of an application I probably have 4 accounts for-- not on purpose, I just couldn't figure out which email, twitter, facebook I used to sign up for it. I didn't realize that only the first project was free until later, because I generally stop using it after one project.

I could totally foresee a user signing up for 5-10 free screens then forgetting about the tool for later. When they come back, those original 5-10 screens may or may not be related to what they're working on now, and I can guarantee most people won't shell out the $39 when they realize they could just create a new account.

The proper way to monetize this (IMO) is through a freemium model. Don't limit them with what you have now. Figure out something that's truly a solid bell or whistle and sell them that. Give users the ability to create HTML/CSS for free, but maybe scroll-fixed javascript headers cost $10 for 10 pages (scroll here: <https://www.kiteedu.com>).

<comment><USER6> Right idea I think but I would go with something that makes it more useful for not just prototyping like api export / import and direct editing of template formats like interpreting ruby's erb just enough to display some placeholder text.

</comment></comment></comment><comment><USER7> I tried this out earlier, just before you sent the beta email out. A few thoughts:

1\. Keyboard shortcuts! I really wanted to deselect items by hitting escape but it didn't work. I kept trying anyway because I'm so used to Balsamiq :) I'd also love to be able to hit / to quick-search the list of elements I can add, then return to add the selected item. Again, Balsamiq really nails this.

2\. I wanted to add a div with Bootstrap's pull-right class, but couldn't figure out how. Some means to add custom elements with custom css classes, even in a limited way, would really help me.

3\. I typed some text (directly into a grid .row) but it didn't show up in the CSS+HTML tab. Not sure if this was a bug or not.

I really want this to work and it would save our team loads of time (meaning, we would pay for it :). Looking forward to what you do next.

<comment><AUTHOR> Quick update: just added escape. Thanks for the feedback!

</comment></comment><comment><USER8> Mwahahaha my plan to become a professional web designer without learning how to write any code is working!

<comment><USER8> (I can actually write code, I'd much rather use this whenever practical though)

<comment><USER9> I am not a designer by trade, but I am routinely called by the friends/family niche to build stuff for them -- I love how amazed they are when I spend 2 hours putting together a WordPress site for them; they seem so blown away by my non-existent abilities

</comment></comment></comment><comment><USER10> I can only sign up using twitter, google or github ? I have these accounts but prefer not to use them. Any plans to offer generic login ?

<comment><AUTHOR> yea, we will be soon. I think the last thing I had up here had the opposite reaction (wanting oauth rather than yet another login) :)

<comment><USER11> I'm confused as to why I would need to register at all? A public facing demo would be really nice, even if it limited the features so you could still charge for the full product.

<comment><USER12> Agreed, public facing demo, with register to download CSS/html could work.

That said, it was really low pain to get started just now. It makes me so happy to not have to go click a link in my email!

</comment></comment></comment></comment><comment><USER13> Can we get a Sign Up with Email option? I don't like linking together other login services with sites I'm just trying out.

</comment><comment><USER14> Sorry for being blunt, but the site looks quite bad on a mobile device [1][2][3].

I realize that this tool is probably meant to be used from a computer with a large screen and with a mouse, but consider the following scenario: Somebody, who is using their smart phone, is landing on your page from a search for "bootstrap responsive interface-building tool". If that was me, I'd probably leave the site pretty fast.

[1]: <http://i.imgur.com/UsYhZ.png?1>

[2]: <http://i.imgur.com/UzaB8.png?1>

[3]: <http://i.imgur.com/JEPSj.png?1>

(Using Dolphin Browser on Samsung Galaxy S2, Android 2.3.5)

<comment><AUTHOR> Thanks for letting us know. Odd that the gradients aren't showing up on the buttons, which indicates to me a bug with Dolphin. I'll take a look.

</comment></comment><comment><USER15> Sweet spot between heavy IDE and notepad. I like it!

I plan on using this on my next site. One question, though: is there a way to know which version of bootstrap and such the editor is using?

<comment><AUTHOR> Right now, no (it's running a very recent version). We plan to keep it updated with stable releases though. Thanks!

<comment><USER16> If you can, I would suggest keeping the ability to use old versions. With how quickly bootstrap is revving, there will soon be many sites using old versions that could still use the tool.

<comment><USER17> Completely agree. Backwards compatibility would be huge./

</comment></comment></comment></comment><comment><USER18> My suggestion as a UI/UX guy: Refine the call-to-action buttons by assigning them a different color. Black is not really an attention seeker. I would suggest something like a bright Green or pale Blue for the buttons (for the Sign up buttons on the top and the bottom). Hopefully this will improve your conversion rate.

Just these, otherwise excellent. Keep it up guys!

<comment><USER19> I recall that red was the color most likely to get attention, and thus recommended for calls to action. Any reason not to use red ?

<comment><USER18> Yeah, it depends on the scenario, green is like a very peaceful-ish color, red is like something to relate with urgency (In a negative way). Red in real life means danger, stop, error..etc.

I wanted to recommend red too initially, but I think for his use case blue or green would go well because of the background image (and also for the reasons above).

</comment></comment></comment><comment><USER20> I love this tool. As a programmer I cringe at most WYSIWYG because they heavily dilute the code needed to make something happen + hardly ever get it done in the first place. This actually looks very promising.

One note though. Your target audience is going to include non-programmers and those people might not even know the proper names for some of these bootstrap elements. So I suggest some kind of toggle between the boostrap name buttons & maybe some sort of GUI. like Actually dragging a menu into the workspace, or dragging a twitter bootstrap button into the workspace, etc.

Other than that.. I like where this is going.

<comment><USER21> Great suggestion.

</comment></comment><comment><USER22> This looks like one of the most sensible WYSIWYG web page builders. Thank you for the minimal permissions to sign up with twitter. Might I recommend that you add the preview for the element when you hover over the component on in the tray? Nothing happens when I drag and drop things either -- latest chrome release channel.

<comment><AUTHOR> There was a slight issue where the mousemove event wouldn't trigger if you dragged too slowly :) That has been fixed. Is it working better for you now?

</comment></comment><comment><USER23> Could you let us in on how to go about implementing such an interface? You don't have to go into specifics but if you used any tools or frameworks that you found invaluable etc, it would be nice to know.

<comment><AUTHOR> Sure. The stack on the frontend is Backbone.js with Handlebars.js templates (and jQuery, of course). I used CoffeeScript's classes heavily to compartmentalize stuff.

Object orientation is your friend with these kinds of tools. We based a bit of the internal component model off of Java's AWT and Swing, making sure that each component we built was reusable in any situation, making it extremely easy to add new components.

Just like in the DOM, you are performing operations on a tree structure, so recursion and iterative optimization is important (especially in Javascript where function calls are expensive).

Other than that, it's just a lot of event handling and DOM manipulation.

</comment></comment><comment><USER24> Re: pricing...given the feedback here, maybe one thing you may want to do is to sell credits.

So maybe each screen cost X credits - but you sell the credits in packages. $10 for 10, $20 for 40, $50 for 150, etc. The idea being that you get more credits, the more you pay.

The beauty about it is that you front-load a lot of your revenue, which allows you to plan easier. It also is easier from the user's perspective, because I know I can always come back and use those credits.

You can even set some reasonable expiration time period - say 24 months - <USER2> the credits.

Anyway, that's just my $0.02.

Awesome product, by the way!

 _Edit 1:_ Another interesting side effect of implementing a credit system, is that you are setting the ground work for a marketplace. People can auction/sell some of their designs, and people can use their excess credits to buy those.

</comment><comment><USER25> Love this; extremely useful.

One suggestion: a "quick search" bar that would let you add elements by starting to type the names of things, similar to Balsamiq Mockups. It's a bit of a pain to navigate through the menus to find the right element.

<comment><AUTHOR> Definitely. This needs to be added, thanks for the suggestion!

</comment></comment><comment><USER26> I tried signing in with Google. Why do you need so much biographical information? Never mind, I won't use this.

</comment><comment><USER27> Max Lynch and Ben Sperry are super talented. They are also getting really good at marketing! Great copywriting!

<comment><USER28> Too kind, man! Thanks :)

</comment></comment><comment><USER29> I absolutely love the idea, but this works horrible on both Chrome and Safari.

I've seen bugs ranging from not being able to drag anything at all to elements not landing in a proper container, to just being overall confusing (dragging a table row results in dragging a table cell as a ghost. Where is my row?).

My trial was about trying to drag&drop a super-simple layout, with a table, with some form elements.

Unfortunately that's not properly possible right now, i'll wait up another bit for fixes. PLEASE keep up this work, we need more tooling like this!

<comment><AUTHOR> Thanks for letting us know. I'm going through the issues reported in the comments here and trying to reproduce and fix them. Some I'm having a hard time reproducing :(

<comment><USER30> Trying to start a new project gives me this error:

        Failed to load resource: the server responded with a status of 404 (NOT FOUND) http://jetstrap.com/api/v1/project/last

After choosing the 'fluid' layout and hitting 'Create'.

<comment><AUTHOR> The 404 is okay (we use that to check if you had an existing project loaded in your session), are you seeing an issue?

<comment><USER30> It wouldn't let me start a new project, I assumed the 404 was related. Hitting the 'create' button did nothing.

</comment></comment></comment></comment></comment><comment><USER31> Nice work. One nitpick is the "Saving..." text with the spinner is very distracting. My eyes shoot up and look at it every time. I have a personal feeling that displaying "Saving" text represents a lack of confidence that it will actually save. Since it's there my eyes go look every time to make sure it _has_ saved. If you feel it is important to display to your users their work has been saved.. show a subtle timestamp or something with the last save date, but remove the spinner.

</comment><comment><USER32> Pretty cool - looks like it has come a long way since the Alpha.

What I'd like to see added would be an easy way to change the colour/font etc of elements to make them less bootstrappy.

<comment><USER33> It looks like there's a built-in css editor (look in the lower right) so you can do something like this pretty easily:

.btn {color: red;}

<comment><USER32> Easy for you, maybe ;-)

</comment></comment></comment><comment><USER34> I think this is a great tool, and desperately wanted it to work. In fact, decided to try it out on a project I'm currently working on. That said, the autosaving has been causing me problems all morning. It's unclear when it saves, and because it seems to lack a manual saving feature I was unable to save the last 30 min of work. All lost after reloading the page reverted to the version I started with. Very frustrating.

</comment><comment><USER35> I would second comments elsewhere that balsamiq is a good model for this site. I am a paying balsamiq customer. Jetstrap seems like balsamiq but you are building a functional prototype instead of a wireframe mockup. As is, this could be worth about the same on a monthly basis, and I could possibly see this becoming a hosting site for full fledged pages built on jetstrap.

</comment><comment><USER36> When I saw this and clicked it, I was preparing myself for a bootstrap-in- production-code abomination, but was pleasantly surprised. The design and interaction on this site are gorgeous and not boostrapped, and the tool looks really nice for putting together prototypes.

With all the horrible bootstrap default production sites i've seen lately, I've developed a pretty signficant hatred for the framework. But sometimes after seeing tools like this, I remember that it can be a very effective prototyping tool (as long as it's used only for prototypes, and you hire a real designer and/or front end guy to put together your production design and code).

That being said, awesome job with this site and this tool. Then only suggestion I could possibly make would be to change the header text from "build amazing websites" to "build amazing prototypes" - this at least helps to spread the concept that boostrap does not replace good, unique design and code.

<comment><AUTHOR> Thanks! We did build a lot of this with bootstrap itself, using custom LESS.

I do disagree that bootstrap doesn't replace unique design and code. Lots of great websites have a standard set of interface elements, and bootstrap makes this extremely easy. Just add your custom styles and you have a unique site built on a solid CSS framework.

<comment><USER37> He said they just need to 'hire a real designer and/or front-end guy' - <USER3> basically translates to 'add your custom styles' and you're both happy. And I agree with you both.

The problem is so many people don't do that. They just leave the stock bootstrap there. If you can't even be bothered to change the colors from the templates, how am I supposed to take your company seriously?

Re: pricing. It depends how awesome you plan to make this. As it stands I'd probably pay $10 a month, maybe a bit more. If you fully pimped it out like Balsamiq has done for mockups - the sky is the limit. And if you had no competition for a bunch of your features - I'd actually prefer you charged more and had fewer customers, so everybody doesn't roll their eyes when they see something I built with Jetstrap, like they are doing now with Bootstrap (that assumes you get around to LESS integration...hint hint!).

</comment></comment></comment><comment><USER38> An idea would be to integrate this with a DVCS system like Github och Bitbucket. Jetstrap could do commit/push at a frequent interval, thus allowing you to revert your changes. Good job.

</comment><comment><USER39> slightly off topic, but where did you get the background music for the tour video where you walk through how it works and what it is. It has a great apple sounding beat.

<comment><AUTHOR> We got it at Audio Jungle. It cost about $14 I think.

</comment></comment><comment><USER40> Really like this, but noticed a few bugs with the drag and drop interface. Sometimes items wouldn't select and/or drop where I wanted them.

Other times, I'd take a look at the code and there were quite a few irrelevant divs.

Is there a way to make the html code editable to fine tweak the pages while still editing the page via drag and drop to get the big picture mockup?

Btw great work so far. I'm really loving it and planning on using it for several new projects.

</comment><comment><USER41> Looks very pretty, but can't decide if this is useful or not. I love bootstap, but I am not convinced this is much quicker than a text editor (even if it is much prettier)

Quick bug report:

MacOS/Chrome (latest) - create navbar - click or double click on the bar, and you get errors.

Uncaught TypeError: Object #<Object> has no method 'apply' jquery.js:3332 jQuery.event.dispatch jquery.js:3332 jQuery.event.add.elemData.handle.eventHandle

<comment><AUTHOR> Sure. One of my personal bootstrap pain points I wanted to solve was I often failed to properly use certain complicated bootstrap components. The better you get the less this becomes a big issue.

One way to use Jetstrap is to just generate snippets of Bootstrap if you already have a large code base and just want to copy and paste complicated components.

<comment><USER42> I agree taking the time to learn all the options in bootstrap is time consuming and this alleviates much of that via a nice UI, but would I pay for that, probably not.

</comment></comment></comment><comment><USER43> I like. I hit some bugs when adding/working with tables, but I guess this is beta. I am looking forward to really trying to use it in the not so distant future.

It would be great if you could not only let me select the starting template but if you could let me choose from a dozen skins - say from Bootswatch, or similar features like lavishbootstrap.com, and the 'dice' feature at boottheme.com).

<comment><USER28> Thanks! That's definitely something we've thought of, and could very well find its way in at some point in the future. We'll be gathering a ton of feedback as we continue forward developing the tool.

</comment></comment><comment><USER40> This looks great. I noticed the "try it for free." Are there plans to turn this into a paid product at some point? How limited is the trial?

<comment><AUTHOR> Yes, we will eventually charge for it once we work out some of the kinks in the beta. Our first thought was $10/mo for 100 screens (though I agree with the feedback below, so this will probably go up). Any feedback on that?

<comment><USER44> Does everything have to be subscription based now? I know it is good for revenue, but it sure is a poor experience for the user. I would rather just pay $10 for 100 screens, if that is what you are charging, rather than tack on the /mo charge. When I run out, I buy more. Offer volume discounts for extreme purchasing over time, perhaps, but don't make me subscribe for light use. That's my initial feedback.

<comment><USER45> Exacly! Please let us by 'x number screens for $'. Subscription is hardly required for something like this. (Ps please add youtube/vimeo video instead of flash video, I'm on iOS and would love to see it).

<comment><USER46> Same problem. Found this: <http://www.youtube.com/watch?v=AuTo_6id3J8>

</comment></comment></comment></comment></comment><comment><USER47> I cannot get this to work at all. Looks nice, would like to use it, nothing happens when I try to drag and drop things.

<comment><AUTHOR> Sorry about that Zack. What browser are you on?

<comment><USER48> I figured out how to reproduce this - click on 'create screen' without entering anything into the input field. It creates a blank canvas that doesn't accept any elements.

<comment><USER47> Yep. That's what I did originally. I was on chrome fedora without it working, but now on chrome mac it works. This time though I did change the name instead of leaving it blank.

<comment><AUTHOR> Just pushed a fix to not allow blank entires. Sorry again about that :(

</comment></comment></comment></comment></comment><comment><USER49> have to say, this is an amazing design and editing tool they built. seems to be built on top of backbone?

<comment><AUTHOR> Yep, Backbone.js and CoffeeScript. It actually started as a side project to learn CoffeeScript once and for all. I'm hooked now.

<comment><USER49> thanks for the reply, i have done something similar for a document editor/creator(EDI documents) but purely javascript. i might just try CS out now. cool stuff, hope to see more out from you guys.

</comment></comment></comment><comment><USER50> Wow! This is such a great tool! Thank you for making this. Did you build the landing page with Jetstrap?

<comment><AUTHOR> We did not, the landing page was built before we had Jetstrap working, but I've used it for some personal projects.

</comment></comment><comment><USER17> Wow, this looks great! Outstanding video, too. Consider me sold, definitely going to try the trial.

</comment><comment><USER51> Quick data point, works beautifully under Chrome (Version 21.0.1180.89) on Ubuntu 12.10 beta.

Loving it.

<comment><USER52> Didn't work on Firefox 14.0.1 Ubuntu 12.04. Dragged elements don't appear on the canvas. The error in the console log, "not dropping, no container or component found". Same issue with Chrome Version 21.0.1180.81.

Looking forwards to when these are fixed though, I'd like to use it myself, and would be happy to contribute.

== Update ==

The problem I was having seemed to be I hadn't named my screen, I was then shown a blank white screen which looked like I could drag the elements onto, but this didn't work.

</comment></comment><comment><USER53> You could name it "Jetstart" :)

<comment><USER24> This is a wonderful suggestion - although, I know they are trying to play on the 'Bootstrap' part of the name.

</comment></comment><comment><USER54> After playing with this for about 30 minutes I find myself fighting to get the elements positioned correctly. I'm not sure how difficult this would be, but it would be great to be able to update the view from the HTML panel.

</comment><comment><USER55> As a developer with sub-par design skills, thank you for this.

So, how can I pay you for it?

<comment><AUTHOR> This is coming soon. We do plan to charge for it so we can keep making it better, but the payment stuff hasn't been integrated and we are going to squash some more bugs before that. Thanks!

</comment></comment><comment><USER56> Great job Max! The app works great, can't wait to see where this goes.

</comment><comment><USER57> I love the idea. This is a competitor that I've tried that has worked quite well so far - <http://divshot.com/>

<comment><USER58> Their video works, while the OP doesn't. Thanks for the link!

</comment></comment><comment><USER21> Awesome tool. I hope you'll just add WYSIWYG CSS editor and easy&fast integration with Firebase. That would be a toolset of my dreams :)

</comment><comment><USER59> Cool idea. Seems a bit buggy at the moment - I tried dragging a bunch of stuff in quickly and it failed. Keep up the good work though!

</comment><comment><USER60> Cool Idea! It's Bootstrap meets Balsamiq Mockups

</comment><comment><USER61> Cool product. From playing around with it, it doesn't support a lot of bootstrap features like carousels or image galleries?

<comment><AUTHOR> Not yet, but we would like to add them!

</comment></comment><comment><USER62> Video looks great so I went ahead to sign up. It's not working in Chrome though. Still some bugs as I can see from console.

</comment><comment><USER63> The only website I saw that does not run on iPad in year 2012... Video requires flash, links doesn't work...

</comment><comment><USER64> Your video doesn't work on iPad. It asks for a browser which support html5 which iPad supports

</comment><comment><USER65> signup and login page not working at the moment...very excited about the builder tho.

</comment><comment><USER66> This is very similar to Divshot, which was featured here on HN a few days ago.

</comment><comment><USER67> Awesome!

</comment><comment><USER68> How long did this take to create? It looks damn cool

<comment><AUTHOR> Thanks! We started working on it at the end of July this year. However, we ported over a ton of work for a product we also have for jQuery Mobile called Codiqa (<http://codiqa.com/>). Without that it probably would have taken many months longer.

</comment></comment><comment><USER69> Talk about MVP ;)

</comment><comment><USER70> Fabulous work.

</comment><comment><USER71> saw this when it was in beta :) definitely cool.

<comment><AUTHOR> Actually, this is the beta, that was alpha before :)

</comment></comment><comment><USER72> awesome tool.</comment>


Ask HN: What does the E.F.F. do, exactly? - <AUTHOR>

https://www.eff.org/victories<p>9 items long, most of them in the 1990s, and none of them directly involve the E.F.F. anyway. What do these guys do? <comment><USER2> Looking to start a fight? :)

EFF does 4 things, as I see it:

(a) They contribute to legal defenses in important online civil rights cases:

[http://en.wikipedia.org/wiki/List_of_litigation_involving_th...](http://en.wikipedia.org/wiki/List_of_litigation_involving_the_Electronic_Frontier_Foundation)

(b) They lobby.

(c) They run awareness efforts for (a), (b), and some related issues (like, recently, whether companies like Google should use open standards for chat clients). A lot of this involves stuff like blog writing.

(d) Like all nonprofits, they do a _lot_ of fundraising. Charity Navigator tracks a lot of this stuff. EFF spends ~15% of its budget on fundraising (putting them squarely in the middle of the pack for nonprofits).

If you're sketchy on donating to EFF (like I am), ACLU is another organization with a similar mission to EFF that is by-the-numbers more effective; ACLU is also (from what I can find) more transparent about what it spends its money on (its largest single line item is "legal"; EFF doesn't break things out any further than "Salary").

It's definitely not fair to say that EFF only has 9 "victories" because of what that web page says.</comment>


Iran Activists Get Assist from 'Anonymous,' Pirate Bay - <AUTHOR> http://www.wired.com/dangerroom/2009/06/iran-activists-get-assist-from-anonymous-pirate-bay/

<comment><USER2> i wonder how the Chinese government is viewing the technology empowered protests in Iran. both governments have invested a great deal in censoring all media. and now with so many tools to go around these filters and essentially create leader-less protest movement, i'd imagine they're more worried than they were the same time last week.

<comment><USER3> Me too.

I think China's approach is censor so long as costs are manageable. Shutting down the internet is too a big deal. I think they are willing to accept a certain leakage. If you are really motivated to learn about Tiananmen, you can. You just can't get at it in a mainstream way.

This is fine so long as motivation to access information is relatively low. Iran has just experienced a sharp increase in motivation

*One thing to note is that the Iranian regime can feed the President to the lions without breaking stride. It's almost what he's for. The protesters do not seem to be protesting against either the regime or the media controls.

</comment></comment><comment><USER4> I should be anti-Anonymous (because of my job). But I have always found them strangely attractive as a group: well, perhaps not the group per se but the ideals. I do like the idea that you can help make a difference as a "faceless million".

<comment><USER5> You work for scientology?

<comment><USER4> heh fraid not :)

<comment><USER6> I'm guessing CNN.com or some other victim of a online poll precision strike.

<comment><USER4> uh, no not at all. A security firm.

So not evil at all :)

<comment><USER7> I'm not sure how you understand Anonymous, but I don't see what's to fear from a security firm's POV. The average Anon is probably in grey-to-white hat territory. Anything large-scale and organized is usually done to target something they see as "evil", like Scientology, or the Iranian regime, or Sarah Palin (joking; but seriously, that guy thought he was acting in the interest of the country), or it's just freaking hilarious.

<comment><USER8> >Anything large-scale and organized is usually done to target something they see as "evil", like Scientology, or the Iranian regime, or Sarah Palin

Or Korean pop star Rain? Or Habbo Hotel?

I generally find Anon amusing (and I'm curious why ErrantX thinks his job obliges him to dislike them), but to paint them as _noble_ seems a stretch.</comment></comment></comment></comment></comment></comment></comment>


A Radioactive Lens (2018) - <AUTHOR> https://www.fourmilab.ch/documents/radiation/lens/ <comment><USER2> Back in the day, I was experimenting, a la Edison, to find an optimum anti- reflection coating for silicon photodiodes. One of the things I tried was thorium oxide. For some reason, coating the detectors ruined their dark current. Hm.

About an hour later, dawn broke over Marblehead.

<comment><USER3> What, why? What has Marblehead to do with anything?

<comment><USER4> I think he is referring to himself as "Marblehead", as someone whose head is made of marble or full of marbles, i.e. a dummy-head. In hindsight it seemed obvious that the radiation from the thorium would act as low level illumination for the photodiode and so ruin its dark current (the electricity that flows when there is no illumination).

</comment></comment></comment><comment><USER5> PSA: If you have a yellowed lens that you'd like to use, great news: you can fix it:

[http://pentax-manuals.com/repairs/yellow.htm](http://pentax- manuals.com/repairs/yellow.htm)

[http://fockert.xs4all.nl/~pentax/radioactive_lenses/radioact...](http://fockert.xs4all.nl/~pentax/radioactive_lenses/radioactive.html)

This pops up with some regularity in the Pentax world. Turns out Pentax made a lot of radioactive lenses back in the day[0], and they sold them in considerable quantity.

I happen to own one (a Super-Multi-Coated Takumar 50mm f/1.4), and can confirm that sunlight works to clear the yellowing.

If you're trying to avoid radioactive lenses, I believe pretty much everything Pentax made after the SMC PENTAX-M is non-radioactive. I have a SMC PENTAX-M 50mm f/1.4 as well that shows no signs of yellowing.

[0] [https://news.ycombinator.com/item?id=20612636](https://news.ycombinator.com/item?id=20612636) <\- scroll down ginko's link, there are scads of them.

</comment><comment><USER6> Quick reminder for people who have forgotten:

alpha particles are Helium nuclei. They are big, slow, and are easily absorbed by a couple of centimeters of air.

beta particles are high speed electrons (or positrons). They can be stopped by a couple of millimeters of aluminum, but they emit gamma radiation while being slowed.

gamma radiation is high energy photons, everything stronger than X-rays. You need a lot of dense material to stop them. Some elements, when absorbing gamma photons, will emit a free neutron.

Slow neutrons get absorbed by atoms; fast neutrons knock atoms apart. Either of these can produce unstable isotopes that may themselves emit radiation.

</comment><comment><USER7> Another famous radioactive lens is the Kodak Aero Ekar 7"/2.5. The "aero" in the name refers to the design purpose of the lens: aerial photography.

The fact that the lens is radioactive is not particularly interesting. However, it is an incredibly _fast_ lens for large format: on 4x5 film, f/4.5 produces a similar depth of field to f/1.2 on a 135* or equivalent digital camera. The 7" Aero Ektar produces a depth of field similar to f/.85 on 135.

Now, mounting one of these lenses to a rangefinder camera (typically a Graflex Pacemaker Speed Graphic press camera from the 1940s) for use in the field is a chore, and results in a very heavy and rather clumsy-to-use piece of kit.

David Burnett goes through the trouble, and the results [0] [1] are rather spectacular.

*135 is the normal "35mm" film format, the same size as "full frame" digital.

[0][http://www.davidburnett.com/users/davidburnett/images/davidb...](http://www.davidburnett.com/users/davidburnett/images/davidburnett966606.jpg)

[1][https://www.davidburnett.com/users/davidburnett/images/david...](https://www.davidburnett.com/users/davidburnett/images/davidburnett961178.jpg)

<comment><USER8> And thanks to Burnett, the prices these lenses go for has gone up quite a bit.

</comment></comment><comment><USER9> There's plenty of radioactive lenses out there. Many Takumars and Super Takumars for instance.

[https://camerapedia.fandom.com/wiki/Radioactive_lenses](https://camerapedia.fandom.com/wiki/Radioactive_lenses)

When I first heard the term "radioactive glass" I thought this was just a term used to refer to very sharp lenses. Boy was I wrong. :)

</comment><comment><USER10> Please note that this particular geiger counter does not actually measure alpha radiation. Alpha radiation is the biggest concern with these lenses.

<comment><USER11> Is it though? Alpha radiation is nearly trivial to block, clothes or just a couple centimeters of air is enough to block most alpha radiation and it's not particularly damaging even if you are exposed to it. The camera body is going to block 99+% of the alpha emissions so even holding it up to your face isn't going to pose a big risk.

</comment></comment><comment><USER12> > Since the decay chain of thorium consists exclusively of alpha and beta > particle emission, neither of which is very penetrating, the closed shutter > protects the film from the radiation from the rear of the lens.

This isn't true. Thallium 208, for example, is on the decay chain. Yeah, it beta decays to lead, but it also emits a 2.6 MeV gamma ray in the process [1]. That's one of the highest energy gamma rays you typically see from radioactive decay, and it's highly penetrating. That's one example, and there's also lead 212 and actinium 228, which also peaks in the 100s of keVs.

[1] See the "gammas" part of [http://nucleardata.nuclear.lu.se/toi/nuclide.asp?iZA=810208](http://nucleardata.nuclear.lu.se/toi/nuclide.asp?iZA=810208)

<comment><USER13> Am I reading it wrong?

Tl208 to Pb is beta decay, there are no gamma particles involved. I would think the 2.6 MeV energy listed is for the electron emitted.

<comment><USER12> You're not reading it completely wrong. There is a beta decay.

Look at the last page of this table: [http://www.nucleide.org/DDEP_WG/Nuclides/Tl-208_tables.pdf](http://www.nucleide.org/DDEP_WG/Nuclides/Tl-208_tables.pdf)

The green arrows are possible beta decays to lead 208. But 208Tl never decays to the nuclear ground state of lead 208. And so after the beta decay, there are gamma rays (the black arrows) as the nucleus relaxes from whatever excited state it ended up in.

</comment></comment></comment><comment><USER14> I wonder if there were any environmental or health issues associated with the manufacture and finishing/grinding of these lenses. The EU forced camera manufacturers to stop using leaded glass a while back because of worker's health.

</comment><comment><USER15> The article mentions another interesting post on the site, which indicates that there is apparently a slight diurnal variation in background radiation levels: [https://www.fourmilab.ch/documents/cosmic/](https://www.fourmilab.ch/documents/cosmic/)

There is some good data, but no conclusion on why this would be the case. Anybody know of any followups that explain this effect?

<comment><USER16> Purely a guess on my part, but I'd wonder if it corresponds to whether your location on Earth is pointing towards or away the galactic core.

</comment></comment><comment><USER17> Does anyone have some example images taken with this kind of lens? I'm curious what the result would look like.

<comment><USER9> This blog post has some sample photos with a collapsible 5cm f2 summicron that looks like it's from the same era:

[https://talktog.wordpress.com/2013/08/15/lens-review- leica-l...](https://talktog.wordpress.com/2013/08/15/lens-review-leica-leitz- summicron/)

</comment></comment><comment><USER18> Why isn't there any mentioning of radiation exposure effects on film? Or are they so insignificant that it's not worth mentioning?

<comment><USER19> There is (in the paragraph after the last picture):

> First of all the most commonly used films in the early 1950s were slower > (less sensitive) than modern emulsions, and consequently less prone to > fogging due to radiation. Second, all Leica rangefinder cameras use a focal- > plane shutter, which means the film behind the lens is shielded from the > radiation it emits except for the instant the shutter is open when making an > exposure, which would produce negligible fogging. Since the decay chain of > thorium consists exclusively of alpha and beta particle emission, neither of > which is very penetrating, the closed shutter protects the film from the > radiation from the rear of the lens.</comment></comment>


An English major walks into an operating systems class... - <AUTHOR> http://bwog.com/2012/12/02/freaky-friday/

<comment><USER2> I'm in an OS class right now; my screen while reading this: <http://i.imgur.com/MVvqy.png></comment>


The 13-year-old CEO who invented a cure for hiccups - <AUTHOR> http://theweek.com/article/index/227616/the-13-year-old-ceo-who-invented-a-cure-for-hiccups <comment><USER2> Whereby "invented a cure" they mean "glued together some folk remedies". The coverage and marketing will sell a number of these, but sadly the only important business lesson learned will be selling false promises.

Throw in some hair tonic and a bridge and we'll talk.

</comment><comment><USER3> Is there anyone who cannot stop their hiccups by just holding their breath for 20-30 seconds? That works every time for me.

<comment><USER4> Yes, there are people with chronic rather than acute hiccoughs.

A wide range of quite strong medication is used. Wikipedia has some information.

</comment></comment><comment><USER5> So, is this a universal cure or not? Because there do exists multitudes of treatments for hiccups already. It's just, most don't work effectively and none are universal.

My sceptical self tells me that this is nothing more than over sensationalized candy.

</comment><comment><USER6> Hm, I wish her luck, but is it likely that kind of remedy really works? Never heard of those folk remedies. If it works, does it work better than eating a spoonful of sugar?

</comment><comment><USER7> If HN could stop posting stories of teens and youngster geniuses creating greatness in the world, and making me inadequate as a person, that would be just swell. TIA.

<comment><USER8> Greatness?

"It's very rare, when you're evaluating businesses, that you can envision a company or product being around 100 years from now." Hiccupops is one them. "It solves a very simple, basic need."

My hiccups go away before I can complete an order for any products relating to hiccup relief. If you're a human being you can stand a few minutes of unpleasantness.

<comment><USER9> That's like saying there's no market for umbrellas since it will stop raining before I can order an umbrella, and any human being can stand a few minutes of getting wet.

<comment><USER8> I've seen it rain all day. I have never had hiccups all day.</comment></comment></comment></comment>


My favorite principle for code quality - <AUTHOR> http://www.pathsensitive.com/2018/02/making-bugs-impossible-illustrating.html <comment><USER2> My advice for design: Design is hard. Good design is so hard that you will almost never see it in the wild. It becomes even harder when you work with other people. Your carefully crafted ideas will be crushed under the foot of the next confident programmer who thinks they have found the holy grail of design. As more and more programmers are added, they pour in their particular favourite flavour of programming sauce. The result is swamp water.

Good design is not about the code. Good design is about the people who are going to work with that code. Understand your audience. Get to know what they like and what they don't like. Write your code in a way that will delight your audience. Give them what they expect to see.

Of course, this is exceptionally shallow advice because no programmer can actually be so selfless. If you write code that pleases your audience you will usually have to do so at the expense of yourself. It is not possible to write good code that you dislike -- at least not long term.

So the trick to good design is always putting a bit of yourself in the code and always putting a bit of your colleagues in the code. It's striking that balance where you are satisfied, but also where they are satisfied. This requires working in small increments, and sharing what you are doing. It requires watching what your colleagues are doing and looking for opportunities to borrow. It requires questioning, evaluating, praising, explaining and coaching.

And if you are working by yourself: do whatever the hell you want. Why are you so worried about what other people think? If you are trying to improve what you are doing, don't do so by reading about the opinions of others. Read code, not blog posts. Write code, not design diagrams. Work slowly, try out ideas you've seen in other code and evaluate their success. When you get the chance, work with others to broaden your horizons.

<comment><USER3> I like the way you think, do you write anywhere else?

I'm only in my first year of designing and writing code professionally, much of what you point out about this being 1. difficult, and 2. a social/human endeavor rings true.

<comment><USER2> I have promised to, but have not followed through with that promise. One of these days maybe...

</comment></comment></comment><comment><USER4> I can't disagree more with this post. One should always aim at trivial code, but as things get more complex, it is there the the sensibility should fire in and make you say, ok I need more abstraction now, and refactor accordingly. But even then it is important to just add the minimum amount of abstraction to generalize the problem at hand, without thinking like "but why if in the future we change things..." Unless it's very clearly going to happen soon.

<comment><USER5> There's an excellent discussion on this topic in the sample chapter, Rediscovering Simplicity[0], from Sandi Metz's book, 99 Bottles of OOP[1]. I often use it as a source for discussion with devs.

[0] [https://www.sandimetz.com/99bottles/sample](https://www.sandimetz.com/99bottles/sample)

[1] [https://www.sandimetz.com/99bottles](https://www.sandimetz.com/99bottles)

<comment><USER6> I like this, though I think anyone who mentions SLoC as a metric is honor- bound to quote Dijkstra: _My point today is that, if we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent": the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger._

</comment></comment></comment><comment><USER7> > Standard disclaimer: When reading software design advice, always imagine the > examples given are 10x longer. Overengineering is bad. But, if you're not > sure whether applying a technique to your code would be overengineering, > error on the side of doing it. Abstract early.

Please, please, please absolutely disregard this advice. More errors, pain and suffering come from early abstraction and poor understanding then not enough abstraction.

Build simple, extend as needed. It's a 'frggin stats page where a developer forgot to remove a call. It could of been written much cleaner initially, but breaking it into a bunch of classes at the initial stage is fruitless abstraction.

<comment><USER8> This boils down to _code removeability_. A few larger classes wit large methods is in general easier to remove/refactor then a large amount of small cohesive classes with an obtuse design concept behind it. Of all the codebases I refactored, I take the "large methods and large classes" hands down. Pulling a few classes here and there is easy, compared to first understanding a clusterf*ck of overengineered abstractions.

<comment><USER9> I worked with a domain driven setup at one point, which seemed like it was designed to sell JetBrains licenses because it became almost unbearable to try and maintain the codebase with a text editor. You would have to go through a controller, a DI container, a repository, an entity, a factory, a builder, maybe a facade, and an event bus... almost all of which were single-method classes (except for the DI boilerplate which was split between constructors and YAML files) that just called the method of the next dependent class. One line of concrete business logic hidden between half a dozen files full of architecture.

The rationale was that the abstraction was necessary to make things easier to replace if they weren't needed but it was a false assertion on two levels (and it almost always is):

\- that kind of replacement is unlikely to happen in the short/mid-term, and if it does it won't be in a way you anticipated.

\- the simple version could be deleted and rewritten in less time than it would take to fix your highly abstracted/decoupled/meticulously architected integration

Of course, simple isn't easy and this approach to abstraction (where you take classes/methods longer than _x_ lines and extract them into more classes and methods) is very easy to achieve... at a great cost.

<comment><USER10> This makes me think of a good thinking talk, with a quote I pull out from time to time:

> I hate code, and I want as little of it as possible in our product.

[http://pyvideo.org/pycon-us-2012/stop-writing- classes.html](http://pyvideo.org/pycon-us-2012/stop-writing-classes.html)

<comment><USER11> I was always disappointed I couldn't find more talks by Jack Diederich after watching this one. His approach was so practical compared to so much programming advice out there. I see now that he's got a few more talks linked from here.

I know how I'll be spending a few hours in the next few days. Thank you for reminding me of his talk!

</comment></comment></comment></comment></comment><comment><USER9> I love articles like these because every time I'm naïvely expecting to learn something new, but more often than not I'm left unsatisfied.

It's always the same pattern and it's like the programmer's version of the one weird trick. Show ten lines of (contrived) code and talk about its potential to be flawed, and then 'fix' it by explaining 50+ lines of code that has to be abbreviated or split into pieces to keep the article flowing. What quality actually means in this context is unclear, but it feels like tidying your bedroom as a child: hide the clutter in various places to give the appearance of cleanliness, while actually creating more of a mess for the next cleanup in the process.

And like many programming maxims, advising to abstract early is just as bad as advising to not abstract at all. Better abstraction will become more apparent as you see how your system fits together and how parts of it can be lifted up to a higher level, and this kind of intuition will only come with patience and experience.

</comment><comment><USER12> I believe the code presented would have benefited from a lambda-based API approach instead of an object-oriented one. In Javascript:

      // global, since the cached values were apparently global in the original
      let cache = {};
      let lastCachedTime = 0;

      // Utility for fetching potentially cached values, or computing them
      // if there's no valid cache entry.
      let cached = (id, recompute) => {
        // I don't love this policy, but thankfully it's all in one place.
        if (lastCachedTime <= lastMidnight() || lastCachedTime <= lastNoon() {
          cache = {};
          lastCachedTime = Time.now();
        }
        if (!(id in cache)) {
          cache[id] = recompute();
        }
        return cache[id];
      };

      // now we get to have a nicely factored, simple, conceptually independent,
      // declarative code for the dashboard.
      function displayDashboard() {
        print("Total Users: " + cached("numContent", => countUsers());
        print("Articles written: " + cached("numArticles", => countArticles());
        print("Words written: " + cached("numWords", => countWords());
      }

This achieves the same "Embedded Design" goal. If you squint, it's actually virtually the same as the DashboardStatComputation/DashboardStat/Dashboard the author comes up with, where each lambda in the displayDashboard function is corresponds to a DashboardStatComputation.

I prefer this lambda-based design because it reifies the "form" into a single, callable, function: _cached()_. If you want to use the idea of _cached()_ , you don't have to subclass anything or know about its implementation details— just call it.

(PS. the code's even nicer in CoffeeScript)

<comment><USER13> Yes, 90% of abstraction is best done by organizing files and functions, NOT by creating classes.

<comment><USER14> Unfortunately these are largely the same thing if you're stuck with Java <= 8

</comment></comment></comment><comment><USER15> > The Embedded Design principle, which I briefly introduced in a previous > post, states that you should always code in a way that makes the design > apparent. It's like pixie dust in its ability to make code more readable, > loosely coupled, and impervious to bugs.

I'm all for good software design, but claiming a design process can eliminate bugs is more fantasy than reality. Bugs typically come from unforeseen requirements or application states.

Yes, planning reduces bugs, but bugs are still inevitable no matter what software design process we use.

<comment><USER16> Cleanroom has a lot of evidence that process (especially around code inspection/review) does improve quality more than TDD or other methods of detailed design, most people are just unwilling to take the time for detailed process for quality IMO.

<comment><USER17> That's frequently a reasonable trade off. A lot of businesses need a proof of concept to test product market fit. IMHO TDD can often be a massive waste of time if that is the case.

There's weirdly not a lot of good advice out there on sensible steps to reasonably transform a rushed proof of concept in to a production quality app. Mostly it all starts with the assumption that you're building something from scratch.

<comment><USER16> > There's weirdly not a lot of good advice out there on sensible steps to > reasonably transform a rushed proof of concept in to a production quality > app. Mostly it all starts with the assumption that you're building something > from scratch.

Cleanroom is actually completely reasonable for this - what you must accept is that transforming a rushed proof concept into a production quality application _is_ starting from scratch in terms of ascii in github. It's the experience of those that worked on it that is valuable to save.

</comment></comment></comment></comment><comment><USER18> > "There's a bug over there because you re-used lastCachedTime. Otherwise, > looks good. Ship it!"

The fixed code still has a bug. It assumes successive calls to lastMidnight() within the method will always return the same date. But presumably, if partway through the method it ticks over to midnight, that would not be the case. So some stats would be updated during one call, and the rest would be updated during the next call.

That would violate this requirement:

> They had previously decided all stats should refresh simultaneously;

<comment><USER19> He does point out every good programer knows they should have one if check for all three: " Wrapping Up . Many programmers will get a sense that something was off about the first example. Every programmer I've shown this example to knew they should merge the if-statements and factor out the prints. "

Which corresponds to the one if part of the story: " if (lastCachedTime <= lastMidnight() || lastCachedTime <= lastNoon()) { numUsers = countUsers(); numArticles = countArticles(); numWords = countWords(); lastCachedTime = Time.now(); } "

So having the multiple ifs being bad even before a second cache refresh is added is part of the story.

</comment></comment><comment><USER20> I feel like this is a long-winded way of saying what Linus already has famously said:

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

The author refactors some code to revolve around a "DashboardStat" and explains it came from "thinking about how the code is derived from the design." Personally, I think it came from putting the data & its structure first.

<comment><USER21> [https://softwareengineering.stackexchange.com/questions/1631...](https://softwareengineering.stackexchange.com/questions/163185/torvalds- quote-about-good-programmer)

gives some of the genealogy of the idea.

[http://www.faqs.org/docs/artu/](http://www.faqs.org/docs/artu/)

"Rule of Representation: Fold knowledge into data so program logic can be stupid and robust."

[https://users.ece.utexas.edu/~adnan/pike.html](https://users.ece.utexas.edu/~adnan/pike.html)

"Rule 5. Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming."

</comment></comment><comment><USER22> This was a pretty bad article on achieving code quality.

First, there was a bit of bashing of design patterns and refactorings and says we can forget all that in order to make it sound like he was going to drop some magic fundamental wisdom. Which he then says is "Embedded Design Principle".

Then he proceeds to describe an evolution of a piece of software into a bit of a mess, then proceeds to solve it by "AND here is a design that solves it". No method or process for getting to that design, just "here it is!" .... drop the mic, exit stage left. So basically his advice is dont write crappy code, some how magic up a design that might or might not be robust for the future that reveals your design.

Looking at some of his other stuff, he uses a similar "strawman" ish approach to first highlight some technique like (TDD), come up with some crappy code, and use it as some kind of justification for what he thinks.

Funny thing is, the stuff he trivialized actually are exact micro techniques that allow one to create code thats shows its design.

However, for this article, there is a simpler idea that is useful when tackling code like this ( I first came across it in martin fowlers UML Distilled ) and that was the idea of "Levels of Perspective". Which there is Conceptual, Specification, and Implmentation. Since his code seems to have purposely mushed all those things together, its an easy way to look at this code and make it better. I won't go into the exact details, but given a piece of crappy code either in the beginning stages or even the end stage and start decomposing it, first seperating specification and implementation, then as one gains insight, seperating things into composable conceptual ideas. To achieve this, you want to use things like TDD, Refactoring, Patterns, but, and the real trick, only as is demanded to shape the code into a simple design that is modular and composable.

</comment><comment><USER23> Hmm.. Grrumble. I think he has the tail of something.... but hasn't stated it well.

Personally I keep coming across code where the "design" as indicated by names and comments indicate one thing.... but the fact of the code indicates another design.

Now if this indicates a bug, ie. Incorrect behaviour, yup, fix it.

But usually it has been "tested into the shape of a product". ie. The names and the comments and the data structures indicated first, draft, incorrekt, thoughts... and the reality of the code _is_ the correct behavior.

Usually at that point I refactor to reveal what the design really is, down at the mathematics of the code, not what the designer thought it was.

</comment><comment><USER24> I prefer a more focused version of this principle: you should organize your data in a way that makes the design apparent. The code will follow later.

This principle still works with the author's example. Most of the refactoring he did boiled down to modeling the data more accurately.

<comment><USER25> Algorithms + Data Structures = Program

This was something that was stressed by my mentor, who was a mathematician turned programmer and a big fan of Niklaus Wirth. It has proven valuable to me on numerous occasions and informs design.

[https://en.m.wikipedia.org/wiki/Algorithms_%2B_Data_Structur...](https://en.m.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs)

</comment></comment><comment><USER26> The post indirectly suggest creating domain specific language for solving dashboard presentation problem. In my opinion this shifts engineers focus to solve problems with-in provided domain specific language, which in the end resolves in job security, as non-senior engineers will not "dare" to touch "the framework". Whole situation, in my opinion, results in "everything working on paper" (aka tests, good design, etc) while in reality nothing works and as project progresses engineers get a feeling that "nothing can be done". I would just remove "numWords = countWords();" line and move on. There is no need to invent domain specific language when just programming language is sufficient. I would love engineers to be more reasonable and aware of DSL's trade off.

</comment><comment><USER27> _Robert Piersig illustrates these higher-level concepts, which he calls forms,_

Pretty sure that's attributed to Plato. Well I guess he called them _είδε_ but he couldn't wait around for English to get invented.

<comment><USER28> I think that was one of the great things about Zen. It was an unreliable narrator who had megalomania. At one point, he acknowledges that most of what he is stating is pulled from older greek philosophy that he didn't bother to learn properly but then continues to claim to invent new philosophy through the story.

<comment><USER29> I get the feeling that most fans of _Zen_ didn't interpret the narrator as unreliable :-/

</comment></comment></comment><comment><USER30> I agree with the general sentiment, but suggest exercising caution: Every problem can be solved by an additional layer of abstraction, except the problem of too many layers of abstraction!

<comment><USER31> Is that a quote from someone? It nicely sums up my naive experience of trying to "clean up" my code

<comment><USER32> [https://en.wikipedia.org/wiki/Fundamental_theorem_of_softwar...](https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering)

</comment></comment></comment><comment><USER33> "Abstract early" is just plain bad advice because you usually don't know the full problem up front. Better advice would be to write code that lends itself resilient to refactoring (i.e. it is easy to refactor and won't break in unexpected ways when you do so)

Additionally, the authors "better" design now abstracts the primary performance problem out of sight of the developer. The main problem I see is that they are making multiple passes through the data to extract different metrics. By abstracting early they miss the opportunity to improve the performance by calculating all the metrics in one pass. The new design has hidden the root cause of the problem and prevented a developer from fixing the core problem without chucking out the entire design.

</comment><comment><USER34> Ask yourself what assumptions you are baking into the design. Can you make them more explicit? How likely are they to change? Where multiple approaches are on the table, favour the ones with the fewest assumptions. Be especially critical where cardinality is concerned. It's much easier to go from n to n+1 than from 1 to 2.

</comment><comment><USER35> I find it extremely disconcerting that so many software engineers don't follow this. You're not there to figure out some clever way to do something that you made up. You're first and foremost there to figure out the essence of the thing itself and to find where the design exists naturally. Only then can you really start to design things well IMO.

</comment><comment><USER36> This is a very complicated solution for a problem the compiler would warn you about (unused variable).

</comment><comment><USER37> How does the final example solve the daily slowdowns?

</comment><comment><USER38> Abstract Early? That's kind of Anti-KISS . It's better to start simple and abstract when desired.

It wastes a lot of time when I try to abstract early. You can't solve a problem without all the variables.

</comment><comment><USER39> I feel like there must be an equation such as:

 _Peter Principle + Embedded Design Principle = Conway 's Law_

</comment><comment><USER40> More often than not AwesomeSauce will end up SpectacularFailure, thus making the exercise in divining the future use case of 30 lines of code pointless

</comment><comment><USER41> seems the article ends up with what was first done decades ago in PHP - separation of presentation and business logic. Btw i don't understand all this animosity toward PHP, especially given that pretty much all the modern web development is basically PHP-like, in spirit if not in actual implementation.

<comment><USER7> > i don't understand all this animosity toward PHP

Most PHP code is _terrible_. That's not really PHPs fault - it's capable of producing very nice programs with beautiful behavior.

As a language, it suffers a bit from being older and it was internally very inconsistent for a long time. For a long while, it's package management and practices were way behind the curve. Many people who program in PHP learned it as a first language, hacked together programs in it, and probably used hack together libraries and tooling.

PHP can be used with grace, but most people don't have that experience with it.

<comment><USER42> For what use case is PHP better than other languages?

<comment><USER43> Rapid development of performant get/post web interfaces. Ruby is nice but runs a lot slower. Python is better in a general-purpose sense, but every file will have a preamble of includes for things that are just built-in to PHP.

As a general purpose language, PHP is weak. As a web-form DSL, it's great!</comment></comment></comment></comment>


Efarm. Indian Farm-to-House supply chain. (Needs a US copycat). - <AUTHOR> http://www.pluggd.in/indian-startups/efarm-farm-to-home-supply-chain-platform-3810/

<comment><USER2> This is roughly the business model of a company I co-founded in Austin in 2005 - <http://www.greenling.com/>

Initially we marketed it as 'Farmer's Market to your Doorstep'. The model was fairly well established when we adopted it. For instance in the bay area there is Planet Organics, and several other competitors that have been around for years. The model was also found in Seattle, Oregon, Denver, and several other 'green' locales. I'd imagine today there is some kind of farm to market logistics service in most major metropolitan markets.

Additionally, there is a non-profit version of the model called co-ops. Here members are supposed to be stakeholders in a farm, and there are simple logistic systems to distribute produce, etc to each of the members residences.

In India the customer base is likely different. US Customers for the commercial farm-to-market concept are generally out of greenness (ie, consideration for the earth, or organic farming) or convenience (particular families with newborns). Members of the non-profit co-ops are likely driven by support for local farms and greenness factors.

<comment><USER3> Co-ops, or CSAs, are becoming increasingly popular, as are "buying clubs" for farms that don't offer CSAs. I could see something like this to work well with small farmers who don't offer CSAs but still hit the farmers' market circuit.

</comment></comment><comment><USER4> CSAs are one alternative in the US.

<http://www.localharvest.org/csa.jsp>

The above site provides a search feature to find local CSAs as well.

</comment><comment><USER5> Seriously - what a great idea! I have wanted to work on something like this for some time now. There are already food co-operatives which have distribution centers and managing teams of volunteers/recipients worked out. Now we just need to combine something like what the article describes with that infrastructure. The only thing is unless you are shrewd there is not much of a mark up to be made so I see it as being more of an awesome project to work on and less of a "start up".

<comment><USER6> You're right that there's not much money to be made - the cost is in the distribution. There are companies here in the US (such as Boston Organics) that provide this service, but the higher cost of labor/transportation (gas and refrigerated trucks, in some cases) when compared to India is what hurts. You either end up with small profit margins, or a cost to customers such that those who are interested don't perceive the service as being a good value.

Now, that being said, I could see this working if you targeted a geographically small, very dense area, and had your distribution center there. Then you could get deliveries from farmers and not have much distance to transport the goods yourself. I'm thinking an area the size of say the Mission/Noe Valley/Castro/Potrero Hill in San Francisco.

How well this all scales, and could you make a big business out of it - well, we've had a bunch of supermarket delivery businesses that have come and went, haven't we? But I bet someone smart could come in, innovate on what's already been tried here in the US, and make a nice living for a small group of people.</comment></comment>


A Neural Parametric Singing Synthesizer - <AUTHOR> http://www.dtic.upf.edu/~mblaauw/IS2017_NPSS/ <comment><USER2> When [https://lyrebird.ai/demo](https://lyrebird.ai/demo) showed up on hacker news last week the first thing i thought was: I can't wait to buy voice sampler packs of my favorite artist to add to my music :)

</comment><comment><USER3> Thinking about Hatsune Miku[1] here... are human vocalists headed out? Think about how much cheaper it'd be to have robot entertainers, who don't get drunk, fight their contracts, storm out of concerts, get sick...

Hatsune Miku has, "performed at her concerts onstage as an animated projection".

1: [https://en.wikipedia.org/wiki/Hatsune_Miku](https://en.wikipedia.org/wiki/Hatsune_Miku)

<comment><USER4> I went to a hatsune miku holographic performance at a festival concert here in Tokyo a few years back. The crowd was into it and it was a lot of fun.

Visually, it was totally convincing from the center of the floor at mid- distances. There were other characters who performed, they had costume changes, special effects, etc... It's a 2D effect but at concert distances, you can't really tell and the lighting of the character convinces your eyes.

There was one point where she put her foot up on a monitor speaker and my mind was blown until I realized that the monitor was part of the hologram too. It had been sitting there by the floor for the whole song waiting to have her put her foot on it.

</comment></comment><comment><USER5> At this stage, it's still trained on the voices of individuals, making ownership of the songs a fairly straight-forward thing to negotiate and adjudicate in court if necessary.

But what if it was trained on a dozen top pop stars? A hundred? A thousand? At what point does the resulting voice no longer belong to a human in legal terms?

My guess is we'll find out relatively quickly as pop music is willing to stretch IP pretty far in pursuit of a hit song.

</comment><comment><USER6> I was expecting some creepy unrealistic unpromising samples, but this actually sounds pretty good. But there is no information whatsoever on the page about how these samples came to be. There are some papers [here]([http://dblp.uni- trier.de/pers/hd/b/Blaauw:Merlijn](http://dblp.uni- trier.de/pers/hd/b/Blaauw:Merlijn)) from this author.

<comment><USER7> I was all set to "meh" but... nope. Dead wrong.

This is comfortably on its way out of uncanny valley. _Very_ impressive.

Edit: the only thing that sticks out as being a little off is the pitch/intonation envelope. Some of the pitches are off the mark, and some of the glides between notes aren't quite what a human would do. The vocal tone is near perfect.

Pitch should be the easiest thing to fix. I wonder if that's an artefact of the training set.

</comment></comment><comment><USER8> I'm a little confused. Why is this special? Is the difference this is generated from training instead of samples?

Vocaliod has been around for over 13 years:

[https://en.wikipedia.org/wiki/Vocaloid](https://en.wikipedia.org/wiki/Vocaloid)

[https://www.vocaloid.com/en/](https://www.vocaloid.com/en/)

[https://www.youtube.com/watch?v=0HIjTFVINHE](https://www.youtube.com/watch?v=0HIjTFVINHE)

</comment><comment><USER9> A paper with the same title and authors: [https://arxiv.org/abs/1704.03809](https://arxiv.org/abs/1704.03809)

</comment><comment><USER10> The mixed version sounds really good. Acapella it sounds robotic but the acapella is the exact same voice track that is used in the mix, right? Amazing.

</comment><comment><USER11> How does one input the phonemes and parameters for a synthesizer like this? For those of us that are naturally good singers, the easiest way would be to just sing, have a program convert the vocal into phonemes and parameters, and then change the key, gender, or whatever.

<comment><USER5> The dataset as described in the paper linked below-

"In the initial evaluation of our system, we use three voices; one English male and female (M1, F1), and one Spanish female (F2). The recordings consist of short sentences sung at a single pitch and an approximately constant cadence. The sentences were selected to favor high diphone coverage. For the Spanish dataset there are 123 sentences, for the English datasets 524 sentences (approx. 16 and 35 minutes respectively, including silences). Note that these datasets are very small compared to the datasets typically used to train TTS systems, but this is a realistic constraint given the difficulty and cost of recording a professional singer"

<comment><USER12> "but this is a realistic constraint given the difficulty and cost of recording a professional singer"

Just because a singer is professional doesn't mean they're any good. My wife copes with adversity by singing and she can sing "fuck fuck fuck shit shit shit" in soprano, on key, from the kitchen. The only thing keeping her from singing in public is her stage fright.

There are a /lot/ of people like her, that would answer an ad in the newspaper (or craigslist) that would like to /volunteer/ and contribute to a geeky project as long as they got credit in the paper.

At that point, the largest non-tech cost winds up being the studio rental fee, if you have one.

<comment><USER11> You could also go to karaoke bars and observe who the good singers are.

</comment></comment></comment></comment><comment><USER13> Intonation is gratingly bad, and that should be the easiest part. Speech quality, however, is top notch. If you played it for me w/out letting me know it was a software synth I might not notice.

</comment><comment><USER14> The spanish girl is amazing.

Here is their paper: [https://arxiv.org/pdf/1704.03809.pdf](https://arxiv.org/pdf/1704.03809.pdf)

<comment><USER15> It's easy to spot the English voices as synthetic if you listen to the Acapella tracks... but try the "Powerful VQ"!

</comment></comment><comment><USER16> Sounds very convincing, especially the Spanish girl! I can't wait to play with a piano roll interface for laying down vocal tracks of this quality.

</comment><comment><USER2> Holy mother of God this is amazing!

<comment><USER17> Is this like a 5 year fast-forward in this technology? Any experts see this coming in 2017? Wow.</comment></comment>


Tech employees protest in front of Palantir HQ - <AUTHOR> https://techcrunch.com/2017/01/18/tech-employees-protest-in-front-of-palantir-hq-over-fears-it-will-build-trumps-muslim-registry/ <comment><USER2> > they are concerned Palantir and its co-founder and Trump advisor Peter Thiel > stand to profit off the makings of a citizen database that could be used > against those identifying as followers of Islam in the United States

So, is this just an attempt to smear Thiel by implying his company is going to "build Trump's Muslim registry", and that Trump is indeed going to build one? Smear by association?

> "Being forced to collaborate with the U.S. government on large-scale human > rights abuses is the first time I've ever seen that made high-end tech > workers unionize"

What collaboration? I thought this was speculative "concern"? and who forces tech workers to do anything anyway?

Also, let's not talk about "tech workers unioniz[ing]" on the basis of just 50 people...

> one of the protestors and the founder of Frame Shift, a consulting firm > training startups on inclusion and diversity

..leftist tech-workers, with possible interests of their own

> Trump pledged he would ban Muslim immigrants and establish a registry while > in office

Did he? Maybe TC should clarify these claims, and what they mean. He _pledged_ nothing wrt a registry though.

> such a database smacked of the Holocaust

which is why the idea was invented, and repeatedly reported, by the media.

> [Palantir] had not been quite as vocal.

Guilt through silence?

> Palantir's Alex Karp eventually did come out against the building of a > Muslim registry last week

Actually, no. Something actually substantial, and it doesn't support the premise of the protests, and the article. Nice weaseling: "eventually", as if there is some requirement to satisfy the press within some time limit.

> There's a difference between telling the press that and pledging to never do > it.

Beg next time, Alex! Get down on you knees! The left must be satisfied!!

> what measures it would take to ensure it would not be making a Muslim > registry

Are you fucking serious!?!...

<comment><USER3> I don't understand what these protests hope to achieve.

Having said that, you are questioning things that have been public knowledge for a while.

<comment><USER2> Can you be more specific? What "have been public knowledge for a while"?

What is public knowledge worth?

"3\. the information system which informs the collective is filtered by a quality control mechanism that relies on individuals to a high degree.

Lanier argues that only under those circumstances can a collective be smarter than a person. If any of these conditions are broken, the collective becomes unreliable or worse."

[https://en.wikipedia.org/wiki/The_Wisdom_of_Crowds#Criticism](https://en.wikipedia.org/wiki/The_Wisdom_of_Crowds#Criticism)

[https://en.wikipedia.org/wiki/List_of_common_misconceptions](https://en.wikipedia.org/wiki/List_of_common_misconceptions)

If you are talking about the "Muslim Registry":

[http://www.breitbart.com/california/2017/01/15/s-f-mayor- opp...](http://www.breitbart.com/california/2017/01/15/s-f-mayor-opposes- trump-muslim-registry-never-proposed/)

"Look, I'm not going to rule out anything. I wouldn't — we're not going to have a registry based on a religion." \-- Priebus

[http://www.breitbart.com/video/2016/11/20/priebus-were- not-g...](http://www.breitbart.com/video/2016/11/20/priebus-were-not-going-to- have-a-registry-based-on-a-religion/)

If you don't like breitbart:

[http://www.vox.com/policy-and- politics/2016/11/16/13649764/t...](http://www.vox.com/policy-and- politics/2016/11/16/13649764/trump-muslim-register-database)

"it seems Trump is trying to say that he was previously talking about illegal immigration and a wall -- not a registry for Muslims. And he seems taken aback by stories that said he wanted such a database."

[http://www.politifact.com/truth-o- meter/article/2015/nov/24/...](http://www.politifact.com/truth-o- meter/article/2015/nov/24/donald-trumps-comments-database-american-muslims/)

One example of reporting that buries the lede:

[http://www.independent.co.uk/news/world/americas/barack- obam...](http://www.independent.co.uk/news/world/americas/barack-obama-donald- trump-muslim-registry-will-it-happen-could-be-blocked-a7456856.html)

<comment><USER4> I don't like Trump, never have. But the way the media baits his words and expects us to be appalled is absurd and dishonest.

</comment></comment></comment></comment><comment><USER5> For those wondering what the rationale is, the protest website has a good explanation: [http://dobetter.tech](http://dobetter.tech)

<comment><USER6> I don't understand what's specific about Palantir. If our government decides to take action against a specific group of people I really don't think the database used is going to be the bounding factor.

<comment><USER5> > I don't understand what's specific about Palantir

They've already developed the tech that the government is likely to use, have millions of dollars of federal contracts, and have done very little to convince the public that they won't use their software and data for targeting muslims or some other group.

It's not about setting up a database, it's about populating that database, and it's taken years for Palantir to develop the data pipeline, analysis and infrastructure to do that.

<comment><USER6> My understanding is that Palantir sells analytical tools, not that they do data collection themselves. I'm sure there are a few three-letter agencies that could to that well enough without them. It's also why I find it kind of ironic that Facebook employees were among the protestors.</comment></comment></comment></comment>


Design Tip: Never Use Black (2012) - <AUTHOR> https://ianstormtaylor.com/design-tip-never-use-black/ <comment><USER2> >> Roads aren't black. Your office chair isn't black. The sidebar in Sparrow isn't black. Words on web pages aren't black.

A #000 pixel on the screen of your mobile or laptop isn't black, either.

I strictly adhered to the principle of never using black until I was specifically asked by one of my users that has presbyopia (and most people over 50 or 60 have it, to some degree) to make the text black. Black text was much easier for them to read than the standard Bootstrap dark colour with the same font size.

<comment><USER3> WCAG guidelines: [https://www.w3.org/WAI/WCAG21/quickref/?versions=2.0#qr- visu...](https://www.w3.org/WAI/WCAG21/quickref/?versions=2.0#qr-visual-audio- contrast-contrast)

the other commenter was right, 4.5:1 ratio minimum.

<comment><USER4> How do they define contrast? Is it the actual linear light (gamma corrected) contrast or are that saying that, if R==G==B, then you want R1/R2 >= 4.5?

</comment></comment></comment><comment><USER5> Black looks absolutely gorgeous on OLED displays. I'll keep ignoring this "advice" (disclaimer: I studied visual arts for almost a decade and am entitled to my own opinion). I have seen so many contrarian statements: "Never mix red and green" \- "Always put red and green together" that I just consider most designer advice a folklore.

<comment><USER6> 5% of males are red-green colorblind. Never mix red and green. If you do 2.5% of your audience have just stopped using your product/looking at your presentation.

<comment><USER7> As a red-green colourblind male. I'd temper that statement to don't mix red and green for encoding information. Ideally don't use colour as the sole means of encoding information anywhere.

The experience of colourblind people can vary wildly but for me other colours are harder to discern than red vs green. Blues, purples and pinks all are all very tricky.

If however you want to use red and green for some styling element, knock yourself out!

<comment><USER6> You are in many ways correct. Except that styling often crosses over into encoding information without the styler realizing it.

</comment></comment></comment></comment><comment><USER8> > When you put pure black next to a set of meticulously picked colors, the > black overpowers everything else. It stands out because it's not natural. > All of the "black" everyday objects around you have some amount of light > bouncing off of them, which means they aren't black, they're dark gray. And > that light probably has a tint to it, so they're not even dark gray, they're > colored-dark gray.

But black on a screen is not an unnatural black per se. On most screens you will get a baseline brightness and tint, and larger black areas pick up (diffuse or clear) reflections from the environment.

</comment><comment><USER9> I use an oled display on my phone. Black is really nice on it and I wonder if that changes things. Also I see this defense of not using black as an excuse to have a poor contrast ratio. I really enjoy black on white or vice versa because you can't beat that contrast.

<comment><USER10> I really like WP8 because of this. It's high contrast blacks were really good on an OLED. Easy on the eye and battery.

</comment></comment><comment><USER11> > Black overpowers everything else

This is the key idea of the article - very high contrast is powerful visually, and you should avoid too high contrast if that isn't what you want.

This can be good advice, but realize that #000 is not pure black (colors on the screen are also colors in the environment, so they may get reflection or be emitting light, even if they are displaying #000), and some users may prefer or need high contrast for accessibility, especially in very bright environments.

But if you want to see the closest to pure black you can get, go to a total eclipse - that disk of the moon surrounded by the sun's corona was _amazing_! Such an intense contrast, and it really did overpower everything else.

And yes, even that isn't "pure black" \- but it sure felt like it!

<comment><USER12> Another example of very dark black is the side of a stack of razor blades or Xacto knife blades. Because of the geometry, light goes in, but doesn't reflect back out.

</comment></comment><comment><USER13> Speaking solely for myself, I really dislike apps which use dark gray and light gray instead of full black and full white (or something very close to it) in their "dark UI."

It gets worse as you age and presbyopia sets in.

It is so much easier (for me, at least) to read high contrast text than this modern trend of "gosh don't use real black and white" in the UI. Additionally, actual pixel black is very (um, perfectly) energy efficient on OLED displays like my iPhone X and Alienware 13.

I like the discussion of black in art, though.

</comment><comment><USER14> Regardless of whether I agree with his point or not, using a "real life" photo as an example, when it's heavily filtered is just ridiculous.

</comment><comment><USER15> Unrelated, but I just checked his other posts about design and I miss 2012-era design so much. Nowadays everything seems flat and boring with no personality.

<comment><USER16> Because it has to be made in a way that also works on smartphones...

<comment><USER15> Pre-iOS 7 apps prove that non-boring design can work on smartphones too.

<comment><USER5> IMO it was partially due to push to retina screens and limited vector authoring tools (SVG) that were available at that time (i.e. difficult to make beautiful scalable icons if your authoring tools offer you mostly single-color patches and at best some basic gradients). Not sure why are we still stuck on that horrible design paradigm though.

</comment></comment></comment></comment><comment><USER17> I like saturated colours more than the average guy. However, while pumping up those colours, don't ignore contrast!

[http://contrastrebellion.com/](http://contrastrebellion.com/)

</comment><comment><USER18> Design tip: never use blue for regular text either. My first immediate impression from the page was that it is one giant hyperlink (probably visited).

<comment><USER13> I have a hard time reading blue text (especially if it is small, and even when wearing glasses) due to chromatic aberration caused by my astigmatism in my eyes. The first thing I do in any app which allows it is change all the mostly blue colors to mixtures like cyan.

</comment></comment><comment><USER19> I'm glad this fad has shifted away from using washed out fonts on white backgrounds since this article was posted in 2012. I am no designer and choosing/judging color palettes is probably my weakest area, but man the whole 'never use black' thing was/is awful in my opinion. I strongly prefer a website that uses #000 text on #fff background over some washed out gray that's impossible to read on #fff background.

</comment><comment><USER20> First thing I did when clicking through to the article was to hit my shortcut to switch the colours so the background is black to avoid the glare...

Incidentally I also read HN with a black background, use black terminal backgrounds, black editor backgrounds. Sometimes I toy with brighter backgrounds, but I prefer thigher contrast to brighter backgrounds every time.

Of course that might well be because no screen I have will give a pure black.

<comment><USER21> > Of course that might well be because no screen I have will give a pure > black.

OLED screens and their close approximations to "pure black" (unlit pixels) I think are more reason to use dark themes with real black as background. It uses less energy, is good for batteries, and sends less overall light into our over-stimulated eyeballs.

</comment></comment><comment><USER22> Just checked the gmail 'dark' background color, which always looked pretty black to me. Is actually #111111

</comment><comment><USER23> In most cases black is not the best color, but I don't agree with the word never. There are cases where black color is the best choice.

</comment><comment><USER24> That's my biggest hope for GitHub. That the now black title bar will become blueish. Black is horrible.

</comment><comment><USER25> This is highly subjective. Different people like different things.

</comment><comment><USER26> Wow, Facebook has changed a lot - only thing that tipped me off that this was an older (but still relevant) article.</comment>


Ask HN: What are the best practices for an open source project? - <AUTHOR> I am looking towards building an open source solution. What are the best practices do you follow while starting one? What are the things to remember? <comment><USER2> You can check the opensource.com blog, articles like this [0] might be helpful.

[0] [https://opensource.com/article/18/5/metrics-project- success](https://opensource.com/article/18/5/metrics-project-success)

</comment><comment><USER3> Github made an open source guide that has a lot of useful articles. A lot of it is focused around building a community around the project: [https://opensource.guide](https://opensource.guide)</comment>


Money for nothing:is Finland's universal basic income trial too good to be true? - <AUTHOR> https://www.theguardian.com/inequality/2018/jan/12/money-for-nothing-is-finlands-universal-basic-income-trial-too-good-to-be-true <comment><USER2> The experiment is not over so there is no data to canalize yet.</comment>


Show HN: Writeups and Files Repo for CTFs in 2015 - <AUTHOR> https://github.com/ctfs/write-ups-2015 <comment><AUTHOR> Note that we also provide write-ups and files for CTFs in 2013 [0], 2014 [1] and this year [2]. If you don't know what CTFs are: [https://ctftime.org/ctf- wtf/](https://ctftime.org/ctf-wtf/)

[0]: [https://github.com/ctfs/write-ups-2013](https://github.com/ctfs/write- ups-2013)

[1]: [https://github.com/ctfs/write-ups-2014](https://github.com/ctfs/write- ups-2014)

[2]: [https://github.com/ctfs/write-ups-2016](https://github.com/ctfs/write- ups-2016)</comment>