VHDL or Verilog? - <AUTHOR> http://fpgasite.blogspot.com/2017/04/vhdl-or-verilog.html <comment><USER2> Little known in the industry, VHDL struct syntax allows for very neat and concise method to be used, called [Gaisler's method]([http://www.gaisler.com/doc/vhdl2proc.pdf](http://www.gaisler.com/doc/vhdl2proc.pdf)). The entire Processor and architecture is written using it ([http://www.gaisler.com/index.php/downloads/leongrlib](http://www.gaisler.com/index.php/downloads/leongrlib)) - and it is fantastic to work with - it feels like a piece of object oriented programming, while using low level language of VHDL. Not sure if anyone has tried to apply Gasler's method to SystemVerilog, but verilog on its own falls quite short in this regard.

<comment><USER3> Was Gaisler the first to write about it? I actually first heard about it from Mike Treseler, who is mentioned in this Powerpoint ([http://ens.ewi.tudelft.nl/Education/courses/et4351/structure...](http://ens.ewi.tudelft.nl/Education/courses/et4351/structured_vhdl.pdf))

<comment><USER4> Slide 22 of this powerponit, Mike explicitly calls it Gaisler's Method. The term he uses "Structured VHDL" comes next slide.

</comment></comment></comment><comment><USER5> VHDL and Verilog are virtually no different from eachother. It's basically equivalent to ARM assembly vs MIPS assembly -- they are both machine-level assembly languages.

If you want something more interesting, see High Level Synthesis (aka C to RTL, SystemC, etc) [1]. But this is still very beta (and has been for over a decade), so it's almost unused in the industry on designs.

The majority of hardware design time is now dominated in the hardware verification space, aka SystemVerilog.

[1] [https://en.wikipedia.org/wiki/High- level_synthesis](https://en.wikipedia.org/wiki/High-level_synthesis)

<comment><USER6> I programmed FPGAs using both VHDL and Verilog for many years. Recently I have started at a start-up where we predominantly program using C++ HLS. I never want to go back to full-time HDL again. We have found it is possible to get the same performance as carefully written RTL, but you still have to write with the underlying device architecture in mind. There are advantages with HLS, simulation is vastly faster, and C++ templates can be used. This makes it easy to try many iterations and find clever optimizations. If you try to do the same with HDL it would be a nightmare with a large design. More people should move to HLS and push for the tools to improve. the world would be a better place.

<comment><USER7> Be honest though, HLS works well for DSP-like applications, not for anything else. Not every digital design is image processing and if it works well you're still sacrificing ~20% of your LUTs.

<comment><USER8> HLS lets the compiler optimize your layouts for you more, since you're expressing your algorithm's goals at a much higher level (and have left more actual implementation details unspecified). I've implemented the same algorithm in both HLS and Verilog and with a few pragmas the HLS code, the result was infinitely more tweakable on the space/speed gradient - I was pretty much able to utilize the maximal space I could to achieve maximal execution speed - and limited to the same area I had used for the verilog implementation, it had almost identical performance.

It's also incredibly time saving in that with HLS you can actually rapidly unit test your designs (outside of a simulator), and you can usually get a codegen for bindings for the SoC you're designing for so you don't have to write any headers/interface code for the onboard processor yourself.

IMO, people who don't think HLS is a win either have years of experience invested in older toolchains and are more productive with them (and don't see HLS as worth their time), or haven't actually tried it.

I've mostly used a slightly hamstrung C++ as a HLS language with a Xilinx SoC. C++ is infinitely nicer than an HDL, but I can't help but feel that Rust's safety model more closely matches how an HLS wants to structure its invariants, so I feel like it could be an excellent HLS language in the future, given the chance.

<comment><USER9> Having worked with a few variations that promised gold and delivered very little, allow me disagree.

For complex designs I always came back crawling to vhdl and systemverilog.

(Jury is still out on Chisel, but it doesn't look good right now. Looks more like it was designed by CS folks who just didn't get modern hardware design)

</comment></comment></comment></comment></comment><comment><USER10> Whenever the VHDL vs Verilog argument is brought up, I am reminded of this competition from a long time ago:

[http://athena.ecs.csus.edu/~changw/class_docs/VerilogManual/...](http://athena.ecs.csus.edu/~changw/class_docs/VerilogManual/cooley.html)

(Notice which language won, who won, and what company he worked for...)

<comment><USER7> This is a very old (I think > 15 years ago) competition, the results say nothing about the situation today, both language have changed a lot.

It was a PR stunt by the Synopsys guys who a that time wanted to kill VHDL. The VHDL guys had to work with slow & broken VHDL simulators. The the problem was devised by verilog enthusiasts. All VHDL engineers who showed up (in much smaller numbers than verilog engineers) felt like they they didn't have a fair chance.

<comment><USER9> TL;DR:

1\. Guy worked for synopsis

2\. Unlike competition synopsis didn't have a vhdl product

</comment></comment></comment><comment><USER11> Verilog and VHDL are certainly fundamental, but there's plenty of alternatives...

Chisel with Scala, MyHDL with Python, Bluespec and Lava with Haskell are all low level HDL languages to name a few that piggy back on typical programming languages.

And if you want a higher level integrated solution you could use Altera OpenCL or Xilinx HLS.

Not to say we couldn't ask for a lot more from FPGA tools!!

<comment><USER12> I'm hoping to try MyHDL someday. If it's good, great, otherwise probably I'll try to develop my own metaprogramming (likely based on R7RS scheme) system on top of VHDL.

<comment><USER13> When it comes to Python 'frontends'/'preprocessors'/'high-level-synthesis tools' I prefer Migen over MyHDL, mostly because of the vastly different abstraction level.

MyHDL parses a normal Python AST and translates it to Verilog statements. In the end, you seem to end up with the exactly same abstraction layer as Verilog/VHDL, just with a Python syntax. There is a very limited subset of advanced Python composability constructs you can use without hitting a limitation of the AST walker and translator. And when you do hit it, it's fairly annoying to debug. In the end, I don't see it's use over writing straight Verilog/VHDL, apart from it being easier to test.

Migen, on the other hand, is a system where you write native Python code that doesn't pretend to be then running on the FPGA. Instead, your code stitches together an RTL AST, which can then be either simulated or converted to Verilog. Your Python code is effectively a RTL logic generator (AFAIK this is exactly how Chisel/SpinalHDL work, too). You can then compose these low-level constructs into higher layer abstractions- for instance, the stock Migen framework comes with an FSM abstractions, which takes care of all the boilerplate if declaring state machines (state register and values, separate synchronous/combinatorial logic statements, etc.). It also comes with abstractions for Arrays, (B)RAM, FIFOs, priority encoders...

Finally, Migen is the base of the MiSoC project, which abstracts away enough digital logic to let you connect, in Python, high-level constructs like buses, CPUs, DRAM controllers, etc. in order to dynamically construct a system-on- chip.

<comment><USER12> Thanks. I'll definitely give Migen a try. Looks like right up my creek.

</comment></comment></comment></comment><comment><USER14> Back many years ago when I had to make a choice between these two I took a very practical approach. I learned both of them to a level adequate enough to implement a few small test projects and then I made my decisions.

How?

As a solo founder CEO/CTO/Electrical, Mechanical, Software and FPGA Engineer and, let's not forget, Janitor at the time there was one thing I valued far above anything else: Time.

VHDL, I found, is very verbose. Verilog not so. To me this meant having to type twice as much to say the same thing. This didn't sit well with me and that was the primary driver in deciding in favor of Verilog.

Another driver was familiarity with C. I had a need to switch contexts with some frequency. I was using C and C++ for embedded and workstation code development. As a mental exercise, switching to VHDL felt, for lack of a better word, violent. Switching between those languages and Verilog felt natural. Again, a time saver.

It also seemed far easier to find and hire a good Verilog engineer when the time came for me to let go of that title and focus on being a better Janitor. To me Verilog was the clear winner on all fronts. At the time it lacked a few constructs that were later added into the language yet I never found that to be a problem and managed to successfully design and manufacture many successful products.

<comment><USER7> The verbosity of VHDL isn't 2x it's more like 20% bigger on average and since VHDL 2008 it's pretty much the same. VHDL can be wordy but it also reads a lot easier & it looks more structured.

Verilog isn't C, it's C-ish, just different enough to make me make mistakes all the time like 'not' in verilog is '~' instead of '!', or the lack of overloading, the weird rules with signed & unsigned numbers and the implicit wire declarations etc. Verilog is full of surprises.

Do you like determinism? Have you ever tried running the same (System)Verilog design on multiple simulators? Almost every time you get different results, VHDL doesn't have this issue.

<comment><USER14> You seem to be taking this personally. What I described was my reasoning for choosing Verilog. It worked fine for me. I am not going to debate minutiae.

Also, who said Verilog is C? It feels like C but it isn't. It's simply a lot easier to context switch between C and Verilog than between C and VHDL. That's my opinion. You don't have to agree with it. There is no implicit obligation to agree with anything at all.

I have shipped millions of dollars in product very successfully using Verilog. Others have done so using VHDL. In the end it is a choice.

My intent was to give the OP one criteria he or she might be able to use in some way in making a similar choice.

</comment></comment></comment><comment><USER15> As a Haskell fan I was drawn toward VHDL because of its "strong typing". Haha, it's nothing like what I expected, mainly just a bunch of annoying forced casts from signed to unsigned etc. I ended up liking Verilog better: more characters are dedicated to your intent than to your casts. But ultimately they're not that different.

(Note there are also Haskell-oriented HDL's, but my experience with those wasn't great, at least 4-5 years ago. Proprietary, poor interop, and let's face it, it's not Haskell. On the surface FP seems like a good fit for FPGA, but in the trenches you constantly need lower-level tricks to keep your program's gate count from exploding.)

<comment><USER7> Let me guess, you were downcasting everything to std_logic_vector? If you have to cast things all the time in VHDL you're not using it correctly.

But please enjoy (System)Verilog with it's random often undefined coercion, implicit wire declarations, non-deterministic simulation and lack of any meaningful compile-time checks. Honestly, as a huge Haskell fan, I can't believe you're a Haskell fan.

<comment><USER15> Geesh, does reporting my experience with the two languages really warrant this kind of snarky ad-hominem attack?

</comment></comment></comment><comment><USER16> I'd say go with Verilog. SystemVerilog 2013 and VHDL 2008 are competitive when it comes to synthesis features, but synthesis is only half of the story.

SV's simulation features are really top-notch. If you're going to pick one to learn, I'd go with SV because you'll probably be using it anyways for verification tasks.

</comment><comment><USER6> Both. The differences are not that great. I don't believe anyone who says they can done something in one that can't be done in another, they just don't now how to do it. After staring at a large design day after day, it is a pleasure to switch to the other one just to break up monotony. If you inherit someone else's design, I prefer to have the component list in VHDL to get an overall picture of what is going on. I guess it is easier to write Verilog, but easier to read someone else's VHDL.

</comment><comment><USER17> At a recent Intel event I spoke to a senior Altera engineer and he recommended just using OpenCL and not bothering with either VHDL or Verilog. Apparently the OpenCL to FPGA compilers these days have become so good that the performance is within 10%-30% of hand-written VHDL / Verilog, which for most use-cases is very much in the "good enough" range.

<comment><USER7> No they haven't and they are not even close.

OpenCL is a bad language for synthesis. The strength of an FPGA is deeply- pipeline-able sequential algorithms. C-based languages just aren't good at expressing/controlling pipelining, so the synthesizer/compiler has to infer this but that problem is too hard. You could change 1 line of code, a minor fixup and the clever optimizer fails and your design is suddenly 10x as big.

</comment></comment><comment><USER18> Having used both for multiple years, I prefer Verilog. I think that for the synthesized subset of RTL, that HDL is typically used for, Verilog is way more productive than VHDL. The endless type conversions that are required for VHDL, just means too much mental burden and is away from actual design effort. VHDL is not practical.

Strong typing is useful when you use the same types for multiple instances, as in SW. However in HW, you construct your data to a set of bits, and then take as many as needed for the particular case. The type you need is a bit vector. Bit slicing checks can be done in the Linter tool, if needed. In DSP designs you can get benefits from VHDL types for signed and unsigned integers, but in my opinion even that does not cover the VHDL related deficiencies.

When you are working with synthesizable subset, you will never have problems with race conditions in simulation. You stick to a strict coding style, and it becomes the second nature. For beginners there are always issues, including this.

I find comparing the merits of SW languages to HW languages a bit silly. Describing SW does not benefit from the same features that describing HW does. For example Functional Programming (aka Haskell people) has nothing to do with HW. In FP you want to separate state from your functions. In HW the intention is to do the exact opposite. You want capture everything as local as possible, in order to enable maximum performance in speed, power, and area. This implies that OOP is pretty close to what HW requires, but not FP.

</comment><comment><USER19> Try to implement a general purpose, synthesizable CRC for any polynomial of any size in Verilog without resorting to hard-coded lookup tables.

Can't be done.

One language suffers from a serious lack of expressiveness and forces its users to effectively carve their gates from stone with incessant low level bit twiddling. The other lets you describe high level behavior and have the tooling do all the hard work.

<comment><USER16> I actually did this exact thing in Verilog at a former employer, and got pretty good results (at least with the Xilinx toolchain). It just took some creative use of Verilog's 'function' construct.

The basic structure was:

1\. Write a function that calculated the next bit from a the existing state and the target poly.

2\. Write a second function that called that first function repeatedly (once per bit in the target word).

3\. Call the second function on the input data for a combinatorial output.

</comment></comment><comment><USER20> Verilog of course. try to do nested if without else in VHDL!

</comment><comment><USER21> Neither, get yourself some Chisel.

</comment><comment><USER22> I've done both VHDL an Verilog extensively in school but not professionally. From my experience verilog was much nicer to use. I designed a complete MIPS pipelined CPU: [https://github.com/eggie5/SDSU- COMPE475-SPRING13](https://github.com/eggie5/SDSU-COMPE475-SPRING13)

However, speaking to many FPGA professionals I know, VHDL has a much more traction in industry and patricianly in defense contractors.

</comment><comment><USER23> OCaml with HardCaml ([http://www.ujamjar.com/hardcaml/](http://www.ujamjar.com/hardcaml/)).

</comment><comment><USER24> Vhdl + vunit. HLS will (latency/bandwidth)-wise do equally good, provided you have some spare resources(large enough fpga).

</comment><comment><USER25> I recommend Clash. I've used it in production.

[http://www.clash-lang.org/](http://www.clash-lang.org/)

</comment><comment><USER26> As Ada fan I would say VHDL.

</comment><comment><USER27> Of course, systemverilog!</comment>


24 Solid State Drives Open All of Microsoft Office In .5 Seconds - <AUTHOR> http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds <comment><USER2> That gives some interesting possibilities for computers in a few years -- one relatively expensive drive for code, another cheap drive for data, for example.

Probably 80% of your hard drive is stuff where the access speed is irrelevant -- movies, for example, since your capability to read from the disk far outstrips your eyes' capability to watch the movie. Photos, Office docs, email, ditto ditto ditto.

Then there are programs -- or even a subset of programs, really -- that actually have appreciable startup times. Office, Eclipse, etc, I'm looking at you.

You could put those programs on the "fast" disk (along with most of the OS, presumably) then make it as big as you pleased with cheap spinning platters. With a little bit of software trickery, you could present the two disks as one physical drive to the operating system (or to the end user) and shift data between them using some sort of caching policy (LRU, whatever).

It sounds like a sexy idea for servers too -- can't afford to keep the entire working set in RAM? No problem -- back up the RAM with solid state and only write to spinning magnetic media when you need long-term non-volatile storage.

<comment><USER3> That's the way to do it today too. In my machines, I use a smaller 10K RPM drive for OS/programs and a large drive or two for data. It does make a significant difference in performance.

</comment></comment><comment><USER4> Wow. Simply -- wow.

I was amazed at really seeing the HD bottleneck minimized this way. I always knew about it, but -- wow.

<comment><USER5> Would be interesting to see a baseline against a RAIDx24 with conventional HDDs.

<comment><USER6> Agreed. I wouldn't go so far as to call it meaningless without something to compare it to, but I'd imagine conventional disks would still be very fast in that setup.

<comment><USER5> Yeah - and perhaps for certain scenarios it might be faster? (Pure conjecture on my part).

So - if seek time wasn't a big factor, a fast conventional drive could be faster? And if you have a very high level of striping (ie. 24 drives), seek time might be significantly mitigated.

</comment></comment></comment></comment><comment><USER7> It's actually quite clever marketing on behalf of Samsung, and impressive to seek them using 'geek marketing' in this way.

However, given that a 64GB Samsung SSD drive goes for about $500, 24 of them (plus RAID card for that many) is still looking quit steep!

<comment><USER8> Sold state is pretty new - I'd expect the price to come way down. I know I'm constantly looking at hardware from a years ago, thinking, "We were paying hundred/thousands for _that_ back then? Damn, we've come a long way."

</comment></comment><comment><USER9> Reddit thread: [http://www.reddit.com/r/reddit.com/comments/836i6/hey_reddit...](http://www.reddit.com/r/reddit.com/comments/836i6/hey_reddit_samsung_gave_me_24_new_ssd_drives_to/)

The IT guy from the video is a poster there, so there is some useful information if anyone is interested.

</comment><comment><USER10> And then software will expand to make everything slow again.

<comment><USER11> Not if you consistently have $25,000 to spend on a computer.

</comment></comment><comment><USER12> It's funny how they never say how much RAM this computer has.

Vista has a feature called 'superfetch' which pre-caches applications in memory so they're never actually loaded from disk. Also, it's hard to tell, but if this computer has sufficient RAM, you could conceivable load everything directly from memory.

Also, the fragmentation test was a little dubious. A computer that new would have very little file fragmentation, so of course defragging would be fast.

That said, it was an entertaining video!

<comment><USER13> If superfetch explains that, than surely anyone with 4GB can replicate the performance within a factor of two or three. Can anybody with Vista replicate that? (I don't have Vista and have never used it, so I have no idea, though honestly, if Vista is superfetching 53 programs I'd be a little annoyed.)

Fragmentation test... well, it is a _marketing_ video, after all. The real question is "why defragment an SSD at all?"

</comment></comment><comment><USER14> Although I understand the awesomeness of this video I don't get that a marketing company comes up with this video. The nerd community is already familiar with the potential of SSD's and their speed increase. I think that the consumer market should be steamed ready for the 'next-gen' in hard disks via a video that's not focused on RAID configs, 6 TBs, a benchmark of 2GB/s and stuff. Focus on things like homevideo editing or working office, photo apps, mediaplayer and stuff all at once.

More exposure, more familiarity with the hardware and advantages, more potential buyers.

<comment><USER15> well... the video made me feel the urge to replicate the findings. At least to some scale.

So they may have sold an SSD or two.

But then again, I'd probably go Intel and not Samsung.

Still. They got people talking and the video probably wasn't all to expensive to produce, so they got at least SOME value for their money.

</comment></comment><comment><USER16> Desktop performance with solid-state drives is less interesting to me than server performance -- specifically databases and other services where seek time is more important than throughput.

Has anyone done performance tests with MySQL on low-latency storage devices? As another commenter suggested for the desktop, strategies of using solid- state for latency bound activities and traditional disks for throughput intensive stuff might be an interesting hybrid to explore.

<comment><USER3> Currently, SSDs' limited number of rewrite cycles make them unsuitable for that type of server application.

<comment><USER17> That's a myth. Enterprise flash drives are rated for years of constant writes.

<comment><USER3> The problem with those ratings is that you're only exposed to one side of the potential deviation from the mean. A MTBF without standard deviation is meaningless.

To put those ratings in context, consider that a Western Digital VelociRaptor has a 160 year MTBF.

<comment><USER17> The good news is that the wearout of an SSD is a gradual, measurable, monotonic process (because at every point you know how many spare blocks are left), while the failure of a hard disk is a random process.

<comment><USER18> I had another hard drive fail on me last week. At this point I would give part of my soul for SSD-style failure properties with sizes and prices comparable to conventional hard drives. (I mean, assuming partial souls regenerate, Xanth-style.)

I'm sure it will happen in a few years. I wonder if there's some starup opportunity here: are there any ways to take advantage of fast, reliable, cheap, flash-like storage becoming ubiquitous?

Probably you could add more fine-grained extension hooks to programs without them becoming bloated, by having plugins loaded lazily at run-time from a solid state drive. I'm convinced that the next big thing will be software that quietly integrates with other software, so you don't even have to click on an icon to use it.

</comment></comment></comment></comment></comment></comment><comment><USER19> So, given that demo, does a single SSD perform substantially better enough on a normal laptop to warrant the expenditure yet? (Last I heard, standard advice was to wait until the price drops.)

<comment> old-gregg Only if the drive is based on Intel's MLC or, even better - Samsung's SLC flash.

Regular (cheap) MLC-based SSDs are good only at reading big sequential files and lose out to 7200rpm drives when it comes to many small writes.

I can't find a ling to a guy who blogged about his disappointing experience compiling C/C++ sources on a regular MLC drive, but I googled Linus Torvald's experience with Intel:

[http://torvalds-family.blogspot.com/2008/10/so-i-got-one- of-...](http://torvalds-family.blogspot.com/2008/10/so-i-got-one-of-new-intel- ssds.html)

I personally find that I just have all my software open all the time, most of what I need gets pre-cached in 4GB of RAM I have, and I never reboot, i.e. no need to restart anything [unless, of course, freaking Adobe Flash freezes my Mac]

<comment><USER20> This anandtech review was very helpful to me:

[http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=34...](http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3403)

Gives a lot of detail about the various types of SSDs and why the intel is currently the best bet. Warning, reading it might cause you to go into a "gear lust trance" and spend a lot of money.

</comment></comment></comment><comment><USER21> This should work with USB thumbdrives too.

The ones I've tested are faster than a HDD (and faster than the SSD in a eee PC). They're also cheap.

Bottleneck would shift to USB bandwidth (60 MByte/s) and the PC itself.

</comment><comment><USER22> _The complete system defrags in about 3 seconds._

This part impressed me most.

<comment><USER23> Although I do wonder what the point of defragging an SSD is...

<comment><USER24> There is none. Even if there were some advantage with sequential blocks, SSDs should employ wear leveling, thereby spreading your bits across random blocks anyways.</comment></comment></comment>


Ask HN: Have you had experience with short term role/team rotations? - <AUTHOR> Hi HN. In my company (specialist software) we're thinking about a short term 'foreign exchange' programme, where two members of different teams swap for a sprint or two, to try and understand what goes on in other teams and learn their challenges.<p>Has anyone here participated in such a short-term exhange? Was it worth your time? <comment><USER2> I regularly consult for teams, so I guess that's similar. The big thing going is that it could take a very long time to learn to build something. Even for seniors, it can be a week or more, if there was no focus on onboarding.

However, it's always been very useful. Normally you hear of 'buzzwords' \- kotlin, reactive, functional, dependency injection, architectures, all these things, but tutorials give you little to nothing. But once they're used in a project, the value (and downsides) are immediately clear.

It's also useful to learn some things, like how the caching works, why this thing is a bottleneck. Or some habits, like one person has their set of tools and configs which turned out to be really powerful.

</comment><comment><USER3> I think that would only be helpful if you're brining in an expert to consult/swarm on an issue.

We have a rotation program that involves three 6 months rotations for select new hires. The company claims that gives those people exposure to a broader understanding of technology and business use cases. I think that's true. I think it also builds their professional network in the company. This seems to work ok.

</comment><comment><USER4> We tried that for a while at Microsoft but a sprint or two are too short to being meaningful results. You should think about what do you want to achieve and how much is needed to actually do that- if the teams uses similar technologies, infrastructure and code base than it is possible to achieve something in short periods of time otherwise it would be a waste of time

</comment><comment><USER5> Haven't done that exactly. What benefits are you hoping for? What negatives do you think it might have?</comment>


Ask HN: For a web application, on what basis should i charge a client? - <AUTHOR>

Recently I made an application for a client, and realised later that my asking price was quite less. And I am binded to complete the application rather asking for more. Basically there were more functionalities than expected. <comment><USER2> This is why we have something called "time and materials billing". Charge by the day, and give clients an estimate for how long you reckon it will take. Bill by the day (not by the hour, read Thomas Ptacek's writing on this), and if things take longer than expected, let the client know as quickly as possible, and figure out your next move as a team. If they're asking for Complex Feature X, but really what they want is to satisfy Business Need Y, see if there's a simpler way to solve that problem. If they're dead-set on what they're asking for, politely inform them that it's going to take longer and cost more than you initially estimated, given facts A, B, and C (existing codebase is more complex than you thought, external API has some quirks, etc).

The key thing to remember is that what we (consultants) are not running a product business - we're a service business. We're not selling flour by the pound here. Clients will push for the product approach because it offers them the least risk: they know they will spend exactly X, and get exactly Y. The problem with this approach is twofold. First, it shifts all the risk onto us as consultants; second, it leaves either party unable to adapt to change without (potentially serious) personal cost. When changes happen (and they do: client decides a feature should work differently, timelines change for business reasons, etc), you and your client can't react to those changes because of the contract - unless you want to do some free work, which I can guarantee you don't.

Time and materials billing also encourages thorough work - in a fixed-rate project, it's a race to the finish so that you can keep as much of the bill as possible. This means taking shortcuts, exploiting technicalities in the contract, and other things that result in a sub-par final product (and business relationship). With T&M, you're motivated to make sure that features work exactly as intended, and the client is free to make as many changes as they like (at their expense of course).

Finally, if they complain "Oh, but you're just going to take longer to do everything so you can charge me more!", inform them that you have a long history of clients who have been very satisfied with your work, both in terms of final output and timeline. Testimonials are great here. If they push the issue, they don't trust you, and that's probably not going to lead to a good working relationship - proceed at your own risk.

I'm sorry that this doesn't answer your question - hopefully though, this advice will help keep you from running into similar situations in the future.

To weigh in on your current dilemma, It Depends (tm). If you value the relationship with the client and would like to continue working with them under the terms I outlined above, just swallow it and move on. If not, send them an invoice.

</comment><comment><USER3> If the client added new functionality or has been asking for new features you could approach him for additional fee for the additional functionality. Typically features and 'nice to have' items creep into the scope of a project as it progresses.

I would recommend incremental development, review, invoicing, payment so basically you're delivering modules/phases to the client so he can see/approve/pay for the work as things progress so you don't have too much time invested before the client sees the work and you see that he is paying.

If you just totally missed the mark with your quote and can't do the work for the amount you quoted it's probably better to stop work right away and be prepared to refund any up front payment they provided.

Then approach them to renegotiate the project fee/scope to an amount you are comfortable with. Or perhaps scale back some of the functionality to an initial version of the application for the fee they have authorized.

In any case if it's going to take a lot of your time to complete without proper compensation either scale it back to a scope that matches the agreed amount, get a new fee/scope approved, or honestly say the scope/features are beyond your original quote and you aren't going to be able to complete the work.

Just don't get hung up on a project that's going to eat up your time and doesn't provide you with proper compensation. You will resent working on it and I expect eventually you would give up on it and/or the client wouldn't receive the quality he was expecting.

</comment><comment><USER4> Contracts are never _really_ set in stone. You can always go back to the client and ask to renegotiate terms, especially if the situation has changed because you've learned new things about the project. A good contract will have discovery terms already set out.

If you're going back because you didn't do your job properly when you were gathering the project requirements and defining the scope you'll look like an amateur and you'll probably lose any future work from the client, but going back to the table to renegotiate even then is still an option. As far as the client is concerned it might well be better to pay you more money than have you give up on the project. Finding a new developer is hard. But don't assume they'll say yes to paying more either - sometimes finding a new developer is easier than sticking with one who ____ed up.</comment>


David Oreck Moves the Air (2005) - <AUTHOR> http://www.airportjournals.com/Display.cfm?varID=0508004

<comment><USER2> I bought an Oreck vacuum once. They are decent, but for what they cost I expected better. I think they succeed not because they are exceptionally good, but because most other consumer vacuums are utter crap.

<comment><USER3> There was a recent IAmA, on Reddit, by a vacuum repair technician that echoed your sentiments. He also had suggestions for quality models.

[http://www.reddit.com/r/IAmA/comments/1pe2bd/iama_vacuum_rep...](http://www.reddit.com/r/IAmA/comments/1pe2bd/iama_vacuum_repair_technician_and_i_cant_believe/)

</comment></comment><comment><USER4> why is there only one photo of him on the motorocycle?</comment>


More fuel on the BFS vs. CFS fire - <AUTHOR> http://thread.gmane.org/gmane.linux.kernel/889444

<comment><USER2> "fuel"? It's the first (that I've seen) well described, reproducible test that includes a howto for retesting in this debate... Whether someone improves BFS (cpu jumping) or CFS (general performance) because of this post, we win. Great!

Edit: And that's what happened (more or less) - in the first response:

2.6.31-bfs221-smp - 408.38 fps

2.6.32-tip-smp NO_NEXT_BUDDY NO_LB_BIAS - 418.07 fps

<comment><USER3> It's not the first, there is also: <http://lwn.net/Articles/351058/>

But, I believe, that test suffers from one fatal flaw: Hyperthreading was enabled, and as far as I know BFS does not support hyperthreading. (Support means: know that that the two CPUs are really the same, rather than treat them as if they were two different physical CPUs.)

<comment><USER2> Ah yeah - sorry - I'm just deliberately ignoring the "official" benchmarks from Ingo and Con... At least until one of them publishes a benchmark that shows their own solution loses in some scenario ;)

</comment></comment></comment><comment><USER3> Background:

This is about the choice of CPU scheduler in the linux kernel.

CFS: Completely Fair Scheduling, current default.

BFS: Brain Fuck Scheduler, written by the infamous Con Kolivas, see <http://news.ycombinator.com/item?id=799147>

<comment><USER4> Is that name serious..?

EDIT: I know a language named similar but that's more like a for-fun project, not a serious one to the extent of replacing existing solutions</comment></comment>


How does impressions effect a site's revenue model - <AUTHOR>

Hello all,
I've been working on a business plan for a web site that relies on advertisements as a revenue model. During, I stumbled upon a shady area - the "impressions".
The "impressions" is the number of different advertisements a site can show it's visitors.
The problem was - how does the impressions effect the revenues of the site?
My thought was that it effects only the click rate (percent of clicks per total views). Average click rate of a site that does not target advertisements to users is around 0.5%. Obviously this number must change according to the impressions, but how??
My formula was:
clickRate = 0.5 * Min((adsPerPage * pageViews), impressions) / (adsPerPage * pageViews)
adsPerPage: Amount of ads displayed on a single page. pageViews: Average amount of pages viewed by a user per day. clickRate: The chance of a single user to click on an ad in a day.
The formula means that if there are more ads to show then a user can see in a day, the clickRate stays 0.5, but if there are less ads to show - there is less chance a user will click, thus the clickRate decreases.
What do you think? <comment><AUTHOR> Too heavy, huh? :)</comment>


Captagon, the drug fueling Syria's war - <AUTHOR> https://www.washingtonpost.com/news/worldviews/wp/2015/11/19/the-tiny-pill-fueling-syrias-war-and-turning-fighters-into-super-human-soldiers <comment><USER2> Hmm, wonder if this has anything at all to do with the Saudi Prince Reportedly Caught With Two Tons of Speed on Private Plane in Beirut...

([https://news.vice.com/article/saudi-prince-reportedly- caught...](https://news.vice.com/article/saudi-prince-reportedly-caught-with- two-tons-of-speed-on-private-plane-in-beirut))

<comment><USER3> He's a freakin prince, does he need to numb himself that much??

<comment><USER4> He's a dealer not a user.

</comment></comment></comment><comment><USER5> A little bit of context for this story. We sometimes give our fighter pilots an identical drug[0]. Sometimes we give our children an identical drug. We call it adderall or amphetamine. This article sounds to me very much like a scare piece.

But I guess "Syrian rebels and government soldiers accuse each other of using adderall" is not catchy enough :).

[0] Technically Captagon also has theophylline which is a methylxanthine similar to caffeine that is in chocolate. Also we use just one isomer of amphetamine as opposed to both. It's not really a mixture of the two so much as a pro drug.

<comment><USER6> Eh, sort of. Captagon is a produg to amphetamine and theophylline and is controlled level 1 meaning it's completely illegal in the United States. It is rampant in Saudi Arabia

<comment><USER5> :) I had a feeling someone on HN might come by and correct me, that's why I made sure my post included a disclaimer at the end of my post pro-drug and addition of theophylline.

But I am curious what you think prodrug-vs-drug, addition of theophylline, and scheduling adds to the context of the story? To me it didn't seem especially important, but I only read up on Captagon because of the story.

</comment></comment></comment><comment><USER7> Wikipedia says about half of US pilots involved in the Gulf War were taking government-issue amphetamines:

[https://en.wikipedia.org/wiki/History_and_culture_of_substit...](https://en.wikipedia.org/wiki/History_and_culture_of_substituted_amphetamines#Military_use)

<comment><USER6> Now they take Modafinil instead

</comment></comment><comment><USER8> The Germans in WWII were supposedly speed freaks too ... [https://encrypted.google.com/search?hl=en&q=nazis%20on%20spe...](https://encrypted.google.com/search?hl=en&q=nazis%20on%20speed)

I guess painting the enemy as drugged up war criminals makes it easier to fight them ... however much truth there is in it.

</comment><comment><USER9> Wasn't this the plot of Jacob's Ladder? "the Ladder", a drug that massively increased aggression, taking people straight to their most primal urges.

<comment><USER10> great movie. "the ladder" was more like a psychedelic though.

<comment><USER8> [http://mediaroots.org/bz/](http://mediaroots.org/bz/) When the movie Jacob's Ladder came out in 1990, many people were probably not aware that it was loosely based on 1968 military experiments conducted in lab and field exercises at the Edgewood Arsenal proving ground in Maryland. Even though Jacob's Ladder ends with a brief description of 3-quinuclidinyl benzilate (BZ) and its effects, Adrian Lyne, the film's director, has denied the powerful and dangerous hallucinogenic compound was ever used on human test subjects. However, there is evidence to suggest otherwise. .... On Erowid.org's Datura 'effects' section, they list delirium capable of bringing about auditory, visual, and tactile hallucinations indistinguishable from reality. This waking dream-like state can lead to unconscious violent behavior much like a drunken 'black-out.' It's also reported uncommonly large doses can cause hallucinations lasting for two to three days. This mirrors available data regarding the duration of BZ's effects.

</comment></comment></comment><comment><USER11> The Washington Post quoting the Voice of America. Who will save us all from these Drug crazed cyber terrorists :)

I though the war was caused by a decision taken in Washington to arm the 'rebels' in order to overthrow Assad.

</comment><comment><USER4> Another reason to be very cautious with all the calls to legalize drugs because drugs can be very lethal not only to the user but to the society as a whole. By the way, it's reported that the Paris perpetrators were allegedly drugged to the bone while committing their crimes but I can't seem to find now a source where I read it.

<comment><USER12> I don't think that once you've crossed the bridges that they'd already crossed the legality or illegality of some substance would bother them much.</comment></comment>


Deeply Artificial Trees - <AUTHOR> https://vimeo.com/211758157 <comment><USER2> Is the application of style transfer that google talked about? [0] Or is this something else?

[0] [https://research.googleblog.com/2016/10/supercharging- style-...](https://research.googleblog.com/2016/10/supercharging-style- transfer.html)</comment>


A Criminal Mind – Why did a respected psychiatrist became a drug dealer? - <AUTHOR> https://story.californiasunday.com/joel-dreyer-criminal-psychiatrist <comment><AUTHOR> Following is the most intriguing stat for me.

"In March, for example, researchers from the University of Denver found that 96 percent of all inmates screened at the Downtown Detention Center in Colorado had brain trauma, mostly from blunt-force injuries to the head — much higher than the estimated 6 to 8.5 percent of the general population."

<comment><USER3> More on that:

[http://www.denverpost.com/news/ci_27673196/nearly-all- denver...](http://www.denverpost.com/news/ci_27673196/nearly-all-denver-jail- inmates-high-risk-unit)

How sad.

<comment><USER4> Is prison a risk factor for brain trauma or is brain trauma a risk factor for prison?

</comment></comment></comment><comment><USER5> Something to consider: just because there is a widely present neurological basis for criminality doesn't mean we shouldn't segregate those suffering from it from society. They're still a risk and real danger to everyone around them.

It would be nice, though, if we could move away from the idea that we need to be the implementers of some grand cosmic justice, where every sin of the accused must be punished by inflicting pain and suffering on them (up to and including brutal gang rapes, which are popularly joked about and sometimes even celebrated, at least in America). That might require re-evaluating or even disposing of traditional notions of moral guilt and punishment, though.

<comment><USER6> This. Segregation, not punishment. I believe as neuroscience advances way fewer things will be ascribed to amoral choices. Explaining crime with free will is often like explaining natural disasters with God's will - <USER2> supersition.

<comment><USER7> So we need a new Australia where we send all our criminals?

How is "segregation, not punishment" materially different from what we do now with prisons.

<comment><USER8> Sounds better. More therapeutic.

<comment><USER6> Many prisons are built to be awful places on purpose. That needs to stop.

</comment></comment></comment></comment></comment><comment><USER9> Every mental state is precipitated by the physical state of the brain. The only difference between a criminal who does something "intentionally" and someone like this is a difference of degree. Unless someone wants to demonstrate supernatural free will, we need to stop pretending that anybody does anything completely on their own. This doesn't mean we should let dangerous people roam free, but it means that we should let evidence decide the most effective response to unwanted behavior rather than our desire for retribution.

</comment><comment><USER10> Hate to be the grammar nazi, but there's an error in the title: "become" and not "became"

</comment><comment><USER11> Such a sad story. It's as if he knows what's going on, but he can't do anything to stop it.

<comment><USER12> Or doesn't even care about stopping it.

<comment><USER13> That's because he's crazy. The sad part is using prison as a mental health treatment facility.

I suspect being locked up with crazy people does nothing good for genuine criminals, with respect to constantly interfering with the guards and safety procedures and whatever little rehabilitation might exist.

</comment></comment></comment><comment><USER14> I'm not going to defend all actions of this psychiatrist, but know there's a war going on with the DEA and medical doctors(mainly Psychiatrists and and doctor who deals with patients in pain--Pain Specialists).

I discount all the testimony on his first wife, and children; I just don't know if he did anything illegial. Yes, it might have been weird, but not illegal. He married a much younger wife--not unheard of? I recall one med student joke about having a medschool spouse, and that was comming from a woman.

I believe the DEA, did an accounting of his prescribing practices between 2004 and 2007. We all read those huge amounts of drugs he was dispensing, but why did they count the number of pills, and not the correlate that to patients. They said he prescribed 37,000 Xanax in in those years. That's also 1223 patients in that time period with a script for 30 pills? The hydrocodone was 2630 scripts for 30 pills.

This is a well know Psychiatrist in his 60's. He must have thousands of patient he's treating? He's lived through the SSRI lies? He knows what works, and what doesn't. I don't know why he was prescribing a Fetnal type drug, other than maybe he was seeing cancer patients, or he took pity on patients who just had pain other physicians refused to treat?

He was investigated by three agencies. I don't belive the local police investigation; I have seen them lie too frequently to make their case. I am Leary of the DEA undercover investigation. I'm not Leary of the California State licensing Board. In that instance he offerd advise and warnings.

"In March, an undercover agent from the California Medical Board came to Dreyer, saying she had a sore throat and cramps. He told her she was "very pretty" and inquired if she was single. She asked for Xanax, and Dreyer said he worried about her "getting all these crazy meds," adding, "I don't want to hook you, baby." He prescribed 30 doses of Xanax and 60 doses of Vicodin."

He shouldn't have flirted with her, but he warned her about addiction, and didn't give an unreasonable amount of medication--especially if he wasen't going to see her for months? We don't have the transcript of that office visit.

My point is he's a older physician who dealt with patients whom were in psychological, and physical pain. He was taught in med school to alleviate pain, and misery.

Through out the article, everyone was astonished he was Not making much money 'doing these illegial acts'? He was charging $100 a visit, which in my neck of the woods is a bargain. Most of these Psychaitrists are charging $350-$500 an office visit, and you leave with a safe, and so many times ineffective SSRI, and a business card of a MFCC.

My point is I'm not sure he was so reckless; he should be in prison? Psychiatrist deal with people in pain. How many patients are they allowed to see? Just how many scripts are they allowed to write? Maybe they should tell doctors exactly what, and whom to prescribe too?

I usually don't defend doctors, but know the DEA is after them on a large scale. One day, you might be in a Psychiatrist office and you won't get that medication that stops a panic attack dead in its track?

I guess what I'm trying to say is I would like to see all the transcripts. I would like to know how many of his patients were diagnosed with terminal cancer, or another deadly, painful disease?

I Don't want to argue with anyone, he's in jail--Yay right? Just another drug dealer? Maybe misunderstood, by a paranoid government agency? An agency with agents, administrators who didn't go to medical school?

Again--I fear a medical establishment that won't treat pain(psychological/physical) because they don't want the DEA breathing down their backs. Hell, it's happening right now. Good luck with that slipped disc. They just aren't prescribing drugs that actually work--out of fear.

Yes--we have a problem with opoid/benzo addiction, but their are people who benefit from these drugs too. Why, in America, do we need to solve complex problems with a hammer?

<comment><USER15> Without knowing all the full transcripts it is of course possible we are hearing an editorialised version of events, but things like this:

      "Why are you here to see a shrink?" he asked.

      She explained that she needed prescriptions for her boyfriend, who'd hurt his
      foot.

      Dreyer asked if she was having pain, too.

      She shook her head no.

      "Cramps?" Dreyer asked.

      "I mean that makes sense, cramps."

      "Well, we'll get you covered," Dreyer said. "And you know it's a hundred-dollar
       charge." After she paid him, he told her, "And that, my love, is the game."

Makes it seem pretty clear that he was blatantly breaking the law regarding prescriptions. Letting a patient pretend they need painkillers for themselves when you know it's really for their boyfriend, because you couldn't legally prescribe it for someone who isn't there...

Plus he didn't seem interested in checking whether people were in pain beyond an "are you in pain?".

Sure, you could argue that he was still "just trying to help people", but short of having all prescription drugs laid out on supermarket shelves for anyone to pick up whenever they want, there has to be a line drawn _somewhere_ for "how to be responsible about giving out dangerous drugs", and giving them to anyone who asks for them is not on the right side of that line.

</comment></comment><comment><USER16> Wow, this story is pretty nuts and well written.

<comment><USER17> Did anyone else find the prose style overblown, turgid and treacly, a bit like a cross between Tom Wolf, John Updike and Dame Beryl Bainbridge :)

</comment></comment><comment><USER18> Is this the plot to American Beauty?</comment>


What does "Full-Stack" mean? - <AUTHOR> http://daemon.co.za/2014/04/what-does-full-stack-mean/

<comment><AUTHOR> This is the second part in my series on full-stack fundamentals.

I tried to narrow down what "full-stack engineer" actually meant, and I discovered it was largely meaningless due to the fact that "stack" isn't really defined. part 1:

[http://daemon.co.za/2014/04/introduction-fullstack- fundament...](http://daemon.co.za/2014/04/introduction-fullstack-fundamentals)

Here's an outline of the rest of the series planned so far:

[http://imgur.com/qsGqFFk](http://imgur.com/qsGqFFk)

Feel free to ask any questions/make any suggestions here.

I will be following up with a curated set of references in the same format as this post:

[http://wayfinder.co/pathways/53536427f7040a11002ae407/a-fiel...](http://wayfinder.co/pathways/53536427f7040a11002ae407/a-field- guide-to-microservices-april-2014-edition)

I've also taken over [http://reddit.com/r/fullstack](http://reddit.com/r/fullstack) to host discussions on this, and any other future topics I cover.

</comment><comment><USER2> One answer is in the question: MEAN. Mongo, Express, Angular, Node.

A subset of A is the implementation of the presentation layer, which means you can do that, too — you can take a design and architect it into MEAN, which is one Tech Stack within the Full Stack range of options.

.NET developers, for instance, are "full-stack" by default if they're also building the UI. Python developers writing non-Web products are probably using GTK, and so are Full Stack by default.

Full Stack's meaning is more about the domain of interest, which is historically the Web. It doesn't really have meaning outside of Web Development. Looking at MEAN, we have a delineation of the Web Application Stack: DB, Server, Front end, Tooling. It just so happens that this is a Full Stack in implementable via JavaScript, most importantly: a Web language, the lingua franca of the Web. "Full Stack" is historically associated with JavaScript's maturity, but we can use this delineation of the Web Application implementation to retroactively make sense of non-JS "already existing" stacks that might correspond analogously.</comment>


Apple for the first time makes a top-of-the-line iPhone model in India - tech-historian https://m.economictimes.com/tech/hardware/the-i-in-iphone-11-now-stands-for-india-made/articleshow/77135725.cms <comment><USER11> This is really big deal IMO, but perhaps for a reason not directly mentioned in the article and for which you have to realize something about India. Progress in India is usually quite slow (and far slower if you compare to places like US or China). But once there is one shining example, then (partly because of the competition, partly because of the numbers of people) the momentum is strong and only gets larger.

This is potentially one of those events and has the potential to catalyze high end devices manufacturing in India leading to other second order effects of expertise in other hardware manufacturing. Looking forward to the innovation and confidence this unlocks.

<comment><USER12> The adage in India is that if you want to set up shop in china they roll out the red carpet. If you want to set up shop in India, they roll out the red tape.

<comment><USER13> why do you think this is?

The Jio piece posted here a few days ago (stratechery, I think) made a point of Indian national pride, control, and home-grown expertise playing a large role.

Is that the case with new businesses generally?

<comment><USER14> > why do you think this is?

Because the fundamental nature of Indian politicians is socialist and statist.

<comment><USER15> > Because the fundamental nature of Indian politicians is socialist and > statist.

That seems to have changed significantly now, after all a right-wing party has been in power since 2014. It seems to fit well with a lot of the private sector, and it did open up many entrepreneurship schemes too.

</comment></comment></comment></comment></comment><comment><USER16> Apple isn't stupid. They know there is a good chance producing in China will no longer be profitable, or maybe not even possible with a future administration.

I predict a lot of production will move out of China because the USA will shift to a protectionist model in the next few years.

Apple is hedging against the same prediction.

<comment><USER17> > Production will be stepped up in phases and Apple may consider exporting the > India-made iPhone 11, reducing its dependence on China, two senior industry > executives said.

This is being done to satisfy India's government so Apple can sell phones in India.

The diversification away from China seems like a nice seide-effect, but it's not assured until the Chennai-region FoxConn factory is running at full speed. Last I heard the Wisconsin FoxConn factory didn't ever make it that far. It's TBD if FoxConn can manage Indian employees.

<comment><USER18> > This is being done to satisfy India's government so Apple can sell phones in > India.

What do you mean? Apple has been selling phones in India for several years now.

<comment><USER19> Apple has been selling phones in India through third-party retailers, not through Apple stores. They were recently permitted to open their own stores. The regulations involved take domestic production into account.

[https://appleinsider.com/articles/20/02/26/apple-ceo-tim- coo...](https://appleinsider.com/articles/20/02/26/apple-ceo-tim-cook- confirms-first-apple-store-will-open-in-india-in-2021)

</comment></comment></comment></comment><comment><USER20> Tim Cook insisted for years that you just couldn't manufacture stuff outside of China because of the high level of manufacturing skill. [1] Looks like that wasn't really true and it just took a little effort to start up in a different country, all it took was a small increase in the cost of doing business in China.

[1] [https://www.inc.com/glenn-leibowitz/apple-ceo-tim-cook- this-...](https://www.inc.com/glenn-leibowitz/apple-ceo-tim-cook-this-is- number-1-reason-we-make-iphones-in-china-its-not-what-you-think.html)

<comment><USER21> They're still being made by Foxconn, so all that manufacturing expertise is still there. In the long run my guess is that this knowledge will start to trickle to more local manufacturers.

This seems like a great deal for India: threaten a 22% duty, and then you bring in jobs and know-how.

<comment><USER22> >This seems like a great deal for India: threaten a 22% duty, and then you bring in jobs and know-how.

Lots of products have very high duties but you'll not find a single manufacturers of those products within the country.

Those companies simply add import duty to their cost and increase the price of good in local market. This makes products/tool expensive for local people and they are not able to compete globally.

If an America can buy a CNC mill from china duty free and you charge duty which makes $4000 mill cost $7000. Due to higher costs, your local craftman is already rendered uncompetitive in global marketplace

Why not let them buy tools and machines duty free and let them learn skills like CNC machining or metal turning?

</comment></comment></comment><comment> dan-robertson This isn't really much of a shift in Apple policy. They seem to be doing this to avoid import duties and take advantage of some other government incentive. I think they also assemble iPhones in Brazil for similar reasons (?)

</comment><comment><USER23> Are they actually selling the iPhone 11 in India? Last I read phone sales in India had a massive drop.

<comment><USER23> [https://techcrunch.com/2020/07/17/india-smartphone- shipments...](https://techcrunch.com/2020/07/17/india-smartphone-shipments- slashed-in-half-in-q2-2020/)

Smartphone shipments in India fell 48% in the second quarter compared with the same period a year ago, the most drastic drop one of the rare growing markets has seen in a decade, research firm Canalys reported Friday evening.

About 17.3 million smartphone units shipped in Q2 2020, down from 33 million in Q2 2019 and 33.5 million in Q1 2020.

...

Apple, which commands only 1% of the Indian smartphone market, was the least impacted among the top 10 vendors as iPhone shipments fell just 20% year-on- year to over 250,000 in Q2 2020.

<comment><USER24> India was in one of the strictest lockdown for a period of 2 months starting March 23rd.

</comment></comment></comment><comment><USER25> The new Motorola Razr is also being assembled in India. Is this a trend?

<comment><USER26> Samsung has been assembling flagships in India for a couple years now. Certainly not new. New for Apple definitely.

</comment></comment><comment><USER27> "Designed by Apple in California. Assembled in India."

<comment><USER28> "... Taxed in Ireland"

<comment><USER29> Or even "... barely taxed in Ireland"

<comment><USER30> Apple pays taxes in every country it does business in. The remaining profits it keeps in Ireland because of the low tax rate, otherwise if returned to the US it would be taxed again.

US international corporate taxation works like this if you repatriate profits to dividend to shareholders: 1) First pay taxes on profits in each country the profits were made.

2) Out of the remainder pay state corporate income tax in the US state you are headquartered in.

3) out of remainder pay federal corporate income tax.

4) out of remainder shareholder pays state income tax.

5) out of remainder shareholder pays federal dividend tax.

Typically the shareholder is able to keep about 30-40% of their share of the original profits after they go through the five layers of taxation.

<comment><USER31> Well yes, the problem is people seems to think it should be "revenue" taxed and not profits "taxed". ( Dont ask why, but that is the general sentiment )

And you can see they are very vocal about it, If they are sold in X, they should be taxed in X.

The problem with current Profits based system is that it allows Apple X to paid Apple Ireland 99% of your profits as IPR, Brand / Logo usage ( Apple France paying to Apple Ireland ). Effectively leaving only 1% of the profits being taxed in X.

And there is no way to determine the proper value of those IPR. Apple spends tens of billions every year on R&D and Marketing. So not paying for those IPR would be wrong, but also paying no tax in countries is also wrong.

And no one so far has a reasonable solution to fix the current profit transfer problem. And it is a much harder problem with Globalisation.

<comment><USER32> VAT is basically a revenue tax.

For each iPhone sold in Finland the government gets ~20%. Plenty of countries have a similar system.

<comment><USER33> VAT is taxing the difference between the procurement price and the sales price (thus its name Value-Added Tax), not the revenue.

E.g., if Apple Finland procures the phone from Apple Inter Co., two separate entities, for USD 499 and sells it for USD 500, the tax would be on the USD 1, i.e., 20 cents, since Apple Finland would get the VAT paid to Apple Inter Co offset by the Finnish tax authorities.

<comment><USER34> While true in a sense, that's not the best way of looking at it.

VAT is charged on the sale price of every intermediary, however businesses can claim back VAT on their purchases. In your example, Apple Inter Co. would sell the iPhone to Apple Finland for $499 + $119.76 (VAT in Finland is 24%). Apple Finland would pay $618.76, claim back $119.76, and sell the phone for $500 + $120 to the consumer, charging the consumer $620 and giving $120 to the government.

So yes, Apple Finland will have given effectively about 20 cents to the government, but the total $120 of VAT will still be paid and calculated on the end sale price, not the profit margin.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER35> > The company hasn't cut prices as it also sells iPhone 11 handsets made in > China in India but industry executives said that could be an option later > on. Local production saves Apple 22% import duty.

Maybe they'll just keep the change instead.

</comment><comment><USER36> They should use the Foxconn plant in Wisconsin.

<comment><USER31> The whole point of Setting up a plant in India was to avoid / lower the high import tax.

<comment><USER37> It's also cheaper to build (per phone) than in China.

</comment></comment></comment><comment><USER38> Serious question, why not in the USA?

<comment><USER21> To the question in general: watch American Factory on Netflix for a good documentary on the efforts of spinning up a US based factory. Basically this company found that American workers were more expensive, had higher safety standards, and quality control was a struggle. In the end the company started to invest in industrial robots for automation.

To this specific case: it's probably to avoid the 22% import duty that India places on products not assembled locally. I suppose the US could pass a similar law.

<comment><USER39> Really? The message I got from American Factory was that there are stark cultural divides between Chinese and American manufacturing. It's been a while since I saw it, but they made a point to emphasize some of the poor financial decisions the Chinese bosses made during refurbishing (I think an overly expensive stage was built).

<comment><USER21> Yes, there's no one thing in that documentary but a collection of things which you could chalk up to "differing cultures":

* The scene where the plant operators from China dump a bunch of waste improperly

* The scene where the plant owner is worried about unionization (though the film contrasts this with the presence of unions in their Chinese plant)

* The scene where the plant operators are complaining that the american workers output with higher defect rate and lower speed

* The scene where the operators are complaining about the strict safety regulations and the fact that Americans like to take time off on weekends

That the plant owner spent tens of thousands of dollars to redo the factory layout is just one example, but it's not more than a few minutes of airtime compared to the quality control and union stories. If these can be put under the umbrella of "cultural differences" then I agree with your assessment.

</comment></comment></comment></comment><comment><USER40> I think the title should include "India", since I don't know if everybody is expected to know that Chennai is in India.

<comment><USER41> Would you say the same about much smaller cities like Paris or Berlin?

<comment><USER42> Of course not. Obviously, how well-known a city is to a certain population doesn't depend on its size. There are a dozen cities in China more populous than NYC, but I doubt you could name them all.

<comment><USER43> There are two: Shanghai and Beijing. I would have guessed more too, but apparently not.

<comment><USER44> There's more than two. New York has about ~8 million pop. From the top of my head I can at least tell you that Shenzhen, Guangzhou, and Chongqing have over 10 million residents but there's probably more.

I think you may have pulled up NYC's metro area population and compared it to the urban population of Chinese cities. The metro population of large Chinese cities is in the 20-40 million.

<comment><USER43> It's kind of a question of where you draw the boundaries. Chongqing counts ~30M because its administrative area is the size of Austria. The UN World Urbanization Prospects project [0] tries to establish comparability between nations, and came up with a top 10 of:

1\. Tokyo - <AUTHOR>

2\. Delhi - <USER2>

3\. Shanghai - <USER3>

4\. São Paulo - <USER5>

5\. Mexico City - <USER5>

6\. Cairo - <USER9>

7\. Mumbai - <USER9>

8\. Beijing - <USER9>

9\. Dhaka - <USER9>

10\. Osaka - <USER10>

NYC is next at #11 with 19M.

However, if you count strictly by "city proper" (as defined by a very wide range of administrative agglomerations), there are indeed THIRTEEN cities in China larger than NYC. I'm not sure this is a hugely useful metric, however, as economically-relevant city boundaries aren't truly represented by administrative lines of control.

[0]: [https://population.un.org/wup/Publications/Files/WUP2018-Hig...](https://population.un.org/wup/Publications/Files/WUP2018-Highlights.pdf)

</comment></comment></comment></comment></comment></comment><comment><USER45> offtopic: this site breaks the back arrow (takes you to blank interstitial)

<comment><USER46> Hint: for all but the most egregious offenders a long click (or right click) on the back button might bring up a list of the pages you visited before this. You can then click an earlier one to get back to safe ground.

Most people around here probably know already but there's always one or two that will have their life improved a lot I think.

<comment><USER47> Out of morbid curiosity, how does one become an "egregious offender" and nuke the entire back-button history? Are there ways other than (intentionally or unintentionally) doing history.pushState in a loop?

</comment></comment></comment><comment><USER48> Could shifting manufacturing to India also lead to fewer leaks?

</comment><comment><USER49> Shouldn't it be "Foxconn started making iPhone 11 near Chennai"? Apple is not "making" anything in this case.

<comment><USER50> By that same reasoning you could also say 'Foxconn is company and it doesn't make anything, Indian people are making the iPhone 11 near Chennai'

It isn't technically wrong but usually the inventor/creator is credited regardless of who they paid to assemble it.

<comment><USER51> It's like the RICO act or something.

The Indian people are doing this voluntarily at the direction of Foxconn who is doing this voluntarily at the direction of Apple.

I'm sure we can go higher than just Apple as well.

</comment></comment></comment><comment><USER52> That is like less than 1 pc of what is made in China. For all the make outside China hype I wonder how much serious effort will be needed to even make a dent in their current production.</comment>


The time is ripe for another F'ed Company.com - <AUTHOR> I lived through the first dotcom bubble and saw the rise of FuckedCompany.com
I'm starting to see the first signs of implosion in the current environment.  Startups are having a harder time getting series-A investment, unicorns are getting slashed left and right, and we have a proliferation of "startups" on ProductHunt that make very little sense.
I'm starting to lose track of these F'ed companies, which means - if you're looking for an idea, might be worthwhile to study the first FedCompany and create something like it again. <comment><USER2> I just did a search for bubble on HN thinking exactly the same thing and came across your comment. Why don't you do it?

<comment><AUTHOR> because my plate is full with other projects. I figured sometimes there are people asking for ideas to pursue, this would be a great first project for someone.</comment></comment>


Go Concurrency Patterns: Pipelines and Cancellation (2014) - <AUTHOR> http://blog.golang.org/pipelines

<comment><USER2> I'm rather surprised an official Go blog post (from 13 March 2014) was posted on HN until now.

Very good blog post. I'm always delighted about the clean way those blogs are written.

<comment><USER3> Of course it's been posted before, but some quality articles get reposted every so often. Here's a previous discussion:

[https://news.ycombinator.com/item?id=7395045](https://news.ycombinator.com/item?id=7395045)</comment></comment>


Ask HN: What are the technical justifications for keeping .DS_Store? - <AUTHOR> I was hoping that with macos 11 we would see the deprecation of .DS_Store. I'm not running the beta so perhaps it is, but what has surprised me is its sustained longevity. What are the technical reasons for keeping .DS_Store? It is essentially a application-specific (i.e. Mac Finder) solution that pollutes the data store.<p>Off the top of my head I can think of a number of other solutions to store directory metadata: a Finder-specific database mapping values to directory paths, resource forks (ala OS 9), etc. <comment><USER2> I'm going to be honest: it should be deleted when seen, and OSX should have never begun this.

99% of the reason it exists is because the OS generated thumbnails. I see these in, for example, zips, that do _not_ have images in them, and have that file.

You know what I've seen? People do `git add _` and then I find that directory in the repo. Why does git not automatically ignore that?! It 's never the right option.

_Anything* that pollutes directories should be absolutely verboten, its never what the user wants.

Edit: The worst part is, it makes them on network shares, and on filesystems that aren't HFS. The hell, Apple?!

<comment><USER3> > Why does git not automatically ignore that?!

Why doesn't Git automatically ignore desktop.ini? .desktop? __pycache__? In my experience, people end up creating bespoke .gitignore files for each project and sometimes shared online, or systemwide. I don't know if Git should make it global.

<comment><USER4> Just add it to `~/.gitignore` and be done with it. Yeah haven't worried about this in 10 years.

<comment><USER5> That approach works for one person or like minded dev teams perhaps.

it fails in many teams, they do not care or a junior dev does not know. Many folks don't setup proper dotenv especially designers. Unless added to the project .gitignore file it is going to be added to the project sooner or later.

<comment><USER6> It is easy to explain and help someone with this. :)

<comment><USER5> Is it just me or nobody actually have problems working with non technical folks on git ?

Getting a _team_ of designers, content writers, marketing folks to use anything beyond their daily tools over a period of time is hard.

I had the marketing team run a git managed, asset pipeline ,CI deployed Hugo static site via a CDN for three years, with great performance and high availability for three years, now we run hubspot.

Once the initial team moved on, It was next to impossible to hire people willing to work on that stack , typically new guys will know Wordpress or hubspot etc, my TAs had frustrating time sourcing, I finally had to give up .

Administrative Config in yaml/JSON files in a git repo sounded a nice idea , git gave version history rollback, audit log, branch/env, CI driven deployment all sounded great.

Same problem typical operation folks are not used to this , they want a nice UI , and keep clicking and rather than do a grep/Sed replace in a jiffy.

People just like different ways of working , it is hard for me to think graphically like a designer , I can understand that it can be hard for someone to think in text , it is better we give them tools that are comfortable with and fight other battles

</comment></comment></comment></comment></comment></comment><comment><USER7> .DS_Store is like the filesystem equivalent of 'Sent from an iPhone' \--- it lets everyone know you used a Mac.

<comment><USER8> I've always suspected this and the rest of the conversation confirms it.

</comment></comment><comment><USER9> Personally I hate .DS_Store and they must be deleted. BUT on the other hand I am finishing "a proper missing, a dream File Manager" for Mac OS and thinking about features that would require to store some meta data. Where should I store them? If it's in the folder in form of some ".meta-data" then it would be copied when you copy data and be available there in another machine, or I can create it inside the OS somewhere, but then how to transfer it to usb drive for instance? I do not like idea of data to be polluted with some extra .something, I really hate the idea, but how to deal with it to keep it manageable? I can make some indexes/pre-calculated sizes in the root of the drive, if user chooses to have those, BUT then if we speak about shared network folder, it then may very well appear in some folder after all because it was mounted as a drive, so the only solution would be to put it in ... well the same ".meta-data" just like .DS_Store that I hate. Then only thing to do about it is to give a choice to user when he copy something, to avoid copying those too. Right now I am using constantly "my file manger of a dream" and actually almost forgot about .DS_Store disaster, because honestly I have no need for poor Finder anymore, and thus .DS_Store is not created at all, but should I add something like this for extra features which would -really- require them? What do you think? Putting yourself in the shoes of someone designing File Manger you kind of see where .DS_Store comes from. Still, hate it :) Really thinking what to do for some time now ...

<comment><USER10> Store your app's configuration, including per-folder view options, in a centralized store -- either ~/.dreamfm/ or ~/Library/Application Support/ Dream File Manager/

In the same view options configuration window, have a checkbox option to make the configuration portable along with the files, in which case write it out to .DS_Store or a similar file, to be used as a local override à la .htaccess

Explaining this option succinctly may be a challenge but not impossible. Maybe "Save view options with folder" with a hover tooltip explaining that this would enable the view options to remain the same across user accounts and computers.

<comment><USER9> Thank your for your thoughts. This is more or less how I see it too in general.

> Maybe "Save view options with folder"

I like it, it's not only 'view options' though, as you understand. Many '.DS_Store' files are already there for many folders and I have to deal with them while compare sizes etc. Right now they are copied because I do not think FM should be invasive in your data as a general principle. But some option along the lines of "Copy meta data too" I think is reasonable way to deal with them.

</comment></comment></comment><comment><USER11> .DS_Store is the new Thumbs.db. Our descendants will keep finding them in the backups and scratch their heads.

</comment><comment><USER12> MacOS does have the ability to store any arbitrary metadata in extended attributes, which would indeed seem to be a far better solution here.

It doesn't really bother me as it is, but it's on the less-than-perfect list.

<comment><USER13> Extended attributes are lost by a lot of mechanisms of moving files and folders around (e.g. zipping them with something other than Finder's "Compress" command). It's also not portable to other filesystems, whereas a .DS_Store file will work on any filesystem.

<comment><USER14> that seems fine?

<comment><USER13> Losing metadata by accident seems fine?

<comment><USER10> .DS_Store is not metadata. It is configuration information for Finder. It is not necessary for each computer looking at a set of files to use the same, e.g., icon size.

<comment><USER9> And if it were a real metadata. Would you then see justified to have some .meta-data file with data?

<comment><USER15> That battle was lost long ago and the answer is generally "no." Classic MacOS used Resource Forks. That's where file type was stored instead of using extensions. I believe icons were stored there, as well as other things like where you downloaded it from (a favorite feature of mine in Classic MacOS). Zip files would write that data a special folder. Likely, because this was so problematic in a multi-OS, Internet-enabled world it was ditched for file extensions and encoding everything else inside the file. If you downloaded a file from the Internet that wasn't kept in an archive it would be useless without metadata.

Today, macOS uses extended attributes (which were already mentioned) which stashes things like where you downloaded it from, if it's quarantine (first launch warnings), if it's a screen shot, etc. Funny enough, when you place something in the Trash it stores the former location (so you can put it back) in DS_Store.

Generally, metadata is either stripped or just plain gets messed up when switching OSes depending on the partition type and tools used to transfer.

<comment><USER16> _"Classic MacOS used Resource Forks. That 's where file type was stored instead of using extensions."_

That's incorrect. File type and creator were stored in the file system, not inside files.

 _"I believe icons were stored there"_

Icons typically were stored in resource forks, but not in the way I think you imply. Applications defined mappings from (type,creator) to icon in their resource forks (which also stored lots of other stuff, including application code). The Finder merged all the mappings needed in the desktop database (each disk had one, stored at the top level of the disk)

The icons couldn't be read from each file because opening each file would slow down the Finder (it was slow enough to start with) and, I guess, it would take way too much disk space (a single 32×32 black and white icon with mask is a whopping 256 bytes. Overhead probably made that a kilobyte on disk. That adds up on a 400kB disk)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> DS_Store is stored alongside the files, which means it's portable with them, e.g. when you put files on a USB stick and then plug it into a machine running an earlier version of macOS 10.

None of your solutions preserve that backwards compatibility -- the database wouldn't because it presumably stays on your machine, and going back to resource forks wouldn't because the earlier OS releases wouldn't know about the existence of them.

<comment><USER18> We have iCloud now and ETE encryption. The proportion of people plugging USB devices into machines they don't own is probably pretty minimal.

<comment><USER9> Still if you have pre calculated sizes of the folders, does it really matter what media was used to transfer data? Also I think people realising more and more that it'ss not very rational to trust to anyCloud with personal data. My rule is simply never use any cloud.

</comment></comment></comment><comment><USER19> Windows has thumbs.db, but seems to do a reasonably good job not copying it into stupid places.

<comment><USER18> Windows still creates thumbs.db into my network drives.

Synology pollutes my directory with @eaStore and @syno __ __crap.

WHY?

I have Mac, Windows, and a Synology. I also sync this to Google Drive (using rclone) as a backup. My network shares, and Google Drive, are polluted with crap and I don't know how to fix it :(

<comment><USER20> WD MyCloud devices create a .wdmc directory in any folder that has images or videos. I've solved this issue at various times by adding a new file extension for mp4 files (mmp4, associate it with media player) until I changed apps to one that only displays video files; running a script after uploads to delete them; killing the service every time the NAS reboots (and I notice). Currently I'm using ftp instead of smb, as it doesn't seem to cause it and transfers faster as well--plus, ftp displays the hidden directories where smb doesn't.

</comment></comment></comment><comment><USER21> I destroy them with reckless abandon and, knock on wood, haven't had an issue in 15-ish years of driving OS X.

Doesn't mean it's right... but this is my anecdotal experience.

</comment><comment><USER22> The Amiga had an equivalent: every visible icon was accompanied by a small metadata file appended with .info (More information here: [http://krashan.ppa.pl/articles/amigaicons/](http://krashan.ppa.pl/articles/amigaicons/)). But it didn't 'pollute' the filesystem, and was far more manageable.

Haiku does things differently, and elegantly: [https://medium.com/@probonopd/my-sixth-day-with-haiku- under-...](https://medium.com/@probonopd/my-sixth-day-with-haiku-under-the- hood-of-resources-icons-and-packages-abec8d0e4ec6))

<comment><USER23> Because the <name>.info was created by you (its major purpose was to have a custom icon to a program, drawer (directory) etc.).

If a file did not have corresponding .info file it wouldn't show up in the UI (unless you selected option to show all files).

I miss Amiga :)

</comment></comment><comment><USER10> Could always add this to your crontab

        */20 * * * * root find / -name ".DS_Store" -depth -exec rm {} \;

<comment><USER24> No need for "-exec rm", you can use "-delete".

And probably better to limit this to "~" rather than "/".

<comment><USER10> I disagree. If anything, inside your home directory is the one place where .DS_Store files are potentially useful and not harmful. And -delete has limitations regarding files that aren't within the current working directory or its subdirectories (I don't know what the "current working directory" is for cron off the top of my head).

<comment><USER25> Even if that's true, you should use xargs, not -exec

<comment><USER25> The Correct(tm) way: find [whatever] -print0 | xargs -0 rm

</comment></comment></comment></comment></comment><comment><USER24> Well it's pretty simple. The Finder allows you to customize a folder (icon positions, background picture) and that data has to be stored somewhere.

You can tell the OS not to create them on network mounted drives:

      defaults write com.apple.desktopservices DSDontWriteNetworkStores true

<comment><USER26> > Off the top of my head I can think of a number of other solutions to store > directory metadata: a Finder-specific database mapping values to directory > paths, resource forks (ala OS 9), etc.

<comment><USER16> If you go for "resource forks", you still would need a file.

And nitpicking, that wouldn't be "ala OS 9". That OS had a desktop database on each volume.

</comment></comment></comment><comment><USER27> Here's a brief and somewhat interesting explanation for why it exists, from Arno, the tech lead at the time (2006): [https://www.arno.org/on-the-origins- of-ds-store](https://www.arno.org/on-the-origins-of-ds-store)

</comment><comment><USER28> You could give [https://asepsis.binaryage.com](https://asepsis.binaryage.com) a shot—it's unmaintained and unsupported since El Cap, but it apparently still worked on El Cap if you turned SIP off. Maybe it still works.

</comment><comment><USER29> Well, I could go on a rant around their purpose and some of us would ultimately decide these files _like so many others_ are actually just debris.

Instead I will say we can have a set of critters that cull them in various interesting ways. Critters that watch filesystems for these files and remove them if they still exist an hour after creation. Or remove them all on a schedule. Or block list them via .gitignore and similar. Sync scripts that have block lists for files and folders that match names. The solutions are endless.

This isn't only a mac thing either. Other OS create their own variations of debris.

</comment><comment><USER30> It used to bother me, but not anymore. I always put it in my .gitignore files, and otherwise ignore it. You could alias "ls" to not show it.

<comment><USER31> I don't use macOS and even I cannot get away from them. Someone zips a folder and send it to me and when I unzip it, there would be a .DS_Store inside.

</comment></comment><comment><USER32> It's an approach that works reasonably well in the Unix world of OS X and platform agnostic servers. It plays nicely with non-Apple filesystems including network shares using non-Apple protocols. It also makes it fairly trivial to keep the metadata with the files when moving things around with generic Unix command line and archiving utilities.

<comment><USER15> I think the problem is Finder long ago move away from spacial interface to a browser interface. Since the move wasn't very clear-cut it's now just bad at remembering position and layout. Not to mention those things aren't very useful on a completely different computer that would have a different resolution and screen layout.

I think the data would be just fine stored as metadata on the directory or a centralized database that wasn't persistent between computers and the disruption would be minimal. Spotlight comments, which Finder reads from DS_Store, is also written to extended attributes. It just isn't read from there. Trash stores each file's previous folder in DS_Store, which could be problematic on a different computer (and nobody would expect that to persist).

</comment></comment><comment><USER33> If you're enough of a power user to notice, then you should be able to figure out how to disable them.

A quick google search finds several blog posts with commands to run.

</comment><comment><USER34> Did anyone create a bug report for Apple I can duplicate?

Apple usually prioritizes bugs by duplicate count.

</comment><comment><USER35> These folders are really useful to identify immediately the clueless developers who put them inside zip files or commit them to git repos. They are a fast way to know that you do not need to take whatever these people do too seriously. I hope macos continues creating these stupid files forever.

<comment><USER36> "I hope operating systems keep putting up traps so that there's more ways to make mistakes"?

<comment><USER35> Yes, I agree that this is a bad idea overall. However, since I'm not a macos user I couldn't care less.</comment></comment></comment>


Is it ethical to breach the paywalls of monetized academic publishing? - <AUTHOR> https://asistdl.onlinelibrary.wiley.com/doi/pdf/10.1002/asi.24351 <comment><USER2> In my opinion the answer is clear. It is _not_ ethical to "free" information that others have the exclusive rights to. Wanting strongly enough for this "freeing of information" does not make it ethical nor legal just as wanting to drive faster does not make exceeding the speed limit ethical or legal.

I know many strongly oppose this view and I will assuredly be down voted for voicing my opinion. Before down voting me though, hear a counter example.

Many advocates of "open source" and "free software" feel _very_ strongly about licencing. Should someone be ethically and legally allowed to violate open source licencing agreements just because they feel strongly about being able to? For me the answer is clearly no, just as it was for the case of circumventing the monetizing of publication rights.

Feeling strongly about being able to usurp IP rights does not give one the moral or ethical or legal high ground to do so.

IMHO

<comment><USER3> I could only read the abstract as the article is behind a paywall. But I don't think your response is based on reading the article?

The argument in the abstract is that current scientific practices "breach the principle of fairness and damage public interest". That is not making a "just because" argument.

Do open source licensing agreements likewise breach the principle of fairness and damage public interest? I don't think so. So it doesn't really fit the argument, does it?

Breaking the law is sometimes the moral thing to do. There can be consequences to opposing an immoral law, but one should not obey an immoral law "just because they feel strongly about being able to."

Shifting to the question of paywalls. What about when there is NO copyright to "usurp"?

Plenty of articles are out of copyright, or authored by an employee of the US government - making the text in the public domain.

In those cases where there are no IP rights to usurp, is it ethical to breach the paywalls of monetized academic publishing?</comment></comment>


Git pissed - <AUTHOR> https://github.com/chrishunt/git-pissed <comment><USER2> I love cursing more than most people, but it doesn't belong in my code.

<comment><USER3> I agree. I love cursing, but I think it works best in more ephemeral situations. In conversation (spoken, written, or otherwise) it works great but in official records that will be often revisited (whether they are source code comments or commit messages) the cursing will eventually come off as tacky as the emotional context that warranted it is lost in time.

If I am browsing through source from 10 years ago, it _may_ help me if a comment alerts me that _" this fucking cockstain of a function broke prod"_, but really there is no connect between me and the emotion that warranted the profanity. I need more context, otherwise it seems tacky.

(I think that recorded conversation, although not ephemeral, retains the emotional context necessary for profanity to 'work')

<comment><USER2> that is exactly right

</comment></comment></comment><comment><USER4> I am confused by the suggestion that the word "love" would indicate happiness. Usually when I use that in source code, I'm being sarcastic. As in, _Don 't you love the fact that Google's API documentation is inaccurate?_

<comment><USER5> Yes, but statistically that will be mere noise, just like _I love love love this algorithm_ or _this algorithm works hand in g love with that other one_.

<comment><USER3> Maybe. It is possible that the word is used sarcastically more often than literally though. For instance, it wouldn't surprise me to learn that the word _" literally"_ may actually be used more often to mean _" not literally"_.

<comment><USER6> 'Literally' is already in the OED as 'not literally': [http://www.telegraph.co.uk/education/10240917/Uproar-as- OED-...](http://www.telegraph.co.uk/education/10240917/Uproar-as-OED-includes- erroneous-use-of-literally.html)

<comment><USER7> Indeed! [http://lee-phillips.org/literallyEgregious/](http://lee- phillips.org/literallyEgregious/)

</comment></comment></comment></comment></comment><comment><USER8> I like this, I'd probably use it to track the number of TODO's that are added to the code over time.

<comment><USER9> I've found out why they build up — it seems that the elves have been ignoring them for years now. Makes no sense, I know, but they've gone back to making shoes overnight. It doesn't matter how many times I write TODO, it never actually gets done unless I do it myself anymore.

</comment></comment><comment><USER10> This reminds me of [http://commitlogsfromlastnight.com/](http://commitlogsfromlastnight.com/)

</comment><comment><USER11> Having the rate of change rather than the number of words might be a better indicator of how stressed a particular group are at a given time.</comment>