PNG vs SVG for sprites - <AUTHOR> http://codepen.io/adrianosmond/pen/LCogn <comment><USER2> That's just a browser problem: for such static graphics it shouldn't matter what the original image format is.

The browser will generate an internal bitmap for each decoded PNG image, and uses that for blitting/compositing. Any decent browser ought do the same for SVG icons as well (and just invalidate the bitmap when the SVG image size/rotation or page zooming changes). When compared to blitting, stroking and filling paths is expensive and so is PNG decoding.

Of course, SVG _can be_ rotated and scaled and animated nicely, unlike PNG. That will obviously be slower if done every frame. But this isn't the case and shouldn't be the case for such static icons.

(Of course, the current state of affairs probably is as described on the demo page. But it doesn't need to be.)

<comment><USER3> That works for the sprite example, but it doesn't generalize to all SVGs.

The problem is SVG filters let you do some pretty cool compositing stuff, but you can't necessarily generalize those effects in a static image. For instance, you could blur elements on the page using an SVG blur filter overlayed over your html elements, but if you're just blitting from a static buffer (like with a PNG), it's going to be wrong, so now you're not just paying attention to if the SVG changes, you also have to pay attention to if anything underneath it or around it changed. It's not an impossible problem, but I think you could still call a browser decent if it doesn't bother with that sort of specialized optimization.

See: [http://www.w3.org/TR/SVG/filters.html#AccessingBackgroundIma...](http://www.w3.org/TR/SVG/filters.html#AccessingBackgroundImage)

<comment><USER4> >The problem is SVG filters let you do some pretty cool compositing stuff

This is true for every single DOM element, which can layer and obscure and filter and be additive/subtractive and can have levels of translucency. This is not a novel problem with SVG, but it's one where the appropriate solution is a simple

if (isComplexCase) { // do uglier, more processor intensive activities } else { // do things the short and simple way }

The universe of possibilities on an artifact don't prescribe a baseline performance level unless you're actually using them.

And just to be clear, I don't fault the browser makers at all regarding this (any of us can contribute to Chromium/Webkit/Firefox), as they are simply optimizing their efforts towards the things that yield the biggest return, and optimizing SVG just isn't that critical. Yet this leads to a circular situation where we endlessly hear that you shouldn't use SVG because performance suffers.

<comment><USER5> SVG has the added problem of not knowing what size/detail it needs to be rendered to - while the image has a size it never knows to what scale it's going to be drawn. If we could provide hints we'd be able to cache a bitmap and scale it without the need to redraw. Even better would be to do away with the bitmap altogether and draw them as triangles.

I'd love to see some of the new vector map detail algorithms applied to SVG - the ones where you throw away any detail smaller than a pixel. Then we'd be able to zoom smoothly or (if the points need to be calculated and cached) progressively loading (and possibly streaming) detail.

<comment><USER6> I believe Loop and Blin have done a lot of work in this area. See for example,

[http://research.microsoft.com/en- us/um/people/cloop/LoopBlin...](http://research.microsoft.com/en- us/um/people/cloop/LoopBlinn05.pdf)

If someone like Ben Constable is lurking in this thread, he'd be able to say more this; I am extremely ignorant about this problem.

</comment></comment></comment></comment></comment><comment><USER7> Considering the vast majority of our time behind the computer is spent with software that uses 2D graphics, it is kind of ridiculous that we still don't properly exploit our graphics hardware for vector graphics.

Luckily the hardware vendors are already working on fixing this. Here's an example of a particularly problematic scene rendered using NVIDIA's GPU- Accelerated Path Rendering, compared to Skia, Cairo, QT and Direct2D:

[https://www.youtube.com/watch?feature=player_detailpage&v=zI...](https://www.youtube.com/watch?feature=player_detailpage&v=zI8cJMjEVBE#t=43s)

NVidia: ~220 fps

Skia: 6 fps

Cairo: 29 fps

QT: 0.3 fps

Direct2D: 48 fps

(On a sidenote, I guess this is why IE10 is often faster at rendering SVGs than the other browsers: it uses Direct2D, whereas Firefox and Chrome use Skia).

Using graphics hardware should be more energy-efficient, so maybe we will finally see a change because of mobile devices with HD screens.

<comment><USER8> Just to throw this in: my iOS project Ejecta[1] also does all the Vector drawing on the GPU using OpenGL ES2. It's not as advanced as NVidia's implementation (e.g. Ejecta computes all bezier points on the CPU and just draws on the GPU), but it's still much faster than what Apple is doing in CoreGraphics.

[1] [http://impactjs.com/ejecta](http://impactjs.com/ejecta)

<comment><USER9> Have you looked into using Loop-Blinn[1] for drawing Beziers? I'd love to be able to use the GPU for vector graphics and Loop-Blinn seems to solve the problem of drawing curves, but I'm still looking for a way to get coverage- based antialiasing when drawing straight lines with the GPU.

[1] [http://http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html](http://http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html) \- [https://github.com/hansent/lbfont](https://github.com/hansent/lbfont) is a good example

<comment><USER6> Anti-aliasing seem to be why we still prefer pixel art over vector art. I thought high-res would eliminate this problem (more pixels, less worry about artifacts), but apparently not yet.

The Loop/Blinn work is really cool, and of course we now have hull shaders to really exploit it. It is a problem many people are actively working on...e.g. with Direct2D, but doing everything on the GPU is currently infeasible given round trip times between the CPU and GPU. Great if you can render everything in one pass, not so great if you can't.

</comment></comment></comment></comment><comment><USER10> This is the big reason we had to write a pixmap caching layer for icons/Plasma themes/etc. in KDE.

GTK+ goes one better, and they compile an entire icon theme into a single mmap-able file with the data in a static GdkPixbuf format. Sadly I'm not sure how to map that to a QImage in general, otherwise I would have adapted that theme cache (where present) into KDE.

</comment><comment><USER11> Sprites are a dirty hack that works around the fact that HTTP 1.0 only allows one asset to be returned per request. Using CSS background-images to represent content is semantically gross.

If you wanted to the same advantages with SVG, you shouldn't be using CSS sprites; you should take advantage of the fact that SVG is a text-based format and concatenate them all together. Then, you can use some really simple JavaScript to insert each child SVG into the correct place in the DOM.

The ideal way to handle this would look like this:

        <img src = "icons.svg#map" />

where map.svg was the original file on the developer's machine. A grunt task could concatenate all the SVGs in a particular folder together and give them IDs according to their file names. In the client's browser, a JS prollyfill would iterate over all the img tags where src ends in a hash and replaces them with the child SVG of that ID.

Just as the prevalence of $$ inspired querySelectorAll, an SVG-optimized spriting system could inspire browser vendors to properly handle hashes in src attributes. and the need for the prollyfill (or the ugliness of CSS spriting) would fade over time.

<comment><USER12> How would you make HTTP better? How could you get it to send multiple files per request, because, while a little weird in some ways. HTTP is really quite well designed, there isn't really a good way to send multiple files with one request, unless you want to mage HTTP kinda hacky.

Sorry, I've had to write an HTTP compliant server recently, and I don't think there's any good way to send multiple files without completely redesigning the protocol, and even doing that, I don't think there's a good way to do it. Plus, keeping requests atomic makes more sense than bungling then together.

I know the main point of your comment wasn't too make HTTP better, just that sprites are, in your opinion, a bad hack, but your implying that HTTP is bad. Also, and this is just nitpicking, everyone uses 1.1, which has persistent connections in the spec, which help negate some if the computing cost for sending multiple files.

<comment><USER13> SPDY[1] multiplexes multiple assets over one connection, which will (one day; many years from now; eventually) resolve some of the performance issues with HTTP and TCP.

You can already use SPDY now (and fall back to HTTPS), FWIW.

[1]: [http://www.chromium.org/spdy/spdy- whitepaper](http://www.chromium.org/spdy/spdy-whitepaper)

<comment><USER14> SPDY has been enabled on both Chrome and Firefox for over a year.

[http://caniuse.com/spdy](http://caniuse.com/spdy)

</comment></comment></comment></comment><comment><USER15> Updating scrollTop is a pretty slow way to scroll on some browsers. Have you tried animating `transform`? That gets you hardware acceleration on webkit at least

<comment><USER16> +100

I can't believe nobody else mentioned this.

<comment><USER17> Animating transform doesn't affect page scroll, which is a more useful use case (since users need to scroll a page) than being able to use a translate transformation.

Of note, a translate transformation still isn't perfect. It seems to chug and then turn into a smooth animation.

<comment><USER15> Eh, updating page at end/cancel easy enough. I use this approach to animate a page scroll:

1\. Animate #transform using jquery's animate (which doesn't work out of the box unfortunately, you have to use a custom #step fn)

2\. Install "capture" event handlers on document.body that will cancel the animation, reset scrollTop to the state of the transform, then reset the #translate to 0 on #scroll or #touch (so we don't "fight" the user scrolling)

3\. .. animation runs, calls my "complete" callback which uninstalls the event handlers, sets #translate back to 0, and updates scrollTop. Unfortunately there is a noticeable "glitch" here if the user tries to immediately further interact with the page.

#2 is optional (OP's implementation didn't handle canceling anyways). I'm sure there's a jquery plugin to do this and degrade to scrollTop on non-webkit browsers.

Edit: formatting.

</comment></comment></comment></comment><comment><USER18> The SVGs perform great in Internet Explorer 10, FWIW. Probably because of how good their hardware acceleration pipeline is.

<comment><USER19> On IE 10, SVG is just as smooth as PNG. I can't tell the difference.

<comment><USER20> off topic, but IE 10 is really good browser, I just recently discovered how good Devtools are (I dare everyone to go and check). And compared to Chrome the RAM and CPU are less drained.

<comment><USER21> Can someone point me to the latest browser distribution on the planet? Last check it was 50-50 tussle between IE and non-IE (If I can call it this way) browsers.

<comment><USER19> [https://en.wikipedia.org/wiki/Usage_share_of_web_browsers](https://en.wikipedia.org/wiki/Usage_share_of_web_browsers)

</comment></comment></comment></comment></comment><comment><USER22> Adding #container {-webkit-transform: translateZ(0);} puts the whole div as a texture onto the GPU as a composited layer. This improves scrolling massively, but interestingly SVG still has a little bit more jank than the PNG version. See [http://jankfree.org](http://jankfree.org)

<comment><USER22> A Chrome/Blink issue has already been raised for this: [https://code.google.com/p/chromium/issues/detail?id=253091](https://code.google.com/p/chromium/issues/detail?id=253091)

<comment><USER22> And fixed:

[http://src.chromium.org/viewvc/blink/trunk/Source/core/svg/g...](http://src.chromium.org/viewvc/blink/trunk/Source/core/svg/graphics/SVGImage.cpp?r1=152895&r2=153069&pathrev=153069)

</comment></comment></comment><comment><USER23> There are icons in the SVG sprite set which consist of numerous clip paths, which could be the root cause of the performance issue. If you load the sprite in Chrome ([http://adrianosmond.com/images/sprite.svg](http://adrianosmond.com/images/sprite.svg)) and inspect the element immediately above the facebook logo you will see an example of this. That aforementioned icon could possibly have been created using a single line path and gradient fill (I've not edited SVG files for a while).

<comment><USER24> You cannot have a gradient following a curve. At least not yet. You could probably use some filter trickery and thus create a fill where a gradient follows the path but I bet that's much worse than a few dozen paths.

</comment></comment><comment><USER25> What's strange is that scrolling SVG can be quite smooth in browsers, at least in Chrome. The map library Leaflet, or instance, makes a point of panning the map with -webkit-transform: translate3d() and it animates very smoothly. I wonder why scrolling the whole window like this is worse?

<comment><USER26> Scrolling repaints the content (expensive)

Changing a translate3d does _not_ repaint the content, it simply translates a GPU texture (damn near free)

Sadly desktop browsers haven't caught up to their mobile equivalents yet and still have brain dead scrolling.

</comment></comment><comment><USER27> SVG is scalable, if you have a vector-graphic that is a clear advantage. For pixel-graphics PNG is better. A downside is, that the Internet Explorer supports SVG only with the coming version 9 (before with plugin). Mobile browsers may also have limited support for SVG.

I would say PNG simply for the fact it seems to be a more accepted format than SVG.

<comment><USER28> IE 10 is the current version. It has already taken about 20% of IE 9's market share.

</comment></comment><comment><USER29> Did anyone of you try to use the SVG as a stack? It is very easy to maintain (no pixel values in the CSS)...

See: [http://hofmannsven.com/2013/laboratory/svg- stacking/](http://hofmannsven.com/2013/laboratory/svg-stacking/)

</comment><comment><USER30> Just as an aside Firefox has a bug which means it blurs SVGs that are being displayed at a different background-size than 100% 100% (or equivalent in other units), if the width and height set in the SVG is smaller than the size at which it is displayed as a background image. This happens because Firefox apparently (only for background images) renders the SVG at it's size settings and then scales it for use in the page.

This is the same type of issue as discussed in the example - it's a bug in the browser not a problem with SVGs in general.

See the related bug here: [https://bugzilla.mozilla.org/show_bug.cgi?id=600207](https://bugzilla.mozilla.org/show_bug.cgi?id=600207)

</comment><comment><USER31> I'm not sure if this is surprising. Even the proprietary Macromedia Flash showed us in the late 90s that vector graphics are more computationally expensive than raster equivalents.

SVG is nice because it gives us additional flexibility -- it's resolution independent (so you don't need to redraw your image by hand when higher-DPI displays come out) and allows for animation[0]. But if you don't need those things (and you probably don't for your sprites) then they'll just slow you down.

[0] [http://en.wikipedia.org/wiki/SVG_animation](http://en.wikipedia.org/wiki/SVG_animation)

<comment><USER4> Those things shouldn't slow you down at all if you aren't using them: this is a browser optimization issue. The browser knows that the SVG has not changed in any way, and can with absolute accuracy discern that it can simple blit the pre-rendered raster.

Browsers have not optimized SVG at all, painfully clear when the simplest retained dynamic SVG graphic is magnitudes slower than building entirely new framebuffers from scratch for every frame, ala canvas. It is trivial to see that the former should see dramatic optimizations that make it a significant winner, but in actual practice that just hasn't happened.

So it's a classic chicken/egg thing. No browser maker does anything to optimize SVG because few use it. Few use it because it's so unoptimized.

The findings of this post remain the same in either case, and is completely correct, but it shouldn't be this way. It isn't right that this test favors PNG.

<comment><USER3> In some ways though, this reminds me of the arguments about the speed difference between static languages and dynamic languages being an "interpreter optimization issue". Well, yeah, but, the reason these things are slow is because optimizing them is kind of hard. I think the SVG spec was more designed for correctness than it was for speed.

I'm saying this from experience because I've actually been working on a library for supporting a subset of SVG in OpenGL because I wanted to use vector graphics for games, and it's not impossible or anything, but I will say I have a great deal of respect for projects that manage to get this fast. The SVG spec is not hardware friendly in the least bit. Almost every filter operation assumes a new clean render target, which is conceptually clean and fine, but it's murderous on fill rate and texture memory, and that's just the tip of the iceberg of things that translate poorly to modern hardware.

<comment><USER4> >Well, yeah, but, the reason these things are slow is because optimizing them is kind of hard.

Optimizing all cases is most certainly hard. Optimizing the most common cases -- the lowest hanging fruit -- is attainable (which is exactly what has happened and continues to happen with dynamic typing languages, since you point that out, and has happened substantially to the DOM, which itself is as complex or more complex than SVG but its layout optimization was obviously prioritized).

In this case we're talking about static SVGs that -- with no change in zoom, context, or content (ergo nothing that would change their actual rendering at all) -- are completely rebuilt on every translation. This is true generally in the browser rendering engines of SVG, where compositional elements that could see caching are instead from scratch on each and every render.

</comment></comment></comment></comment><comment><USER32> I know EaselJS library has capability to cache the bitmap representation of SVG, so if you do not change stroke settings, paths, etc. it works really fast. When you change, you need to update the cache manually. This works for HTML5 Canvas, but they also have DOMElement class which is still experimental so YMMV. Or maybe there is some other lib. that does specifically for DOM.

</comment><comment><USER33> Huh. Interesting. Activity Monitor gives me some weird numbers for Safari's performance as I watch this on my dual i5 Macbook Air.

When scrolling the PNGs up and down, Safari oscillates between 64 to 94% CPU usage.

When scrolling the SVGs up and down, it goes between 36-54% CPU. Very very strange. I wonder if it has something to do with the fact that the SVG is dropping about a zillion frames.

<comment><USER34> Are you looking at just the Safari process or also the Safari Web Content process and the parts of the work Safari offloads to WindowServer and whatnot?

</comment></comment><comment><USER35> So this is an interesting case for animation, but turn off the javascript and try real-world (manual) scrolling -- both pngs and svg perform about the same for me in Chrome (osx).

I'm not sure there's much of a takeaway here unless you're trying to animate the page scrolling of a full page of sprites (i.e., the example proves itself, but not much else).

</comment><comment><USER36> What is it? What shoud I see? What does it demonstrate?

I followed the link which opens an html/css/js editor in which I cannot do anything. After some search I saw a white page with a list of icon a radio button switching from png to svg and some text about framerate where I do not see any animation or any difference between the two!

</comment><comment><USER37> I'd be interested to see you icon-fonts perform in the test. (knowing that it is not really the same thing as you only have monochrome icons in fonts, unless you layer them)

</comment><comment><USER38> Exactly the same for me. I'm on an old Firefox (10.0.6) so maybe it's poor PNG performance rather than good SVG performance.

<comment><USER39> Why are you on an old Firefox?

</comment></comment><comment><USER40> Or just don't use sprites, once you're on SPDY/HTTP2. It won't be necessary; win-win.

</comment><comment><USER41> I'd like to see that in OS X Mavericks, since smooth scrolling is one of its main features.

<comment><USER42> Safari 6 and iTunes 11† already use CoreAnimation for scrolling. Mavericks "merely" extends this to other apps.

†: Saf' was advertised to do so, and since neither respect _defaults write -g NSScrollViewRubberbanding -bool false_ while being butter smooth, I concur iTunes does so too.

</comment></comment><comment><USER43> Performance is pretty good with both on IE10. I never thought I'd see the day...

</comment><comment><USER44> Closed after noticed the page will scroll up/down automatically. Quickly tried SVG version and my browser (latest Firefox) skyrocketed CPU.

Guys, please make your pages usable since (we), users, are not interested in you-think-it-is-cool effect. I'm going to avoid this page like plague until author fixes it.

</comment><comment><USER45> I've noticed a similar problem while browsing thenounproject.com

</comment><comment><USER46> Needs a third option with font-based vectors (a la font-awesome)

</comment><comment><USER47> both result in 100% cpu use in ubuntu + chrome/firefox on 3570k processor. Conclusion: don't use that many sprites.

<comment><USER48> Seems like a Ubuntu issue... uses 5% CPU on my 2630QM under Windows, which is a slower chip.

</comment></comment><comment><USER49> This crashes Opera....</comment>


Firefox 3 is Still a Memory Hog - <AUTHOR> http://neosmart.net/blog/2008/firefox-3-is-still-a-memory-hog/ <comment><USER2> Wow, this seems very trollish to me. The author doesn't account for the various types of memory usage (shared memory, VSS/BSS/RSS, file swap, disk pages)... This is an extremely naive measurement of "memory usage" being presented here. Firefox now has an impressive test and instrumentation suite for measuring memory usage. There are some highly tuned allocation algorithms and garbage collection in use here. The poster doesn't present any evidence to support his assertion but rather only vague suppositions and some hand-waving.

The article clearly displays the author's lack of understanding of how modern "memory usage" works.

<comment><USER3> There are four screenshots in the post and throughout the comments... doesn't that count as _some_ evidence?

<comment><USER2> Unfortunately the "Memory" column in System Monitor is pretty much useless for actually visualizing what memory a process is or isn't using. There are a lot of different ways to measure memory for different situations. That column doesn't actually give any concrete data on what's going on in the system.

[http://virtualthreads.blogspot.com/2006/02/understanding- mem...](http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage- on-linux.html)

Gives the 10,000 foot overview of measuring memory usage on a Linux system.

</comment></comment></comment><comment><USER4> Would you rather they optimize for ram, which is cheap, or for time, which is expensive?

Assuming an hourly rate of $30 and 100 web pages visited a day it would take approx ~40 days to recover the cost of 1gb of ram if loading speed was increased by just 1 second per site.

</comment><comment><USER5> Firefox is a memory hog - you can't deny that.

Of course so are other browsers.

I've been using Firefox all day (6 hours now?) and loaded hundreds of pages and have 8 pages open now (including a flash-based music player) and it's using about 200MB of RAM. That IS hoggish. I just launched MSIE 7. Three tabs (YouTube homepage, news.yc, and macrumors.com - nothing too heavy). It's at 140MB. That's hoggish too (especially considering how light a load).

So yeah, Firefox hogs memory, but I at least don't see a compelling advantage in alternatives. I guess I just can't get riled up at this time of day.

</comment><comment><USER6> Maybe Mozilla is making Firefox more Vista-compatible. :)

Seriously speaking, the author didn't mention which add-ons, if any, were installed. In the end, if Mozilla really uses this much RAM, it comes down to a tradeoff: if you need to conserve RAM use the default OS browser (IE 7/8, Safari, Konquerer, etc.); otherwise, to enjoy the benefits of Firefox, it will cost you some RAM. This tradeoff exists with other software as well -- I still use Photoshop over MS Paint, even though Paint uses much less RAM.

</comment><comment><USER7> restarting firefox: 15 sec

1GB ram at newegg: $30

posting atypical results as FUD: priceless

</comment><comment><USER8> This really doesn't matter to someone who has a recent machine - my crappy Dell laptop has 2 GB of RAM and Firefox feels very snappy. Casual users with older machines with less RAM probably won't use Firefox long enough for it to start using up lots of RAM.

It's not really that big of a problem.

For most computer users, spyware is a much bigger concern from the perspective of performance.

</comment><comment><USER9> Am I the only one who doesn't really mind Firefox using up a ton of RAM? I mean, there is more than enough RAM in my machine, and then some...

<comment><USER10> I rather dislike it, because I have to kill it in order to free up memory for Photoshop. My laptop only has 4 GB, and my image scans end up being around 1 GB each. I need that memory!

<comment><USER3> Same here, except with VMware instead of Photoshop. It's rather disconcerting when Firefox takes up as much memory as an _entire_ virtual machine running Windows XP....

</comment></comment></comment><comment><USER11> 700,000 k at times for me.

It's at 400k now.</comment>


Show HN: I had a bot read Games of Thrones' transcripts and crypto whitepapers - crypto-jeronimo https://twitter.com/crypto_thrones <comment> crypto-jeronimo I trained a Markov chain on Games of Thrones' transcripts and crypto whitepapers. I publish the best newly-generated sentences via a Twitter bot on [https://twitter.com/crypto_thrones](https://twitter.com/crypto_thrones).</comment>


Why I Am Not a Maker - <AUTHOR> https://www.theatlantic.com/technology/archive/2015/01/why-i-am-not-a-maker/384767/?single_page=true <comment><USER2> But the author 'made' this article - an artifact that he presumably sold. Perhaps he has too narrow of an idea of 'making'.</comment>


Molecular circuitry: Team breaks one-diode-one resistor electronics - <AUTHOR> https://phys.org/news/2020-06-molecular-circuitry-team-one-diode-one-resistor.html <comment><USER2> >"Using a combination of electrical measurements and atomic-scale measurements guided by quantum mechanics, the team found a _sweet spot_ between stability and switch ability that yielded the dual diode+memory resistive RAM memory at a microscopic scale"

 _Engineering is all about finding the "sweet spot"..._

Not too much, and not too little, but the point at which competing concerns _balance_...</comment>


Most Web users don't read; they skim - <AUTHOR> http://www.ctvnews.ca/sci-tech/most-web-users-don-t-read-they-skim-1.1213578 <comment><USER2> I guess with the information overload these days, most people skim through online articles..

Even better if they have a tl;dr</comment>


Stop networking at events - <AUTHOR> http://justinjackson.ca/stop-networking/

<comment><AUTHOR> Most of the feedback I've received on Twitter has been focused on this line from this post:

"I'm being so selfish: I'm expecting all these people to cater to my emotional need for belonging."

It's interesting: I didn't realize so many people had the same struggle as I did. Lots of us desperately want to be "liked" when we go to events.</comment>


GPU-Oriented PCIe Expansion Cluster - <AUTHOR> http://amfeltec.com/products/gpu-oriented-cluster/ <comment><USER2> For those doubting the usefulness of these rigs, I can say that for GPU rendering numerous of these are in use by small sized studios and freelancers. The bottleneck of the slow PCIe connection is nothing compared to the render times per frame in most cases. It's only when a frame takes less than a second to render that you notice. They are very popular with e.g. Octane users. The only thing to be aware of is that some motherboards do not play well with this and will not recognize all cards or will not run stable with it attached.

</comment><comment><USER3> The right way to build this sort of thing is with a hub of 8796 PCIE switches for each group of 4 GPUs such that they could all form a continuous 16x PCIE bidirectional ring suitable for O(n) collectives like gather/reduce/allGather/allReduce.

This is more or less useless, or if one wishes to be kind, an amazing emulation of building distributed GPU code over the craptastic bandwidths brought to you by AWS, Microsoft, and Google datacenters for now.

Also PCIE Gen 2? WTF? This might not even post with current GPUs.

<comment><USER4> This is for mining or password cracking.

<comment><USER3> Sure, great, but if they could build this to support Deep Learning and renegade HPC, I suspect they could sell 10,000+ units/year on the down-low. That would be $10M in revenue, maybe twice that if it also worked with Macs.

NVIDIA _will_ do their _worst_ to shut this down because it's a direct threat to DGX-1 running neural networks that aren't entirely communication-limited (long story), but if they could throw this together, I think they could make a great quick buck before the axe falls.

<comment><AUTHOR> If you take a look at their clients, it's mostly massive companies that probably order large lots of OEM solutions. I don't think amfeltec needs the scale or rather isn't already at the scale you are talking about (margin, not turnover), by enterprise tax and support for OEM builds alone.

The 4x splitters go for about $200. But if you want guaranteed compatibility (i.e. a full build), the price (and margin for them) will skyrocket.

</comment></comment></comment></comment><comment><USER5> Unfortunately this setup would be very slow for most GPGPU applications, because the CPU-GPU and GPU-GPU bandwidth is very slow. To effectively use this the data transfer requirements have to be very low.

Even with a dedicated 16x PCIe 3 connection there is a latency overhead compared to inter-CPU buses, like HyperTransport or QPI, which is why nVidia and IBM have scaled up the NVlink inter-GPU bus to become a memory speed interconnect.

[https://www.ibm.com/blogs/systems/ibm-power8-cpu-and- nvidia-...](https://www.ibm.com/blogs/systems/ibm-power8-cpu-and-nvidia- pascal-gpu-speed-ahead-with-nvlink/)

</comment><comment><USER6> I'm not as clued up as I used to be about this stuff, but wouldn't this have a pretty serious impact on the performance of the individual cards? Seems like splitting 4 16x cards off one 4x bus would limit the available bandwidth somewhat.

<comment><USER7> That depends if the workload is data-transfer-bound or computing-bound.

If the former, yes you will suffer a massive performance blow even with just one GPU - but if the latter, it's an easy way to upgrade your system.

<comment><USER6> I suppose if you're just working on a data set that's already stored in memory on the GPU(s) the initial work involved in getting that data to the card would be impacted but everything after that benefits from having an absurd amount of computing power

</comment></comment></comment><comment><USER8> I saw a lot of this when GPUs were being used to mine bitcoin/altcoin.

<comment><USER9> They're still being used for some blockchains with ASIC-resistant mining, including zcash and ethereum.

</comment></comment><comment><USER10> If there are any reasonably-priced ways of doing this especially with more PCIe lanes please let me know. In my experience it's often easier to just buy more motherboards and CPUs than invest in PCIe expansion.

<comment><USER5> Depends on your bisection bandwidth requirement and software cost. If you want to do MPI it is going to be cheaper to buy some InfiniBand cards. But if you have a small cluster and tightly coupled code, or large I/O requirements, then a PCIe switch might be the go. These get used on some video on demand systems and signal processing architectures:

[https://www.microsemi.com/products/drivers-interfaces-and- pc...](https://www.microsemi.com/products/drivers-interfaces-and-pcie- switches/pcie-switches/pcie-fanout-switches/pm8536-pfx-96xg3)

The Dolphin systems are tuned better for computation: [http://www.dolphinics.com/products/IXS600.html](http://www.dolphinics.com/products/IXS600.html)

I expect small PCIe NVMe external storage systems to become quite common in the near future, because enterprise systems need multipath storage for reliability; 8GB/s FC is too slow for SSDs, let alone NVMe, same with SAS bus expanders.

[https://events.linuxfoundation.org/sites/events/files/slides...](https://events.linuxfoundation.org/sites/events/files/slides/LinuxVault2015_KeithBusch_PCIeMPath.pdf)

<comment><USER10> The Dolphin systems seem more expensive than just buying 4U servers.

<comment><USER5> You only buy them when you can't fit your problem into one server (i.e. not enough memory or I/O) or you need redundancy (multipath I/O, synchronised memory). In those cases they can be a lot quicker/cheaper/more reliable than trying to solve it with more computers, protocols and ethernet.

</comment></comment></comment></comment><comment><USER11> This needs a (2014) in the title.

</comment><comment><USER12> This is interesting but would different architectures of GPUs play nicely? E.g. 3 AMD gpus and one NVIDIA gpu?

<comment><USER13> If you think regular GPU drivers are shitty, then wait until you try to install both AMD and nVidia drivers at the same time. It's not very stable, to say the least (Windows 7). Never tried it since. Not worth the hassle.

<comment><USER14> Easy to install both nvidia and AMD and works like a charm for GPGPU on Arch Linux, though.

</comment></comment></comment><comment><USER15> At those speeds, doesn't the cable/bus length play a huge role? What's the maximum length that can support them? I'd imagine it'd be a few centimeters at most...

<comment><USER16> shorter is obviously better, but from what I've read 30 cm PCIe riser cables work, and there are 50 cm examples.

<comment><USER10> We have problems with signal integrity on cheap risers and ribbon cables.</comment></comment></comment>


Kinect + Chrome * MIT / Minority Report = DepthJS - <AUTHOR> https://github.com/doug/depthjs

<comment><USER2> Programming through interpretive dance. It's time for the joke to become reality.

</comment><comment><USER3> now ... where was that bubble cursor bookmarklet ... oh, yeah

<http://www.google.com/search?q=bubble+cursor+bookmarklet>

</comment><comment><USER4> OK, its time for me to buy a Kinect. Don't even own an xbox.

<comment><USER5> Is this the one?

[http://www.amazon.com/Kinect-Sensor-Adventures- Xbox-360/dp/B...](http://www.amazon.com/Kinect-Sensor-Adventures- Xbox-360/dp/B002BSA298/)

...or is there a cheaper package that doesn't come with a game?

</comment></comment><comment><USER6> Interesting that this is out of the MIT Media Lab, since the Minority Report interfaces were based on earlier work there by another guy, who has since spun it into the spatial operating environment g-speak (oblong.com).

That said, I'm super into the fact that the extension is open source and the technology is available for others to build spatially-aware interfaces. Really, really cool work that I know I'll want to check out further.

</comment><comment><USER7> I would love to have that "Plugin" for the Windows version of Chrome.

<comment><USER4> Not even sure if anyone has written the driver for win? I thought it was only coded for certain linux distros so far. Could be wrong though!

<comment><USER8> the driver is 'user land' libusb

</comment></comment></comment><comment><USER9> Any video of this in action or did I miss a link on the page?

<comment><USER10> <http://vimeo.com/17180651></comment></comment>


Virtual Desktop 1.0 Trailer [video] - <AUTHOR> https://www.youtube.com/watch?v=bjE6qXd6Itw <comment><USER2> Has anybody tested this yet? Please write a review!</comment>


Why Pets Could Ruin Your Credit Score - <AUTHOR> https://www.bloomberg.com/news/features/2017-03-01/i-m-renting-a-dog?bcomANews=true <comment><USER2> Why the hell would you buy a dog from a puppymill pet store in the first place, when there are thousands of shelter dogs, not to mention people giving away litters on Craigslist and the like?

Unless it's a show dog, or breed stock, paying that much to buy, let alone lease, a dog is ludicrous.</comment>


New Zealand's no #swpatents stance is attracting companies looking to relocate - <AUTHOR> http://www.nzcs.org.nz/news/archives/3159-New_Zealand_as_a_tech_destination

<comment><USER2> Much as I admire NZ, I think the author misses a crucial point.

The thing that makes silicon valley special is not the quality of its computer scientists. Sorry to say this cali, but you're probably average in that regard.

The difference is that in SV there is a confluence of business and IT guys.

AND

The business guys actually respect the IT guys.

Having worked in a wide variety of locations in the English speaking world, I can say this is pretty special. Just about everywhere else one of two conditions prevails:

(a) either the business people don't respect the IT people

OR

(b) the IT people don't know how to find good business people to be co- founders.

So many times I see business guys who undervalue IT "I want to build the next eBay, (vague specs) can you make me that website for $3000 ??" (appropriate response: can you die in a fire, please). Or scam artists looking to get rich and toss the IT a mere pittance for their efforts.

</comment><comment><USER3> The article is interesting (I didn't realize NZ had taken such a strong step) but the "# swpatents" mess in the title is confusing and doesn't really add anything.

<comment><AUTHOR> Sorry, this is a Twitterism and I thought that it would translate quite well to Hacker News. Apparently not. Will look at docs to change title. Am fairly a new participant in the community (have been lurking for a few years) though and am not sure if that's possible.

</comment></comment><comment><AUTHOR> tl;dr

      At this stage, our business is preparing to move to New Zealand once it is clear that software patents are invalid there.
      We are a company of six highly talented people, including mining engineers, a mathematical physicist, and myself (computer scientist).
      Our company is growing, and we are going to have to hire more people this year.

</comment><comment><USER4> Wouldn't this mean that US-patent-infringing software developed in New Zealand couldn't be sold elsewhere in the world?

<comment><AUTHOR> IANAL, but patent law offers national protection only. That implies that software protected in the USA is only protected in the USA.</comment></comment>


Is Yahoo a better search engine than Google? - <AUTHOR> http://blogs.law.harvard.edu/doc/2008/08/18/is-yahoo-a-better-search-engine-than-google/ <comment><USER2> He's outed me: I began an experiment about four weeks ago, changing my home page from Google to Yahoo Search for the first time in ten years. The (admittedly imprecise) verdict? If you swapped in Google branding, and added an "I'm feeling lucky button" (the only thing I truly miss), I wouldn't notice the difference. (I'd wager Microsoft Live would yield similar results.)

Google leads now by branding. The gap between the major search engines has narrowed to indistinguishability.

<comment><USER3> try hakia.com, I have been playing around making haika my default for the last week or so.

<comment><USER4> wow--good site

</comment></comment></comment><comment><USER5> I started searching on Yahoo when I started working with a very passionate colleague from yahoo. It is truly brilliant that for a lot of long tail queries yahoo does a great job. If they can crawl as frequently as google then they are definitely superior in terms of ranking.

Google really got its edge being the default on many browsers. Every time I use a new box or a new browser installation its a long time (months) before i change to Y! search.

<comment><USER6> I have an old personal home page that I haven't updated in a couple of years. Yahoo crawls that page almost daily, while it has weeks since the last visit from Google.

</comment></comment><comment><USER7> even if it is, very few people will ever cross search between them. i.e. for me if I can't find something with Google for a specific keyword, I don't go to yahoo to search for that same keyword, I just modify my existing keyword string until I find what I'm looking for

<comment><USER8> And therein lies the rub for competitors: to even get a tryout, they are competing not with a first search at Google, but against a refined second search at Google, when the user is already staring at a page of results there. And even if disastified with that page, they're probably good enough to hint how the query should be changed.

<comment><USER9> Great insight. Search used to seem such a fragile business, because where's the sustainable competitive advantage when there're no switching costs? When better search comes along, everyone switches!

But... unless the competitor is significantly superior, why switch? So Google just needs to be good enough such that no one is significantly superior in a way that makes a difference to users. If you're _technically_ better, but it doesn't really help anyone, it doesn't harm Google.

</comment></comment></comment><comment><USER10> The evidence presented is hardly strong enough to support the claim hinted at by the title. Still, a valid question.

</comment><comment><USER11> I work at Yahoo! and... no, it's not. It's objectively slower and the results are subjectively not as accurate.

<comment><USER12> The speed and result quality are pretty comparable, actually.

What it lacks is a colorful row of o's.

Once you're past the point of "good enough", search is all about brand recognition. <http://foohack.com/2008/06/hacking-the-google-favicon/>

</comment></comment><comment><USER13> Testing only on your own searches is not a good measure of overall quality.

A good measure of quality can be found in your own webserver logs. In my experience with mass-market sites, page-views-per-user from Google traffic is much higher, indicating that they do a better job of matching user intent with content. Googlebot tends to be much faster and smarter than Slurp and it's fairly easy to get good ranking on long-tail stuff in Yahoo.

A caveat: the userbase of Yahoo versus Google is different in character, so that may account for the difference in behavior. For whatever reason the Yahoo traffic tends to be celebrity gossip-type stuff and basic noun searches.

<comment><USER14> I don't think that is a good test, simply because Google has many more users than Yahoo. Maybe one thing you could see from the server logs is how well the search keywords matched your site, though.

</comment></comment><comment><USER15> For developers, it's way better, because they've got a much more open API at this point. I used their search API for langpop.com and am quite happy with it.

</comment><comment><USER16> I won't (and shouldn't) go into specifics, but people in the search engine biz do a lot of comparison and contrast between search engines. They rate their own results and their competitor's results, both in a vacuum and in groups.

Yahoo!'s search was not one of the best sets of numbers I've seen. Google consistently came out on top. Particularly for longer queries, Google is notoriously good at these by comparison to other keyword search engines.

But it might be that was for our dataset bias. You can get surprising boosts in relevance for specific datasets by biasing towards them in your index and ranking algorithms.

</comment><comment><USER8> I've had the same experience as Searls: frustrated that Google is not returning a page that I _know_ exists, I then have success with Yahoo.

What perplexes me about Yahoo is that they haven't replicated some relatively simple things that would make Yahoo a drop-in replacement for Google. Why no full calculator with unit conversions? Why no 'define:' operator?

They've invested so much in the big hard problem of web-wide search; can't they throw a few person-months at filling some gaping holes at the periphery? I'm sure I'm not the only person for whom these gaps disqualify Yahoo from my default setting.

<comment><USER17> I get the feeling that Yahoo! doesn't want to be seen as copying Google. They have the unenviable task of trying to innovate without looking like a me-too competitor of a very innovative company.

</comment></comment><comment><USER18> It has happen to me too recently, but most of the time I get almost exactly the same results.

</comment><comment><USER19> I was up to switch, but immediately ran into a problem - a yahoo image search for "Beijing architecture glass box" returned 0 results. Google has pages and pages.

</comment><comment><USER20> i wonder if this is due to the nature of PageRank. eg when you search for some words that you intend as direct, Google sends them through PageRank where they're stretched, weighted, and pulled apart by the Graph of the internet, whereas Yahoo's algorithms might be rawer (but probably not as raw as they were in the early days)

</comment><comment><USER21> Try local search and extremely recent content... Google dusts Yahoo!!. Other than that, they're pretty comparable.

</comment><comment><USER22> Yes they are! It's good to hear at least one other person who agrees.

</comment><comment><USER23> Amen to this.</comment>


Ask HN: Best way to show local time - <AUTHOR> HN and others don't seem to require JS to show localized timestamps. Currently I'm using a library (Luxon) to convert iso8601 clientside from UTC. Is there a better way of approaching this?<p>Not sure IP is really a better solution but would love to get thoughts. <comment><USER2> Are you sure HN localizes timestamps?

<comment><AUTHOR> Good point, looks like relative time for recent dates. Could very well be server time for old threads.

Might be viable and is arguably a more user friendly approach. Thanks!</comment></comment>


Ask YC: Learning circuit/hardware; lab book? - <AUTHOR>

Hello!
I've been wanting to get into hardware type projects (robots, gizmos, etc) for a while but I'm fairly ignorant of hardware. I'm a software developer by trade. I've seen books like "The Art of Electronics" and "Teach Yourself Electricity & Electronics". But what I really need is a book of project/tutorials, that upon completing them, I can honestly say I am very, very familiar with electronics.
Is there such a book? <comment><USER2> I could probably list off $15,000 of Electrical Engineering course text books, but for getting into "hardware type projects" they really won't get you very far. You'll learn far more (and far more quickly) by finding more hacker oriented resources that will bootstrap you with absolutely necessary information and skip the rest.

# Introductions #

To begin with, Sparkfun[1] has a bunch of tutorials, including a great introduction to embedded electronics.[2] This encompasses much of what you'll need for basic hardware projects.

As someone with a software background, the Arduino[2] is a great platform to start playing around with hardware. It acts as something of a bridge between software and hardware hacking by allowing you to program a micro-controller in a (relatively) high level language, and abstracting away a lot of the messy hardware details. This not only lets you start getting simple things done quickly, but also allows you to easily interface with virtually any other hardware modules you can come up with so you can push the boundaries of your knowledge. By making experimentation cheap, it strongly encourages the best types of exploratory learning.

# Projects #

Beyond the project tutorials listed on Sparkfun, OpenCircuits[3] is a great resource for more project ideas. Hack a Day[4] is often a good resource for inspiration, and the venerable Make[5] seems to always have something interesting.

# Sourcing Parts #

Sparkfun[1] is a terrific online electronic components store. It is extremely hacker friendly, having been founded to serve preciecesly that group. For some items the prices may be slightly higher than at Digikey[5], but this is more than made up by the fact that they have sorted through the bewildering number of seemingly-identical components available.

If you know exactly what you need, and especially if you can't find it through Sparkfun, Digikey is your friend. They have everything. And its uncle. The site is aimed at commercial designers who know what they're doing, so navigating the site isn't easy. If you're browsing without a specific component in mind, Digikey isn't the right place, but Octopart[7] might be. Its a search engine for electronic components that checks availability and compares prices of different retailers and also has some features to organize project shopping lists.

When buying electrical components, always buy plenty extra. You _will_ burn things out. Five times in a row. Unit costs are cheap enough that its worth having lots of spares on hand.

As others have mentioned, this is a very broad topic. If you give us more details on what it is you're looking to learn, we'll probably be able to give more useful answers.

Good luck!

[1]: <http://www.sparkfun.com> \- Well organized, hacker friendly

[2]: <http://www.sparkfun.com/commerce/hdr.php?p=tutorials#BEE>

[3]: <http://www.opencircuits.com>

[4]: <http://www.hackaday.com/>

[5]: <http://www.makezine.com>

[6]: <http://digikey.com> \- Huge selection. Great if you know what you want.

[7]: <http://octopart.com/> \- Electronic Component search engine

<comment><AUTHOR> Wow! lot sof links + text. Thank you for this information!

</comment></comment><comment><USER3> Learning electronics was much, much, harder for me than programming. Electronics seemed magical. I couldn't break complex circuits into the little components, circuits didn't seem to be built hierarchically. I felt like, if a circuit designer wrote code, you'd have one big function with no loops and minimal branching. First thing to keep in mind -- that's not true. It's just hard to see the components until you get familiar with them.

But, to answer your question. You _need_ The AoE. Read it over and over and over again. Look at Forrest Mims books. Your local technical library should have some.

The most important thing (not mentioned) is your lab. Mims books basically beg you to build his circuits. At minimum, a power supply and multimeter. Consider adding an oscilloscope* and function generator. I have a lab at home, basically everything purchased off of ebay, it's great. You'll need components. These are expensive, I have several bins of components at home. Handy to have when you think of an experiment to perform. If you live in the bay area, go to weirdstuff warehouse. You could film wargames 2 in that place.

If you really don't want to invest in a lab, an alternative (might) be the software package "multisim." Multi-sim lets you hook stuff up in software, and simulate the output. I've heard this tool helps students learn circuit design. But I've never used it.

good luck

* Just learning how an oscillscope works, and how to use it will teach you more than you can imagine :)

</comment><comment><USER4> Digital and analog circuit design are art-like activities and doing them with grace requires knowledge of many other levels of abstraction all the way down to physics.

It is possible to lack these fundamentals and become a decent designer by doing design and filling in the gaps as you go but that is the exception and not the rule. And I have only ever seen this exception happen with the help of a real-life mentor and access to some fancy lab equipment.

It should be possible to formulate the teaching of EE into a more project- oriented manner but you need to realize this would be a nontraditional approach. When I studied for my EE degree we followed a program that has been roughly constant since the 1960s, starts close to the bottom and expands in both directions at the same time. They sprinkle design in the whole time but you do not get to do full designs until junior and senior year.

So finding this book might be tricky because EE is traditionally taught in a completely different way than _you_ would like to approach it.

One thing worth looking into would be a class at a local college taught for either local motivated/gifted HS students or for physics majors which teaches you a bunch of practical EE stuff. The class would be lab oriented. Teach you the use of test equipment, building and debugging circuits, some theory. Objective is to get you into a place where you would have some hope of being able to come up with designs and make them work without having all that "foundation" knowledge. This would help you get to the point described above as you would have your mentor and access to the equipment (at least for the duration of the class-- make the most of it!)

If you are local to Boston the Harvard Extension School used to offer two such courses-- one for digital and one for analog. I believe the courses were designed by the author of "The Art of Electronics" and in fact used that text. (I did not take them but a friend of mine did.)

Neato, you can still take those classes; poke around <http://www.extension.harvard.edu/> for:

* PHYS E-123a Laboratory Electronics: Analog Circuit Design * ENSC E-123 Laboratory Electronics: Digital Circuit Design

Happy hacking!

<comment><AUTHOR> The hands on approach definitely appeals to me. I've thought about a local community college but the hours are not compatible with work.

I guess I could n ot worry about details but part of me is genuinely curious about how that stuff works. :)

</comment></comment><comment><USER5> Someone else mentioned this but I want to give another boost for the lab manual for the horowitz and hill's art of electronics - it's a little dated but still a great resource. For example I remember doing the project where you build a simple analog to digital converter. I had read the theory behind these devices many times without comprehension, but building the project illuminated it.

I've also found the ARRL handbooks to be extremely helpful for getting RF and microwave projects to work without sinking huge amounts of cash on expensive equipment like vector network analyzers.

<comment><AUTHOR> I didn't realize that the Hill/Horowitz book also has a companion lab manual. It looks something like I would like to have. Some of the books in the ARRL store look neat, too. Thanks!

</comment></comment><comment><USER6> I know you asked for books, but I'm going through this course with my ipod-- it's good:

[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and- Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer- Science/6-002Spring-2007/VideoLectures/index.htm)

<comment><AUTHOR> I lof the OCW! Thanks!

</comment></comment><comment><USER7> Sorry if this is a bit off-topic, but I've had an idea for an online game that would secretly teach you circuit design. In the game, you would build a series of water pipes to preform a certain tasks for each level. The amount of water in a pipe would be voltage, and how fast the water flows would be current. The game would start off very simply, and after "beating" a level, you would get more devices available to complete the tasks.

<comment><USER8> That's a really neat idea. I'm a programmer, and I wouldn't mind brainstorming with you if you wanted to try and put together a simple implementation. I'm just thinking that implementing components like resistors, diodes, and what- not sounds like a lot of fun.

<comment><USER7> Sounds good. I myself am a newbie programmer; just recently started to learn RoR. I'm busy with my startup, but I think it might be worthwhile to kick some ideas around. Drop me an email if you get a chance (my email is in my public profile).

</comment></comment></comment><comment><USER9> I don't have any good books in mind, but I think you need to know what you're really interested in learning about hardware. Define "very, very familiar with electronics."

You might want to think about electronics on several level and topics:

\- Board Level: Op Amps, Feedback Control Systems... etc.

\- Chip Level IC design: Analog IC design, Bipolar/CMOS design... etc.

\- Firmware: C, Assembly language...

...each of these topics are semester/year long courses on its own. I can recommend books in each topic, but have not seen a do-it-all, teach-it-all book.

as attack said, "the topic area is more broad than you'd think."

<comment><USER10> I agree, what is "very, very familiar"?

I would buy a circuit kit, like the one for 12 year olds, and you can knock out those projects pretty quickly, but they usually come with schematics and pieces for 100 projects or so. RadioShack sells them, but when you want to buy more parts, don't go there, go to Jamco or Digikey.

Learning Chip Level IC means learning how to reduce binary functions, there are many 'tricks' to this, and from my CS classes, they didn't really care much about reducing, and the EEs always did much better when it came to binary logic then the CS students. Also Figure out transistors, the circuits kit will have some transistor projects, and do a good overview, but learn the math and (some) of the physics here, it will help you understand.

After that, find some books on microcontrollers and or microcomputers. Figure out how RAM and ROM work (not necessiarly the internals) and program some.

I've heard great things about the Arudino, but I've never used it. I started off on the PIC series, and then to Motorola 8bits and Coldfire 32Bits, both of the last two, you can program in C, so no real assembly is required.

I agree with yangyang2, as far as a do it all approach, you probably aren't going to find it..

<comment><AUTHOR> The Arudino looks neat. I will definitely keep it in mind. I have taken digital electronics while in college and do remember k-maps and so forth, so it should hopefully not be too far ahead of me. :) Thanks again!

</comment></comment></comment><comment><USER11> You may want to get started by jumping into the BasicStamp world. The advantage is that it is programmable, so it's be straightforward for you to make it "do stuff".

Get it with the development board and you can make LEDs blink, drive a LCD panel, etc. Grab a high-level book on robotics and bam! it'll quickly click how all this fits together.

It's high-level way to start, but a great way to dive into the hardware world without worrying too much about hardcore hardware stuff. (Which, as a fellow software hacker, is pretty boring! I want stuff I can code!)

<comment><AUTHOR> I've seen the BoeBot and it is quite adorable. I was wanting to put my software skills to a real test, though and I don't know if there is enough space on a BasicStamp chip. But it does seem like a good place to start! Even, still, I need to be aware of how components come together if I want to do something fancy on the bread board (don't want to short stuff out,e tc).

</comment></comment><comment><USER12> I didn't know much about this stuff either here are some websites I found that were helpful in getting me started.

<http://www.sparkfun.com> has a lot of cool electronics type stuff to learn with. <http://www.batchpcb.com> to manufacture custom circuit board designs for cheap (2.50 per/sq in). If you want to design something simple FreePCB is super easy to learn <http://www.freepcb.com/>

YouTube has a lot of videos on how to solder if that interests you.

For FPGAs <http://www.fpga4fun.com/> and <http://www.knjn.com/>

Other cool hardware related sites... <http://www.curiousinventor.com/> <http://www.gumstix.com/> <http://www.cmucam.org/> <http://www.electronics123.com/>

<comment><AUTHOR> Hurray for lots of of links!

I tinkered with FPGAs in college as part of my digital logic class. I remember reading about Hugo De Garis's work with them and they sound neat.

</comment></comment><comment><USER13> Have you looked into MIT's open course ware stuff?

[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and- Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer- Science/6-002Spring-2007/CourseHome/index.htm)

That is probably a good place to start although some background with physics and differential equations might be helpful.

</comment><comment><USER14> One of the best resources for getting a practical handle on electronics is the ARRL Handbook. They've released a version every year for many years now.

<http://www.arrl.org/catalog/?item=no-hb2008>

By the way, The Art Of Electronics has a pretty nice lab manual that goes with it....

</comment><comment><USER15> This book may help as a starting point assuming no prior knowledge, you could work from there to an O'Reilly hacks book. A Peek at Computer Electronics: Things you Should Know <http://www.pragprog.com/titles/ctelec>

</comment><comment><USER16> If you've got some basic eletronics knowledge I highly recommend "Designing Embedded Hardware": <http://www.oreilly.com/catalog/dbhardware2/index.html>

</comment><comment><USER17> It would be quite a huge book. The topic area is more broad than you'd think, although not at all impenetrable. I don't know if any such comprehensive text exists. All of the books I used, I found to be quite poor and limited in scope compared to books in other fields. I think it's easy to see why. Frequently I'd just read everything I could scattered around the internet. Maybe you have a more narrow goal for what you want to learn than "electronics"?

Even the narrowly scoped books I found to usually be quite a bit less effective than they should be. Then again, the books I'm referring to where school books.

<comment><AUTHOR> I am worried about breadth vs depth issues. It's probably why people get degrees in this. :) I'm sorry if I made it sound like I thought it was trivial. I'm not in any hurry, though; The Hardware Hacking books from O'Reilly are ok but not .. I dunno, "enough". The "Teach Yourself .." book is pretty dense...

<comment><USER17> That's a problem with most EE books, it's either extreme depth or broad and shallow. You have a good question. I'd like to see others' recommendations.

I wish I could help more, but I still curse the books I learned from:)

<comment><AUTHOR> why thank you!

I hope this is certainly possible to answer. Theoretically, if someone reads the right books and practices in the right way, along with hefty discipline and focus, one could say they would be very, very familiar with software and systems.

</comment></comment></comment></comment><comment><USER18> What specifically are you looking to learn though?

Do you want to learn about digital hardware - how chips and components are constructed using AND, OR and NOT gates? This will give you a pretty good idea of how hardware works, but the projects will be limited to you, a breadboard and some switches - not terribly exciting stuff.

On the other hand, if you want to learn build simple robots and such, you'll have something neat to do, but at the end you likely still won't have an idea of how a CPU works or GPS chip works.

</comment><comment><USER14> If you're serious about getting into this, consider obtaining a scope - even a cheap used one. Reading about various waveforms is one thing, but seeing the output of your circuit at various nodes can help build intuition.

</comment><comment><USER19> I couldn't find it online - maybe it is out of print, but are you also aware of the Laboratory Manual for the Art of Electronics?</comment>


Show HN: No coding, No hassle, No wait time. - <AUTHOR> https://www.vessel.io/studio/ <comment><USER2> No coding required? Really? That app seems to be displaying data about hotel prices. From where does it get this data?

<comment><USER3> What? It's meant to be an easy way to do A/B testing by editing the UI without code.

<comment><USER2> Upon viewing more than 30 seconds of the video, it does appear to only deal with UI edits. The emphasis on "No coding required!![sic]" didn't make that obvious at a glance.

<comment><USER3> Yes, I agree with you there, the page does not do a very good job of explaining exactly what is being demonstrated. If you start on the site's landing page [0], it makes it a lot clearer.

[0]: [https://www.vessel.io/](https://www.vessel.io/)

<comment><AUTHOR> Co-Founder of Vessel here, thanks guys for your feedback. We will reward it as, A/B testing without any code changes.

</comment></comment></comment></comment></comment><comment><USER4> Mobile A/B testing without an engineer!

<comment><AUTHOR> Thanks yes we aim to make it super simple for non technical people.

</comment></comment><comment><USER5> Nice but can you have any API integration?

<comment><AUTHOR> Yes we do have API's for integration.

<comment><AUTHOR> You can find all documentation with use cases here [http://docs.vessel.io](http://docs.vessel.io)</comment></comment></comment>


Whats the Difference Between Youtube Today and Broadcast Networks? - <AUTHOR> http://blogmaverick.com/2009/09/03/whats-the-difference-between-youtube-today-and-broadcast-networks/ <comment><USER2> I know YouTube has TV shows available to watch, but it does not and I am thinking due to exclusive deals will not have any ABC, NBC or Fox shows due to Hulu. Thus for me I associate TV showing watching with Hulu and go there daily to catch some shows. When I want to watch a news clip or hear a song or watch a music video I search & go to Youtube. I wonder how many other HUlu users know TV shows are on youtube & whether they bother using YouTube for such?</comment>