Show HN: Insect – a high-precision scientific calculator with physical units - <AUTHOR> https://insect.sh/ <comment><USER3> Kudos!

I would _love_ to see two more things:

1\. Propagation of uncertainty.[1] I often yearned for a calculator that automatically propagated uncertainties for me while writing my (high-school) lab reports. I think it would be life-saver functionality for many students at the very least.

2\. _True_ high-precision. I don't know how Insect works under the hood (so maybe you are already doing it this way) but instead of using _high-precision_ results of the operations, store the operations themselves and calculate the final result at the end with the desired amount of precision.

I am aware that both requests requires a tremendous amount of change so you might as well think of them for the next major version! =)

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

<comment><USER4> Frink is a "napkin math" language that supports units, uncertainty propagation (keeping track of middle/lower/upper), and exact rational numbers. Named after Professor Frink from The Simpsons, of course. Also it has an insanely comprehensive file of units and constants (derived from GNU units and greatly expanded), so it includes handy things like _earthmass_ , _stefanboltzmann_ , etc.

[http://frinklang.org](http://frinklang.org)

[https://frinklang.org/frinkdata/units.txt](https://frinklang.org/frinkdata/units.txt)

<comment><USER3> Wow, that seems really promising. Thanks!

</comment></comment></comment><comment><USER5> Sorry to be the party stopper for a really awesome tool, just wanted to let you know that you have a dead butterfly as a logo: [http://emilydamstra.com/news/please-enough-dead- butterflies/](http://emilydamstra.com/news/please-enough-dead-butterflies/)

<comment><USER6> Seriously? Not to be negative but this is even more pedantic than I would expect from hacker news, and thats saying alot.

<comment><USER5> Ah it was meant to be a fun fact/"were you aware of?" kind of comment, not even criticism (;

<comment><USER6> It has the ring of a know it all type of pedantic comment. I can safely assume that butterflys are deformed when they are pinned, I dont have to have a big expose revealing it as some hidden secret. Hackernews has the habbit of making disability level OCD seem like some grand hidden nugget that will make everyone think you are nerding better than everyone else.

<comment><USER7> Come on. This was an obvious reference to the article that was hot on HN recently.

Also while you "can safely assume that butterflys are deformed when they are pinned", you can also safely assume vast majority of the world doesn't know that, and you can also assume many people might want to reconsider using a _dead_ butterfly as a symbol once they learn the image doesn't show what they thought it shows.

AKA regular, friendly, and completely warranted pedantry.

</comment></comment></comment></comment></comment><comment><USER8> This is pretty cool, it's one of the rare applications I've used where the things I've tried "just work". For example "10 kg to g", "c", "c to km s^(-1)", "c to km/s" all work intuitively. It's great it works at the command line too.

Something I wish I'd had when I was studying Physics.

<comment><USER9> All of these things work in Google, btw. Google has one of the best unit conversion tools, and it's built into the search.

<comment><USER10> I've always been frustrated by how Google's unit conversion doesn't integrate well with its calculator.

<comment><USER9> That's why 99% of the time there's no need to use the calculator, just type your formula straight into the search.

<comment><USER11> And use a remote server with at least 1RTT of delay to do basic arithmetic. Big Data indeed.

<comment><USER9> It's not so basic though. Google knows the current value of most currencies, for instance. It's actually more efficient for the central servers to pull that data and the clients to query once in a while, rather than every single client (local calculator) to constantly keep all that data up to date. And that's just the currencies.

<comment><USER11> How many times in you lifetime does the inches-meters conversion rate will change?

Currencies I can understand hitting a remote server, but general unit conversion and basic arithmetic?

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> Hi HN! This has been posted a few months ago (by someone else), but it wasn't really finished back then. The feedback I got here last time has helped a lot to improve all sorts of things. Looking forward to your comments!

Old discussion: [https://news.ycombinator.com/item?id=13909631](https://news.ycombinator.com/item?id=13909631)

<comment><USER12> Very well polished. Congrats on finishing it!

I have only one minor issue: the REPL scrolling conflicts with the default scrolling acceleration on macOS. So just a very small movement on the trackpad and it scrolls all the way up or down. I believe this is due the "jquery- mousewheel" plugin [1].

[1]: [https://github.com/jquery/jquery- mousewheel/issues/36](https://github.com/jquery/jquery-mousewheel/issues/36)

<comment><AUTHOR> Thank you very much.

I'll look into this. Thank you for the reference.

</comment></comment></comment><comment><USER13> This is exactly what I've been looking for for years. A fast easy calculator that's as convenient as a physical school calculator but with familiar programming style input since computers don't have scientific calculator keys. I can do sqrt(2) much easier than Windows' calculator and it doesn't have the ridiculous attempt to copy a physical calculator's quirks like pressing equals twice to re-apply the previous operation or having an "inverse"/"2nd function" button.

Units is a bonus but really just the calculator is less frustrating than anything else I've ever seen. Google search is too unpredictable - <USER2> into a typical confusing 1970's style keypad design after your first calculation. I tried a couple of desktop applications and they were no better either. Come one calculator app designers - stop trying to copy a physical calculator. Those already have a terrible design and computers don't have the same constraints or freedoms as them.

Even better, it can act like a desktop Windows app simply by saving the page in Chrome! Beat that for latency, Google!

<comment><USER14> Frink has existed for ages.

[https://frinklang.org/](https://frinklang.org/)

</comment></comment><comment><USER15> So "megabytes" appears to be the power-of-ten unit, which is generally not that helpful in practice.

       ≫ 6 megabytes to bytes
         6 MB -> B
          = 6000000 B

Assuming you're sticking with the power-of-ten unit, that means you should really grow support for the (sigh) "mebibytes" family of units; i.e., what some folks are retro-actively calling the power-of-two byte unit.

       ≫ 6 mebibytes to bytes
         6 × mebibytes -> B
         Unknown identifier: mebibytes

<comment><USER16> I'd call them "MB (megabytes)" and "MMB" (marketing megabytes). Pretty clear.

<comment><USER17> "M" \- "Mega" is an official general purpose SI prefix approved in 1960 which _always_ stood for a decimal multiplier. Its common usage as a binary multiplier was limited to counting units of computer memory, and is purely an approximation to allow convenient speaking of, e.g., a megabyte of RAM instead of 1.048576 megabytes of RAM. Because it reflects the natural scale of physical memory.

It is more properly referred to as "MeB" \- "mebi", which became an ISO standard prefix in 2008.

<comment><USER18> Just a small correction: the abbreviated form of mebibyte is MiB.

<comment><USER17> Thanks!

</comment></comment></comment></comment></comment><comment><USER19> > high precision

        ≫ e*1e15
          e × 1000000000000000
           = 2718280000000000

Needs a bit of work, I think.

<comment><USER20> Indeed:

        >>> tan(90 deg)

          tan(90°)

           = 14444300000000000

        >>> tan(pi/2)

          tan(pi / 2)

           = -70710700000000000000

        >>> tan(180 deg)

          tan(180°)

           = -1.38463e-16

tan(90°) and tan(π/2) should both be undefined, but in Insect, they a) have a value and b) are not even equal.

Weirdly enough, cos(π) and cos(2π) are exactly -1 and 1.

</comment></comment><comment><USER21> Looks nice, but is there a reason it interprets m^2 * Pa correctly

      ≫ 1 Pa * 2 m^2 / N
        1 Pa × (2 × m^2 / N)
         = 2

but doesn't automatically convert a result to N?

      ≫ 1 Pa * 2 m^2
        1 Pa × 2 × m^2
         = 2 m²·Pa

Same with W, J, s and all their relations.

<comment><AUTHOR> Thank you for the feedback!

Automatic simplification (as opposed to explicit conversion) is a complex topic. There are a few simplifications that are already applied, for example:

      20 L / m^2
       = 0.02 m

You are absolutely right, it'd be nice to have "Pa·m²" be converted to "N" automatically. I've been thinking about simply going through a list of simple, standardized units (SI units like Newton) while trying to convert the result into these simple units. However, notice that this is not always what you want. If someone likes to compute in imperial units, we would rather leave all quantities in imperial units.

<comment><USER22> you could only apply simplifications that minimised the sum of the absolute value of all the unit exponents. that would be intuitively satisfying, and not require converting imperial to metric (which would leave the exponents unchanged)

<comment><AUTHOR> Good suggestion, thank you! I was already thinking about some way to measure "perceived complexity" of a physical unit - this sounds like a very good try for such a heuristic.

</comment></comment></comment></comment><comment> semi-extrinsic Looks really nice!

≫ exp(2*kg/s)

      exp(2 × (kg / s))

      Conversion error:
        Cannot convert quantity of unit kg/s to a scalar

Excellent!

Is there any way I can save a list of variables to file and then reload them?

I also would like to vote for supporting imaginary numbers (Issue #47).

<comment><USER23> Great work indeed. I'd also love to see support for complex numbers. A big differentiator over other calculators.

</comment></comment><comment><USER24> Well done!

Plain and easy to understand interface and excellent use of colour and space. Two suggestions:

1\. While I doubt it'll be used very much, consider adding calories for completeness if nothing else:

      1000 kcal -> joules

or

      1000 Cal -> joules

You might also throw in cal for just for fun[1]!

2\. Change _Variables_ to _Constants_. I think this is more in keeping with standard jargon.

[1]: cal is based on the gram while Cal or kcal is based on the kilogram.

<comment><AUTHOR> Thank you for the feedback!

1\. Yes, I'll definitely add calories, good suggestion.

2\. Yes, that's probably a good idea. I should distinguish constants and (user-defined) variables.

</comment></comment><comment><USER25> Hmm, I find the auto-associativity to be a bit weird for example:

≫ 1/12 c

      1 / (12 × c)
       = 2.7797e-10 s/m

<comment><AUTHOR> Thank you very much for the feedback!

This is on purpose (see operator precedence rules: [https://github.com/sharkdp/insect#reference](https://github.com/sharkdp/insect#reference)). Implicit multiplication (without an explicit multiplication operator) has a higher precedence than division in order for something like this to work:

      tan(15cm/3m)

      = tan(15cm/(3m))

On the other hand, explicit multiplication has a lower precedence than division, so you would have to write "1/12*c". I agree that it can be confusing at times (that's why there is a pretty printer), but I don't want the language/parser to be whitespace-aware.

<comment><USER26> See how GNU units resolves this:

      1/10 m -> 0.1 / m
      1|10 m -> 0.1 m
      27 ^ 2/3 -> 243
      27 ^ 2|3 -> 9

You get the gist of it - a division operator with insane precedence.

<comment><AUTHOR> Ha! That's a really neat idea. Thank you for sharing this. I'll consider adding it.

</comment></comment></comment></comment><comment><USER27> I use this tool also: [http://pythonhosted.org/uncertainties](http://pythonhosted.org/uncertainties) It comes in pretty handy for a quick calculation with error propagation.

</comment><comment><USER28> If it could deduce density from the material name, it'd useful for volume-to- mass conversions., e.g.

       1 cup of butter -> g

Not sure if it's quite _scientific_ though... :)

<comment><USER29> Wolfram Alpha can do this:

      (density of gold) * (average volume of human)

      -> 1282 kg

And if you do:

      (density of gold) * (average volume of human) * (price of gold)

It will even show you a plot of the time series of its value since the early 20th century.

</comment></comment><comment><USER30> Looks pretty nice, but no light years? No attoparsecs? You don't even have hogsheads or fortnights!!!!!1!

Still, it's pretty good.

<comment><AUTHOR> Thank you for the feedback. I'm always open for suggestions on new units ([https://github.com/sharkdp/purescript- quantities](https://github.com/sharkdp/purescript-quantities))!

<comment><USER31> Yes, please add light years, parsecs. Perhaps weight of planets in our solar system, and the sun?

<comment><AUTHOR> lightyears and parsecs are here, now.

<comment><USER31> Thanks! You could also add speedoflight?

</comment></comment></comment></comment></comment><comment><USER32> I like this, but would really like a convert-to-base-units function.

      ≫ sqrt(1/(eps0 mu0)) ->m/s
        sqrt(1 / (eps0 × mu0)) -> m / s
         = 299833000 m/s
      ≫ sqrt(mu0/eps0) ->ohm
        sqrt(mu0 / eps0) -> Ω
         = 377.031 Ω

<comment><AUTHOR> Thank you for the feedback! I'm open for any syntax suggestions.

<comment><USER32> Maybe something like SI(sqrt(1/(eps0 mu0))) = 299792458 m/s factor(sqrt(mu0/eps0),ohm) = SI(sqrt(mu0/eps0)/ohm)*ohm = 376.730 Ω

</comment></comment></comment><comment><USER33> I use Python with pint [0] for this. It integrates with numpy. It has support for uncertainty. You can do all calculations Python can, Python math reads like ascii math. It also can output to latex.

This can easily run local. If you prefer online repl, it's available on repl.it [1]. There you can keep your scripts in the cloud for later, with rudimentary versioning.

[0] [https://github.com/hgrecco/pint](https://github.com/hgrecco/pint) [1] [https://repl.it](https://repl.it)

</comment><comment><USER34> Please everyone in the US (and everywhere else) stop using the word imperial to describe the US Customary system of units.

The Imperial system uses the same names for many units but the sizes of several important ones are different.

For instance Insect says:

≫ 1 gal/1litre 1 gal / 1 L = 3.78541

If this gallon were really Imperial then it would say.

≫ 1 gal/1litre 1 gal / 1 L = 4.54609

This is mostly because 1 pint US is 16 fluid ounce US but 1 pint imperial is 20 fluid ounce imperial.

But be careful because 1 fluid ounce imperial is 28.4131 ml, whereas 1 fluid ounce US is 29.5735 ml.

</comment><comment><USER35> Needs more temperature scales than just kelvin.

US Engineering units of energy would also be help certain people: such as BTUs British Thermal Units etc.

<comment><AUTHOR> I thought about it for some time and decided not to add Celsius and Fahrenheit: [https://github.com/sharkdp/insect/issues/68](https://github.com/sharkdp/insect/issues/68)

They are useful, of course, when it comes to simple unit conversions. But they lead to all kinds of problems if you start using them in calculations (which is what Insect is mostly for).

</comment></comment><comment><USER36> I have been using Frink for over 7 years. Aside from a calculator with a gazillion units, Frink lets you program in a less verbose Java for other tasks. Graphics are easy too. I write small apps for calculations I often need at work with GUIs and input prompts. What makes Insect different? Can you program apps in it?

</comment><comment><USER37> For those interested on a CLI counterpart, GNU units is more or less the same. The units definitions file is enormous

</comment><comment><USER38> Looks nice! are you relying on mathjs? I think it has some of the same functionality.

If not, is the conversion logic in an npm package?

<comment><USER39> package.json and bower.json does not include mathjs, so it doesn't seem like it does rely on mathjs.

<comment><AUTHOR> Yes. The underlying unit-conversion library is called [https://github.com/sharkdp/purescript- quantities](https://github.com/sharkdp/purescript-quantities) It does not have a (nice) JavaScript API, so far, as it is written in PureScript - like Insect.

</comment></comment></comment><comment><USER40> Shameless plug for my [http://dedo.io/](http://dedo.io/), which is similar to this this, but with less features, more money-oriented and support for any custom units, e.g. if bag_weight = 12 kg / bag, then 10 bags * bag_weight is 120kg

<comment><USER39> Here are some more:

[http://mathnotepad.com](http://mathnotepad.com) [https://arve0.github.io/webcas/](https://arve0.github.io/webcas/)

</comment></comment><comment><USER41> Nice, but

      sin (30 rad)
      sin × 30 rad
      Unknown identifier: sin

Wouldn't it be great if software evaluated things, and if things didn't made sense, considered what the possible alternatives were, a bit like semantic checkers for spelling and grammar in text?

<comment><USER42>
        sin(30 rad)
         = -0.988032

<comment><USER41> I think you've missed my point. I'm saying that it would be nice if interactive tools were a bit smarter and could guess that the white space was unwanted. Syntax checking in editors has improved a lot but it should do more than just suggest long variable names as you're typing them.

</comment></comment></comment><comment><USER43>
        2**100+1-2**100

Equals 0?

<comment><USER44> It seems it uses approximate floating point arithmetics, with 30 digit precision.

<comment><USER45> A confusing thing is that the program seems to be using the purescript- quantity library which uses the purescript-decimals library which is arbitrary precision numbers, if I followed the dependencies correctly.

The readme also advertises it can deal with 10^(10^10), which it can (doubles can't deal with this, so it's definitely not just using Javascript doubles). The part which prints out numbers rounds to 6 places, but I don't see any place which rounds intermediate results.

Edit: Found where 30 digits comes in. [https://github.com/sharkdp/purescript- decimals/blob/ad719fc7...](https://github.com/sharkdp/purescript- decimals/blob/ad719fc73b00837edf9aca5966744b1915b4a650/src/Data/Decimal.js#L3)

</comment></comment></comment><comment><USER46> Hi Sharkdp, wonderful product. I think that unit and command autocompletion would be super useful!

<comment><AUTHOR> Hi, thank you very much for the feedback. Actually, autocompletion should work already?

</comment></comment><comment><USER47> I really like the UI and seeming wealth of different units. It doesn't look like it supports fluid ounces though.

I tried "4 tbsp to oz" and it interprets oz as mass instead of volume. Google correctly gives me 2 as the answer.

<comment><AUTHOR> Thank you for the feedback. I'm not sure how to support this. I would probably have to call it "fluid_ounce" / "fl_oz" or "fl.oz." in order to distinguish it from the unit of mass.

<comment><USER48> Well, the way /usr/bin/units solves it is to allow "floz", "usfloz", "fluidounce", or "usfluidounce".

Having to learn that you can type "floz" is better than not being able to do it at all.

(You could also allow "fl oz", "fluid ounce", "fl ounce", etc. if you tweak your parser a little bit, but that's the deluxe version, and any functionality at all would be a big improvement.)

<comment><AUTHOR> Thank you. I'll add one of those.

</comment></comment></comment></comment><comment><USER49> Nice. This is a lot like (in looks and some functionality) the macOs app, 'Numi' (which I love) : [https://numi.io/](https://numi.io/)

<comment><USER50> Numi looks nice! I like the syntax

I use the similar Soulver on my Mac and iOS devices.

<comment><USER49> Nice.

I probably mostly use Numi for unit conversions, but asked for in a 'human' way. eg "68 square meters in square feet"

</comment></comment></comment><comment><USER51> Very nice on first try -- added to my quick toolbar. Great to be able to intermix metric and SAE units, as there is (very unfortunate) constant use of both in my field of work.

Any hope of an Android app version soon?

</comment><comment><USER34> Interesting.

And it looks useful.

Unfortunately that means you will be inundated with requests for further improvements. :-)

I see that you have a built in constant for μ0, mu0.

But it evaluates to

        0.00000125664 N/A²

for the ultimate in precision surely it should be expressed as

        4π×10−7 N/A²

At least when I use mu0 in spreadsheets, etc., I always define it that way, easier to remember too. And sometimes it lets me see that the pi cancels out.

</comment><comment><USER52> Found a bug : sin(pi) = 8.62803e-81

<comment><USER53> Close enough.

</comment></comment><comment><USER54> Nice, though I'm still highly partial to GNU Units. In large part as it allows specifying output units, and not just for conversions.

Note: if you're on MacOS and are using the supplied 'units' utility, that is BSD, not GNU units. You're going to want to install gunits from Homebrew.

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

<comment><AUTHOR> Thank you for the feedback. What do you mean by "specifying output units"? Insect has the "->" operator which does that:

      40000 km / c -> ms

       = 133.426 ms

<comment><USER54> Ah, I didn't find that. Yes, that's useful.

</comment></comment></comment><comment><USER55> Looks good! A lot of things seem to just work.

Can you stop the cursor blinking?

If you do something like pi 1e20, I think it should print out all the digits it has instead of printing zeros.

</comment><comment><USER44> I tried to convert 1000 rpm (revolutions per minute) to Hertz (periods per second), but I get

        Unknown identifier: rpm

<comment><AUTHOR> rpm are supported now. Thanks.

</comment></comment><comment><USER56> ≫ round(pi * 100000000000000000) = 314159265358979324

≫ round(pi * 1000000000000000000) = 3141590000000000000

(similar comment by @btown down there about e)

<comment><AUTHOR> This is only how it is displayed, internal precision is always 30 digits.

Floating point numbers are displayed with 6 significant digits

Integers are displayed with all digits, unless there are more than ~20 digits, then it is displayed with exponential notation

</comment></comment><comment><USER57> Too bad it doesn't support complex numbers

</comment><comment><USER58> I'm a little confused as to how this improves on GNU units, which seems to support far more:

        $ cat .units
        period(len) units=[m;s] 2pi*sqrt(len/gravity) ; (period/2pi)^2 * gravity
        $ units
        2980 units, 109 prefixes, 97 nonlinear units

        You have: period(20cm)
        You want:
                Definition: 0.89729351 s
        You have: period(20cm)
        You want: ms
                * 897.29351
                / 0.0011144625
        You have: period(2ft)
        You want: ms
                * 1566.5419
                / 0.00063834872
        You have: 5 GiB
        You want: bytes
                * 5.3687091e+09
                / 1.8626451e-10
        You have: 5 hundred million
        You want:
                Definition: 5e+08
        You have: tempF(100)
        You want: tempC
                37.777778

is it supposed to be a competitor? learn how to use a new language? I don't get it.

I like the idea of keeping units, but I'm not sure this makes things easier:

        ≫ V * A / J
          V × (A / J)
           = 1 V·A/J

        You have: V*A/J
        You want:
                 Definition: 1 / s

<comment><AUTHOR> > I'm a little confused as to how this improves on GNU units, which seems to > support far more [...]

> is it supposed to be a competitor? learn how to use a new language? I don't > get it.

No reason to be confused. GNU units is a great tool. qalculate and speedcrunch are great, too. Insect is just my take at it. Each of these tools has advantages and disadvantages. As for insect, one of the advantages for me is that it is platform-agnostic and can be used from anywhere without installation. The "You have: X; You want: Y" interface is basically replaced by "X -> Y".

<comment><USER58> > As for insect, one of the advantages for me is that it is platform-agnostic > and can be used from anywhere without installation.

wouldn't emscripten work great then? maybe you could add support for definitions in "units" format?

</comment></comment></comment><comment><USER59> I'd love a calculator that can implicitly recognize hh:mm:ss notation and can answer queries like ...

3:20:36 / 26.2

7:35 * 26.2

</comment><comment><USER60> Really great tool! Thanks for the hard work. It would also be really nice to specify custom units, such as

        ≫ U = 1e-6/60 * kat

          U = 1.66667e-8 kat

Because now it does this

        ≫ 1 kat -> U

          1 kat -> U

           = 1 kat

<comment><AUTHOR> Thank you for the feedback. Defining own units does not work currently, but you can simply divide by your new unit:

      >>> U = 1e-6/60 * kat

        U = 1.66667e-8 kat

      >>> 1 kat / U

        1 kat / U

         = 60000000

</comment></comment><comment><USER61> Nice tool! Not too obvious from the landing page that there is a terminal version. Also, some units come with implicit assumptions:

        ≫ 1 month -> days
          1 month -> d
           = 30.4167 d
        ≫ 1 year -> days
          1 year -> d
           = 365 d

<comment><AUTHOR> Thank you for the feedback. I should probably consider adding something like "Full documentation and terminal version available _here_ ". I hesitated for quite some while before adding "month" and "year" but these (potentially confusing) defaults seemed more useful to me compared to leaving them out.

</comment></comment><comment><USER62> Very nice! Any plans to add decibel/log-scale units? That would make this even handier.

<comment><AUTHOR> Thank you! "bel" is already supported ("decibel" also, due to the handling of SI prefixes). Unfortunately, "dB" is parsed as "deci-byte". While this is not really a useful unit, this is on purpose (see [https://github.com/sharkdp/insect/issues/67](https://github.com/sharkdp/insect/issues/67)) in order to support "kB", "MB", etc. for "kilobyte", "megabyte", etc.

<comment> alok-g This is worthy of fixing in my opinion. I do see this as a nuance, but if this is what the common usage of dB is, it should be supported.

</comment></comment></comment><comment><USER63> "9 min/mile -> km/h" fails since they are different dimensions. However in reality we do use both of these units to indicate speed. This might be a stretch but will be good to incorporate if it can be generalized.

</comment><comment><USER64> That's cute. Are there any phone apps which do that?

Remember Graphing Calculator? That could use such features.

Autodesk Inventor understands units in formulas, but mostly for length and angle. Everything becomes meters internally.

<comment><USER65> There is a version of Frink(lang) for Android. I don't think there's one for iOS. [https://play.google.com/store/apps/details?id=frink.android&...](https://play.google.com/store/apps/details?id=frink.android&hl=en)

</comment></comment><comment><USER66> There's also a fork (of an older version of this) for binary instead of physical units: [https://soupi.github.io/insect/](https://soupi.github.io/insect/)

</comment><comment><USER67> This is way faster than Wolfram Alpha and much simpler to use for most use cases :)

</comment><comment><USER68> 4 mi / min 4 × mi / min Unknown identifier: mi ≫ 4 miles / min 4 mi / min = 4 mi/min

Wut? Looks like some strangeness for the parser.

</comment><comment><USER69> hmmm, I'm a little bit skeptical about this.

I'd be cool to have this as a python script somewhere but I am not quite sure wether I would visit this site whenever I need to calculate some physical units, especially since google already covers most of my needs

dont get me wrong, I think otherwise it looks and feels great and is easy to use but I dont know who will use this.

<comment><AUTHOR> Thank you for the feedback. Fair point: Google's unit conversion is really good. For me, there's mainly two things that stand out compared to using a Google search:

* The REPL: I wanted an interactive terminal-style calculator where I could press Arrow-Up and easily change a few things. It also lets me define my own variables and use them in my calculations. It saves the history so I can come back and press Ctrl-R to find a recent calculation.

* Combination of Web- and terminal version. I often work in the terminal instead of the browser where I can easily use the CLI version of insect.

</comment></comment><comment><USER70> cool! Quick minor suggestion, would be cool to support words for numbers like five kilometers or five million seconds!

<comment><AUTHOR> Thank you. Same request is tracked here: [https://github.com/sharkdp/insect/issues/86](https://github.com/sharkdp/insect/issues/86)

</comment></comment><comment><USER71> I tried to enter

      3 5

which was interpreted as 3 * 5. Seems a bit risky to me :) Otherwise looks neat.

<comment><AUTHOR> Thank you for the feedback. That is intentional. Whitespace (or even lack thereof, as in "2x") is implicit multiplication. Otherwise, you'd have to write multiplication signs everywhere:

      2*sin(5*cm/(2*m))

<comment><USER71> Yes, whitespace as multiplication between number and unit or variable will be expected as multiplication but you can consider warning users about whitespace between two number literals because that could be just a typo.

</comment></comment></comment><comment> alok-g It's not working on my Android, Dolphin browser. I am unable to type anything on the prompt.

</comment><comment><USER72>
      ≫ 1 mile / 2 km
        1 mi / 2 km
         = 0.804672

Great, but it would be nice to show the result's unit.

      ≫ 1/2km
        1 / 2 km
         = 0.5 km⁻¹

It's been a long while since I did any real maths, so I'm slightly stumped as to why the -1 exponent is there.

<comment><AUTHOR> In your first example, the result of the calculation is dimensionless (length divided by length), so it does not require any unit. It's a scalar value.

In your second example, the input gets parsed as "1/(2km)" which is equal to "0.5 km⁻¹". If you wanted half a kilometer, you'd have to enter "1/2*km"

</comment></comment><comment><USER73> Great tool. I would love to see computing units -- gb/s, etc.

<comment><AUTHOR> They are already supported. There is "B" or "byte" for byte and "bit" for bit. SI-prefixes are case-sensitive, so "G" is for giga, "M" for mega, "m" for milli.

      >>> 6 Mbit/s * 1.5 hours to GB

        (6 Mbit / s) × 1.5 h -> GB

         = 4.05 GB

</comment></comment><comment><USER74> First thing I tried: >> 2 min 35 s + 3 min 54 s = 13920 s²

<comment><AUTHOR> whitespace is multiplication. If you use explicit addition, it should work:

      2 min + 35 s + 3 min + 54 s

       = 6.48333 min

</comment></comment><comment><USER75> ≫ pi pi = 3.14159

High-precision!

</comment><comment><USER76> Needs more energy units then Joules

<comment><AUTHOR> calories are supported now.

</comment></comment><comment><USER77> Nice. But no RPN? I pass!

</comment><comment><USER78> I tried e ^ (i * pi)

</comment><comment><USER79> Fails at the first fundamental test:

      Meaning of life

          Meaning × of × life

          Unknown identifier: Meaning

<comment><AUTHOR> Oh no :-)

Quick workaround:

≫ Meaning = 6

≫ of = 1

≫ life = 7

<comment> alok-g Hmmm, I now wish Douglas Adams had chosen 56.

Meaning = 7

of = 2

Life = 4

</comment></comment></comment><comment><USER80> It unfortunately fails my go-to test for these calculators:

        ≫ 7.8L/100km -> miles/gallon
          7.8 L / 100 km -> mi / gal
          Conversion error:
            Cannot convert unit L/km (base units: m²)
                        to unit mi/gal (base units: m⁻²)

<comment><USER81> That's because your unit conversion is invalid. It's entirely possible to construct an equation that computes mi/gal from L/km (or from gal/mi for that matter), but the dimmensionalty of the two numbers clearly disagree. Yes, you can introduce scenarios like yours where "any human" would know what the intended meaning of the question is, but mathematically speaking it's incorrect and encouraging a calculator to perform mathematically incorrect operations is a recipie for both disaster and the introduction of student/user misunderstandings.

<comment><USER82> For what it's worth, it works on google.

[https://www.google.com/search?q=5+l/100km+to+mpg&ie=UTF-8&oe...](https://www.google.com/search?q=5+l/100km+to+mpg&ie=UTF-8&oe=UTF-8&hl=en- us&client=safari)

<comment><USER81> Sure, because google isn't a calculator, it's an AI machine. Sometimes it guesses your intent right, sometimes it doesn't. That's fine for many tasks but not a great way to design a bridge or a steam boiler.</comment></comment></comment></comment>


A massive change: Nations will vote to redefine the kilogram - <AUTHOR> https://www.washingtonpost.com/science/a-massive-change-nations-will-vote-to-redefine-the-kilogram/2018/11/15/b5704b0a-e6c7-11e8-b8dc-66cca409c180_story.html <comment><USER2> Here's the physics world article

SI units to be defined by universal constants..

[https://physicsworld.com/a/si-gets-a- makeover/](https://physicsworld.com/a/si-gets-a-makeover/)</comment>


Show HN: There are only 70 three letter word .io domains left - <AUTHOR> http://and.io

<comment><USER2> Please, anyone who purchases it needs to take a moment to think about it.

The time it would take to write a script in Python to go through each domain and check the availability would cost less than $20.

Edit: Here - this Python script generates a list of available .io domains of any length (user specified) in 9 lines. <https://gist.github.com/4111298>

<comment><AUTHOR> This is not a scenario where I think you can't do this just as easily, the idea is targeted more at those that don't have the skills that you do.

.io domain names cost around $80 (cheaper in some places) so the assumption is that $19 isn't really out of whack with what you might be willing to pay.

Also, as a developer you probably charge somewhere from $60-$120 per hour for your time. If it takes you longer than 15 mins to do this then you have just wasted money.

p.s. Thanks for being a little kinder with your edit :)

<comment><USER2> Perhaps, but I still think that $20 is a little steep. Especially since its just a list - it doesn't do much. $20 definitely is not an impulse buy for me. And you're welcome.

<comment><AUTHOR> You also get the 4 and 5 letter word lists, but I thought that the scarcity of 70 might be more of a motivator.

One issue is that many people aren't looking for just any word, they want a specific thing. I wonder if the list should actually cost more and be targeted at domainers?

<comment><USER2> I think so, but you would need more features. I'm not inclined to purchase it, so I don't know how you're providing it (web interface, excel, txt, etc.).

If you want to raise the price and sell it to domainers, write an admin interface. Multiple TLD's and stuff. Have a feature which allows you to send them a notification when an unavailable TLD is expiring. Also, write a spider to check different registrars to find the lowest price for each TLD. Essentially, a SaS.

</comment></comment></comment></comment></comment><comment><USER3> I'm glad I got oik.io for Oikoi when I did! I have to wonder just how usable these last 70 domains would be, though.

<comment><AUTHOR> One of them is beg.io and its not even the best one :)

</comment></comment><comment><USER4> Might be worth it to increase the awareness that you give the 4 and 5-letter domains as well with the purchase.

</comment><comment><AUTHOR> I'd love feedback on the idea and positioning.</comment>


How to Stay Focused on the Important Things - <AUTHOR> http://blogs.hbr.org/bregman/2011/07/how-to-stay-focused-on-the-rig.html <comment><USER2> I don't agree with the article at all. The author advocates that you should change the environment around you so less discipline is needed to stay focused.

I think this is counter productive. If this were a fundamental principle than our problems concerning procrastination would be solved for good. You browse unimportant websites and thus waste time? Just install Leechblock and the thereby created environment will require just as much "discipline" as you've got. Yeah, right ...

It's also nagging me how he tosses around with words like "discipline" & "willpower" as if they were just as defined as colors like red and green.

<comment><USER3> Blocking websites works for me. And as soon as I unblock them, I'm right back on HN making comments instead of doing what I planned

</comment></comment><comment><USER4> I agree with the article but if I put in my words I would say "willingness to change the environment around you to stay focused".

</comment><comment><USER5> Misleading title</comment>


Tom, Dick & Harry - <AUTHOR> http://www.jasq.org/2/post/2013/01/the-mathematician-the-monoid.html <comment><USER2> Author here. Story is loosely based on my real life. As in, I was/am the Harry. At bofa, my previous employer, I tried to be a nice quant & find math-y solutions to what turned out to be plain accountancy problems that a simple nested sql query or a stored procedure could have solved.

So I quit, and here at my current employer, once again I mess around with monoids, rings & vector spaces, though I'm not really sure how any of this adds to my employer's bottom line:)

Matter of fact, my latest pull request (<http://bit.ly/14EXMaA> ) allows you to do weird shit like

          add("twenty three",
               "two million three thousand four hundred fifty five")

      to get "two million three thousand four hundred seventy eight", because add is defined like so -

          def add(a:String, b:String):String =       EnglishInt(EnglishInt(a).asInt+EnglishInt(b).asInt).get

<comment><USER3> Thanks for sharing your story.

> Tom was a PHP/JS programmer. He worked on rapidly prototyped web-apps and > didn't give a rat's ass about efficiency.

Although I'm happy you quit and did not get fired, know this now does pull some of the poetry out of the above line, which I had previous read as some sort of backhanded a compliment given the other (fictionalized) ending.

Perhaps I'm being overly-sensitive but Harry comes off as really looking down your nose at "good enough". For example, there certainly seems no love lost on you and Tom fictionalizing (?) the character as Dick's "secretary."

</comment></comment><comment><USER4> You'd think a reasonable math person--or any halfway competent programmer-- would not throw in a call to math.random in the definition of their monoid! (Or, really, deep inside any normal code at all.) He deserved to be fired just for that :P.

Anyhow, if we're playing at parables, chances are Harry took advantage of the job market and his knowledge and went to work for a trading shop or hedge fund, making more money than any developer at the old company (150,000, really?) and not being hated for knowing stuff. And hopefully using a nicer language like Haskell or OCaml.

Also, if Dick's a "systems" programmer, chances are his code would actually be written in C, longer than the monoid Scala code and harder to read. It _would_ be fast though.

<comment><USER5> I agreed. Harry can't talk about a Monoid with that non well-defined function. He deserved to be fired :D

(As I pointed out in my comment: [http://www.jasq.org/2/post/2013/01/the- mathematician-the-mon...](http://www.jasq.org/2/post/2013/01/the- mathematician-the-monoid.html/#comment417394799938876705))

</comment></comment><comment><USER6> Am I the only one who finds the requirement ambiguous?

Oldest guy who has been at the company the longest time? If I got a requirement like that I would first push back for a clarification, i.e., if employee A is older but employee B has been with the company longer, which is more of a candidate for elimination?

</comment><comment><USER7> Interestingly, Dick's code is by far the fastest using those implementations. For a sample size of 1,000,000 employees (to highlight the efficiency difference):

Tom (sorted version): 1510ms

Dick (min-linear version): 113ms

Harry (monoid version): 995ms

<comment><USER8> If it's fair for you to benchmark this, it's surely also fair for me to point out that in a lazily-evaluated language (Haskell!), Tom's approach is O(n) and equivalent to Dick's. :)

<comment><USER9> That's true if you pick the right sort algorithm. I'm not sure if it is true of whatever happens to be in Data.List; I wouldn't be surprised either way.

</comment></comment></comment><comment><USER10> If the point is that Harry solved the problem but failed to consider the politics of the solution, and so was fired, wouldn't it make more impact if he was the only one to declare that the Boss should be fired, instead of all three of them doing so?

If that isn't the point, then I don't know what the point is meant to be.

<comment><USER11> I believe the point is that he was fired because he spent a full day coming up with a complex solution to a trivial problem and that when he eventually did arrive at a solution, it was impossible for everyone else to understand and verify.

<comment><USER12>
        "Well", Harry said, "If you are asked to add
        two employees, return the guy who is older. But
        if both of them are the same age, then return the
        guy who has been with the company  the longest.
        But if both guys have been working for us for the
        same number of years, then return the guy with the
        lowest salary. But if they both earn the same as
        well, then just randomly pick one over the other"

I didn't think that was very hard to understand or verify.

<comment><USER13> Except the obvious: why the hell is he "adding" employees, and what does that even mean?

<comment><USER14> Who knew there was such a bias against mathematics on Hacker News?

The basics of abstract algebra need to be disseminated more widely. These are not hard concepts.

Adding employees means exactly what it was defined to mean in the article. It's an associative binary operation.

<comment><USER13> Since my point obviously flew straight over your head: the problem is not whether _we_ understand monoids, or even that "Harry" used monoids to solve the problem, but that he's using completely inappropriate terminology to try to explain his solution to non-technical people.

<comment><USER14> Actually, he's using completely appropriate terminology. Your mathematical education is just sufficiently limited that you don't know that. Rather than getting angry, you'd think your reaction would be to absorb the new information.

To me, your complaint is like someone saying it's inappropriate terminology to discuss time complexity in big-Oh notation, because we're programmers, not mathematicians.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I was hoping this was someone who actually thought that was a good idea, not a dig at math nerds who know what a monoid is.

<comment><USER16> At least one moral of the story is "Clever solutions are bad when a less clever solution can accomplish the same task".

<comment><USER17> The 'clever level' of a solution doesn't necessarily speak to it's maintainability which I would consider one of the strongest things to consider.

</comment></comment></comment><comment><USER18> After the title switch, this link is essentially opaque. This has to be automated. No one would carefully consider whether this title was more informative than the preview title and decide it is.

<comment><USER19> Out of interest, what was the original title?

<comment><USER18> I don't remember exactly, since it was a paraphrase of something in the article. It was close to "Fire the oldest guy who has been at this company for the longest time and is still not making six figures."

Now, admittedly, it's a little baity in that people who click might expect an age discrimination screed, rather than a programming parable. But even so, I think it's obviously better than "Tom, Dick and Harry".

<comment><USER19> Thanks

</comment></comment></comment></comment><comment><USER20> >Fire the oldest employee who is not making six figures

And, if you're in the U.S. and the employee is over 40 years old, you automatically set yourself up for an age discrimination suit.

<comment><USER21> While I agree that is what is supposed to happen, it rarely does. My father worked for a company for 30 years and was fired for age discrimination (his reviews were always good, well liked at the company). He basically wrote everything there was for training new employees at the company as well and was the head of their training department.

However, they brought in a new HR director and CEO that wanted to "shake things up" and the HR guy had a buddy from his former company that wanted to come in and work with him and happened to do a similar job that my dad did. You can probably guess what happened next, my father was fired without much of a reason. Those in executive positions that could have stood up for him were either in the minority or retired, so he had little help to back him up.

My family pushed him to sue, but he felt pressured into taking their severance package because he had to support my brothers and my mother and was worried about his prospects of getting a job in his 50s at another company (despite having a Bachelor's and Master's degree from well-known schools). He ended up taking the severance and waived his right to sue (at least according to the agreement he signed). He was also afraid that suing would blacklist him from employment elsewhere and it was hard for him to bring himself to sue the business he once loved. Coming from the age when many were loyal to their companies, even if the company was not loyal to them, he just couldn't do it.

Since then, he's applied at numerous employers for similar jobs to his own as well as other ones he could segue into. However, no one wants to hire him basically because of his age despite no intentions of retiring anytime soon. Now, he works a low wage job he could get without a degree from a university and it just kills me to see him like that. My only wish is to eventually grow my own business enough I can hire him myself so he can do something more respectable. He's not a huge tech guy like me so getting him into software development with me is a bit more than possible, but he's a smart guy that would fit into many other business and training related roles. However, those roles are something I can't pay for when I'm either working for clients, my own projects or with a friend right now.

Although age discrimination is against the law in the US, it's much more complex than it appears for most cases and suing is a difficult question that could hurt as much as it could help. I've always been reluctant to talk about my father's ordeal, but I felt I had to get it off my chest at some point.

edit: few grammar errors

<comment><USER20> True, most discrimination suits are not cut-and-dried, but a document that says "Let's fire the oldest worker that makes less than six-figures." is the smoking gun most cases salivate for.

</comment></comment></comment><comment><USER22> The sample code doesn't show up for me, but I don't agree that using foldl is some kind of weird egghead solution. You don't need to know about monoids in the abstract to write that code.

<comment><USER23> You may need to unblock scripts from jasq.org.

</comment></comment><comment><USER24> It seems like all of the programmers interpret the business decision backwards. Doesn't the company want to eliminate the biggest cost center (greatest salary under $100k), not the smallest cost center (least salary over 35 years old)?

<comment><USER25> Maybe in a small company. In a company with any size the difference of 20k-30k isn't very much in the overall scheme of things. Generally what a company will do at that point is keep the more senior employees with the assumption that they know more and are more likely to keep things going with less help.

</comment></comment><comment><USER26> I feel like the punch line was ruined. Harry should have been the employee whose number was selected.

The boss thing is cool, but it just doesn't fit with the suspenseful and ironic narrative that is being set up.

</comment><comment><USER27> Hm... I read through this twice before it occurred to me that it was sarcasm. Does it say more or less of me that I really wanted there to be some deep truth in there about monoids or foldLeft()?

</comment><comment><USER28> None of the sample code is rendering for me.

</comment><comment><USER12> If it were the company I'm working in, the problem neatly reduces to "Fire the oldest engineer".

</comment><comment><USER29> I'm sorry, this may sound like a stupid thing to say given that I understand absolutely nothing about the maths involved in this joke/parable/whatever-the- fuck-this-is, but seriously, "Fire the oldest employee who is not making six figures?!" I must be missing, something, right? Seriously? Please god someone explain to me how this isn't as unbelievably dickish as it sounds.

What sort of terrible, euthanasia-based, Logan's run-like, horrific fascist company are you describing in this bizarre little parable, and how come more of you people aren't looking at this with horror?! Are you so interested in the maths that the fact that the narrative surrounds it is so completely fucked invisible to you?! It's like a bloody survivalist post-apocalyptic zombie horror company. I'm surprised none of you are advocating mulching the thirty-five year old and using him to fertilize the office plants!

Why don't we shift it around a bit, Republicans are a bit dumb, right? And they care about money a lot. So if they're not earning 100k, they're definitely shit! Or maybe women? Not many of them are engineers, so clearly if they're earning too little, it's probably because their breasts get in the way of the keyboard.... Oh hang on, no, those things I just said were crazy insane. Like firing a thirty-five year old who doesn't earn very much.

There are people in the world who don't want loads of responsility, don't want to rise up a company and still do good work. People who want to spend time with their family and not work twenty-four seven and still do good work. There are people who are valuable holders of institutional knowledge, but are content to be junior engineers or whatever. If they do a good job, who the fuck cares how old they are?! How is that even relevant?!

And while we're at it, have you ANY idea how entitled this makes engineers in Silicon Valley sound?! I mean, engineers in the rest of the US don't make half as much money as the ones in the Bay Area. Even in London, a very expensive city, most engineers are not earning the equivalent of $100k within a few years of leaving college.

This story and the responses to it WEIRD ME OUT. It sounds like something that young dicks in the banking industry would talk about to make themselves feel really important. "Yah cos like he was only bringing home like three-hundred grand and he was like thirty five, so what a loser, right? Ha Ha. We totally got him fired and laughed at him because he's like totally old and by the time I'm thirty five, I'll be totally different because I'm really amazing and special and important, right??"

This whole thing is so depressing. Ive been wondering to myself for a while why it is that such a large proportion of twenty-somethings in tech around SF behaved like such idiots, and this has made me wonder even more. I'm halfway seriously thinking after reading this that all sensible companies should start thinking about how you should always fire any engineer under thirty earning more than 100k because, lets face it, they're fucking precious, self- important, entitled, whiny little unproductive fuckers who can't keep their genitals to themselves, get drunk too often during the week, and who've never had to do an honest days work for a reasonable salary and will remain smug, boorish twats until the day a proper grown up gives them the spanking they so clearly need.

<comment><USER30> Hey...relax. It was a thought experiment. No need to blast it.

What you are apparently so shocked by, and what you describe as "unbelievably dickish," is actually fairly common throughout the United States. A concurrent problem is the difficulty older people have in finding jobs after such a thing.

Do I agree with it? No, I'm not saying that. But your other examples are much more outlandish and, frankly, not on the same level of injustice. You seem to be crying out against this with the same passion that consumed many people during the Occupy Wall Street protests - this has been happening for a long time, it's not a recent development, and just now you are demonizing it to a much greater degree than it needs to be.

Again, I'm not saying you should be happy about it. But your parallel examples aren't parallel at all. It's age discrimination, yes, but what are you changing by posting this huge rant? And whose mind are you changing?

The author of the blog post wasn't trying to implicitly advocate for ageism. He wasn't make it a de facto axiom of proper business protocol just because he included it in his example. It's just a real world example.

My underlying point here is, in your shock at what is really a common phenomenon, you seem to have missed the point of the post itself. In fact, you have the opposite reaction...it was actually supposed to be a bit amusing, my friend.

</comment></comment><comment><USER31> Of the three solutions, minBy is the only one likely to handle the empty sequence/database case at all gracefully. Returning a fake "zero" is particularly awful.

It probably doesn't matter much since it's a throwaway problem and the database is known not to be empty, but it bugs me.

</comment><comment><USER32> 10,000 employees all making over $85,000? Where do I apply?

</comment><comment><USER33> Real math majors find all this weird category-theoretic jargon in programming pretty dumb. Just so you know.

<comment><USER4> Real math majors are also some of the last people I'd ask about programming-- if they care about it at all, it's just as a means to an end.

If a math major was interested in programming itself, in the meaning of programs or in neat abstractions for programming, they'd be in theoretical CS instead.

Do real math majors find the category theory in physics pretty dumb too?

<comment><USER33> Yeah, this is basically my point. You're more likely to find Harry's kind of silliness among CS people than math people.

<comment><USER9> "No true Scotsman" and all that. The dual major in my FP group is the only one besides me that cares about category theory. The rest are CS majors and don't care. Just so you know.</comment></comment></comment></comment>


Silicon Valley: Ironically Local - <AUTHOR> http://www.barisser.com/silicon-valley-48cf02089424

<comment><USER2> Not a good sign when the link to your company in the article doesn't work. Also not encouraging that there's no Apache rewrite rule from www to root for a production site.</comment>


Show HN: Arcentry API – Programmable Cloud Diagrams - <AUTHOR> https://arcentry.com/blog/announcing-the-arcentry-api/ <comment><USER2> Awesome that you added the api feature so soon, definitely makes things more interesting, having live data/configs syncing. Congrats on the launch!

<comment><AUTHOR> Cheers! curious what people will build with it

<comment><USER2> I'd be interested in getting the ui/diagrams via an API, so I can integrate into our app, render in custom ways. Not using an iframe or embed, but just the structure of a diagram that was built earlier on your normal platform, maybe with the device icons as a png/svg url possibly.

Side question, is there currently a lighter weight embed avail, that would live update etc? or only the builder UI?

<comment><AUTHOR> Actually, that's a great idea - being able to publish the whole document as JSON (a bit like Google Doc's Publish to Web feature which Arcentry is using to load its component data from a spreadsheet). It definitely makes sense to add that to the export options, thanks for suggesting. In regards to embedding, I'm afraid there's currently only image download or the embed as the 3D viewer available (which is about 500k, granted)

<comment><USER2> thanks, does the viewer come in a readonly option?

<comment><AUTHOR> the viewer is always read-only. Actually, once you've enabled a document for embedding you could just use the same request the viewer uses to load its data, e.g. [https://arcentry.com/api/embed/get?id=b03e4004-ffdd-49b4-9ca...](https://arcentry.com/api/embed/get?id=b03e4004-ffdd-49b4-9ca7-80add3ccf6a0)

</comment></comment></comment></comment></comment></comment><comment><USER3> Nice concept. And I think it can be tweaked to be more generic too. For example, to use for app documentation.

A project built on top of framework (e.g. Rails, Phoenix) just needs an adapter that transforms project's modules to metadata, POST them to Arcentry. Bam! You got a visual document for project.

For example, Phoenix(Elixir), the @moduledoc could be useful too if Arcentry component has something like `description` attributes.

</comment><comment><USER4> Looks really cool and will definitely make my life easier as I'm thinking about my infrastructure.

</comment><comment><USER5> wow, is this the first tool that can do this?

<comment><USER2> PRTG has a pretty good device map, that integrates pretty seamlessly with the monitoring data it collects, but it's geared for more traditional network/IT environments. They do have cloud stuff now, but I like that Arcentry is built from the ground up for modern tooling/cloud environments.

</comment></comment><comment><USER6> This looks cool, a lot more open than cloudcraft (and cheaper!) How long has Arcentry been around?

<comment><AUTHOR> It's brand new, launched six weeks ago.

</comment></comment><comment><USER7> Ha, can't signup if you have uBlock installed.

I thought I was going crazy, it blocks the popup.

<comment><AUTHOR> Oh dear, thanks for mentioning - the one for Google Signup or just the HTML overlay?

<comment><USER7> The HTML overlay

</comment></comment></comment><comment><USER8> Thats amazing! great progress!

<comment><AUTHOR> Thanks so much :-)</comment></comment>


Prepare for changes to macOS Server 5.7.1 - <AUTHOR> https://support.apple.com/en-us/HT208312 <comment><USER2> Not too surprising, they killed their server hardware line (Xserve) in 2004, and the Mac Minis that people were using as substitutes lost their quad-core option in 2012.

The number of people hanging on to Macs as servers has to be vanishingly small, and Apple doesn't do small markets anymore. There are currently rumors of a "Pro" focused Mac Mini, yes, but that's going to be comparatively expensive and I doubt it could win back much server market even if Apple wanted to.

They'll stick around as servers for iOS builds because there's no other option (and the Pro Mini would be nice for that), but hanging on to Macs for any other sort of server outside of a home file server is a lost cause.

<comment><USER3> _they killed their server hardware line (Xserve) in 2004_

Minor nit: 2011 [0] But similar to you, I'm surprised macOS Server is even a thing anymore. What are you supposed to run it on? That six year old quad-core Mac Mini? The oh-so-long-in-the-tooth trash can Pro your department still clings to? Off the top of my head, I'm a little stumped as to what I'd use to best utilize Xcode's distributed build functionality. Apple hasn't made what I feel is an appropriate tool for that job in at least six years.

[0] [https://images.apple.com/xserve/pdf/L422277A_Xserve_Guide.pd...](https://images.apple.com/xserve/pdf/L422277A_Xserve_Guide.pdf)

<comment><USER4> I wonder what Apple run their builds on, a Hackintosh?

<comment><USER5> That's a _really_ good question. You know how we always said there's hope that Apple won't ditch the Mac since they themselves couldn't stand to use Windows or Linux for their workstations...

I have no knowledge of their internal setup, but I _suspect_ they have a big room full of racked ESX servers (non-Apple hardware) running builds on macOS VMs. And probably a ton of networked iPhone motherboards running automated tests.

I just wish they would make that kind of setup (macOS VMs on non-Apple hardware) legal for other developers.

<comment><USER6> >I just wish they would make that kind of setup (macOS VMs on non-Apple hardware) legal for other developers.

Seriously....would love to be able to install MacOS as a VM on ESXi on a Dell Power Edge, or HP Proliant.

<comment><USER7> You can do that with a couple minutes of Googling. Oh, did you mean legally?

<comment><USER6> >Oh, did you mean legally?

Yes, funny enough my employer likes to keep things on the up-and-up.

<comment><USER7> Just tell them how much money they'll save. Their attitude might change pretty quick.

<comment><USER8> I am sure the judge will understand it then.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Why do they even bother making macOS server anymore? They clearly don't care about the corporate enterprise. They keep stripping away features. No DNS, no DHCP, no VPN, what is anyone gaining using macOS server? If you use it you likely are going to have to hack together a bunch of services just to get it functioning.

<comment><USER9> iOS build servers maybe?

<comment><USER10> I don't think you even need Server.app for Xcode Server anymore. It's now built into Xcode.app.

<comment><USER11> Yep, you're right. They've been slowly decoupling services from macOS Server to macOS. A big one is content caching which was added to macOS High Sierra under System Preferences > Sharing > Content Caching. It will cache iCloud and software updates so that devices checking for updates go though that cache.

</comment></comment></comment></comment><comment><USER12> Looks like the original title was something like "macOS Server gets worse in 5.7.1" but was then changed to the page's official title, "Prepare for changes..."

This is a case where I'd argue deviating from the "official" article title is warranted, as it more clearly explains the aim behind the submission, or to what specifically the submitter wishes to draw our attention.

<comment><USER13> In general, I find the way Hacker News titles change over time just really creepy and feels like approved censorship.

<comment><USER14> IMO the term "censorship" gets thrown around way too much.

<comment><USER15> Compared to what? It's an accurate term. Not all forms of censorship are equivalent to a big brother government.

<comment><USER14> > _It's an accurate term._

A term cannot be accurate. I understand you're trying to suggest that "censorship" is an accurate way to describe _this particular scenario_ , but that's your own subjective opinion, which IMO, is incorrect. Censorship necessarily implies an intentional effort to squelch a particular person or idea.

<comment><USER15> If changing the title doesn't result in actively squelching the old title, I'm not sure how to interpret this. There's fundamentally a silent middleman choosing the content on the site.

Is this bad? No. This is the whole positive and negative to active moderation.

<comment><USER14> > _If changing the title doesn't result in actively squelching the old title, > I'm not sure how to interpret this._

"Changing a title" is not inherently an act of censorship because there are many reasons why a title could be changed. Changing a title _might_ be censorship, but not always. In this case, it is _NOT_ censorship because the title was modified based on a pre-established submission rule (i.e. from the HN guidelines "use the original title, unless it is misleading or linkbait; don't editorialize."), _NOT_ due to any particular prejudice against the ideas expressed in the title.

It also seems a little strange to me that changing a title to reflect the author's actual title can somehow be construed as censorship. It seems to me that the person editorializing the title is more aptly described as a censor than the mechanism that restores the title to the original form and cadence intended by the author.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Whether fair or not, i started arguing that apple wasn't a computer company years ago. They are a phone company today and everything that looks or works like a traditional machine, servers included, are a distraction to that enterprise.

As a once-proud and fond apple fanboy, i am biased here. I miss having compelling laptop and desktop options in the Mac space. In the same way that i am still using an '09 pro and a '12 air, i bet some IT folks still cling to their server infrastructure hoping that the glory days return. C'est la vie.

<comment><USER17> It might have been a big hint when they dropped "Computer" from their name.

But more importantly, Apple has always been a _personal_ computer company. Not an _enterprise_ computer company. What's more _personal_ than a phone running a real computer operating system in your pocket? More people (ie the "personal") buy iPhones + iPads in one year than Apple has sold traditional computers in the last decade. If not, the numbers should be close.

<comment><USER18> In the early 2000s they made a HUGE push for enterprise.

My company I worked at Part Time went all in. It was a disaster for 3 months. The IT department didn't make the decision but the Executive Board.

Just this summer, I now work at another company, and they went 100% Apple (Because students were issued iPads so why not switch everyone over of course). They ended up throwing away all their 1 to 3 year old Mac All in Ones, in all the computer labs, into the garbage (At Apple's Request Around 400 of them) and now students don't have access to a computer and only issued a tablet.

So adults have Mac Laptops and kids have iPads (K-12) seems so strange. I think that this is where Apple would love to put Enterprise with everyone without a special case just uses iPads.

<comment><USER19> > They ended up throwing away all their 1 to 3 year old Mac All in Ones, in > all the computer labs, into the garbage (At Apple's Request Around 400 of > them) and now students don't have access to a computer and only issued a > tablet.

Why? What issue did they run into?

<comment><USER18> No issues. The lease was up and Apple doesn't like to flood the market with used gear? That would cut into their profits?

<comment><USER19> No, I don't see why you had to get rid of them. Did they not work for you?

<comment><USER18> They were in perfectly good working order. I really think this is just Apple's practice. Apple All In One users really don't need the latest and I bet they are just seeing this as something that would cut into their profits.

<comment><USER19> Wait, so _Apple_ forced them to stop using the computers they had bought?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> I'm curious what Apple uses for datacenter level servers. I know they've got a big footprint (not MS/Amz/Goog/FB level, but big). I can't imagine them wanting to run a commodity OS and standard tooling, given where they were with WebObjects and what they're doing on the client side.

I don't think they're running a pile of mac pros. Do they run x86 rackmounts with a custom OS? Linux? Windows on azure?

<comment><USER21> Who says they can't have x86 servers with macOS? Just because they don't sell anything like that doesn't mean that macOS doesn't support it for internal usecases (possibly via a separate in-house build).

<comment><USER22> > Who says they can't have x86 servers with macOS? Just because they don't > sell anything like that doesn't mean that macOS doesn't support it for > internal usecases (possibly via a separate in-house build).

Seems insane to spend the money to develop something like that, but not sell it.

<comment><USER23> It's not that difficult to make MacOS run on selected non-Apple hardware or in VMs for people outside Apple, so it likely has next to no cost for Apple.

</comment></comment></comment></comment><comment><USER24> On a sidenote I always wanted to buy an old Xserve just because for some reason they look really good. Not sure they are good for anything tho

<comment><USER25> They do indeed look good, but I wouldn't bother. We have several of them at our company that we keep alive as build servers for our Mac software.

They are 4-5x slower than the equivalent contemporary x86 boxes you can run Linux/Windows on. As a modern day server they are fairly rubbish really.

<comment><USER26> There is an eight core 3.0GHz Intel Xeon, 32GB RAM, 2TB drive for $300.00[1] on eBay.

Curious if you install SSD disks in RAID? Then it might actually be a pretty decent home server.

[1] - [https://www.ebay.com/itm/Eight-Core-Apple-Xserve- Server-3-0G...](https://www.ebay.com/itm/Eight-Core-Apple-Xserve- Server-3-0GHz-Intel-Xeon-32GB-RAM-2TB-WITH- RAILS/322947767053?epid=1901422001&hash=item4b312fdb0d)

<comment><USER25> It's a little tricky to upgrade the CPUs in the Xserve as they are special versions with narrower lids. You can't use stock Xeons, you have to delid them yourself. It can be done though.

[https://forums.macrumors.com/threads/xserve-processor- upgrad...](https://forums.macrumors.com/threads/xserve-processor- upgrades.1096691/)

</comment></comment></comment></comment><comment><USER27> 5.7.1 shouldn't remove features - it makes a mockery of version numbering.

</comment><comment><USER28> I'm really surprised it still exists. I've actually tried to use a few of these services on OS X server at various points in the past. It never worked very well behind NAT; anyone that can afford their own IP space is not going to need hand held through setting up Dovecot or BIND.

The GUI is supposed to make it easy to get this kind of stuff set up without really understanding what it does. But, something strange always went wrong which required trying to understand what the hell the open source software was doing at the same time as trying to understand where in the configuration file hierarchy the apple GUI was inserting its config and what this was doing.

Having tinkered a bit with various services on Linux since, its much easier to cut out the middle man, install from scratch and configure a vanilla installation using the config files. All the helpful comments on the options in the config files make it much easier to understand what's happening anyway.

<comment><USER29> I tried it years ago and it was a terrible product for exactly the reasons you mentioned - one click smiley-GUI setup that consistently failed to work.

And lots of stuck-on features that I couldn't imagine anyone using in a small office, like a barebones custom Wiki.

I never understood where Apple were going with it. As I understand it, it was a solid product that did what it was supposed to - i.e. help network admins manage a network full of Macs and i-devices.

Then those features disappeared, and it turned into My Little Server, but worse.

Which is a shame, because there may be a market for a good server product, and Apple could have owned it.

</comment></comment><comment><USER30> From my personal experience macOS Server is not a serious product, nothing works out of the box and everything requires serious terminal tweaking. Will not give it another try

</comment><comment><USER31> Was excited to hear about this since I imagine a very large number of users had to install the server for update caching and time machine server and now they don't how have to. Since the title would probably be better suited to say High Sierra Gains macOS Server Features.

<comment><USER32> This really changes the tenor of the title. That's actually a big deal for a lot of people. Especially Time Machine sharing.

</comment></comment><comment><USER33> I don't understand ... they've eliminated the Mail server? or you just have to click a button to install it specifically? or you have to manually install one of the open-source mail servers yourself? (in which case why use MacOS server at all, not say, Debian)

<comment><USER34> My main issue is with Push email. With OSX Server, you could get an APNS certificate that enabled you to have mail instantly delivered to your iPhone, push for Mail.app with one click. Will there be a workaround for this? I know there's a dovecot version for freebsd that can use the push certificate, but the only way to obtain it was using OSX Server's mail server... Does anyone know if a regular, iOS app push certificate works with this?

</comment></comment><comment><USER35> How about "Apple stops shipping out-of-date versions of open sourced server daemons (for which they had created a minimal GUI)"

Not that having a minimal GUI isn't nice for users with minimal technical skills, provided that you keep up with current versions.

However, the Server "version" of OSX has long been nothing more than an application that installs a version of several open sourced server daemons along with a enough of a GUI to configure the basics.

</comment><comment> village-idiot Honestly, I thought they'd killed off macOS Server a while ago. I'm a little surprised to discover that it's still a thing.

</comment><comment><USER36> So whats the "correct" way to manage an office full of macs in 2018?

* Centralized password management

* Preload software (chrome, firefox, java) and settings

* Enterprise CA

* Schedule OS updates

<comment><USER37> MDM solutions come to mind:

* [https://jamfcloud.com](https://jamfcloud.com)

* [https://meraki.cisco.com/solutions/mobile-device-management](https://meraki.cisco.com/solutions/mobile-device-management)

I've used these two before and they work quite well.

<comment><USER38> Working URL for Jamfcloud: [https://www.jamf.com/products/jamf- cloud/](https://www.jamf.com/products/jamf-cloud/)

</comment></comment></comment><comment><USER39> Does it support MDM and DEP for iOS devices?

Is there an iOS MDM provider which will allow you to configure per-app VPNs that connect to an open-source VPN? Microsoft Intune only supports specific corporate VPNs, is that because per-app VPNs require a corporate VPN app that is installed on the phone? Why can't the native IPSEC client perform this function on a per-app basis? It would allow segmentation of Facebook from normal traffic.

[https://docs.microsoft.com/en-us/intune/vpn-setting- configur...](https://docs.microsoft.com/en-us/intune/vpn-setting-configure- per-app)

Edit: Profile Manager is still supported in 5.7.1

Instructions for MacOS Server setup of Profile Manager without DEP, [https://medium.com/@JoshuaAJung/managing-your-mobile- devices...](https://medium.com/@JoshuaAJung/managing-your-mobile-devices-in- the-cloud-using-apples-own-mdm-solution-8a588d9724b6)

</comment><comment><USER40> > As hosted services have become widespread ...

This makes it sound to me like we should acquiesce with "cloud" services, but that seems like a very different perspective than their recent privacy note:

> We design our products to limit the collection and use of data, use on- > device processing whenever possible, and provide transparency and control > over how information is shared.

I never ran Mac Server (at least, not for anything real) but it was always a selling point to me that I could easily run these services myself if I wanted. Including more features in vanilla macOS is great, while dropping other significant features sours the whole platform for me a tiny bit. People (and companies) always want extra power, just in case, even if 99% of them never use it.

<comment><USER41> >> As hosted services have become widespread ...

>This makes it sound to me like we should acquiesce with "cloud" services, but that seems like a very different perspective than their recent privacy note

Apple is all about the cloud these days. Their privacy efforts are about keeping your data safe, be it in the (their) cloud or on your device.

Sadly trust is not a renewable resource, and i lost mine years ago in cloud providers ability to keep data safe.

</comment></comment><comment><USER42> > Caching Server, File Sharing Server, and Time Machine Server

I'd love some confirmation of this but I have a sense macOS server is used primarily in file heavy scenarios like movie and music production.

<comment><USER43> Our SMB design office is media-heavy, with lots of very large raw photo shoots and source video files. We've been using Apple Server for file sharing for a long time (running on Mac minis). All other services have been migrated or abandoned. At some point we need to switch to a Windows or Linux SMB server, cloud storage is still cost-prohibitive with the file sizes we're throwing around.

edit: File sharing _was_ on Server.app, now it's just plain macOS-flavored SMB

<comment><USER44> Consider a synology NAS. They are made for a use case like that.

<comment><USER45> Been really happy with mine... still running a DS-409+ with 4x 4TB drives. Will probably upgrade or homebrew a freenas box again. Still sour from my last freenas experience in 2012 though.

</comment></comment></comment></comment><comment><USER46> "Services Migrated from macOS Server to macOS High Sierra"

So I guess High Sierra and Mojave? Though I don't see the Time Machine Server feature on 10.14.0 at System Preferences > Sharing.

I'm using a Time Machine server on Linux (Netatalk), but I suffer from an infinite loop somehow. It never finishes the upload for some reason, and keeps incrementing the amount of MB backed up and still needed to back up.

<comment><USER47> You have to add the disk as a shared folder in the File Sharing section, then right-click and in Options there's a checkbox to make it a Time Machine share.

</comment></comment><comment><USER48> It's a bummer, at one point Server was actually a pretty cool product, Network Homes and such were a great feature for Macs and it was approachable for a lot SMB applications. A nice GUI on some good open source features isn't a bad thing. I feel that Apple missed a bit of an opportunity there by being stuck in the 90s and early 00s mold where Macs weren't really considered at all, and thus of course businesses weren't so interested either very often. But times changed and if Apple had kept with it they could have both capitalized that and potentially carved out a profitable niche, it would have lined up well with current worries about over centralization and dependence on the cloud and services if Apple had a friendly product that let people do stuff at home. There were a lot more interesting possible features there that never got and now will probably never be explored in the same way.

Granted, the same can be said about a lot of Apple product possibilities, including desktop Macs period. And there are always tradeoffs: Apple's startup-type organizational structure makes multi-tasking hard, but also makes for fantastic focused products. If they were more traditionally structured they probably would have maintained the Mac a lot better, but would the iPhone have come to be in the same way?

At any rate it leaves a small hole for me at least, I don't mind handling things normally at work but I enjoyed playing with a nice GUI at home, and some small business I know still use Server. I asked for some suggestions on the Ars forums, and for anyone else wondering, one I was given that now looks really promising after first tests is Synology's DiskStation Manager, run standalone if you buy their equipment but also possibly under ESXi vis Xpenology (alongside macOS if that's still desirable for some of the remaining MDM functionality and such). I haven't dug deep into it yet but the GUI and power looks pretty nice, and ESXi will even run on Mac Pros in which case a macOS guest shouldn't even be a license violation. Something to consider anyway as a replacement. For simple network needs those running UniFi kit might find the controller is also enough, though right now it's a little shallow on some core features. Might still be good enough and again a decent GUI.

Anyone on HN have any other ideas for equivalents, with sane GUI defaults even if some CLI usage is needed as well? Are some free general distros these days fine for that, or have popular GUI managers that can go on top? I could see more specific distributions like FreeNAS being good for some applications depending on what exactly Server was being used for. Another storage focused option might be NexentaStor CE, though that is limited to 10TB.

</comment><comment><USER49> A DNS server is table stakes at this point. The removal of these is really strange.

</comment><comment><USER50> Basically, you are on your own (install open source packages yourself).

And that's supposed to be a good thing, because… you get to install and test the latest stuff yourself. Because Apple can't and won't. OK.

</comment><comment><USER51> Hmm Time Machine Server. That would come in handy for backing up my laptop automatically to my desktop instead of plugging in a usb hard drive once in a while.

Anyone has experience with that? Can I trust it?

<comment><USER52> Yes, but you no longer need server for it.

I've been using it with netatalk for a while, recently migrated it to a 2012 MacPro running 10.14. Seems to work about as well as it did on my linux box.

<comment><USER51> Yes, it's new to me because I never bothered to check out Mac OS server. Now that they moved it into the main Mac OS, I've set it up for one of my laptops and it seems to back up invisibly... except for the first backup where I had to leave the laptop on overnight because it took 7 hours ;)

</comment></comment></comment><comment><USER9> Does even Apple use macOS server for their own servers?

<comment><USER53> They haven't used mac servers in more than a decade long before they discontinued Xserve.

<comment><USER54> How do you CI for iOS apps without a mac server?

<comment><USER55> I would guess you just use non-rackmount hardware to do it.

<comment><USER56> Or mount Mac Pros in a rack: [https://www.sonnettech.com/product/rackmacpro.html](https://www.sonnettech.com/product/rackmacpro.html)

</comment></comment></comment></comment></comment><comment><USER57> Messages Removed in Server 5.7.1 Alternatives: ejabberd, Openfire, Prosody

Yes, serious XMPP servers there <3

</comment><comment><USER58> MAcos server? Is that even a thing? wow

</comment><comment><USER59> We wanted to switch to a Linux-based NAS. There was a major issue though: EXT4 does not support long enough directory / file names (or paths). As a result of our extensive folder structure and file naming scheme, we ran into all sorts of issues. In the end, we made the jump to Google Drive where security is probably better anyway in comparison to a local NAS.

(Your mileage may vary as usual.)

<comment><USER60> I don't think there's a path limit in ext4, but looks like individual file/folders are limited to 255 bytes, while hfs+ (on Linux) is 255 utf-16 characters, which is potentially longer.

The 255 bytes limit seems common (xfs, zfs)-while reiser allows 4kb or so.

What kind of naming scheme do you have that you had a problem? Long, multibyte file names?

<comment><USER61> IIRC, there's a limit that the whole path passed to system calls has to fit into a single page. For most architectures, that's 4096 bytes including the terminating nul character. (This limit arises because the kernel has to copy the passed path to kernel space before doing any work on it, and allocating more than a single page is costlier.)

<comment><USER60> Just tried, there's definitely a 255 sigle file/folder name limit with zfs - but I had no problem making very deep folder trees. However 'touch' wouldn't accept a path that was too long - 4kb looks about right.

Bash cd wouldn't let mee leap all the way down in one go - but if I got down there (while ls a * ;do cd a * ;done) - I could create a file (ed: view from "top"):

      find -iname ok|wc
      1 1 12805

I guess I've got a hard time imagining 4kb path and 255 byte path segments being a serious issue - but maybe my imagination is the problem?</comment></comment></comment></comment>


The pscyhology of bookplates - <AUTHOR> http://yalealumnimagazine.com/issues/2010_03/bookplates4249.html <comment><USER2> I had to look up bookplate (<http://en.wikipedia.org/wiki/Bookplate>). I've never seen a bookplate on a non-library book. To me, the idea of marking a specific instance of a book as one's own sounds alien. The only marks I make on my own books are notes or marking important passages.

I doubt it surprises anyone when I say I don't understand what this guy is complaining about. He can still buy paper books and give them bookplates. Many people prefer paper to e-books, so it's unlikely that paper books will disappear any time soon.

He ends with, "This books belongs to . . . no one." I completely disagree. Digital media costs almost nothing to reproduce. Books are cheaper than ever before. Literacy is higher than ever before. There is more CC-licensed media than ever before. DRM aside, "This belongs to everyone." is the general sentiment of digital media.</comment>


How to Win Friends and Influence People - <AUTHOR> http://en.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People

<comment><USER2> I was never a fan of this book. The problem is that his primary rule is "be genuine" but then he spends the rest of the book telling people to follow a rules designed to conceal a their personality and turn them into an always positive cheerleader.

Honestly, I've met people who follow his advice to the tee and they always come off a little phony to me. Look at his advice for "being a leader" for example and ask yourself "is all that posturing really being genuine?" I'd rather have a boss that just gives it to me straight.

I guess what I'm saying is this. If you have a business or something and are trying to suck up to people in order to get something from them this is great advice. If you want an actual friendship with people in which you feel comfortable being with them and don't have to parse every word you say this book isn't for you.

</comment><comment><USER3> Even the newer editions feel dated, but the advice is timeless. I summarise it for my self as

       "Have respect -
        be worthy of respect in return.
        Be honest and genuine."

Always consider how what you say might make someone feel. This can become a habit, and cost you nothing. The gains can be awesome.

There are parts of the book to be taken with a pinch of salt, but if you can read it while keeping its context in mind, it's a gold mine.

</comment><comment><USER4> I read this book but didn't really care for it. sh1mmer basically had it right. He wants people to be genuine and try to phrase things we want in terms of the gain for the other party.

I haven't got to reading it yet, but a friend who I trust recommended "Influence: Science and Practice". He said it was a lot less fluffy than Carnegie's book.

</comment><comment><USER5> I have a copy of this on my shelf. It's an interesting book but the negotiation techniques can be pretty crude compared with modern NLP.

Mostly it's good advice. To sum it up in one word be _genuine_.

<comment><USER3> Can you recommend a similar work for NLP? Everything that I've read so far makes me think it's a crock. You have given me pause to consider again, and I would value a reference. Thanks.

<comment><USER5> It's interesting, after you commented I looked up NLP on Wikipedia and was honestly surprised at it's debunking.

I've read a few NLP books: NLP for Dummies, NLP for the modern manager and a range of literature from people like Tony Robbins, Christopher Howard, etc.

Some of the material sucked, NLP for the modern manager especially. I have been frustrated by the wishy washy nature of much of the material.

However the thing that really struck me was when I'd just finished a Tony Robbin's seminar and had a meeting with my boss at the time who I barely got on with. I did the technique called "matching and mirroring" where you gently copy what the other person is doing. I was amazed it was the best meeting we'd had that I could remember.

Since then I've used a number of the "basic" NLP techniques to do with body language to help me communicate better with people. I guess I'm not sure what to advise. Reading the Wikipedia article though makes me wonder how much of it is a crock. Quite a lot of material I've read seems to be unhelpful, unspecific or "self-help snake oil".

I'm curious what the real science is behind the practical body language techniques I've been able to pull out of NLP if the rest of it is hokum.</comment></comment></comment>


Show HN: Obort) Attempt to build a generic accounting system platform on Django - <AUTHOR> https://github.com/iogf/obort <comment><USER2> First - it's great to know that someone is building an accounting system in Python. Second, some thoughts that I hope will help you:

1) If you want to develop an accounting system from scratch, you should spend some time looking at how existing accounting systems work. You can play with commercial systems (e.g. Xero, Sage, QuickBooks) or, even better, look at the source code for open source accounting systems. I'm a qualified accountant, have some professional experience with Django, and am a decent product manager. Even so, I would not attempt a project like this with just my domain knowledge and technical skill. It's good to learn patterns that have worked (or not worked) for others.

2) You have an ambitious goal. Great! Now what is the minimum functionality you need before the software will be useful for you, or for the first set of users? If you can't deliver that in some reasonable timeframe, you might lose momentum or interest yourself.

3) I have never been to Bosnia, but I'm guessing that the accounting needs of small businesses there are 95% the same as the needs of small businesses in the UK or the US. The things that tend to vary between countries usually relate to:

\- computations (tax rates and structure)

\- minor presentation details (e.g. whether VAT numbers need to be displayed)

\- bank statement integration

These are easy to customise without changing the design of the system. So, I'm curious, why do you want to create an accounting system for Bosnia? Why not create one for the world. Or, more easily, use an existing system and adapt it for Bosnia?

4) Take a look at these open source accounting systems:

[https://github.com/ledgersmb/LedgerSMB](https://github.com/ledgersmb/LedgerSMB)

[https://github.com/akaunting/akaunting](https://github.com/akaunting/akaunting) (pretty recent but feature rich, code seems well structured)

[https://github.com/Gnucash/gnucash](https://github.com/Gnucash/gnucash)

5) Finally, if you want people to use and contribute to your project, consider including these in your README:

\- Installation instructions

\- Current status, including a list of features that already work

<comment><USER3> Also look at beancount and the other text ledger systems.</comment></comment>