GoPro cutting 7 percent of its workforce - <AUTHOR> http://www.businessinsider.com/gopro-cutting-7-of-jobs-2016-1 <comment><USER2> GoPro drives me nuts. I bought one of their (second or third gen) cameras in ~2012 that had a firmware limited number of photos I could take with it.

One of my goals was to do a bunch of time-lapse shots, taking photos every few seconds and then making a video out of them. They marketed this feature (take a photo every X seconds) quite a bit, so it was definitely a selling point to me.

I discovered the bug a few weeks after owning it, right before a big vacation I was hoping to record. It would take about 8 or 9 photos and then lock up. I couldn't turn it off or stop its capture. When I plugged it into my computer, I saw that there were hundreds of empty folders. I tried power cycling it by taking the battery out and putting it back in. I also wiped out the memory card both via the computer, as well as selecting the 'delete all' option on- camera, all to no effect. I emailed them, and their response was:

> Hi, Do you take many time lapse pictures? What may have happened, is you may > have encountered a known issue with our current firmware, in which the > camera is no longer able to save files after it has taken 9999 images. Could > you please let me know what the name of the last successfully captured image > was? If this is the case, we would need you to send in your camera, and > would reflash your firmware to fix the issue.

So I had to shell out $20 in shipping and mail my (brand new) camera across the country for it to be reset. I wasn't able to record the trip I took. Still irks me today that they were selling cameras with a known, software-limited, number of shots you could take with them before they had to be sent back.

If their QA department took a photo every 1 second (as their product was advertised to be capable of) it would take 2.78 hours for them to discover this bug.

<comment> corp-a Might as well get a $20 SJ4000 from Ebay [1] that can do most of what a GoPro can do...

1\. [http://www.ebay.com/itm/2015-SJ4000-1080P-FHD-Sports-Car- Ful...](http://www.ebay.com/itm/2015-SJ4000-1080P-FHD-Sports-Car-Full-HD-DV- Action- Waterproof-30M-Camera-/301747694961?hash=item4641906d71:g:H4oAAOSwxN5WZQxG)

<comment><USER3> I just watched a side-by-side comparison here: [https://www.youtube.com/watch?v=RemeuGprSq0](https://www.youtube.com/watch?v=RemeuGprSq0)

I have no use for actions cams and am not an expert in any way, but the quality of that $20 camera looks amazing, in some scenes it actually looks sharper and better than the GoPro that costs 5x as much.

<comment><USER4> The quality is certainly good, how's the durability? That's the reason to get an action cam, if i just want 1080p video i can use my smartphone.

<comment><USER5> I used it primarily as a travel & underwater cam. The software is pretty terrible out of the box, and I ended up having a decent # of pictures that were either never saved or "lost" from the memory card. (The card was fairly old - so this could have been an issue with the card...) Also the camera stopped working completely (as in wouldn't take any pictures, and wouldn't turn off without taking the battery out) after about two months of use.

Given it was $50, and the shots I was able to pull off the memory card were great, I am not too upset. However, caveat emptor.

</comment></comment></comment></comment></comment><comment><USER6> Me and my mates are big users of GoPro cameras. We use them for spearfishing, kitesurfing, surfing and filming our kids at the beach.

GoPro seem to be going towards smaller cameras (good) higher res (who cares - the camera lens is crap and fogs and is covered in water drops 90% of the time) and drones (who cares)

What we want is more data overlaid on the video or perhaps stored along with the video stream. Things like, depth, altitude, speed, G-force, GPS. From a random user.

[edit] I guess you guys may not be aware of Woo and Xensor which are gadgets you clip to your kiteboard, these measure GPS, jump height, speed etc. These are not sync'd to the video (they are different gadgets) but someone needs to make this work somehow. Not sure how they measure jump height in amongst the waves... it's all pretty neat.

<comment><USER7> If I'm reading you right, that's kind of exactly what Garmin's action camera Virb does. I got one for my dad to use mountain biking and it syncs up the video with the gps location, the speed he's traveling, etc. Those stats can be overlaid onto the video, it's kinda the angle that they're taking while trying to get into the action camera market. Not sure if it's exactly the thing that you were looking for, but it sounded close enough.

Full disclosure, I work at Garmin.

<comment><USER8> I used to own a Garmin dashcam and even though I really enjoyed the lat/lng overlay on the screen, I think what would be even better (especially for actioncams) is to have a little map on the right upper corner of the feed like the "picture-in-picture" feature in some TVs. The map would obviously need to be downloaded onto the device beforehand but that really shouldn't be a problem.

<comment><USER9> If you're talking about for video, VIRBedit can sort of do this. I loaded a GPX file into a mountain biking video, with a little red dot showing where I was. I am sure a map is just as easy.

</comment></comment></comment></comment><comment><USER10> Anecdotally, I know a couple people who buy a GoPro for a specific adventure. They use it, it's cool, but then it gathers dust for months afterwards. It's not hard to find used ones locally. Or to have a friend who you can borrow from if you know you aren't going to use beyond your own single adventure of the year.

In terms of daily videos, the mobile phone is good enough for most people who want to capture moments.

My comment isn't meant to poo-poo the GoPro because the product definitely fits a niche, rather to say that it wouldn't surprise me to see GoPro hit a certain ceiling with just focusing on portable camcorders.

<comment><USER11> Even within GoPro's demographic of sports, everyone who wants one probably already has one, more or less. Upgrading is now less of a concern with 4K. I bought one for skydiving and I can't see myself upgrading if they came out with a newer version (even if I use mine for every jump). Everyone pretty much has one or a few GoPros at the dropzone's I've been to, and it's great for that kind of stuff. But if I were to upgrade, I would move to a DSLR for better quality and more control - not another GoPro.

They'd need to considerably improve the quality and features if they want people to continue upgrading.

<comment><USER12> As a tandem instructor I used GoPros every day (had a glove that would stack 2 - one for video, one for pics). I used the GoPro 2 and specifically did not upgrade when new versions came out. The GoPro 2 was fine, it did the job, and I didn't have to deal with bugs. Also, I hate dealing with MicroSD.

If I were still jumping I'd use a Hero Session because the form factor is much smaller (rather than just slimmer).

What DZ do you jump at?

<comment><USER11> Tandem instructors at my dropzone did pretty much the same thing. All stayed on the GoPro 2 or original 3.

I used to jump at Eden North in Canada, but I'm moving to North California so I have to pick a new one :) Gotta love a Cessna Caravan going to 13K in under 9 minutes!

<comment><USER13> It's crazy that many skydivers are on hacker news.

<comment><USER14> What, 2? ;-)

</comment></comment></comment></comment></comment></comment><comment><USER15> The report is about GoPro cutting a % of their workforce because lower than expected sales.

I see 3 different kind of comments for this entry:

-A comment about an opinion of a GoPro camera... this reflects on "I would not buy another because".

-A comment about internal politics about the company...

-People stating "I have one" why should I have another?

with that said, most of them are about "I have one" or "I don't see a reason to buy another", the market has got to a point where most of the people who have bought one doesn't see a reason and the company have not provide one.

How is possible that no one on GoPro had done a market investigation prior to set quarter goals? for me this is a failure of estimating sales where there were no sales to be performed.

The real question here is "What is this new feature that would make our users want to buy a new one?" that would reflect on stronger sales?

<comment><USER16> someone to watch your 4 hours of boring helmetcam video, pick out the coolest 90 seconds worth, edit it into a cool video, and put it to hip music then upload it. That is a feature I would pay for! Gopro is great but the editing process sucks and is totally boring.

<comment><USER17> I wonder what it would cost to have a Mechanical Turk do this. How much would you be willing to pay?

</comment></comment></comment><comment><USER18> Their investor faq page ([http://investor.gopro.com/faq.cfm](http://investor.gopro.com/faq.cfm)) says 1460 employees total. That would make about 100 employees being cut.

There's also about 80 open positions there now (I didn't count internships). [https://gopro.com/careers/jobs](https://gopro.com/careers/jobs)

<comment><USER19> I'm not saying GoPro is doing this, but many companies will list open positions online in order to collect applications to have on hand, even though they aren't hiring.

<comment><USER20> I've heard that, but I don't quite understand it.

       1. Advertise open positions that aren't really open

       2. Collect a bunch of resumes

       3. When a position opens up 6 months later, offer it to someone
       who hasn't been able to find a job in 6 months...?

More likely it's something to do with hiring quotas -- perhaps they have to show they made an effort to fill a position with a non-H1B worker, or something.

<comment><USER21> Well, or what if you hire in big cycles? Like no hires for 2 months, then you have 30 days to fill 50 seats. If you always have job postings, you could always go back 30 or 60 days and have a bunch of resumes to go after. Makes sense maybe from the HR side (but super annoying from the applicant side).

<comment><USER22> We provide recruitment software.

This kind of recruitment is commonplace, especially in large "always hiring" companies. Its sometimes known as talent pipelines. However in all of the companies I am aware of, it will be made very clear to the candidate that they are applying to a pipeline, not to an actual open position. Doing otherwise would piss off candidates, harm the employer's brand, and likely be counter productive.

Its also common to ask candidates to "register" in order to be informed of future openings. Again though, its made clear that you are not applying for an actual position.

However agencies, particularly smaller ones (as opposed to actual employers), are well known for posting "bait and switch" openings which are not real jobs at all but simply to try and troll for talent.

</comment></comment></comment></comment></comment><comment><USER23> The success of GoPro so far has been the result of

1)first mover advantage

2)Smart marketing with viral videos of athletes in various extreme sports

3)Selling proprietary accessories

However now that some time has passed and competitors have appeared GoPro is losing ground on all types of users

1)Casual GoPro users already have one and are not going to upgrade

2)Pro users are turning to models with better form factor (sony, contour etc)

The Sony action cameras come with built-in video stabilization a feature that GoPro cameras do not have yet.

</comment><comment><USER24> My understanding is that GoPro sells a small, rugged, waterproof digital camera that can easily be mounted on a bike/surfboard/whatever. It built a strong brand due to its first-mover advantage in the action sports community.

But beyond its brand strength, has there been anything preventing the commoditization of the GoPro product?

<comment><USER25> Patents, perhaps.

<comment><USER26> You would think that, but that doesn't appear to be the case. There are a plethora of GoPro clones available now. I count over 50 distinct brands offered via Amazon Prime and hundreds of models filling the spectrum. The "action camera" has indeed been commoditized and GoPro layoffs are not surprising.

<comment><USER27> My feeling is they need to come up with something radically new to compete now. No idea what it could be. It'll be interesting to see how this market evolves.

<comment><USER28> Having 3d and 360degree models would be a future possibility - team up with Rift etc.

</comment></comment></comment></comment></comment><comment><USER29> Fitbit is next. It is very hard for un-diversified hardware companies to exist once the product becomes commoditized.

<comment><USER30> I don't know about fitbit so much. The main advantage to me isn't the hardware, it's that it all uploads smoothly to their website for tracking. If I got a different device I'd have one website for steps, one for weight etc...

</comment></comment><comment><USER31> Worth taking a look at the WSJ short interest tables, where GoPro has been for a while: [http://online.wsj.com/mdc/public/page/2_3062-nasdaqshort- hig...](http://online.wsj.com/mdc/public/page/2_3062-nasdaqshort- highlites.html)

</comment><comment><USER32> I've always wondered if GoPro has an iPad problem where the old models are "good enough" so the refresh rate will be low.

<comment><USER33> They're not that good, they're just not innovating quickly.

Even simple improvements like battery life or a better remote would probably drive a lot of upgrades.

</comment></comment><comment><USER34> Well that tells me I know nothing about business. A few weeks ago I was thinking of having my first go at buying shares and thought GoPro could be an interesting company to look in to.

<comment><USER35> If you didn't look into it yet, it hardly indicates you know nothing about business. Randomly picking companies to examine further is a perfectly reasonable way of trying to find investments (and what stops you following the crowd).

In my OPINION GoPro's problem is that they haven't diversified in any significant way. Here's a list of products GoPro sells: GoPros (and accessories). That's it.

But this area has hardly been standing still. We've seen drone-cameras take off, including the ingenius ones which follow you (e.g. Lily), we've seen those throw-up 360 degree cameras, smaller versions (e.g. Mokacam), and a near constant stream of less expensive generics which do 90% of what a GoPro can do (and can even use GoPro's accessories).

GoPro had a MASSIVE market lead and still does, but they're squandered much of it on reproducing the same product over and over until the market is saturated.

<comment><USER36> To be fair I don't think any of the cheaper knock-off products come anywhere close to the quality that GoPro produces, both in terms of solidness and image quality?

<comment><USER37> The Xiaomi cam looks like it has virtually identical image quality for $60. You give up water-proofness but you can get a waterproof case add-on.

<comment><USER38> GoPro's aren't waterproof either, they require a waterproof housing.

</comment></comment></comment></comment></comment><comment><USER39> Last week, I went to Iguaçu Falls with my kids. I was impressed with the amount of GoPros I saw. Just the elderly tourists didn't have one. Groups of young tourists, everyone in the group had their GoPro in a stick. Now I know it is mainstream. Sport people aren't their public as they are from North Face.

</comment><comment><USER40> I don't think this really surprises anybody. GoPro management is trying to pivot the company into a media company, which carries completely different stock valuations. It just looks like the decline in hardware sales is happening faster than anticipated.

</comment><comment><USER41> Basically everyone who wanted one already has one. I have a hero 4, and even though I got it at a 50% discount, it still was too expensive for what it does imo.

<comment><USER42> > Basically everyone who wanted one already has one.

And there are a gaggle of imitators at the bottom of the market (various Chinese brands) and the high end (Sony, Panasonic, etc).

</comment></comment><comment><USER43> I worked at Mivrosoft when Tony Bates - curent GoPro CEO - was Head of the Skype divison there. After the Microsoft aquisition, and Steve Balmer announced stepping down, Satya Nadella, Stephen Elop and Tony Bates were the front runners for the Microsoft CEO seat.

When it turned out Satya got the CEO seat, rumours of Tony joining GoPro immediately surfaced - and turned out to be true.

I am pretty sure GoPro execs were hoping Tony Bates would make GoPro the mainstream success that Skype was. He did... except Skype was never profitable - but it was also not publicly traded, so this wasn't apparent, and never really an issue.

I do wonder if GoPro would have done better to appoint any other CEO, but personally I never even noticed any change of direction before or after Tony Bates being the CEO, despite the massive hiring spree that followed. Mind you, the same happened at Skype after the Microsoft aquisition - except Microsoft easily footed the bill.

In the light of things I do think GoPro did make the mistake of hiring an overly ambitious CEO, who hired too fast and too soon, without the financial results following.

<comment><USER44> Tony is GoPro's President, not its CEO. Nick Woodman is still very much GoPro's Founder & CEO.

</comment></comment><comment><USER45> We bought 6 Hero Pro 4 Black and a Freedom mount. Multiple issues with latest firmware, misleading advertisement info

a. Cameras freeze when are switched on and plugged in USB f PC. Have to remove battery to unfreeze them. b. Not able to explicitly sync time on cameras with Studio c. Not open in providing lens specs (it was proprietary information what kind of fisheye distortion happens), no focal length, no sensor size, nothing d. UDP streaming is proprietary e. Whatever you do, you need the Go Pro app, not possible to control from PC, no documentation f. Not developer friendly (no REST API for developers) g. Camera acts as a Wi-Fi router, you cannot put multiple of them in the same network as your PC. h. Unintuitive UI in camera, too many clicks to achieve your goal. i. For streaming, they forgot to tell you that you need a Micro-HDMI to HDMI adapter and a USB frame grabber, hidden extra costs.

</comment><comment><USER46> Gopro was pretty much the first "reasonable" price 4k camera on the market. I've often wondered why they didn't move up market into the nikon/canon space starting with the small mirrorless replaceable lenses format. That space has been ripe for disruption for at least a decade.

</comment><comment><USER47> bought one of the new session cameras to put on the bike for rear-view capture of douchebag drivers. it flat out did not work. tried several approved microsd cards, etc, etc..

big disappointment as I really need a decent solution that will run for many hours at a time...

<comment><USER48> It's an action cam, not a dash cam. Try the mobius action cam. The suggestion seems like a joke due to my first sentence but the makers worked with the users and added dash cam features to the firmware. Been using it as a dash cam for over a year and the quality rivals my GoPro. Under $100 too.

</comment></comment><comment><USER49> FWIW my brother has a Hero 3 Silver and got all kind of problem with it. Not booting, freezing, firmware etc. He serviced it and is supposed to have got back a new one, but years later it's worse and worse (I think it's a RAM problem or something, who knows).

Now the warranty is over and the customer service is still useless with their stock sentences.

So he need a new one and I'm guessing it's not gonna be a GoPro.

</comment><comment><USER50> Out of curiosity is Woodman still the highest paid CEO in the US?

<comment><USER24> Yes, though his compensation dropped to _only_ $136M. It didn't stop him from recently buying a 180-ft yacht.

</comment></comment><comment><USER51> Take a dust and water proof smartphone, some of them do 20+ megapixel picture and 4k videos. Why would anyone still use a clumsy device? (except for rare action videos)

<comment><USER52> Most likely, buying a dust-proof, water-proof, and shock resistant smartphone with 4k video support is going to be a tad more expensive than your entry level GoPro.

However, for the casual user (not doing action shots), you've got a point. What use would my mom have for a GoPro that her iPhone can't do?

</comment></comment><comment><USER53> I'm looking forward to the 360° camera they hinted at. I hope it will do 3d 360°, not just 2d 360°.

</comment><comment><USER54> (It looks like the link to the article 404s now)</comment>


ASK: Where to Start Learning Deep Learning Being a Senior Developer Already? - <AUTHOR> What would you recommend if I wanted to start learning about Deep Learning to become proficient enough to be able to build a fraud detection system?<p>As it is right now, the NGO I work for has a manual screening process to find possible fraudulent profiles. I would like to be able to use a Deep Learning based system to help them with that task. <comment><USER2> The first question you need to ask is, why do you think you want to use Deep Learning? DL is hardly the only machine learning technique you might apply in this domain, and it might not be the best. If you don't have a background in Machine Learning, I'd suggest starting with a broad based overview of some sort, to give you some context for choosing a technique, instead of just going with what seems to be trendy.

All of that said, Deep Learning can mean different things, but to the extent that people apply the term in association with neural networks, a "deep" neural network is just a neural network with multiple hidden layers. So if you learn about basic neural networks with back-propagation, you are implicitly learning about deep neural networks. To that end, the Andrew Ng and/or Geoffrey Hinton classes on Coursera are pretty good for getting your feet wet (and the Andrew Ng class is also something of a "broad based overview" as mentioned earlier).

There is also a DL specific class using TensorFlow, running on Udacity.

Anyway, all of _that_ said... the one thing about neural networks is that they are a supervised learning approach, which means you need labeled training data to train on. Now that in itself might not be a big deal... you can probably find some old transactions that were flagged as fraudulent in your system, and train against those. BUT... this means you are pretty much always vulnerable to _new_ fraud techniques, and you have to always create new training data and re-train the model, etc. which may involve a lot of human effort. That is, this approach has little ability to adapt on its own.

There are other algorithms which are usually lumped into the broad category of "anomaly detection" that might be a better fit for doing fraud detection (or you may actually want to use both), where the algorithms don't need to be pre- trained using labeled data.

</comment><comment><USER3> A couple of thoughts:

1\. If the process is being done manually, there might not be an adequate corpus to train a deep learning tool.

2\. The business goal is not to detect fraud with deep learning. The business goal is to detect fraud.

3\. Computational techniques that assist humans in detecting fraud are a way to achieve the business goal. Deep learning is just one computational technique.

4\. Quick access to records of previous fraud for comparison by humans might improve detection. It's also a step in the direction of developing a training corpus because it might identify relevant features.

Good luck.

</comment><comment><USER4> If you're over step 0 and are pretty sure deep learning is right for the job, I suggest steps 1: download Torch, and 2: get comfortable with putting your data into Tensors. As a software developer I found Torch much easier to learn than alternatives like Tensorflow, probably due to the comfortable imperative style.</comment>


A MOS6502 assembler implemented as a Rust macro - <AUTHOR> https://play.rust-lang.org/?gist=a18d697454f9261b28ff&version=stable <comment><USER3> Reminds me of this sweet paper

[http://research.microsoft.com/en- us/um/people/nick/coqasm.pd...](http://research.microsoft.com/en- us/um/people/nick/coqasm.pdf)

<comment><USER4> That's the exact one I thought of. On top of it, there's typed assembler:

[https://www.cs.cornell.edu/talc/](https://www.cs.cornell.edu/talc/)

And Vx86 used in Microsoft hypervisor:

[http://swt.informatik.uni- freiburg.de/staff/maus/dissemain.p...](http://swt.informatik.uni- freiburg.de/staff/maus/dissemain.pdf)

Note: Microsoft also used a TAL, though can't recall if same as Cornell, in their VerveOS that was verified down to assembler. Combined with SLAM, it's safe to say their researchers are kicking serious behind on practical, cutting-edge verification. I wouldn't have believed it 10+ years ago if someone told me haha.

</comment></comment><comment><USER5> Very cool. As a Rust newbie I'd like to understand what's going on here. Is this a "procedural" macro? Does Rust specifically target writing DSLs using its macro system? Can we expect macros like this to continue working for a long time? There's a blog post that suggests possible changes: [https://internals.rust-lang.org/t/the-future-of-syntax- exten...](https://internals.rust-lang.org/t/the-future-of-syntax-extensions- and-macros/2889)

<comment><USER6> This isn't a procedural macro: Procedural macros run Rust code to transform your program, and interact with the guts of the compiler (AST, etc). That's hopefully going to change to not be compiler-version specific, etc.

This is using a system known as "macro_rules" which are a system of "expanding" \-- in some ways it's a fancier version of the C preprocessor, but also resembling the Lisp/Racket macro system to some degree too.

Let's take a random little piece of that code from the post and talk about it:

        macro_rules! codelen {
            () => { 0 };
            ( $($c:expr),+ ) => { [$($c),+].len() };
        }

This declares a new macro substitution rule called `codelen`. Without going into too much depth, that's defining rules (on the left hand of the `=>`) and saying what code to expand them into, on the other side. The first replaces `()` with `{0};`, just a simple substitution. In the second rule, the `$($variable),+ is the essential construct here, letting you operate on sequences of input stuff.

It's a little hard to read -- writing your own macros in Rust is a little bit complicated and I don't think it's actually something that should be done often. You can write little DSLs with it for sure. This variety is going to stick around and will keep working. It is called macro_rules! and not just macro! to leave that name free for a future, enhanced way to _write_ macros, though.

</comment></comment><comment><USER7> It doesn't support explicit accumulator addressing mode (ASL A, LSR A, ROL A, ROR A), but otherwise quite neat. (from a quick look at it)

(also, 0x syntax is quite unusual, but I assume $ couldn't have been implemented for some reason)

<comment><USER8> The accumulator is the only register those work with. It was very common to not specify it.at all. I actually never have in all the 6502 assembly code I've ever written. Wasn't required.

<comment><USER9> I don't think that's true.

[http://www.downloads.reactivemicro.com/Public/Users/David_Cr...](http://www.downloads.reactivemicro.com/Public/Users/David_Craig/Apple2OriginalROMInfo.TXT)

Code is straight from the Red Book listings. Search for ROR - <USER2> (shown explicitly), indexed, you name it. 4 modes each.

<comment><USER8> Well, I have written a lot of code on 6502.

What you name is the value to be operated on, and that is indexed, zpage, immediate, etc... the accumulator is not named. There are two or three bytes, one instruction, one or two for value or address.

Same for things like ADC, the accumulator is where it will happen, the things you name are values and addresses.

LSL, LSR can just be stated, one byte instructions that operate on the accumulator, which does not need to be specified.

6502 is really basic. The accumulator is the working register for many things. The index registers are for indexing. One does not do LDX $c000, A for example.

<comment><USER9> I believe you. But it was, quite typically, like you can see in the Woz code above. Or from '6502 Assembly Language Subroutines', 1982 vintage.

[http://i.imgur.com/jreIWA5.png](http://i.imgur.com/jreIWA5.png)

<comment><USER8> Yeah, it can be. No worries. Guess I never assembled on something that required it.

Fun old times in any case. That chip provided just enough, and no more.

</comment></comment></comment></comment></comment></comment><comment><USER10> No ORG, no deal. I can't use this in production unless it supports ORG.

</comment><comment><USER11> That's a new twist on the Macro Assembler.

</comment><comment><USER12> Lisp user here.

This reminded me of [https://github.com/kingcons/cl-6502](https://github.com/kingcons/cl-6502) where the opcodes are defined using a defasm macro [https://github.com/kingcons/cl-6502/blob/master/src/cpu.lisp...](https://github.com/kingcons/cl-6502/blob/master/src/cpu.lisp#L183) and implemented here [https://github.com/kingcons/cl-6502/blob/master/src/opcodes....](https://github.com/kingcons/cl-6502/blob/master/src/opcodes.lisp)

Are Lisp macros pretty much on par with Rust macros?

<comment><USER13> I was under the impression Lisp macros are more powerful/flexible than Rust's macro_rules! macros, although I don't know enough about Lisp macros to be sure.

</comment></comment><comment><USER14> That ... is ... f __*ing ... ugly to look at.

<comment><USER15> Well, a creative abuse of the language. Programmer humor.

<comment><USER14> Being a developer myself, I'm well aware of this. Still, it's ugly.

<comment><USER16> When I see this, I understand why the Go crowd didn't put generics or macros in Go. It's so easy to write useful but awful things with them, and they're really hard to fix and debug.

This is getting to be a big problem with Rust. The language, or maybe its community, encourages cutesy stuff like this. Remember "Diesel", the Rust compiler for SQL, from a few days ago? Just because you can doesn't mean you should. Too much fancy template stuff is being baked into the low level libraries. This may not end well.

C++ went down this road. The template system turned out to be more powerful than intended. Then people started writing cool stuff as fancy templates. Then the C++ committee added features to support the fancy templates better. Overly elaborate templates damaged C++; nobody could figure out what was going on. Use of C++ for new work declined.

All of this comes from smart people with good intentions. But when there's too much of this stuff, the mental load required to keep up with all of it becomes excessive. Especially if it changes a lot.

<comment><USER17> This is silly. Rust could not achieve its performance and safety goals without macros and generics. Generics may have been optional for Go (I don't agree, but let's go with it), but _there is no way to achieve zero-cost memory safety without generics_ (while supporting first-class references and dynamic allocation).

Rust generics are deliberately less expressive than C++ templates, in that they're strongly typed. That's why we get so many complaints from C++ and D developers that you can't do certain things. But Rust sticks with its strongly-typed generics, because Rust has always tried hard to strike a balance between code expressivity and maintainability.

This is a terrible example if you want to prove that point, anyway. This 6502 assembler is obviously a total abuse of the system, and nobody will deploy it to production. It's a neat hack, and that's all. Nobody would use an obfuscated quine written in Go to argue that Go is unreadable. This is exactly analogous.

Finally, Diesel is just an ORM. It uses exactly enough features to be an ORM; the only "problem" with it is that it's an ORM.

<comment><USER15> Animats had a very important point. While magic is so attractive and perhaps even useful in moderation, it causes so much damage in a large code base.

In C++, you get this damage from for example operator overload abuse (ok for math, not many other defensible uses), template abuse (ok in moderation), ninja exceptions and inheritance (especially multiple inheritance, ugh).

Anyways, if Rust proves to be a feasible workhorse building medium/large systems with bigger teams, it does sound interesting to me. Especially catching concurrency issues at compile time.

I just hope it won't ever become another C++.

<comment><USER17> And my point is that nobody would ever deploy this to production. Would you say you're worried about Go becoming C++ if someone posted a quine written in Go to HN?

By the way, Rust has no "template abuse", "ninja exceptions", or "inheritance".

<comment><USER16> You end up with it in production because some lower level library uses it.

<comment><USER17> No Rust production program will ever transitively depend on a library with a 6502 assembler written in the macro language.

<comment><USER18> You are missing the point.

It is not the ORM library or the 6502 Assembler.

It is the library written by the clever guy on the third floor from blue team, for the new product being developed at Corpo X.

However I also have seen lots of convoluted code, exactly because such expressiveness is missing from the language.

For example, JVM bytecode manipulation or use of external code generators.

<comment><USER19> > However I also have seen lots of convoluted code, exactly because such > expressiveness is missing from the language.

That's the operating point here. Leave out expressivity, and tons of programmers write convoluted code. Leave it in, and a couple of clever people use it in an over-clever way.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> The author appears to have a crate for it as well: [https://github.com/jonas- schievink/rustasm6502](https://github.com/jonas-schievink/rustasm6502)

</comment><comment><USER20> Link appears to be broken, working one is:

[https://play.rust-lang.org/?gist=a18d697454f9261b28ff](https://play.rust- lang.org/?gist=a18d697454f9261b28ff)</comment>


The Business of XKCD - <AUTHOR> http://www.nytimes.com/2008/05/26/business/media/26link.html?_r=1&oref=slogin non advertising income <comment><AUTHOR> I found it interesting for a few reasons

\- makes money on merchandising rather than ads

\- generates a lot of traffic (80 million pages views/mo)

\- he thinks only a couple of dozen web comic authors actually make a living off of it.

\- believes this sort of niche comic is only successful because of the internet. in that he never could have gotten published traditionally. (that being said "tech/geek" isn't really a small niche for internet audiences)

<comment><USER3> What irks me: he's supposedly doing xkcd full time now, and he can't manage five comics a week instead of only three? I mean, it's not like they take a long time to draw.

<comment><USER4> This reminds me of a letter-to-the-editor I saw in a computer magazine years ago, asking why computer books cost so much when the materials that go into them only cost a couple dollars.

In the case of XKCD, the limiting factor is not how fast he can do the artwork but how frequently he has good ideas. That frequency may not increase with free time... In fact, it may even decrease, since he might have less experiences from which to draw inspiration.

</comment></comment></comment><comment><USER5> dupe: <http://news.ycombinator.com/item?id=199967>

<comment><USER6> Even Reddit tolerates dupes, for the most part, when separated by some time.

If it's old to you, don't vote it up. If it's new to you, great.

<comment><USER7> Whether they are tolerated or not, encouraging them lowers the signal to noise. I come to HN for tightly focused stuff--and I come here often, so repeated old stories are just noise.

Purely selfish, but I'd rather folks do a quick search to be sure older stories haven't already been submitted. This one was on the front page here and at Reddit. It's a good story, but it's been covered.

<comment><USER5> Even if you're not willing to do a search, it's a pretty safe assumption that a month-old New York Times article on XKCD will have been well-covered on a hacker news site.

<comment><USER6> And yet, a good 20 voters thought otherwise.

Bottom line is: voting me into oblivion isn't going to make searching this site any easier, or change the way HN deals with dupes.

<comment><USER7> _voting me into oblivion isn't going to make searching this site any easier_

I didn't vote you down. Things that are worth commenting on (whether to agree or disagree) are not eligible for downvotes, as far as I'm concerned.

</comment></comment></comment></comment></comment></comment><comment><USER8> I've never really enjoyed xkcd. The title says "This Is Funny Only if You Know Unix". I think that actually this is funny _because_ you know Unix. Barrier to entry and understand the strips is low, yet gives an unique feeling of being special because you know others do not understand the joke.

<comment><USER9> <http://mattmaroon.com/?p=329>

<comment><USER10> Ah, I see you devoted some space on your blog to a thinly veiled ride on the xkcd hate-wagon (and filed it under "pointless words of wisdom", natch).

As soon as I realized that you were seriously citing Scott Adams as an authority on Funny, I knew we wouldn't find the same comics entertaining. You read a whole "5 or 10" of the xkcd comics, and you are a self-professed member of the target audience, so you afford yourself the expertise to declare it "not funny at all".

And, you know what? You're absolutely right.

xkcd isn't always funny. Sometimes -- some might say, often times -- it isn't funny at all. It certainly doesn't strive to deliver the same tired punch lines that so many other comics have.

Aside from being something that I can often identify with, xkcd is charming. In that sense, it strikes me in much the same way that Calvin and Hobbes did, or Pogo. Sometimes, the best comic isn't that one that leaves me laughing, it's the one that leaves a smile on my face, or a temporary reminder of a more innocent way of seeing things, or a peculiar wistfulness.

Those aren't effects that I've ever been able to credit to Scott Adams, and I don't think he could pull any of 'em off if he tried. If you can't see past your hunger for one more punch line, then I don't think you really "get" xkcd, either.

I like xkcd when it's thoughtful instead of cheap, and I'm even amused by yet another spin on 'Twas The Night Before Christmas, as are many other literate nerds.

(P.S.: When you put those "marks" around a word, those are quotes, not parentheses.)

</comment></comment></comment><comment><USER11> I found on XKCD cartoon glorifying some event in 20th century history - <USER2> showing a lack of education in that it was basically wrong. As if reading books is a crime against being a geek, and cartoons are somehow okay to be illiterate.

<comment><USER12> Which one? I don't remember anything like that ...

And, I'll bet you dollars to dimes that most math/science geeks know more about the soft sciences (Economics, Psychology, History, Philosophy, Literature, etc.) than the other way around.

Most math/science people I know have read a fair amount of Dostovesky, Freud, Jung, Friedman, Wittgenstein, Derrida, and uncountably many other authors and social scientists.

I challenge you to find more than a handful of English or History majors who are familiar with the works of Turing, Galois, Knuth, or Euler.

It isn't polite to say, but not all academic disciplines are created equal. Some fields are just _harder_ than others and tend to attract smarter people than others. Math, physics, and other hard sciences are simply more difficult than literature or history.

I would feel comfortable saying that anyone who understands Einstein's field equations is capable of understanding deconstructionism with relative ease. I don't think anyone would seriously make the opposite claim.

<comment><USER13> > I challenge you to find more than a handful of English or History majors who > are familiar with the works of Turing, Galois, Knuth, or Euler.

The thing is, advanced works of mathematics and computer science are almost completely irrelevant for people not working in these disciplines, whereas the humanities and social science arguably have applicability for anyone who considers him or herself a citizen. And in fact, these "English or History majors" are very likely to be versed in, not the _works_ , but the insights of many mathematicians whose contributions are taught in high school and college mathematics courses, albeit without attribution.

Some people wind up majoring in the humanities and social sciences because they can't cut it in highly mathematical disciplines, sure. But it's also true that many of the mathematically adept are also weak in the humanities and social sciences.

As for Einstein's field equations and deconstruction, I can't claim to have studied the former (nor am I aware of why I should have), but I suspect you're overlooking the extent to which understanding them requires a considerable background of non-intuitive knowledge and an understanding of symbolic conventions in a way that understanding deconstruction doesn't. So pointing out that the set of folks who understand deconstruction that could understand Einstein's field equations with relative ease is likely to be much smaller, at least in proportion, than the other way around, doesn't imply much about how smart the two sets are on average.

Incidentally, the number of sci/math types who cling to the Sokal Affair as an excuse for believing much of contemporary humanities theory is gibberish suggests that an understanding of things like deconstruction probably don't come as easily to them as you might think.

At the end of the day, I really don't understand what disciplinary elitism gets you, other than an inflated sense of self-importance. What matters isn't what one is capable of understanding (except to college admissions staff), but rather what one does.

<comment><USER14> Your example of Einstein's field equations is a terrible one; I've got a Ph.D. in math phys and I don't understand them very well. How about just the laws of thermodynamics, basic probability, statistics and logic, and perhaps the basics of how computers work? Basic economics would be gravy.

These are all very relevant to the world we live in today.

By the way, the whole Sokal affair is forgotten in the sciences. I first learned about it when a random passerby (an english prof) made an unkind comment about Sokal when he saw the name on a (physics) paper I was reading. Admittedly, this was at NYU (the epicenter). But this was also 11 years after the prank.

Also, engineers can pick up deconstructionism relatively quickly:

<http://www.info.ucl.ac.be/~pvr/decon.html>

<comment><USER12> Yeah, you're right about my example - several of those you listed would have been better. Hell, basic conservation of energy would be a good start.</comment></comment></comment></comment></comment>


The IMDb 404 page is the best 404 for the movie fans. - <AUTHOR> http://www.imdb.com/hackernews

<comment><USER2> If others haven't noticed it already. Don't forget to refresh the page!</comment>


Rate my Startup: automated game news classification and monitoring - <AUTHOR>

www.automatedgamer.com Also posted to our blog at blog.automatedgamer.com
After 6 months of development, we're proud to announce the 1.0 release of AutomatedGamer.com.
AutomatedGamer monitors your personal game list against video game news across the internet, and provides:

    * Personalized alerts and watch list
    * Game reviews compiled from multiple sources
    * Compiled game news and smart categorization
 Behind the scenes, our game classification technology scans game news sites across the internet, automatically sorting the news by video game, and analyzing what type of news it is. We detect new game trailers, screenshots, reviews and other information; then deliver the latest updates to our members who are monitoring those games.
Our monetization plan is not adsense :)  We plan on implementing something around revenue in 6 to 12 months.
Our technology is built using Ruby on Rails, Haskell for the classification algorithm and the Amazon EC2 platform. We'll be sharing more details in future posts on our blog...
Love to hear thoughts, ideas for improvements etc. <comment><USER2> I didn't like the design, but it's hard for me to provide quality criticism on this area because it's not my cup of tea. It just seems that the information isn't presented tightly. Some things are hard on the eyes while others I have no clue why they are what they are.

For example on: <http://www.automatedgamer.com/games/bestlist> the plataform list is ugly.

While on <http://www.automatedgamer.com/games/release> I have no idea why some game titles are bold and on larger fonts.

Your logo reminds me of download. It looks like a logo for an application.

But anyway, moving from design, it would be cool to see an example of what I am going to get when I register. I dig that you're going to provide me information about multiple sources about some games that I choose. But I need examples of what kind of information I will get, and how they'll be presented. In other words, what's different than just going to Gamespot and checking its game page?

On a game page: <http://www.automatedgamer.com/game/201/bioshock> I have no idea what a "high alert" is.

The screenshots links open a new page... IMHO opening new pages is a complicated matter. Lots of users aren't able to understand exactly what this is, how to get back to the previous page, etc... This is mainly an issue for people new on the net, but the solution (opening on a the same page and with navigation links) doesn't hurt anyone, so why not do it? Even newbies know what the browser's back button does.

More navigation options. For example, on <http://www.automatedgamer.com/game/201/bioshock> you could have links on "First person Shooter", so your users keep on navigating the site. And on Take2, leading to a page listing the developer's games.

You could have a page showing what games most people are tracking. This is your service, so play its cards.

Your blog should have the same design as the main site.

The "All games" page <http://www.automatedgamer.com/games/list> is a huge list of confusion. Do you really plan to list thousands of games there?

Also, its ordered alphabetically, but "Final Fantasy Crystal Chronicles: Echoes of Time" appears first. There's a space on the game title (I noticed the - as first character on its slug).

DISCLAIMER: I have a gaming website ;) But in portuguese, and with different goals than yours. And I haven't updated it for almost an year.

EDIT: Since you're already gathering this information, your alerts could also display new games of a determined genre, developer or keyword on a plataform. For example, "notify me when a FPS is added to the PS3 database".

<comment><USER2> Addendum: Did you write a program to crawl the webpages yourself?

And more importantly, would you pay someone to crawl it for you?

</comment></comment><comment><USER3> First off, I think you're not doing nearly enough. I already have RSS. I don't want another site to visit to find things. Your main page doesn't advertise emailings or RSS, so I'm not signing up until I have more of a motive.

Too many fonts. Too many styles. Title font, subtitle font, tagline font, subtagline font (why do you have a tagline for your tagline), blurb descriptor font, bullet list font, register font. All different. You have sizes that are too close together, and it makes the entire thing feel weird.

"Create a free account today!" should not be on a bullet list.

You mention my "personal game list" then mention "Personalized alerts and watch list". Too repeptitive.

Get rid of the underline around your "Register now" and "Learn more" boxes. Get rid of the [+].

Don't use a "skewed angular view of a picture" if it's a picture of a web page. That's just silly.

Your "username" and "password" bar is located in possibly the worst place I've ever seen on a web site, ever. I literally have never seen a worse placement on a site.

Your ONLY color background is located around the search bar. That's bad. That 2px border is also the thickest border on the site.

Your logo is far too generic.

Your "New and Upcoming Releases" looks bizarre with the multi-sized list format. Also, remove the bullet points.

The "gray tags" thing works (barely) for Delicious. It doesn't work for you. It's ugly.

Don't combine sans-serif fonts and serif fonts without a clear idea of what each means. You're using them merely for visual distinction. It gives me a feel of clutter.

Why does only Killzone 2 have a rating?

I haven't clicked anything. Once the front page looks good, I'll click further.

<comment><USER4> Everyone has access to RSS, but so what? Most people don't use RSS.

<comment><USER3> The people who don't use RSS don't care enough about information to use a site like this. That's _largely_ true if not entirely. Furthermore, obsessive gamers are _more_ likely to use RSS. It's progressed enough to be commonplace amongst nerds.

I would use this site if it offered RSS. I will _not_ use it because I don't care enough to visit a web site on my own, without prompting.

</comment></comment></comment><comment><USER5> Disclaimer: this is intended as Helpful criticism :)

First off I 100% love the idea behind the site.

But am in agreement with the other posters here. You've ignored several basic design rules.

Firstly (and for me killer) the content is not centred on larger screens. In my experience this instantly puts users off.

Also, as people are saying, the typefaces are too mixed. You also dont highlight links particularly well (the [+] thing is a nice idea but a) doesn't work so well when done in text and b) doesn't seem standard enough).

I like how you've gone for minimal design: in fact I think it is almost perfect. Except on the main page (and probably other pages) the top sectuion (the one under the very top set of links and above the mian content) needs to contrast more. Some kind of "glossy" image style would work much better (especially on the main page). This example (<http://codeigniter.com/>) is the only one I can think of right now (and it is not the best one; but it suffices to illustrate what I mean).

I have some other thoughts/comments too but unfortunately don't have time (sorry) - others will definitely come up with them though :D

</comment><comment><USER6> You are pretty clearly a tech guy, not a design guy. So outsource the design! Gamers are swayed by convenience, sure, but more than that, by fancy, flashy websites that appeal to them on a level of "Well THIS is cool, so if I USE it, I'LL be cool."

I'm in no way connected with this fellow, other than that I use and love his templates: <http://andreasviklund.com/templates/commercial/> Check it out, there's PLENTY of good gaming-related templates there, and they're all rather inexpensive.

<comment><AUTHOR> Great point. We're definitely not a design oriented team... a lot of effort has gone into classification and monitoring, not so much on look. We'll probably be considering upleveling the design next (thanks everyone for the comments)</comment></comment>


LinkedIn is moving to Microsoft's Azure public cloud - <AUTHOR> https://www.cnbc.com/2019/07/23/linkedin-is-moving-to-microsoft-azure-three-years-after-acquisition.html <comment><USER2> They would like to add cloud to their professional network on Azure.</comment>


Discrete Cosine Transform in Video Compression – Explain Like I'm Five - <AUTHOR> https://ottverse.com/discrete-cosine-transform-dct-video-compression/ <comment><USER2> Maybe I'm dense, but I didn't find this useful at all. The author spends the bulk of the article explaining what transform means (not typically the sticking point) and then uses terms like "pixel-domain", "frequency-domain", "decorrelating", "energy compacting" without explanation or definition. The author could spend a little less time on the former and more on the latter IMHO.

<comment><USER3> This, it's funny how the author talks about views/transforms and all other stuff EXCEPT the actual intuition behind the DCT.

<comment><USER4> That's because it's the hardest thing to grok. I have two electrical engineering degrees from a highly regarded university and still don't.

</comment></comment></comment><comment><USER5> I am not convinced it is eli5. I am too lazy to write a blog post w/ illustration, but for audio signals, which I am more familiar with, the intuition behind DCT (and MDCT, used e.g. for mp3) is straightforward.

Assuming you understand that a Fourier transform is an operation to go from from time domain to the frequency domain, the problem solved by DCT, DST, etc. is related to the fact that _digital_ signal processing are finite, and without any care, you introduce 'irregularities' if you use a 'normal' Fourier transform.

So the main idea of DCT/DST/etc. is to implicitly 'copy' and/or mirror the signal, to reduce the artefacts/irregularities introduced by Fourier Transform. Reducing irregularities intuitively leads to more regular signals, and the more regular your signal, the quicker the high frequencies decrease, which is the compression effect of DCT.

More mathematically, but still very informally: DCT/DST is about boundary conditions. Using DFT (the 'normal' Fourier transform for digital signals) will imply discontinuities at the boundaries. For continuous time signals, an intuitive way to define regularities is to measure the decay of successive derivative of a function f(t), by looking at convergence convergence of t^n f(t) as t -> inf for n. That implies that regular functions have bounded Fourier transforms, and the more regular, the faster the Fourier transform decays.

The DST/DCT, by mirroring/copying the signal, reduce irregularities, and hence their coefficients decrease faster.

<comment><USER6> ELI5 was a mistake. ELI12 would have made much more sense. ELI5 is so obviously absurd that people seem to subconsciously just discard the criterion and put all sorts of things in that no conceivable 5-year-olds would understand, not even the genius ones we occasionally read about. ELI5 is extremely restrictive. ELI12 would be much more sensible. An ELI12 explanation would be possible, but it wouldn't be able to casually assume "frequency domain" or related concepts are things that could be assumed; it would first have to show how you can break images down into frequency components.

<comment><USER5> Yes. I think you can bypass the idea of "frequency domain", and focus on regular / fast changing. I think a smart 12 year old would understand the intuition that fast changing and high frequencies are somehow related, I mean physics gives plenty of concrete example.

And then you explain that for images, contours are fast changing, and you have the justification for Fourier coefficients truncation ~ compression.

Explaining how DCT helps instead of DFT is the harder part.

</comment></comment></comment><comment><USER7> This is DEFINITELY NOT explained like I'm five. More like late high school level (mathematical planes, frequencies) and above (matrixes). I appreciate the author's attempt at vulgarization but the title is wrong.

<comment><USER8> Is this can be used as a feature extraction for image recognition task ? I read some time ago someone used jpeg compression as a feature extraction before DNN.

<comment><USER9> This depends on the kind of features you're interested in.

If the features lead to clustering in the frequency domain, then yes. Otherwise it'd be detrimental.

Examples for features that'd work well are edges and lines. Features based on gradients wouldn't work well.

</comment></comment></comment><comment><USER10> Pretty cool! I would add Computerphile's Youtube Video as a watch after this: [https://www.youtube.com/watch?v=Q2aEzeMDHMA](https://www.youtube.com/watch?v=Q2aEzeMDHMA). This is a part of their 4-video series on JPEG:[https://www.youtube.com/playlist?list=PLQfOC23r609kmgOr_V8sf...](https://www.youtube.com/playlist?list=PLQfOC23r609kmgOr_V8sfUnr0r3pOI9gT)

<comment><USER11> Those are great! For a more in depth series of videos on the transforms themselves I haven't found anything better than videos from Steve Brunton. Here's a link jumping in at Fourier Series. Best set of videos I've seen on the subject.

[https://www.youtube.com/watch?v=MB6XGQWLV04&list=PLMrJAkhIeN...](https://www.youtube.com/watch?v=MB6XGQWLV04&list=PLMrJAkhIeNNRjxJ_sMtJ02geqw_- vuB7O&index=47)

</comment></comment><comment><USER12> The main reason why this article wasn't intuitive to me is that the toy example is trivial, and the next example (a real image) is very nontrivial.

The first example shows through three lines of runnable Matlab code (sadly, I don't have Matlab and it's not free, but whatever) that if you start with an 8-by-8 matrix of 255 and run the discrete cosine transform, you end up with a sparse matrix with just one nonzero value in the first entry, because "the DCT has compacted the energy of the matrix into the first element referred to as the DC coefficient. The rest of the coefficients are called the AC coefficients."

Cool? This doesn't help any more than just telling me that sentence directly. Also, the article doesn't even expand on this fingerhold of familiarity: DC and AC? Like direct current and alternating current, so that first element is in some sense the zero-frequency ("direct current") term, and if the starting example had any variation at all beyond a perfectly uniform field of 255's, you'd start to see "energy" showing up in the "alternating-current" entries? _That_ would start to give some intuition.

I guess what I'm saying is this article works, but it works by frustrating the reader just enough that they modify and play with the code (porting it from Matlab if they have to), thereby gaining the intuitive understanding that the article promises.

<comment><USER13> _(sadly, I don 't have Matlab and it's not free, but whatever)_

What about Octave[1]?

[1]:[https://www.gnu.org/software/octave/](https://www.gnu.org/software/octave/)

</comment></comment><comment><USER14> Being familiar with the DCT but having no idea how to explain to a five year- old, I clicked. This does not ELI5 the DCT.

<comment><USER15> How about this analogy:

You have a tap with a hot handle and a cold handle. You can make medium lukewarm water by making hot and cold equally strong. To maintain temperature but increase flow, you must increase both handles

After DCT, the tap instead has a handle controlling the temperature, and another handle controlling the flow. You can make all the same combinations of flow and temperature, but it's controlled in a different way. Medium lukewarm water is now made by having the temperature handle halfway, and the flow then increased by increasing only the other handle.

Not sure if this analogy works for America since American showers have, afaik, a single rotational dial that somehow controls both temperature and flow (???), but in Europe the distinction between the sinks with a red and a blue handle, vs the thermostatic tap with temperature handle and flow handle, is very common :)

<comment><USER6> " a single rotational dial somehow controls both temperature and flow (???)"

Two styles: A rotational dial that controls temperature and flow is controlled by pulling in and out, and a rotational dial that simply controls temperature, and flow is always maximum unless it's off.

</comment></comment></comment><comment><USER11> If this stuff intrigues you please try out Steve Brunton's extensive set of videos on Data Science that include superb lectures on Fourier Series, the Fourier Transform and the Fast Fourier Transform with examples in Matlab and Python. Can't recommend this guy enough. [https://www.youtube.com/channel/UCm5mt-A4w61lknZ9lCsZtBw](https://www.youtube.com/channel/UCm5mt-A4w61lknZ9lCsZtBw)

</comment><comment><USER16> This is an explanation (from the amazing three blue one brown) of the DFT not the DCT, but this was the first thing that ever really made sense to me. It is explained by someone who really knows math incredibly well and is an amazing teacher, with amazing visuals: [https://www.youtube.com/watch?v=spUNpyF58BY](https://www.youtube.com/watch?v=spUNpyF58BY)

</comment><comment><USER17> For those that have already worked with the FFT a bit, there are ways to use the FFT to calculate a DCT:

[https://dsp.stackexchange.com/questions/2807/fast-cosine- tra...](https://dsp.stackexchange.com/questions/2807/fast-cosine-transform- via-fft)

</comment><comment><USER18> Not DCT, but this website [1] has been on my TODO list for awhile. It explains DFT using interactive visualizations.

[1] [https://jackschaedler.github.io/circles-sines- signals/index....](https://jackschaedler.github.io/circles-sines- signals/index.html)

<comment><AUTHOR> Nice .. this is definitely something to bookmark.

</comment></comment><comment><USER19> > In simple terms, the Discrete Cosine Transform takes a set of N correlated > (similar) data-points and returns N de-correlated (dis-similar) data-points > (coefficients) in such a way that the energy is compacted in only a few of > the coefficients M where M << N.

That's not simple terms.

</comment><comment><USER20> 3Blue1Brown ELI15 the Fast Fourier Transform, which sets up the problem domain:

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

</comment><comment><USER21> Good description of how you use it for image compression, but nothing about video compression - that is, how similarity between consecutive frames is used.

</comment><comment><USER22> Fantastic explanation of transforms and the example of 20 questions and DCT totally did it for me. The rest of the explanation is hard to grok if aren't a programmer or not interested in image & video compression. YMMV

</comment><comment><USER23> Looks like everyone at hackernews have intelligence of a five year old :) Sad to see for so many human being their brain never evolve.

</comment><comment><USER24> Actually even if you are not 5 this totally misses the point about the DCT. Especially the AC components are not explained.

</comment><comment><USER25> Here's the page that got me interested in the DCT 15 years ago:

[https://www.mathworks.com/help/images/discrete-cosine- transf...](https://www.mathworks.com/help/images/discrete-cosine- transform.html)

Although I must admit that I haven't fully internalized it (it's easy to forget how it works). It might help to learn some of the more mainstream ones like the Fourier transform first:

[https://www.mathworks.com/help/images/fourier- transform.html](https://www.mathworks.com/help/images/fourier-transform.html)

[https://www.mathworks.com/help/images/image- transforms.html](https://www.mathworks.com/help/images/image-transforms.html)

MATLAB (or GNU Octave which is free) is the only language I've used that maps abstractions to code in close to a 1:1 fashion. I think of code bloat as roughly these orders of magnitude:

Math/Matrix languages (MATLAB) 1:1

Scripting languages (JavaScript, PHP, Python, etc) 10:1

Bare metal languages (Rust, C++, Assembly) 100:1

Unfortunately I have yet to find a functional programming language that is 1:1 in the same way that MATLAB is. One would think that Lisp/Haskell/Scala/Julia/Clojure/Erlang would be concise. But in practice, I've found them to generally be write-only languages that are quite difficult to grok. The only thing that comes close is spreadsheets, but due to their 2D nature, they can't really scale beyond a certain level of complexity. Honestly, I think that the lack of adoption of functional programming languages (due to their own obstinance) is one of the great problems of our time.

Anyway, for the past 5-10 years or so, I solve most problems in my head in a data-driven way that looks like a hybrid between MATLAB and spreadsheets, piping data between classes written in an Actor model style (I learned this from a very good teacher during a contract at HP). I use rules of thumb like no mutable data (stored state), mostly higher-order functions, and framing concepts in terms of transformations rather than class inheritance. Then I translate that to whatever language I have to use for the client, which is probably PHP, JavaScript or C# (Unity).

I highly recommend this sort of approach for keeping abstractions separate from implementations. Unfortunately since nobody else seems to follow this method, it makes for some friction in the workplace. People talk past me all of the time because they don't realize that I'm coming from this place of experience. They don't see the need for this clean separation when they are "trying to get things done". They may get things done faster, but if you want bug-free implementations, this is the way to go IMHO.

Edit: I'm on the fence about TensorFlow. It's arguably more advanced than MATLAB, but vastly more opaque. So I'm not sold on any advantage it provides, other than perhaps better performance or usefulness in certain domains like machine learning. Oh and any perceived lack of performance with MATLAB is an implementation detail. I can't understand why it's not fully parallelized and running on the GPU by now.

</comment><comment><USER26> "Explain Like I'm Five"

Oh my god - are you all right ? Where are your parents ?</comment>


Why Sweden rules the web  - <AUTHOR> http://www.independent.co.uk/life-style/gadgets-and-tech/features/why-sweden-rules-the-web-1640950.html <comment><USER2> 3 out of 5 of those projects mentioned involve Niklas Zennstrom and Janus Friis - so it perhaps isn't so much Sweden as a small group of people...

<comment><USER3> And Friis is Danish. And the development of Skype mainly took place in Estonia AFAIK.

</comment></comment><comment><USER4> Western Europe has a lot of weight in the English-speaking Web, perhaps disproportionate to the population. Particularly prominent are the Netherlands, the UK, and Germany as well. There seems to be a number of French developers who work on low-level coding projects too.</comment>


Web, Money; App Store, No Money - <AUTHOR> http://inessential.com/2014/04/18/web_money_app_store_no_money

<comment><USER2> App Store apps (mostly) monetize via in app purchases, or through displaying ads to a large free user audience. All the top grossing apps are free, with monetization from in app purchases.

Take a look at the grossing charts: [https://sensortower.com/ios/rankings/top/iphone/us/all- categ...](https://sensortower.com/ios/rankings/top/iphone/us/all-categories) , only Minecraft breaks top 25 as a paid app.

This means making a certain kind of consumer focused app with large numbers and ability to monetize a fraction of the users well.</comment>


Ask PG: What are the rules used on HN for calculating points, karma etc? - <AUTHOR>

HN, though not perfect, provides a good example of a well managed community. It would be nice to learn from you about how HN handles it.
1) What rules/logic you use to calculate points for posts and karmas for users, and what is the rational behind these rules?
2) How do you tackle spam? Who can mark a spam post as [dead]?
3) What different power a user gets after having x number of karma or y days old profile? <comment><USER2> Have you read the FAQ? <http://ycombinator.com/newsfaq.html> Your first two questions are partially answered there.

<comment><AUTHOR> Thanks. Yeah, I've read that earlier but forgot about it. Anyway, it answers some of my questions but not all. :)

</comment></comment><comment><USER3> Question 1 is answered on the FAQ here: <http://ycombinator.com/newsfaq.html>

Question 2 won't be answered in its entirety, because some of the measures aren't made public. Mostly spam is tackled by people flagging submissions and comments when they are spam, off-topic, or inappropriate.

Question 3 includes:

* Flagging submissions and comments

* Changing your top color

* Creating a poll

* Down-voting.

The last of these currently has a threshold of 500, but can (and will) change. I don't know the current thresholds on the others.</comment>


Somali pirates in 2010 - <AUTHOR> http://www.nybooks.com/articles/archives/2010/oct/14/pirates-are-winning/

<comment><AUTHOR> Wired article from 2009 on their "business model": [http://www.wired.com/politics/security/magazine/17-07/ff_som...](http://www.wired.com/politics/security/magazine/17-07/ff_somali_pirates)</comment>


AirBnB Poll: Which Finalist Gets To Rent Conan O'Brien's Studio? - <AUTHOR> http://teamcoco.com/airbnb

<comment><AUTHOR> I'm the swinger vote. It's either "Just the Ten of Us". Or a guy named Whitney, who is also a Michael McDonald look-alike.

Conan's AirBnB listing: <http://www.airbnb.com/rooms/200419/>

</comment><comment><USER2> How do we vote?</comment>


Chumak: Pure Erlang Implementation of ZeroMQ Message Transport Protocol - <AUTHOR> https://github.com/chovencorp/chumak <comment><USER2> This is the best ZeroMQ + Erlang implementation out there, and probably one of the best implementations in general all just make sense and the examples in python and additional native unit testing are just awesome, it surprise me that the change the name from erlangzmq which is more "to the point" than chumak, but it's easy to remember as well (=

</comment><comment><USER3> This is really major news. You drop Chumak into your Erlang application and you can talk to any other ZeroMQ stack on your network.

The other native implementations are libzmq (C++), NetMQ (C#), JeroMQ (Java), libzmtp (C).

Disclaimer: I'm a shill for ZeroMQ.</comment>


Steve Yegge - Programming Politically Part 2 - <AUTHOR> https://plus.google.com/u/0/110981030061712822816/posts <comment><USER2> I was wondering how he could top bringing political labels into programming language discussion... and then he makes an analogy to prisoners urinating on command. I'm not sure what I think of the actual argument in that case, but I'm certainly impressed with his imagination.

That said, his doubling down on the political metaphors has introduced even more irrelevant US-centric bait into the discussion. I think there's some merit to the idea that there's an axis - but you can't say that it's not about US politics, then compare one side to the Moral Majority.

</comment><comment><USER3> Part 1: <http://news.ycombinator.com/item?id=4365255>

</comment><comment><USER4> Aaaaah, Steve Yegge. Quickly becoming the Malcolm Gladwell of Computer Programming.

These kinds of notions used to be Outliers® in his essays, but this may be The Tipping Point®, whereafter he skips the half-baking and just swallows his notions raw. One of the costs of fame. _sigh_

</comment><comment><USER5> Also see <http://sweaxis.org> and <http://sweaxis.org/stats/age></comment>


Practicing Safe Sex with Third-Party APIs  - <AUTHOR> http://blog.smartbear.com/software-quality/bid/273613/Practicing-Safe-Sex-with-Third-Party-APIs Lorinda Brandon's preso from the API Strategy conference last month. Be safe! :) <comment><USER2> This is straight up using sex in an advertisement for a product SoapUI Pro by Smartbear. Slides 27, 28 and 29 are the only approaching anything that could be considered content and even calling them content would be generous.

<comment><USER3> Agreed, this is a really bad ad. I don't even know what SoapUI does for me and the slides didn't say anything but _"APIs are dangerous, protect yourself!"_

<comment><USER4> I had hoped that in place of the final advertisement slide would be a presentation full of advice and strategies on using 3rd party APIs defensibly. I'd have been happy to have a few ad slids at the end of /that/ information, but here the content was just replaced entirely by "use our product to solve this (and I won't even show you how)."

Lame.

</comment></comment></comment><comment><USER5> _"every one of us wonders if someone has written an API that can do what they're asking for"_

You keep using that word, I don't think it means what you think it means.

API: Application Programming _Interface_

API == the interface, not the service. You don't write an API to _do_ something. You write an API as a way to access a _service_ that does something.

At least have your marketing team use the terminology correctly, if that's what your product is all about.

</comment><comment><USER6> The only thing to take with you is that you need automatic regression tests against 3rd party APIs. That way when they change their behaviour or goes down you are alerted straight away. Hopefully those test suites would be running against 3rd parties staging/development environment as well so you are alerted sooner about feature changes.

</comment><comment> X-Istence This is an absolutely terrible article/advertisement. While I understand the reason they used "safe sex", it wasn't required, AND there was no new knowledge to be gained. Nothing novel, no description of how to solve the issue of coding against an API that can disappear and how to solve that problem.</comment>


Skifree clone done in HTML5 Canvas element - <AUTHOR> http://www.timelessname.com/canvas/skifree/

<comment><AUTHOR> quick pointer - it runs a lot faster in Chrome than it does in Firefox</comment>


Close.io – Stop logging calls and emails and start making them instead - <AUTHOR> http://close.io/

<comment><USER2> Is this a Mac app, or a hosted service? Or something else entirely? I have literally no idea from this page, which means I've already closed the browser window.

</comment><comment><USER3> the promises are enticing. I went to sign up but your signup form breaks on mobile(chrome on a galaxy nexus with 4.1)..

I cant afford macs for my sales team. A web or windows version would be nice.</comment>


Discussion of JVM performance from JRuby/Clojure creators - <AUTHOR> http://groups.google.com/group/jvm-languages/browse_thread/thread/2c10bde4b9985086 <comment> old-gregg I have been curious about JRuby for a long time, and relatively recently I got a chance to work on a JRuby-powered Rails application that hits a database, uses external Java APIs and serves pages.

The experience has been miserable: the "warm-up problem" is so pronounced that development reminds me of my C++ days when I had to compile my code. Rake tasks are slow as hell. Running unit tests has been so painful that we hacked Rails to run tests via Web interface. Memory consumption is through the roof: JVM-based Ruby eats (or should I say wastes?) about 2-3x times more RAM that RubyEE 1.8.6

You keep hearing RAM is cheap, but for small startups no it isn't - just look at EC2/SliceHost/Linode prices, and 1GB instances aren't going to cut it if you're running this pig (JVM) doing anything non-trivial.

Moreover, accessing Java classes from JRuby isn't nearly as smooth as using something like Closure. Ruby strings aren't Java strings and it applies to arrays, hash tables, everything. Even importing JARs isn't that trivial. Moreover, your Ruby code which consumes Java libs looks more or less like Java in a Halloween costume. NOT FUN.

The bottom line: yes, Rails on JRuby is about twice as fast (in our application) but you take a shocking hit to your workflow by the startup lag and you pay with an increased RAM wastage by JVM when you deploy.

Next time I am needing some Java libraries in a Rails app, I am hosting an instance of Tomcat and exposing that library via a simple REST service using plain Java.

<comment><USER2> My current project is JRuby on Rails, so I wanted to inject my few cents, and also to ask what your long-term experiences with the platform were.

Rake tasks are definitely slow; you have to wait a few seconds for them to complete, which overall sucks. A lot. If anything, this is the one thing that has pushed me to thinking about using MRI again. Nailgun is supposed to help a lot here, and since JRuby 1.4.0 was recently released, I'll be giving NG a go and seeing what the improvement is for common rake tasks.

RAM hasn't been a big problem for me. The JVM _does_ use more RAM than MRI, but it also seems to do a better job of managing it. I've never had an out-of- memory error, and the nastiest benchmarks I could throw against my code (a few hours' worth of solid requests) don't jack the JVM above around 200M of RAM, and that's with an embedded Solr server for indexing/searching. BUT... we haven't done a fully public beta yet, just the 'friends and family' version. So I could be talking out of the wrong orifice here.

You get real threading, which makes setting up a job scheduler a lot easier, and lets you run a multithreaded Rails server.

The performance is quite good when compared to the 1.8.7 MRI.

Accessing Java classes isn't as nice as Closure/Groovy, but that's to be expected. Closure and Groovy were designed from the ground up to use Java classes as their foundation, and Ruby... wasn't. Even so, JRuby does a decent job of autoboxing most of the time with strings and arrays, and I've had only a few speedbumps when using Java classes in JRuby.

Loading JARs seems to work fine with 'require' for me; what problems have you run into?

What is the long-term memory use for your application like; e.g., does it grow hugely over time, or remain relatively stable after the JVM warmup?

What JVM/JRuby are you using?

Other than startup slowness, what other issues have been problems for you?

<comment> old-gregg Our application is a data cruncher, it's not a public web site, and our controllers/views are just a GUI to control/monitor the process.

Memory usage shuts up to 700-800MB per Rails instance but it stays there regardless of how many documents we put through the pipeline.

Also our migrations stopped working in test environments - JDBC db adapter would "reset" itself back to mysql MRI gem ignoring database.yml. On CentOS it would happen with all environments, not just test. We were never able to figure out where/how this happens due to extremely dynamic/"magic" nature of AR and Ruby in general, so we're using MRI just to run migrations and we moved to Ubuntu in production to keep JRuby/JDBC happy

But my biggest objection to using JRuby in the future is that it's easier to use Java for accessing Java libraries, i.e. using JRuby simply because you need some Java-based OCR package is simply not worth it - my advice would be to use Java to access that API and then interop with MRI somehow, I would do it via HTTP-based REST API between Rails/MRI process and Tomcat-hosted JVM.

<comment><USER3> You can limit the JVM heap size.

</comment></comment></comment></comment><comment><USER4> _This is something that might be a good candidate for openjdk and/or icedtea. The only problem is the build seems to be regularly broken in the repository. - Andrew Oliver_

I'm surprised that a project that large doesn't use something like tinderbox or cruise control.</comment>


Scariest Asteroid Attacks on Earth: The Near Hits and Approaching Terrors - <AUTHOR> http://io9.com/5018346/10-scariest-asteroid-attacks-on-earth-the-near-hits-and-approaching-terrors

<comment><USER2> The world as we know it was 45,000 miles away from dying last night and not one of the billions of people on this planet had any idea... we don't need a missile defense shield to protect us from Russia... how about something to stop Armageddon?</comment>


Backbone.js - Model and Views: Image Gallery Tutorial - <AUTHOR> http://blog.paracode.com/2011/08/23/image-gallery-with-backbone/

<comment><USER2> Not a backbone expert, but how "correct" is it to have a presentation variable like "selected" tied to a backbone model? For some reason the OP's inclusion of a "selected" attribute on his model struck me as odd. I don't think you'd want to sync this with the backend...

<comment><AUTHOR> That's a good question. If you think of a model representing whats behind a view, in a non-web world (stateful), selectedness can very well sit in a model - as long as it represents a state of the view. In this example, the selectedness sits in the collection, however it may sit in the view. See more about this here, for example: [http://stackoverflow.com/questions/6519990/best-way-to- make-...](http://stackoverflow.com/questions/6519990/best-way-to-make-one- model-selected-in-a-backbone-js-collection)

<comment><USER3> Yup, can simplify code for wiring together views a great deal and promote decoupling between them.</comment></comment></comment>


Pentagon Has Tested Drone That Gets to Its Target Area at Hypersonic Speed - <AUTHOR> https://www.thedrive.com/the-war-zone/33934/pentagon-has-tested-a-suicide-drone-that-gets-to-its-target-area-at-hypersonic-speed <comment><AUTHOR> Original source submission flagged for clickbaity title

[https://aviationweek.com/defense-space/sensors-electronic- wa...](https://aviationweek.com/defense-space/sensors-electronic-warfare/us- army-flickr-page-inadvertently-reveals-new-hypersonic)</comment>


Ask HN: Best VPS providers for fast scale-out - <AUTHOR>

I am searching for a good , cost effective VPS provider. My main decision point will be how quickly I can spin up new instances (minutes is no good I need seconds). Any recommendations? THANKS! <comment><USER2> Performance: \- PhoenixNap SecuredCloud <http://www.phoenixnap.com/> (US-West, US-East, Amsterdam) [VMWare based, spinup time is about 45 seconds, offers every imaginable feature for large production environments, enterprise firewall, f5 load balancing, 100% uptime SLA]

Value: \- Digital Ocean <https://www.digitalocean.com/> (US-East, Amsterdam) [KVM/QEMU based, spinup time is under a minute, decent 'basic' API]

As a current customer of both companies, we use Digital Ocean to host our company VPN and development nodes, and PhoenixNAP to host our production sites. (Bandwidth at PhoenixNAP is billed @.05- per gb, very competitive compared to EC2 especially considering they use exclusively premium bandwidth)

</comment><comment><USER3> Friend of doppenhe here.

Amazon, heroku etc aren't fast enough for us due to spin-up time. Basically when we get a particular command from a user, we need to do a LOT computation on many parallel machines, but for a short burst of time.

Keeping a whole cluster of machines reserved would be prohibitively expensive at this stage. We would prefer to keep a small base-load capacity reserved, and then spin up a large number of instance for a short time. Response time is key here.

It would be best if they were already up and running, waiting for a command, but idle most of the time. Fine if it's shared with others. Kind of like a computation insurance for short bursts of high-demand.

Anyone know any services like that?

<comment><USER4> What about cheap dedicateds?

In the US Hivelocity have great prices - <http://hivelocity.net/>

In Europe there's also Hetzner - <http://www.hetzner.de/en/>

</comment></comment><comment><USER5> I recommend you take this question over to the WebHostingTalk forums [1]. They have a lot of smart people who are in that space and can offer a lot of insights as well as deals on hardware, bandwidth, storage, etc. I am not affiliated, just a user there from time to time.

[1] - <http://webhostingtalk.com>

<comment><AUTHOR> thanks!

</comment></comment><comment><USER6> Linode is good with nice API , Even Digital Ocean is good with basic API.

We are using DO ( value for money ) for a new service and A full nginx based site can be setup in under 60 - 80 seconds after cloning a basic image. New instances take a little less time.

</comment><comment><USER4> Heroku can spin up new instances in seconds and you can automate it with HireFireApp. It's not a VPS, but a VPS aka shared hardware is never going to be "seconds" unless it's already provisioned and basically just needs to boot (EC2 and your own AMIs?).</comment>


Physicists Discover a Whopping 13 New Solutions to Three-Body Problem - <AUTHOR> http://news.sciencemag.org/sciencenow/2013/03/physicists-discover-a-whopping.html

<comment><USER3> After seeing the animations and reading the article, I am somewhat skeptical about the stability of these orbits. They are rather long and have plenty of near-misses. Even if they are stable in the sense of a pure 3 body problem, at close distances stars don't behave as point objects anymore. Instead, you have things like tidal forces and matter around stars.

Additionally, all the near misses makes it difficult to calculate the orbits, even with variable step size.

<comment><USER4> You've been downvoted, and I don't know why, because you raise a worthwhile point ("will these be observed in real systems?"). In addition to the non- ideal factors you mention, there may also be the possibility of mass exchange in the close approaches.

</comment></comment><comment><USER5> If you want to go directly to a visualization of the solutions: <http://suki.ipb.ac.rs/3body/>

<comment><USER6> I have added all the solutions to my html5 gravity simulation project here: <http://jbochi.github.com/planets/>

PS: Some of the configurations are not stable with my code. I'll try Runge- Kutta.

<comment><USER7> Hah, my high school memories - a graphical gravity simulator project for my CS class, leaking energy due to the use of a very naive integrator (the Euler method for ODEs).

You might want to try Stormer-Cowell, it's sort of a gold standard in orbit simulation.

UPDATED: Hmm, now that I think of it, this would probably profit more from a variable step method. Some of the close approaches seem to be really close for a fixed-step integrator.

<comment><USER6> Thanks! I did not know Stormer-Cowell, but googling it, I've found a comparision to DROMO, suggesting that it's even more stable: [http://www.congrex.nl/11c01proceedings/Papers/2225317%20Pela...](http://www.congrex.nl/11c01proceedings/Papers/2225317%20Pelaez.pdf)

I'll try both if I find the time :)

</comment></comment></comment></comment><comment><USER8> "What we did was the most simple-minded thing that you could do," Dmitrašinović says. "We were shocked when we discovered all these things, and we were even more shocked when we discovered that they had not been discovered before us."

<comment><USER9> It's amazing how many things are discovered this way.

</comment></comment><comment><USER10> As someone with an undergraduate level education in physics I find this stuff pretty cool. Having a number of homework exercises for my graduate level classical mechanics courses end with the fact that the solution degenerates into a three-body problem, and therefore an unsurmountable task, this kind of news gives me hope :)

</comment><comment><USER11> Is there any simulation online where I can just click to add planets and watch them move around each other? It's surprisingly relaxing...

<comment><USER12> Here's one a made a while back. <http://horuff.me/static/content/grav/>

<comment><USER13> That's /really/ fun, thanks!

It doesn't work, though. On firefox 19.0.2 (archlinux), it seems to detect clicks shifted a good bit to the right (maybe 100 pixels?), and a little bit down. It looks like it's using whole-screen coordinates without correcting for the position of the canvas.

It would also be cool if you could give some quantitative data below - <USER2> total amount of kinetic/potential energy would be fun to watch, for instance. (And graph it.)

You also seem to be using an inverse-square law, which is "incorrect" in a 2D universe, but I suppose it makes it seem more natural.

</comment></comment></comment><comment><USER14> Those are some awesome orbits. There don't seem to be any solutions where all three bodies are in the ecliptic? If so does that mean we would only see these in the wild in a planet/star "capture" situation?

</comment><comment><USER15> Wow, that text scrolls slowly...

</comment><comment><USER16> when it rains, it pours.</comment>