Debugging macOS Kernel Using VirtualBox - <AUTHOR> https://klue.github.io/blog/2017/04/macos_kernel_debugging_vbox/ <comment><USER2> [puts on VMware hat].

VMware's virtualization software (ESXi, Workstation, Fusion) has the concept of "CPUID masks", which can be used to mask off features to the guest from the host's CPU for this kind of work. Since it is a very advanced concept, we didn't expose it in the UI for Workstation or Fusion, but the VMX shipped with both products should support it as far as I know (I don't _think_ we've ever disabled that feature for a product anyhow). If you dig into the menus you can set the flag values on ESXi, as sometimes for fleets we have admins that want to normalize their CPU flags across all of their virtual hardware (I believe this was very popular when the NX-bit was new).

However, you're not at a lost for the desktop products. Editing the [vm- name].vmx file and adding the lines to control the cpuid registers is a pretty simple endeavor; the lines are formatted 'cpuid.<cpuid-in>.<GPR> = "value"', and value should contain the mask for the whole 32-bit register, with a dash '-' for no special processing of this flag, "h" for using the host's setting of this flag, '0' for explicit disabling the flag, or '1' for explicit enabling the flag. For example:

        cpuid.7.ebx = "</comment><comment></comment><comment></comment><comment>--0</comment><comment>-----"

disables the (if I counted correctly) 20th bit from the return of CPUID in the ebx register when CPUID is passed in '7' as a parameter to eax, which should correspond to disabling the SMAP CPUID flag.

(The VMX file is a bit non-obvious to get to on macOS, as we use 'packages' to make VMs nicer to handle, but simply right clicking the package and selecting "show package contents" should reveal the VMX file.)

[takes off VMware hat].

<comment><USER3> VirtualBox has a similar feature, via "VBoxManage modifyvm --cpuidset <leaf> <eax> <ebx> <ecx> <edx>", which also appears to be equally as undocumented and obscure. :-)

<comment><USER4> I've seen these flags mentioned before, for both VirtualBox and VMWare. And it's always without exception been in conjunction with trying to get OSX running in a VM on non-Apple hardware.

I'm pretty sure both VirtualBox and VMWare could create a Apple-friendly template with these settings already tweaked for what OSX expects. In fact it would be trivial.

But for some reason they haven't.

Considering how VMWare Workstation Pro actually supports running MacOS on Windows, but has the relevant config removed in production-builds (needing it to be hacked back in), I'm going to assume there's some kind of political pressure going on here. Maybe even from a certain Cupertino-based company, wanting to prevent the mainline virtualization providers from commodotizing their commodity, run of the mill, standard X86 PC operating system.

That's a shame, because if they didn't, it would certainly make it much easier for me to build a solid and reliable CI pipeline for our MacOS and iOS stuff.

</comment></comment></comment><comment><USER5> Are there any good, up-to-date resources on macOS internals that detail everything from the boot process to the GUI? I could only find [0], and Apple's [1] was last updated in 2013..

[0] [http://www.newosxbook.com/index.php?page=book](http://www.newosxbook.com/index.php?page=book)

[1] [https://developer.apple.com/library/content/documentation/Da...](https://developer.apple.com/library/content/documentation/Darwin/Conceptual/KernelProgramming/booting/booting.html#//apple_ref/doc/uid/TP30000905-SW2-BAJJBJEG)

<comment><USER6> Jonathan Levin's MOXiL 2nd Edition volume 3 is out and I recommend you get it. 1st edition is still very good and can hold you off until the other volumes are out.

Amit Singh has a Mac OS X Internals A Systems Approach that is good we well.

There are also various talks at security conferences that detail parts of macOS/iOS.

</comment></comment><comment><USER7> Is this completely allowed? I'm probably misinformed, but I thought either certain debugging calls or certain kinds of virtualisation were disallowed by Apple. The fact that this kind of tutorial using virtualbox exists makes me think that someone is trying to work around something. I thought you weren't allowed to debug parts of macOS. Are there absolutely no limits, legal or technical?

<comment><USER6> Author here. Nothing in the post is illegal.

Apple allows 3rd party kernel extensions so naturally you would need to be able to debug the kernel. In my post, I link plenty of official Apple documentation that provide information on how to debug the kernel.

<comment><USER7> Yes, but that's not the whole OS. Where do your rights end to inspect the software and hardware you bought?

Also, I was careful to not say legal/illegal but allowed/disallowed. I am pretty sure that macOS disables some debugging calls, or at least it used to. What are the limits?

<comment><USER8> Not to be rude, but why do you care?

If it's illegal, it's up to Apple to deal with it. Why go out of the way doing free work for them?

<comment><USER7> Because it has affected me in the past. I've had to debug stuff in the past in macOS, thinking it would be similar to BSD, and was thwarted by technical means to disable debuggers. I've found the experience quite distasteful and was trying to remember what the problems were that I faced.

</comment></comment></comment></comment></comment><comment><USER9> Anyone know if this setup can be used to debug iokit (communication with external monitor over I2C)?

There is 100% method to freeze system while communicating with external monitor using iokit framework over I2C. [https://apple.stackexchange.com/questions/61045/does- apple-s...](https://apple.stackexchange.com/questions/61045/does-apple- support-ddc-ci-for-3rd-party-displays-via-apples-thunderbolt-to-dvi)

</comment><comment><USER10> I've tried this recently, and I can't get 10.11 to build the 10.11 xnu. Parts of the kernel throw deprecation errors, etc. Pretty weird actually. I'm assuming this is due to toolchain mismatch, but I haven't been able to figure it out. I'd appreciate it if anyone has any pointers.

<comment><USER6> Remove "-Werror".

Sometimes there are too many errors to deal with. I find building on a machine that's on the exact macOS version that you are trying to build does the trick.

</comment></comment><comment><USER11> This probably does not need a full Xcode install, just the command line tools. The CLT can be installed on a pristine macOS system just by typing _cc_ inside Terminal.

</comment><comment><USER12> I can't get virtualbox to boot. No matter what I try, I end up with this error:

gIOScreenLockState</comment>


Suspended jaccuzzi, Gueuroz bridge  - <AUTHOR> http://jaccuzzi.ch/html/affichjacc_264_e.html

<comment><USER2> I guess "hack" can mean anything these days, including "suspend from a bridge".

<comment><USER3> I'm more curious about how they hacked the officials. None the less, I think hack is now more or less generalized to doing that wasn't meant to be.

<comment><USER4> Judging by the pictures, they started under cover of darkness where they wouldn't be found out until the project was nearly finished.</comment></comment></comment>


Apple's Use of Swift in iOS 13 - <AUTHOR> https://blog.timac.org/2019/0926-state-of-swift-ios13/ <comment><USER2> On paper, Swift is my perfect language. It's like a slightly higher level rust.

For a while I was enamored of Haskell and its famed "if it compiles it works" saying, but I think I've realized that the features that contribute to that are: non-nullability and algebraic data types. Turns out I don't particularly like the extreme functional nature or (especially) the lazy aspect of it.

Rust is almost there, but then I'm dealing with lifetimes and working a little lower than I usually need. But I found I _love_ its exhaustiveness checking for enum variants.

The ML family is pretty much in my sweet spot, for some reason it doesn't really get the love that it seems it deserves, and last I heard Ocaml had an issue with being single threaded.

So that leaves Swift, with its non-nullability, algebraic data types, and exhaustive enum pattern matching. The only downside is its focus on Macs! I'm holding my breath, waiting for it to run just as smoothly on linux, and developing some developer cultural cachet and libraries for servers. I hope it does! I'm glad to see in this article that it's being used more and more at Apple.

And with SwiftUI, which looks pretty promising, I have to imagine it will only continue to grow in popularity.

<comment><USER3> Swift feels like a Frankenstein language though, there are so many keywords and new ones get added in every update. This article here [1] stack ranked a few languages by number of keywords and Swift is #4 on the list. And in Swift 2.1 they added some more, like properties wrappers and the `some` keyword. It gets hard to keep track of them all and the special behavior each one implies.

On the other hand, you can kind of make your own language within Swift because most of the keywords aren't required but allow some additive features. For example, some features help you write your code functionally and others support a declaritive style. It reminds me of what's going on with Babel and JavaScript, where babel extensions are like these language plugins you can mix and match to create your own language.

If you think of metaprogramming as a way to build your own language within a language, lisps and Ruby were kind of like pioneers of a build-your-own- language trend. I could see that as an interesting direction, I wonder if people have tried it before.

[1] [https://medium.com/the-traveled-ios-developers- guide/swift-k...](https://medium.com/the-traveled-ios-developers-guide/swift- keywords-v-3-0-1-f59783bf26c)

<comment><USER4> The thing that makes this work in Swift is the concept of Progressive Disclosure. One of the main tenants of the language is that it should be possible to be productive with a small, high-level subset of the language, and then you can gradually start to utilize the more powerful and obscure parts of the language as you find needs for them

> you can kind of make your own language within Swift

This is one of my favorite aspects of working with Swift. Because it's a relatively un-opinionated language with a diverse toolkit, and because of the powerful type/protocol system, it can really feel like you can carve out a DSL for each specific use-case.

<comment><USER5> > The thing that makes this work in Swift is the concept of Progressive > Disclosure. One of the main tenants of the language is that it should be > possible to be productive with a small, high-level subset of the language

"Progressive Disclosure" is an interesting idea for PL research, but IME Swift doesn't do a very good job at it. There's a million cases I've seen where people trying to do simple things run into a pandora's box of complexity (e.g., the infamous "Protocol 'P' can only be used as a generic constraint because it has Self or associated type requirements"). There isn't really a "small subset" I've found that's usable for anything but the absolute simplest programs. Even the fundamental types like Int and String have a lot of not- entirely-hidden complexity in Swift.

> Because it's a relatively un-opinionated language

It seems awfully opinionated to me. There is a clear preferred way to write almost anything. Ask online about how to do things differently, and you'll be told to do it in a more "swifty" way.

> because of the powerful type/protocol system, it can really feel like you > can carve out a DSL for each specific use-case

I'll have to see if the new features in the latest versions of Swift (used for SwiftUI) enable this more readily, but as of 4.2, anyway, writing DSLs in Swift is moderately limited and painful.

</comment></comment></comment></comment><comment><USER6> JetBrains had a recent survey that showed half of all iOS developers were using Swift only.

[https://www.jetbrains.com/lp/devecosystem-2019/swift- objc/](https://www.jetbrains.com/lp/devecosystem-2019/swift-objc/)

How about HN devs?

<comment><USER7> Pure Swift now.

It wasn't viable as v1, but now it's solid & clean.

Seems like it was a good opportunity to take a well understood language (C/C++/Obj-C) and after 30 years rebuild it ground-up into what it should be. Some constructs & workarounds just weren't going away without a clean-slate industry-wide fully-compatible restart.

Top problem now is getting developers to not force-unwrap optionals unless unless able to prove it won't cause a crash.

<comment><USER8> Force unwrapping optionals is quite useful: it's great syntactic sugar for what often just gets rewritten as guard/assertionFailure.

<comment><USER9> That's so rare in practice that you should just write it out fully. If it's happening frequently in your app, you should probably rethink your architecture. As time goes on, I've realized why people think asserts are code smells of their own.

<comment><USER8> Do you not use implicitly unwrapped optionals for IBOutlets?

<comment><USER7> If you can prove it won't be nil, normal IBOutlet included, fine.

</comment></comment></comment></comment></comment></comment><comment><USER10> The reason why Swift isn't being used more is that the Build and Integration team at Apple forbids the use of Swift for any project that has downstream dependencies. This is because Swift doesn't support sending out its symbols, meaning any Swift project has to be fully built and compiled before beginning compilation of any of its dependencies. They're getting a little more lax on it now but we've wanted to use Swift for years and are totally unable.

<comment><USER8> Do the new XCFramework/module stability improvements help here?

</comment></comment><comment><USER11> I wish they showed percentages, or the total number of binaries. It doesn't really tell me much that 141 binary use Swift. I want to know what proportion of iOS uses swift.

<comment><USER8> From a very rough check, there are on the order of a couple thousand binaries in iOS.

</comment></comment><comment><USER12> I've waded into Swift recently. It's a surprisingly easy language to pick up, with really nice modern language features. I really hope more platforms support it.

</comment><comment><USER13> Anyone here using Swift on the server? Perhaps something in production even?

<comment><USER14> I was thinking about it, however I've found that String performance is horrible (at least with Japanese strings) if you do anything like hasSuffix() or hasPrefix(). I think the problem is that String converts to unicode code points as soon as it seems useful, instead of keeping everything in UTF-8 (or whatever, really) and doing memcmp for hasSuffix() and hasPrefix() specifically, which would work much faster. Using NSString everywhere is faster, but then string concatenation involves a bunch of casting.

I'm not much of a server guy, so I might be wrong here, but dealing with strings seems like something a server is likely to need to deal with. Although, maybe the strings are short enough that it's not much of a problem, or maybe strings that are almost always ASCII are fast. Anyway, something to keep in mind.

<comment><USER15> Were your performance problems before or after Swift 5's switch to using UTF-8 as the preferred encoding? See [https://swift.org/blog/utf8-string/](https://swift.org/blog/utf8-string/) . It sounds like before, so you may want to check out the String performance again.

Swift 5.0 and 5.1 each supposedly made some 10-20% gain in ARC performance compared to the previous version (4.2 and 5.0), so that may also help. I think Swift's performance can be very hit or miss but they (Apple) are making some good strides.

<comment><USER14> It was Xcode 10.2, I think. (10.something), I think that's Xcode 5.

hasSuffix() doesn't need UTF-8 to be performant, though. As long as both strings are both the same encoding, just go back len(suffix) bytes from the end of the string and memcmp to see if they are equal.

</comment></comment></comment></comment><comment><USER16> The site is infinitely redirecting for me; [https://web.archive.org/web/20190926183124/https://blog.tima...](https://web.archive.org/web/20190926183124/https://blog.timac.org/2019/0926-state- of-swift-ios13/) is the archive.org version.

<comment><AUTHOR> Are you visiting this page [https://blog.timac.org/2019/0926-state-of-swift- ios13/](https://blog.timac.org/2019/0926-state-of-swift-ios13/) ?

Which browser are you using? The site has been tested on a couple of platforms and different browsers. I can't reproduce such a redirecting problem.

<comment><USER16> Yep, same page.

Chrome 76.0.3809.132 (Official Build) (64-bit) (cohort: Stable), Windows 10.

That said, I guess I needed to update Chrome, so I just did to 77.0.3865.90 (Official Build) (64-bit) (cohort: Stable) , and same error.

Here's a "copy as cURL" for the request, maybe that can help?

curl '[https://blog.timac.org/2019/0926-state-of-swift- ios13/'](https://blog.timac.org/2019/0926-state-of-swift-ios13/') -H 'authority: blog.timac.org' -H 'cache-control: max-age=0' -H 'upgrade- insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36' -H 'sec-fetch-mode: navigate' -H 'sec-fetch-user: ?1' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng, _/_ ;q=0.8,application/signed-exchange;v=b3' -H 'sec-fetch-site: cross-site' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9' \--compressed

</comment></comment></comment><comment><USER17> Do you think Objective C will be phased out some day?

(As in not usable for development in the Apple ecosystem)

<comment><USER18> Objective c probably will be phased out before C will. Objective-C libraries are themselves a wrapper over optimized C, which is what constitutes most of ios core.

I don't think swift will phase out C until a very long time. It still needs to sort its performance issues related to memory automatic reference counting and global lock. Which requires something close to rust borrow checker, but with an even more advanced technology to keep the syntax beginner friendly.

</comment></comment><comment><USER19> Will start using Swift once they add C++ interop. Right now mixing Objective-C and C++ is easy. This is not the case for Swift.

</comment><comment><USER20> Happy to see, it's a wonderfully designed language that's a joy to write. Super powerful enums, pattern matching, etc.

</comment><comment><USER21> Is this why the Podcast app has become so buggy?

<comment><USER8> Podcasts still appears to be mostly Objective-C.</comment></comment>


Why Vehicle To Grid is a horrible idea - <AUTHOR> http://depletedcranium.com/why-vehicle-to-grid-is-a-horrible-idea/ <comment><USER2> I have no strong opinion about using PEVs to feed the grid, but I have to respond to the first point the article makes, about PEVs making the grid too complex to manage. I was at a NIST/EPRI summit a few months back (we do some security work for smart grid devices), and small/home generation was a top of mind issue --- not from PEVs, but from renewables and small generators.

The grid is eventually going to have to deal with millions of small generators one way or another.

PEVs actually complicate the grid in worse ways than this article discusses. For instance, grid operators seem to believe that people will plug their cars in at friends houses, and that people will want a true accounting of their own power usage and not just that of a house.

</comment><comment><USER3> While I partially agree with the conclusion, some of the explanation doesn't really cut it:

 _The "vehicle to grid" concept would mean that grid operators would need to know the status and availability of thousands or millions of tiny generators._

Obviously there is a requirement that any household participating in this has some method of communication to the local utility point about the availability of power from here.

 _They'd need to know where they are located and whether the local transmission lines had the capacity to transmit electricity to the areas where it is needed._

Unless you are micro-routing, the utility is likely aggregating power from one "zone" to and external need. If there was capacity to charge the car, there is by definition the capacity to use the power from the car.

 _They would need to be able to communicate to each of these vehicles and throttle them up and down, calculating, in real time, which ones were suitable for use._

Well, the calculation would be done at the car--nobody else knows how much power is left. So that computation is local to the car, and yes, it is done in real time.

 _Power would be flowing every which way. Residential areas would be generating some of their own power while transmitting some extra to commercial areas, which would be simultaneously getting some of their power from centralized power plants._

Every which way. From the point of view of the residence, power is either going in or out to the line in the alley. Which is connected to the neighbor as well. The grid is not any more complex that it is today--there is the same connectivity.

 _Some residential areas would be drawing power and then five minutes later, they would have surplus power. Industrial customers would be drawing power from numerous sources at once._

Industrial customers draw power from the line (ok, some have TWO lines) that go into their building. They don't know, don't care, can't tell that it is from lots of places.

The complexity of frequency and phase matching to the grid would need to be taken care of at the residential end, not centrally.

The best point made here is that of an overnight load that leaves customer's batteries drained when they come out in the morning. I suspect that the plan was to have the vehicles plugged in by the time the evening meal/entertainment cycle pulls from the grid, and once all go to sleep to be able to charge them from the now less-loaded utility.

This is an interesting enough problem that a more disciplined article would be appreciated. There isn't really enough here to form a nuanced opinion, and I don't agree that it is in-depth as TFA claims.</comment>


What is Symbolic Computation? - <AUTHOR> http://stevelosh.com/blog/2016/06/symbolic-computation/ <comment><USER4> The difference between adding symbols to a language with product types (i.e. consing) and simply having algebraic data types in your language is that symbols are untyped, and so you're allowed to compare apples and oranges (they're inequal).

This isn't terribly useful, as it's almost always a mistake to do it. If you _do_ have a context in which you want to compare apples and oranges, algebraic datatypes force your hand to declare which types of things you'd like to compare across (e.g., specify that you're comparing any fruits, and that apples and oranges are fruits). This clarity helps form a clear mental model of how your software works and avoid bugs.

Lisp is the "hold my beer, I know what I'm doing" of functional programming languages. It, like other languages that take this stance, should be laid to rest. Time has demonstrated that programmers do not know what we're doing, and need all the machine-provided help we can get.

<comment><USER5> This is... unproductive. Time has demonstrated that language is just one part of the tooling story when it comes to developing software. It is easily one of the most talked about, but ultimately it is just another tool.

That LISP structured languages have not died despite many instances of people insisting they should have died already is almost evidence on its own that this is a non-starter.

For more relevant disputes, consider [https://docs.racket-lang.org/ts- guide/](https://docs.racket-lang.org/ts-guide/). Specifically, you can use tooling to get types into a LISP.

<comment><USER4> I have no dogma about where you implement your typechecker; all I assert is that it's better to have one. The LISP philosophy is (in my impression from the literature) that with powerful enough abstractions, one writes so little code that there is hardly any room for mistakes to sneak in, so typecheckers could provide little benefit. In one sense this thesis is plausible: at some level you either stop encoding the specification of your intended functionality into your types, or you end up programming in a theorem-proving language like Coq or Agda, which everyone seems to agree is bad for productivity. But I think we should be trying to move toward more specifications, not fewer, and solve the ergonomics problems as we encounter them.

Unrelatedly, I have worked in Typed Racket and the performance is so poor that I can't advocate its use. Of course you can profile and optimize anything, and avoid writing code which typechecks slowly, but such static analyses seem the sort of thing where incremental computation (caching, and amortization across executions of the typechecker) should make even very powerful analyses finish quickly. And Racket doesn't take advantage of the results of its typing analyses to optimize runtime representations of datatypes, so even after typechecking your code runs very slowly and uses a lot more memory than it needs.

<comment><USER6> > I have no dogma about where you implement your typechecker; all I assert is > that it's better to have one.

You seem to be suggesting that types are absent from lisp, that's not the case.

Common Lisp, Scheme, and Emacs Lisp all make use of types. They are, to a first approximation [0], all strongly typed and dynamically typed languages.

Since you're not dogmatic about the where of it, try computing:

      (+ 2 'atom)

In your favorite common lisp. It will result in an error, specifically a `SIMPLE-TYPE-ERROR`.

You can also specify types in function declarations in Common Lisp:

      (defun double-integer (x)
        (declare (type integer x))
        (* 2 x))

This will only accept integers now. Other types passed in as a parameter to `double-integer` will result in an error.

You can apply this at any level once you start building up your own types as well (structs, classes, etc.). The benefit here is that you can leave your code wide-open to allow for many cases at some stages, while optimizing or constraining it in others. This malleability is fantastic in lisps.

While I'm certainly a great fan and proponent of static type checking, the benefits of lisp's concepts (the malleability of its semantics and syntax), make it a great force-multiplier for component users. A great number of concepts become practically trivial when given the level of abstraction that lisps permit.

A good type system can give you something akin to a calculus of types.

A good functional language (here I'll include lisps even though many these days seem to discard them as such) give you a sort of calculus over computation.

But the structure of lisp (particularly its homoiconic nature) gives you a calculus over your programs syntax and semantics.

[0] The places where they may be considered weakly typed are places where it's somewhat "natural". Such as in Common Lisp where there's the numeric tower. Technically your number does stay a number, but it moves from an integer to, say, a rational when you perform a division by a non-divisor integer. It maintains the highest level of precision/accuracy possible. So `(/ 1 3)` doesn't become some 32-bit float version like `0.3333334`, but rather `1/3`, nor does it do the C thing and turn it into 0.

<comment><USER4> I don't see how "typed/untyped" is a meaningful distinction if you consider "dynamic types" to be types. If the only observable effect of the typechecker in a dynamically-typed language is a runtime error, how do we distinguish an arbitrary source of runtime errors (e.g. "throw" or "error" statements) from a dynamic typechecker? Obviously it isn't the presence of the word "type" in error messages, but what _is_ it? In the presence of the metaprogramming you describe, we can't say it's down to whether checks are inserted automatically either, since non-type dynamic checks may also be inserted pervasively and automatically with metaprogramming.

If Lisp is typed, what's an "untyped" language? One in which the user hasn't done metaprogramming to insert runtime checks? Or is the distinction just about whether it's the end programmer or the language implementor who does the metaprogramming? None of these seem like very useful distinctions.

If it's lispy to actually do a separate typechecking pass, please forgive my ignorance.

<comment><USER7> i'd say an untyped (well, weakly typed; every language has _some_ notion of types) language was one like C where you can construct a value of some type, and then treat the block of memory in which the physical representation of that value is stored as some other type.

that said, eric lippert has a good blog post on [defining our terms more precisely before even asking the question]([https://ericlippert.com/2012/10/15/is-c-a-strongly-typed- or-...](https://ericlippert.com/2012/10/15/is-c-a-strongly-typed-or-a-weakly- typed-language/))

<comment><USER8> There are in fact typeless languages that are neither statically nor dynamically typed, although they aren't particularly relevant nowadays -- BCPL, Forth, and assembly, among others. These languages have only words that hold integer values, with different operators treating the words as an integer, pointer, etc. Those who claim that only static types are worthy of the name "type" would probably consider both dynamically typed and typeless languages to be equally untyped -- dynamically typed languages just support richer semantics on their values, such as storing a "tag" (i.e., dynamic type) in each value.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Has anyone here read _Programming in the 1990s_ or _A Logical Approach to Discrete Mathematics_?

Symbolic computing is a powerful concept. How does one model something simple that we take for granted such as assignment? Here's a hint: look to Liebniz and Tony Hoare. Symbols and syntactic substitution give you powerful abstractions over expressions. Everything in Lisp is an expression. Symbols give you the ability to develop concepts built up from complex expressions. They let you reason about substitution, equivalence, etc. That's the real power: they're a tool that lets you think above the code.

And as others have pointed out, Common Lisp is typed. Type-declarations, though optional, are amenable to static analysis. And the interesting thing about Lisp that I haven't explored much yet is the ability to generate a specification in a higher-level language like PVS perhaps and generate the type annotations from that. The implementation would then have to satisfy the annotations in order to validate the program.

Nice article. _A Gentle Introduction_ is a neat book.

</comment><comment><USER10> Symbolic Computing means the computation of formulas which not only contain numbers and its operators, but also names which stand for something (a variable in some calculus, a function in some calculus, a plan operator, a note, ...). Thus McCarthy developed a language for computing with symbolic expressions: Lisp. One of the things he/they found out was that Lisp itself can be described as symbolic computation, shown by the eval procedure and by representing Lisp programs as Lisp data. But generally he had all kinds of applications in mind. One of the first applications were logic formalisms and algebra. In this case one can not only evaluate algebraic expressions, but also do computation with them...

This is from an early Computer Algebra program (Macsyma), which was written in Lisp and whose development has roots back into the 60s. Though Macsyma is written in Lisp and provides a Read-Eval-Print-Loop, it does not use s-expression-based syntax. Instead it uses a syntax, which should be familiar to most people doing algebraic calculations.

expr1 is a variable and we set it to a formula.

        (%i5) expr1:x^28 + 1;
                                             28
        (%o5)                               x   + 1

we can sum two expressions:

        (%i6) expr1 + expr1;
                                              28
        (%o6)                              2 x   + 2

exponent:

        (%i7) expr1^expr1;
                                                 28
                                         28     x   + 1
        (%o7)                          (x   + 1)

Let's factor an expression:

        (%i8) factor(expr1*3);
                           4        24    20    16    12    8    4
        (%o8)          3 (x  + 1) (x   - x   + x   - x   + x  - x  + 1)

Subtract 1 and y from the expression:

        (%i9) % - 1 - y;
                            4        24    20    16    12    8    4
        (%o9)     - y + 3 (x  + 1) (x   - x   + x   - x   + x  - x  + 1) - <USER3>

Factor the expression:

        (%i10) factor(expr1);
                          4        24    20    16    12    8    4
        (%o10)          (x  + 1) (x   - x   + x   - x   + x  - x  + 1)

Subtract 1:

        (%i11) % - 1;
                        4        24    20    16    12    8    4
        (%o11)        (x  + 1) (x   - x   + x   - x   + x  - x  + 1) - <USER3>

Simplify it:

        (%i12) ratsimp(%);
                                               28
        (%o12)                                x

Same idea: interactive computing with symbolic expressions, this time expressions from the domain of Algebra. The language also allows us to write programs:

        (%i14) myfact(n) := if n = 0 then 1 else n * myfact(n - 1)$

        (%i15) myfact(10);
        (%o15)                              3628800

It allows us to write functions for symbolic expressions, for example to implement integration, etc.

<comment><USER11> If you like that, it lives on in the open-source "maxima" (just an apt-get install away).

</comment></comment><comment><USER12> What an awesome resource to introduce someone to lisp. I would add "On Lisp" by Paul Graham to the final recommendations. If you don't mind quite a bit of opinionated writing, "let over lambda" can be a fun read too.

</comment><comment><USER13> In the simple sense, I understand symbolic computation as transformation of text. In more general sense, all information is based on symbols ("letters"), so transforming one information into another is a symbolic computation.

<comment><USER14> Amateur perspective here...

My understanding is that it is the transformation of lists of symbols. This is one step above parsing characters/runes into more meaningful primitive data. Lisp has facilities for manipulating trees of data. The book Land of Lisp makes this distinction clear in an interesting way: they implement a text adventure, and they separate the notion of words or concepts (model) from their final string representation (view). For example, you can express a phrase with something like

      '(you see exits leading (exit east) , (exit west) , and (exit north))

or

      '(you see exits leading (series (exit east) (exit west) (exit north)))

Run this through your parser for that list of lists of symbols, and you may end up with

      You see exits leading [east], [west], and [north].

where east, west, and north are highlighted if expressed on the console or converted into appropriate URLs if expressed in HTML. You can also imagine a potential here for language conversions.

Along similar lines -- with due credit to the PAIP book -- you could separate the notion of some mathematical formula from its inputs. Do manipulations, simplifications, whatever, and THEN provide inputs. This suggests that with symbolic computation and some macros, you can assist the Lisp compiler in coming up with the speediest version of some formula. Or expression. Or template output.

Not sure how to get an exact link to this comment, but look at sklogic's back- and-forth with me here for more uses of this: [https://news.ycombinator.com/item?id=11589614](https://news.ycombinator.com/item?id=11589614)

</comment></comment><comment><USER15> Peter Kogge's 'The Architecture of Symbolic Computers' is a great book on Lisp and Lisp machines and much more. It explains a lot of the questions this post has elicited.

</comment><comment><USER16> I think there's an extra "the" in the sentence:

 _If you already know the some Lisp…_

</comment><comment><USER17> Symbolic computation is when you evaluate a binary executable as a math expression. You might try to solve for inputs that cause a crash. It's difficult due to well-known issues with the famous halting problem, but in practice you can get useful things done.

<comment><USER18> Are you thinking of symbolic _execution_?</comment></comment>


Andrew Chen: Stop asking "Does the world need another social network?" - <AUTHOR> http://andrewchen.typepad.com/andrew_chens_blog/2007/06/stop_asking_doe.html <comment><USER2> Heh, I was there first: <http://news.ycombinator.com/comments?id=2028>

</comment><comment><USER3> Blog title makes it sound like you're yelling at yourself in third person. :-)</comment>


Ask PG: Link to comments in RSS - <AUTHOR>

Like many of you, I read Hacker News through an RSS reader. The Hacker News RSS only has title links, no preview or link to the comments page (unless the item has no URL, like this one). To go to the comments page, you have to navigate to news.ycombinator.com, find the item you want, and click on comments. PG: can you please add a link to the comments page from the body of each RSS item. Thanks! <comment><USER2> There are comment links in the rss feed. Some readers show them and some don't. If anyone can give me the exact syntax that would work in the latter, I'll try it.

<comment><USER3>
      <item>
        <title>Ask PG: Link to comments in RSS</title>
        <link>http://news.ycombinator.com/item?id=112684</link>
        <comments>http://news.ycombinator.com/item?id=112684</comments>
        <description>
          <a href="http://news.ycombinator.com/item?id=112684">comments</a>
        </description>
      </item>

<comment><USER4> Or like this:

      <item>
        <title>Ask PG: Link to comments in RSS</title>
        <link>http://news.ycombinator.com/item?id=112684</link>
        <description><![CDATA[Comments]]></description>
      </item>

<comment><USER2> Ok, does it work now? Here's what I'm doing:

      (def rss-stories (stories)
        (tag (rss version "2.0")
          (tag channel
            (tag title (pr this-site*))
            (tag link (pr site-url*))
            (tag description (pr site-desc*))
            (each s stories
              (tag item
                (let comurl (+ site-url* (item-url s))
                  (tag title    (pr (eschtml (s 'title))))
                  (tag link     (pr (if (blank (s 'url))
                                        comurl
                                        (eschtml (s 'url)))))
                  (tag comments (pr comurl))
                  (tag description
                    (pr "<![CDATA[")
                    (link "Comments" comurl)
                    (pr "]]>"))))))))

<comment><USER4> Bloglines now shows the link twice, one from <comments> and one from <description>.

<comment><USER2> Argh. Can _anyone_ tell me a format that will work on all readers? Is the answer to ditch the comments field?

<comment><USER5> I also see them twice, but it doesn't bother me. Just leave it as it is.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I brought this up a while ago here: <http://news.ycombinator.com/item?id=35363>

I was using Google Reader, and there was no comments link, but have since switched to NetNewsWire (OS X) where everything works correctly. It doesn't look like it'll change.

<comment><USER7> That's really odd. NNW for me doesn't show links, and never has...hmm, too bad it doesn't keep track of when I subscribe to feeds, but I'm fairly sure that's how it's always been for me.

<comment><USER6> Hmm, actually it might depend on the theme you're using. I'm using the Ollicle Reflex theme ([http://www.ollicle.com/2006/nov/28/jquery_netnewswire_style....](http://www.ollicle.com/2006/nov/28/jquery_netnewswire_style.html)) and it displays the comments link neatly in the right column.

</comment></comment></comment><comment><USER8> A while ago someone (sorry, forget the name) created an alternative feed which shows a link to the comment page: <http://harumi.ath.cx/newsyc>

Works fine with Google-Reader.

</comment><comment><AUTHOR> I'm using Vienna (OS X) which as far as I can tell works perfectly for every one of the other 200+ feeds I subscribe to - but not for Hacker News. It looks like simply replacing the <comments> tag with a description tag containing (only) a hyperlink to the comments page would fix the problem. Many readers ignore the <comments> tag.

<comment><USER9> Whatever's up now is working with Vienna. I see a comments link.

</comment></comment><comment><USER5> I see links to comment pages for all items, so perhaps it's your RSS reader?

But it would be nice to see the submission text.

<comment><USER10> NetNewsWire shows link to comments

</comment></comment><comment><USER11> +1 :-) I don't see links to comment pages for all items... using google reader</comment>


Ibis: Scaling the Python Data Experience - <AUTHOR> http://www.ibis-project.org/ <comment><USER2> "A pandas-like data expression system providing comprehensive coverage of the functionality already provided by Impala. It is composable and semantically complete; if you can write it with SQL, you can write it with Ibis, often with substantially less code."

This sounds really interesting, but my biggest gripe with pandas is that I often know exactly the query I want to run with SQL but have to jump through a ton of hoops and a weird join syntax to figure out how to make the query in pandas. IMHO if you want to make data processing language as full-featured as SQL, why not just use SQL as the query language...

<comment><USER3> Having both designed pandas and suffered from some of the rough edges of pandas when used in a database-like way, I tried to be thoughtful in designing the Ibis API to be semantically complete with SQL (i.e. so you shouldn't _have_ to write any SQL) and a great deal more productive and reusable than SQL. I suggest you give it a serious try before passing judgment!

</comment></comment><comment><USER4> How is this different/better than PySpark? [https://spark.apache.org/docs/latest/programming- guide.html#...](https://spark.apache.org/docs/latest/programming- guide.html#tab_python_0)

<comment><USER5> That's directly addressed here: [http://www.ibis- project.org/faq.html](http://www.ibis-project.org/faq.html)

</comment></comment><comment><USER6> What are the main differences of this architecture when compared with the Apache Spark ? Something that I see as a nice advantage is the Python -> LLVM IR, but I can't see what are the main advantages over Spark.

<comment><USER3> Makes most sense to compare Impala and Spark architecturally. Ibis will eventually integrate with Spark. We've been focusing on Impala integration for reasons cited here: [http://blog.cloudera.com/blog/2015/07/getting-started- with-i...](http://blog.cloudera.com/blog/2015/07/getting-started-with-ibis- and-how-to-contribute/)

In particular, we're working on byte-level shared-memory integration with Impala (which is implemented in C++ with LLVM runtime codegen — the project's tech lead, Marcel Kornacker, was the tech lead for Google F1's query engine) to run user-defined logic without data serialization / memory usage overhead. This also opens up Python's HPC / scientific computing stack and existing data libraries to be run in a Hadoop setting without Python-JVM interoperability issues.

<comment><USER7> Are you planning on leveraging numba, or will this be a new way to generate LLVM bytecode from python?

<comment><USER8> I was wondering this also</comment></comment></comment></comment>


Finding Linux Compatible Printers 2019 - <AUTHOR> https://haydenjames.io/finding-linux-compatible-printers/ <comment><USER2> Trying to get my HP LaserJet 1020 hooked up to Debian 9.8 yesterday made me think about retiring and moving to a small college town and opening up a pizza place.

</comment><comment><USER3> Why are printers still even aware of the OS a printer job comes from? Why aren't they all just a standardized service on a network? I assume there's a reason other than "just because printer companies don't want to do that."

<comment><USER4> Such printers do exist, have existed for thirty years, they're called "network printers" and they've always been simple to get to work with Linux. Lexmark, HP and Brother make fine printers in this class.

However, the printer most of you buy is a cheaper thing with a USB plug, a GDI driver and flimsy movable parts.</comment></comment>


Fast Company: The Perils and Promise of the Reputation Economy - <AUTHOR> http://www.fastcompany.com/magazine/131/on-the-internet-everyone-knows-youre-a-dog.html

<comment><AUTHOR> Seems like a follow up to the RWW post that the days of anonymous posters are numbered.</comment>


Finding the Words to Describe a Disaster: The Lisbon Earthquake in 1755 - <AUTHOR> https://www.laphamsquarterly.org/roundtable/finding-words-describe-disaster <comment><USER2> Interestingly, this earthquake is a key part of the evidence that a new subduction zone may be starting to form off the coast of Portugal. (E.g. Duarte et al, 2013 [https://www.researchgate.net/profile/Joao_Duarte9/publicatio...](https://www.researchgate.net/profile/Joao_Duarte9/publication/237145222_Are_subduction_zones_invading_the_Atlantic_Evidence_from_the_southwest_Iberia_margin/links/00b4953262121edb89000000.pdf) )

<comment><USER3> So the Atlantic will go with the way of the Iapetus:

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

<comment><USER2> Eventually! Don't rush on buying your future mountain view property, though. It'll take tens to hundreds of millions of years to happen.

</comment></comment></comment><comment><USER4> This point seems to be missing in the text:

[https://en.wikipedia.org/wiki/1755_Lisbon_earthquake#Philoso...](https://en.wikipedia.org/wiki/1755_Lisbon_earthquake#Philosophy)

"The earthquake and its aftermath strongly influenced the intelligentsia of the European Age of Enlightenment. The noted writer-philosopher Voltaire used the earthquake in Candide and in his Poème sur le désastre de Lisbonne ("Poem on the Lisbon disaster"). Voltaire's Candide attacks the notion that all is for the best in this, "the best of all possible worlds", a world closely supervised by a benevolent deity. The Lisbon disaster provided a counterexample."

<comment><USER5> "To nature we apply for truth in vain, God should His will to human kind explain." \-- Voltaire

</comment></comment><comment><USER6> Talk about a perfect storm. Earthquake, fire, then when you thought it was finally over...the largest tsunami in history. That probably helped with the fire, at least.

</comment><comment><USER7> Since the release of Moonspell album "1755" and I occasionally read about this event! before that, I have never heard of the disaster!

</comment><comment><USER8> "you dont have permissions to access...."</comment>


Artsy's new iOS7-only iPhone app - <AUTHOR> http://iphone.artsy.net

<comment><USER2> The splash page linked here is a 1-page app written in JS and running on node.js. It has a couple interesting things, scroll down and watch it animate inside the iPhone. The code is open-source, [https://github.com/artsy/flare](https://github.com/artsy/flare).

<comment><USER3> There is a small typo in the link to iphone.artsy.net in your readme.md

<comment><USER2> Thanks, fixed. We do take pull requests too :)</comment></comment></comment>


Purging The Stupid - <AUTHOR> http://www.sfgate.com/cgi-bin/article.cgi?f=/g/a/2008/08/29/notes082908.DTL <comment><USER2> See: StupidFilter

Also, when it comes to YouTube, I think a script that simply got rid of all comments would approach 100% accuracy for stupidity since the number of worthwhile comments is so infinitesimally small.

<comment><USER3> The only time YouTube comments have ever been useful to me was when they identify a song that is played during the video (as a soundtrack to something or part of a mixtape that was posted online.) Admittedly the videos that have these songs that I tend to look for usually have less than 1000 views, so your theory of getting rid of all the comments would still be pretty accurate.

</comment></comment><comment><USER4> I was hoping for a eugenics article.

</comment><comment><USER5> I hacked up a quick GreaseMonkey script a while back to do something similar when there were a few trolls at YayHooray consistently posting gay porn in every thread.

The admins eventually got a nice karma system in and the gay porn stopped immediately.

<comment><USER6> hey there, YH buddy :D

</comment></comment><comment><USER7> The problem with censorship is where it goes. While some comments do indeed add little value, who should be the judge of value?

If it isn't you then who is to say that the person judging isn't removing value from you to reinforce their point of view.

Almost worse if it is you, then what is to say we aren't going to create a society of echo chambers, where you can tailor the internet to read what you want or expect it to read.

I'm sure we could expect a Conservofilter. Wouldn't that be a great day for humanity when schools can install something that removes all those "unscientific" comments about Darwin on a nice wholesome YouTube post.

Comments should still remain, primarily, about freedom of expression even if most of that expression is just there to remind you of the illiteracy of the majority of the population.

<comment><USER8> Like a bayesian spam filter: your blog goes through a training period in which one manually retrains the filter with entries one considers stupid. It could work.

</comment></comment><comment> daniel-cussen I thought of doing this a while back. Call it "shiningarmor" and have a knight slaying a troll, or something. Seems like there's a need for it; I remember Mike Arrington saying he had to spend an hour a day erasing troll comments on Techcrunch.

</comment><comment><USER9> The author lumps "mean as a snake republican" (doubtlessly, opposing Obama or Universal Healthcare) with outright stupidity and unreadability? I guess some stereotypes of San Francisco culture are true.</comment>


We need a future where the robots benefit all of us, not just the rich - <AUTHOR> https://www.nytimes.com/2015/03/22/opinion/sunday/why-not-utopia.html

<comment><USER2> The problem with a universal wage is that it doesn't increase the availability of things like real estate, education, and healthcare. As more people have money it will create more inflation on these goods and services and then we are back to where you started except that $2,000/month will be worth the equivalent of $200/month. I think we would be better off with free education, expand housing stock in growth centers like NY or SF to bring down the cost of living.

<comment><USER3> Yeah, these are the three things I worry the most about. Some popular proposals...

\- Health care. Single payer system. Perhaps expand Medicare by lowering the age to 60, 55, 50, etc.

\- Subsidized education rather than the current loan based system. Start with the free community college proposal.

\- Real Estate. This is a hard one. Invest on schools even if they are not in the good districts. Build appropriate housing for seniors.

</comment></comment><comment> mycroft-holmes > We have achieved a level of social equality barely imagined by progressives > 50 years ago, but economic equality has gotten much worse.

The is essentially the main point of the op-ed. I wish everyone could read PG's How to Make Wealth. [http://www.paulgraham.com/wealth.html](http://www.paulgraham.com/wealth.html)

<comment><USER4> That seems like a problem of envy then, which is fine since the onus is now on the person to solve that himself.

</comment></comment><comment><USER5> They misunderstand the negative income tax. My understanding is it doesn't require work necessarily. In function, it's a guaranteed basic income. Milton Friedman on Negative Income Tax -- [https://www.youtube.com/watch?v=xtpgkX588nM](https://www.youtube.com/watch?v=xtpgkX588nM)</comment>


Evidence of Google fanboy bury brigades on HN - <AUTHOR>

http://i.imgur.com/fSJqq.png
Link to censored post http://news.ycombinator.com/item?id=3543664
Digg-style bury brigades that flag negative news for Apple/Google or any positive news for Microsoft. So much so that Winsupersite is hellbanned. Really sad. <comment><USER2> To be sincere, the article and the video are pretty bad. The argument and the comparison between Office 365 and the free version of Gmail is, at best, dishonest.

And I have seen massive downvotes very frequently when I criticize Microsoft.

</comment><comment><USER3> HN never lacked in Google-bashing. You could have chosen an example less worth of being flagged though, a post with substance that doesn't depict Microsoft as a deceitful FUD peddler.</comment>


Ask HN: People making $150k+ / yr, what was your career path? - <AUTHOR> I have been contemplating jumping ship from Python / C at a small company to Enterprisy Java at medium to large corp.
This comes after the realization of having no visible career path despite being good and working hard and most friends (Java / C#) jumping to $150k+ jobs.
Thank you, responses would really give some helpful insights. <comment><USER2> From my experience language and years of experience have very little to do with salary IF you stay at the same employer. To get frequent salary and title bumps you HAVE to move employers. It's the single fastest path to more money. Move every 3 years at a minimum and never accept a lateral move or for equal pay with new title. Your future salaries will depend on your previous comp, not by title.

Also, independent contracting is often a better option than employment in most parts of the country, but you have to be independent (1099-MISC, never W2). Being a W2 at a consulting company is just as bad as anywhere else. Independent consulting will get you a 2x bump instantly assuming you can find a full time gig but that's usually not that difficult. Furthermore, as a 1099, you'll be able to put away far more in retirement savings. I recommend an LLC with a 401K (not SAP), max out your personal contributions and then kick in another 6% from your 'company'. You'll be socking away ~50K in retirement alone this way while lowering your taxable income. Compare that to your 16K/year max as W2.

Another trick: if a company ever offers you a larger than usual bonus for some reason (i.e. retention, goal met etc) leave the next year when it shows up on your W2 and ask the next employer to merely 'match' your current W2 without breaking out base salary and bonus. I've scored 50% pay increases this way.

Following the above methods, I was making $180K+ at my 8 year mark and $230K+ at my 12 year mark. Most of this happened in the midwest although I currently live in the bay area.

<comment><USER3> Could you elaborate more on what you actually do?

I am really trying to understand how someone is worth $230k+

I am a server-side guy with a CS degree, proficient with C, C++, Java, bash scripting, and some .NET, PHP, Node.js, and I have never gotten close to even $180k in salary, and I have been working for almost 20 years, and I am in the Bay Area.

<comment><USER2> First time I made 230K+ was as a contractor at $120/hour. For several years my fees ranged $105-120/hour. My niche were rule engines (Drools, JRules, FICO Blaze) but I came out of the plain vanilla backend Java world and fortune 500s. In fact, that's where I discovered this need. These days I have moved into management and lead 3 dev teams in the Big Data space.

<comment><USER4> I'm looking for a contractor who knows rules based linear integer programming systems like Gurobi or CPLEX (or open source variants). Can you shoot me an email with recommendations? It's in my profile.

<comment><USER2> Sorry to say the only constraints based programmers I know are all PhDs in Operations Research and they run Target's logistics.

<comment><USER4> We're working with the head of the University of Illinois operations research lab. Would they be interested in the contracting with academic research in mind?

</comment></comment></comment></comment></comment></comment><comment><USER5> Perhaps I'm an outlier but this was my progression.

Got 90k job out of college in NYC. Worked on a legacy PHP app with some Python, Java, Hadoop occasionally in there.

Negotiated salary to 100k + 10k bonus after one year and good performance reviews.

Next year asked for a bonus increase. 120k total now.

Started getting bored at the job. Asked around, got a 135k offer from another company. Went to my current employer and said if I don't get 150k I'm leaving. They said they could do 140k. I went back to the other company and told them their offer and they gave me 150k.

It has less to do with skillset or language choice than it does with just being able to negotiate and iterate on offers and take the opportunity when you can.

<comment><USER6> Good comment. I totally agree that after a certain point in career, it comes down to how well you can negotiate. When you start, you don't have a lot of say in terms of salary (well may be you do if you are the cream) but after you have about 5+ years of good experience, you need to learn how to negotiate.

Sometimes when you are in a strong position, you gotta bluff. If they call it, then no worries as you have nothing to lose. If they don't call your bluff, you may just have got a $15K raise :)

</comment></comment><comment><AUTHOR> Thank you all for your responses.

Sorry for not mentioning what areas I had in mind. I was talking about friends in Dallas, Atlanta, New York and Raleigh among others.

We are talking 5-8 years of experience.

I have seen and tried to follow the advice in this thread and it has not worked out.

Maybe I'm doing something wrong, or I'm just not good enough yet. I get a lot of interview calls, but the salaries offered are nowhere in the ballpark of $150k.

Also, every friend of mine, that I have spoken to, is doing either Java or C#, none that I know mention Python. When they offer me referrals I politely turn them down due to lack of experience in the Java and C# stacks.

I'm not a ninja or a rockstar but I get work done. My current role is one that requires me to learn all sorts of new things and thus my resume is a splattering of all kinds of skills.

I just want to stop worrying about my future and focus on enjoying family, hobbies and hobby projects instead. (But then who doesn't?)

It would also help me greatly if people could mention if the advice being given has worked out for them also.

I don't want to sound mean/ungrateful/rude, I really do appreciate all the help.

<comment><USER7> I understand your frustration perfectly.

I'm a Java guy, but I can only work remotely (as I'm from Romania/EU), and it seems all the job posts are either Python or Ruby.

Too bad we can't trade jobs.

</comment></comment><comment><USER8> > the realization of having no visible career path despite being good and > working hard ...

Scott Adams talks about how one can dramatically increase their odds of success by learning multiple skills. You might imagine adding languages to your skill set is a smart play. Learning the Art of Negotiation on top of those skills is a force multiplier.

Incidentally, Adams book is a brilliant read, full of solid, unconventional career advice > [http://www.goodreads.com/book/show/17859574-how-to-fail- at-a...](http://www.goodreads.com/book/show/17859574-how-to-fail-at-almost- everything-and-still-win-big)

</comment><comment><USER9> I joined the army and got trained to be an Arabic linguist. That was getting old and frustrating, so I taught myself javascript/ksh/Tcl and made some dumb applications at work, which was enough to get noticed by some neighboring IT shops (I was out of the army, working as a contractor by this time).

I ended up doing Groovy, then Java, and now I'm in the government version of "Enterprisy Java" and I feel stuck myself. 150k isn't that much if it leaves you empty inside.

<comment><AUTHOR> True, but do you think it would be different if you had chosen a different stack? Honest question.

Doesn't that 150k lets you afford other fun stuff?

<comment><USER9> It would if I didn't have mouths to feed, taxes and rent. I'm starting to prefer time over money at this point.

I think my stuckness has more to do with working at a place that's always a few steps behind the private sector, so nothing I'm doing really translates well into finding new work. It doesn't help my confidence, that's for sure.

Besides, if anyone _is_ looking for an experienced Java 7, Spring 3.2, Oracle dev, I probably don't want to work there either!

I know the way out is side projects, building a portfolio, contributing, etc.. and being able to prove (to myself too) that I can do more than what I'm doing currently..

It's the odd coupling of frustration and complacency that I need to figure my way out of.

</comment></comment></comment><comment><USER10> Learn Java, Javascript, and Python, then move to San Francisco. You can pull in a base salary of $150K within 4 years of graduating if you get jobs at hot/popular companies.

That said, due to its high cost of living, $150K isn't _that_ outrageous in San Francisco. You can use online cost of living adjusters to see what the equivalent salary would be in areas you're familiar with.

<comment><USER11> I was about to say, this is all relative to the location.

Living and making $90k in Atlanta is the equivalent of living and making $150k in San Francisco.

[http://money.cnn.com/calculator/pf/cost-of- living/](http://money.cnn.com/calculator/pf/cost-of-living/)

</comment></comment><comment><USER12> You can make $150K+ by doing some really mind numbing work. I am seriously considering almost halving my salary to do something that gets me excited to go to work again.

Anyways, like other people have mentioned timing can be very useful. In trying to leave I was offered raises and from one guy a chance to take on whatever role I wanted to. Still leaving though.

</comment><comment><USER13> Salary is a function of perceived importance it has nothing to do with the language. There just appear to be a lot of high paying Java jobs, because there are a lot of companies still using Java as their lingua franca.

Most programers will tell you that the pay scale in software is like a hockey stick curve. Up really fast then flat line. Therefore, you move to the top of the S curve and then stick around long enough to approximate O(n).

<comment><USER14> Strange that you use a hockey stick for your analogy when most would visualize it the opposite; flat and then a steep incline. As that's how it's held.

</comment></comment><comment><USER15> Please include your location. In SF Bay area, outside GOOGFBAMZNMSFT, if you put in 10 yrs of work and jump companies once in a while you should get there. (I am from semiconductor background)

<comment><AUTHOR> I was aiming for any of the major cities (except SF for which I would hope for a little more).

</comment></comment><comment><USER16> It also depends on what part of the country you're looking at. If you're in the SF Bay Area 150k+ within range of entry level jobs for software grads. If you're in the Midwest or East Coast (not finance) 150k+ could mean a decade of experience.

</comment><comment><USER17> It's the role, not the languages that provides that kind of career path. If it was purely that, becoming a mainframe systems programmer would probably provide you a good sinecure these days. Instead it's using your Python to become, for example, a cloud orchestration expert or something in sufficiently hot demand. I'm not convinced that becoming another Java zombie would be any more lucrative that what you could do with your current base.

<comment><USER18> Let's not throw around the term Java zombie, there are lots of high paying and interesting roles within the Java world, every language has boring jobs.

To the OP the hot and well paid areas of Java development at the moment seem to be around:

Spring Boot/Hystrix/Feign Play Framework Java 8 Hadoop Spark ML

From what I've seen of the hiring market Android looks to be one of the hottest areas, there is a real dearth of good quality talent in this field.

<comment><USER19> What kind of places would be looking for native Android developers? I was learning Android a year ago but decided to switch to web because I figured there would be more opportunities.

</comment></comment></comment><comment><USER20> Working at the same job in Financial Services for 10 years.

You have to continue to self-learn and improve yourself.

<comment><AUTHOR> I do, and I do understand the point your trying to make, but the growth potential also depends on the company, not just the employee.

</comment></comment><comment><USER21> What does your salary history look like and how many jobs have you worked at?</comment>


Structural Eye Color Is Amazing - <AUTHOR> https://medium.com/@ptvan/structural-eye-color-is-amazing-24f47723bf9a <comment><USER2> I knew that blue eyes were due to light scattering but didn't know the theory that excess collagen resulted in a grey eye colour. I have blue-grey eyes - they look more blue in bright light (pupil contracted) and more grey in dim light (pupil expanded). Great pictures too for a post created in an hour and a half.</comment>


Introducing Bandit, a Python code security analyzer - <AUTHOR> https://wiki.openstack.org/wiki/Security/Projects/Bandit

<comment><AUTHOR> "Bandit provides a framework for performing security analysis of Python source code, utilizing the ast module from the Python standard library.

The ast module is used to convert source code into a parsed tree of Python syntax nodes. Bandit allows users to define custom tests that are performed against those nodes. At the completion of testing, a report is generated that lists security issues identified within the target source code."

Wiki page is linked above ([https://wiki.openstack.org/wiki/Security/Projects/Bandit](https://wiki.openstack.org/wiki/Security/Projects/Bandit)), and browseable code is at [http://git.openstack.org/cgit/stackforge/bandit/](http://git.openstack.org/cgit/stackforge/bandit/).

We'd love to hear about people who are using this - feedback and suggestions welcome.</comment>


OS shoot-out: Windows vs. Mac OS X vs. Linux - <AUTHOR> http://www.infoworld.com/article/08/12/24/52FE-windows-mac-linux-shootout_1.html

<comment><USER2> Nice to see Mac getting more popular. I wish the linux desktop solutions would look more closely to how mac works then how windows does.</comment>


Ask HN: Why doesn't Google get it? - <AUTHOR>

Maybe I'm crazy, but why doesn't Google do something outlandish next time they try a social product?  How about instead of opening it up to everyone and replicating 98.2% of the features the other products have they actually try doing something useful for once?
Here's a ridiculous idea.  I'm not interested in creating 14 circles with 22 people in each one.  I don't want to group video chat with these people.  I don't want to IM with these people.  I sure as heck don't want to share photos from Picasa of all places with these people.  Stop taking other products that already do their job and do it well by bringing it all into one.  If an entrepreneur pitched me this idea, I'd tell him to slow down.  What problem is he solving for me with +?  I have no clue.  Sharing?  Not a problem.  Chatting?  Not a problem.  Video conferencing?  Not a problem.  Group sharing based on a common interest?  Not a problem.  Random news or information (sparks)?  Not a problem.
Focus on a product that enhances my actual social network.  My closes friends.  Maybe that's limited to 5 circles with 10 friends each, maybe it's less.  Maybe my friends from each circle belong in more than one circle.  Maybe I want to share information with just a cross section of those circles.
I know that's a lot of maybes, but I just wish Google would stop replicating and combining services that are already out there.
End of rant.  I'll try + again in a month when I'm proven wrong by all of my friends using  it. <comment><USER2> With G+, I'm seeing a change in emphasis that I like very much. In FB, when I post something, I'm not thinking about who's going to see it. In G+, I spend a little bit of time thinking about who this is for. I'm guessing this makes it more likely to engage in interesting varied types of conversations on G+ than the standard pub-like generic small talk that ends up happening on FB.

</comment><comment><USER3> So what problem _do_ you have with social networking?

<comment><AUTHOR> I actually don't have a problem with social networking. I know where FB and Twitter sit in my world. I use both of them regularly. I don't see how + is significantly different than either of those products. I've already hidden most people I don't need to see on my FB feed and of course Twitter is curated by people I'm interested in. What else am I missing here?

EDIT: Let me follow that up by saying that the majority of my conversations that could be considered 'social', still happen in email. Is that a problem someone could solve? Or is that too far fetched to be solved by a social network?

<comment><USER3> Then Google+ isn't for you. If you don't have a problem, why go looking for a solution?

<comment><AUTHOR> That's a valid question. Maybe you're right. Let me explain it to you this way if I may. I may not be sure if I have problem, until it's explained to me that I'm missing something and thus a problem appears (isn't all marketing just that?). For example, my Dad runs a small biz and every week collects his employees time information by hand and calls Paychex to input the payroll. He doesn't really have a problem doing this, although it takes up nearly one hour if not more a week for him (or every other week). When I showed him tools that automated this for him and saved him time, he was quite thankful. He didn't realize he had a problem spending one hour every week (or every other week) doing this work, until I showed him a solution that made his current system seem problematic.

At the moment I feel like there is more to social than just FB, TW and email. However, I can't quite pin point it myself - and I've tried. I was hoping someone quite smarter than me would do it, but they missed, and a by a lot in my opinion.

</comment></comment></comment></comment><comment><USER4> They did something outlandish with Wave. How did that turn out?

<comment><AUTHOR> Was it? I thought wave was just a combination of chat, docs, email. It didn't solve any particular problem I had, it just combined everything I used to collaborate with people.

<comment><USER5> [http://www.slideshare.net/padday/the-real-life-social- networ...](http://www.slideshare.net/padday/the-real-life-social-network-v2)

<comment><AUTHOR> Yes yes yes. I saw that a while back and figured that's the only man on the planet that could actually solve this problem intelligently :)</comment></comment></comment></comment>


TurtleCoin: We want to make the blockchain accessible to everyone - <AUTHOR> http://www.blockzero.show/7ffca55a <comment><USER2> Big fan of turtlecoin, very welcoming community which is really easy to get code into. My first project I've done a lot of contributing to, simple to get involved and dig into the core codebase and learn more about what makes a crypto tick. I've learnt a lot about monero/bytecoin/cryptonote just from hacking away on some bugs in the code.

<comment><AUTHOR> Awesome. This Kevin Rose podcast is what got me interested, and I've been paying attention to Turtle for a few weeks now. I feel the same way you do about the community.

Turtle is my first experience with mining, JSON-RPC / interfacing with a blockchain, CLI wallets and various other cryptocurrency concepts. I've learned a lot in a short time.</comment></comment>


Gitkraken no longer free for self hosted repos - <AUTHOR> https://blog.axosoft.com/gitkraken-v6-0/ <comment><USER2> This article is mainly about performance improvements, so I guess GitKraken wanted to remain competitive since Sublime Merge was released. But not being able to use it for private repos (sometimes I work on a project I plan to release as open source in private until I'm ready for the world to see it) without paying yearly is potentially a deal breaker for some, no?</comment>


Winnipeg 'chocolategate': Does a box of treats come with strings attached? - <AUTHOR> https://www.theglobeandmail.com/opinion/article-winnipeg-chocolategate-does-a-box-of-treats-come-with-strings/ <comment><USER3> "But even token gifts such as a box of chocolates or a coffee mug can have a surprisingly large (albeit subconscious) effect. Trinkets and baubles – small gifts of all kinds – help to establish a friendly relationship between the gift-giver and the gift recipient. As one researcher astutely observes, people who don't recognize the power of small gifts are precisely those most likely to be influenced, because their defences are down."

I firmly believe in this.

Every year for Christmas I give out $1 scratch-and-win cards to any and all of my co-workers I know that are around for the holidays, and personal Christmas cards to all of the higher ups, including the CEO. It costs me around $100, but I feel like over the course of the year I get way more than $100 in good will from the recipients.

</comment><comment><USER4> The example doesn't include money, by it reminds me of a different viewpoint that I have about politics.

My belief is that "corruption" is the normal state of traditional government. Previously I had considered this mainly to be about money, but the article makes me think that social factors may play a strong role as well.

Basically, my idea is that it is not realistic to expect people to disregard their social networks and potential profits in the service of the public. It is a nice idea in theory, but it seems that it has been proven that social dynamics and money are stronger motivators than the public good. And that in many circumstances, possible criminal or moral repercussions are not a sufficient deterrent to breaking the public trust.

In my opinion the situation can be improved by better integrating technology into the structure of government, money and society. I think we need more advanced and technical forms of government and money.

</comment><comment><USER5> > Those who see no ethical problem with small gifts to public servants should > try imagining how they would feel if they were litigants in a civil trial > and discovered that the judge trying the case had accepted even a free cup > of coffee and a doughnut from the other party to the case. [...]

> Similarly, elected officials owe their unbiased judgment to the people who > elected them. By accepting gifts, even a token gift such as a box of > chocolates, they put at risk the impartiality of their judgment, thereby > undermining their ethical obligation as public servants.

<comment><USER6> The example of the judge is an instructive one, although a little extreme. Due to the immense power vested in judges, even the tiniest perception of bias must be avoided.

For instance, we might find it a bit troubling if the judge in a case is golfing with one of the lawyers on the weekend while the trial is ongoing, even if no gift or consideration is involved. Judges must also take care not to comment publicly on politics and thereby threaten their independence from the executive and legislative branches of government.

In contrast, in the Winnipeg city council example the gift is from the mayor to council members - all of them. They are all elected officials, including the gift-giver, and they work together on a daily basis. In fact, they might in the normal course of their jobs declare open allegiance or opposition to the positions of another member. Unlike a judge, who is sworn to impartiality and must exercise her judgement solely based on the facts before her, politicians are elected by the public based on their express declaration of partiality to a particular set of viewpoints. If we learned that the Mayor golfs with certain city council members who are known to oppose his policies, we might commend him for reaching across the aisle and fostering dialogue.

So while elected officials must be free from bribery, I don't think it's appropriate to apply the same standard with respect to token gifts that we would apply to a judge who acts as a finder of fact within an adversarial system.

<comment><USER7> >The example of the judge is an instructive one, although a little extreme. Due to the immense power vested in judges, even the tiniest perception of bias must be avoided.

You can avoid being subject to a judge by not violating the law.

You cannot avoid being subject to the law.

If you think the "tiniest perception of bias must be avoided"for judges (who interpret the law), then the same extends to those who write it.

<comment><USER8> _If you think the "tiniest perception of bias must be avoided"for judges (who interpret the law), then the same extends to those who write it._

Actually it's not just his thoughts, it's the ethical guidelines on the books. The same standards don't exist for city councils, for obvious and easily comprehensible reasons.

[https://www.uscourts.gov/judges-judgeships/code-conduct- unit...](https://www.uscourts.gov/judges-judgeships/code-conduct-united- states-judges#c)

</comment></comment></comment></comment><comment><USER9> Sometimes I think this stuff gets way, way, way overblown. Maybe not in the case in the article but let me give you something that happened this week to me.

We've had food trucks out to my office for 3 years and change now. Wednesday it was communicated to us from corporate that we've been supporting something in direct violation of 'company solicitation policies'. That's right, by inviting a food truck out every few weeks, using our own money, on our own time, to buy food to eat on our lunch breaks we are supporting solicitation... _facepalm_

We get 30 minutes for lunch, we have 2 freezers and 3 microwaves for 100-something people. The closest fast food place is 7 minutes or so away depending on traffic, just walking to your car after clocking out eats up a minute plus. We aren't allowed to eat at our desks.

Are you fucking kidding me? Calm down, we aren't be coerced or bribed by someone selling us overpriced food.

</comment><comment><USER10> Just have a method of anonymizing the gift giver's identity? That way they can still feel appreciated for their past actions without knowing exactly whom the gift came from.

<comment> loa-in-backup Unfortunately this would have an added effect of allowing malicious gifts.

On the other hand if someone were to inspect the gifts, that person could (but wouldn't have to) be eager to disclose the identity of the giver.

</comment></comment><comment><USER11> > How could anyone reasonably suppose that the impartial judgment of city > councillors (or anyone else) could be seduced by a gift of such paltry > value?

Reminds me of a line in Mitch Albom's excellent basketball book, The Fab Five: "If you think people aren't impressed by cakes and liquor, you must be from the suburbs."

</comment><comment> munk-a This article has quite a few cringe worthy writing snippets in it. I find the use of leading trick questions to be a terrible habit.

> Common sense would seem to agree with her ruling. How could anyone > reasonably suppose that the impartial judgment of city councillors (or > anyone else) could be seduced by a gift of such paltry value?

> And yet [...]

</comment><comment><USER12> If there are no strings attached.... there's no reason to send the gift.

<comment><USER13> How about as a token of appreciation for their past rather than future behavior?

<comment> munk-a By rewarding someone for certain past actions you are definitely influencing what their decision would be in a future similar behavior.

<comment><USER13> That wasn't the claim or my point. The question was whether there's a reason to send the gift, not whether there might be an undesired side effect.

<comment> munk-a I think that's why this is a problem, because reasonable people can absolutely give a gift without needing to get anything back. In western culture in particular, the expectation of getting something back for a gift is considered crass and impolite. In direct contrast to that, it's also often considered crass not to acknowledge a gift with another gift, thanks, or kindness - <USER2> western culture is already pretty inconsistent on how we view gifts.

Also, my apologies, I actually do agree with you that the vast majority of gifts are given without an expectation of payoff - but crafty people can (and absolutely do in the political setting) abuse this to game the system. My comment was more meant to highlight that gift giving is never a one way street, even if that is the high-minded intent.

Aside, to see the inconsistency really well spelled out, look at any tax system that has separate rules for gifts and the qualifications that have been codified to try and prevent the abuse of that system.</comment></comment></comment></comment></comment>


How to be productive as a programmer with ADHD - <AUTHOR> https://georgenance.com/being-productive-programmer-adhd <comment><USER2> > To my surprise, there was not much content for adults with it.

Which then goes on with "content" which is just like every other article you might read out there on how to focus.</comment>


Ask HN: Good Podcasts for learning? - <AUTHOR>

Hello all,<p>I'd like to know what your favorite podcasts are for learning?  Any topics are welcome.  Thanks. <comment><USER2> Econtalk. <http://www.econtalk.org/>

New one every Monday, but don't wait, the archives are wonderful.</comment>


Ask HN: Would an apprenticeship prepare you better than college? - <AUTHOR>

In the old days, professions were taught through apprenticeships.  A carpenter would teach a young person the craft in exchange for the labor of the person for a mutually agreed upon period of time.  And completing this arrangement would give potential customers some assurance of competence.<p>Would this work for software development and how do you think it would compare versus the college experience? <comment><USER2> Software development is not the same as computer science. Despite the fact that many (most?) of us have CS degrees, I claim that it does a poor job of preparing for a careen in software development.

As the name implies, CS is a _science_. Studying it, you're taught a lot of theory, with an aim toward doing what others studying the sciences do: become a researcher or a professor.

A career in software development is actually an engineering job. We need to know about design and documentation, communicating with stakeholders by gathering requirements and writing specs, etc. This is a giant step away from what CS teaches us.

I'd estimate that what I learned as a CS major in college (in '89) taught me maybe 50% of what I needed to know in my first job. And conversely, half of what it did teach me went unused in my job.

So I think that to compete with the traditional path of education to a software development career, you don't have a very high bar to claim success. This may be why so many people I know in the field have completely non- technical degrees. Some of the best software developers I've worked with have been musicians.

</comment><comment><USER3> Well, I have had everything from school leavers to PhDs working for me, and I can tell you that a college degree is not _necessary_ to become a good programmer _if_ you are adequately mentored by the right person. So my personal answer to your question is yes, that can work.

However, it doesn't matter what I think - it matters what everybody else thinks. And the world values the right kind of degree. I had the rather amusing experience recently of being screened out of a job application specifically for lacking a computer science degree. Apparently 15 years of software engineering and management not to mention a degree and research in astrophysics was not a good enough substitute :-)

So I personally would recommend to a talented youngster to get a CompSci degree regardless.

</comment><comment><USER4> There's a lot of basic CS knowledge that seems like it would be better taught in college; I'm mentoring a younger employee right now and I'm glad I don't have to teach him data structures and state machines — that would be a waste of my time IMO. For software engineering, apprenticeship may be a better path (which you can start on during college via internships BTW).

I think a lot of people are framing this topic as "4 years of college vs. 4 years of something else" when the real answer is more likely to be college _plus_ something else. Unfortunately, there's a strong economic incentive not to talk about such scenarios because they make a software engineering education sound more expensive.</comment>


Body Language Expert on Steve Jobs and Eric Schmidt's Photos - <AUTHOR> http://gizmodo.com/5503192/so-awkward-steve-jobs-and-eric-schmidts-body-language-analyzed

<comment><USER2> Two things I found interesting

1) I had never thought before about jobs trademark attire of a black turtleneck, and I thought it was only something he did for the keynotes. But apparently here it is again. The Body Language Expert doesn't make note of it, but this may be a hint as to just how deeply Jobs secretive thread goes. He is always protecting his neck, the vulnerability during communication.

2) The Body Language Expert reads into Schmidts rounded shoulders as meaning he is afraid of Jobs. Could be. However, as a geek at heart, this is the posture of one who spends a ton of time in front of a computer and doesn't get much excercise (not that I know that about schmidt). You can see in other photos of him, he has a very rounded upper back. [http://www.gadgetcom.com/wp- content/plugins/auto-blogster/im...](http://www.gadgetcom.com/wp- content/plugins/auto-blogster/images/eric-schmid-no-iphone.jpg) [http://www.ieplexus.com/wp-content/uploads/2009/05/google- fo...](http://www.ieplexus.com/wp-content/uploads/2009/05/google-founders.jpg)</comment>


Turning Twitter into an application server - <AUTHOR> http://news.cnet.com/8301-13846_3-10389157-62.html

<comment><USER2> This is journalism?

"The funny thing is that as absurd and comical as this sounded when the Engine Yard guys told me about it, I've started to think about this as a way to possibly achieve a real technological breakthrough"

Technological breakthrough? At the end of the day, it's the http protocol + POST. What breakthroughs are we going to see?

140 characters - barely anything useful can be sent in 140 characters for messaging systems. Heck, a unique identifier will take up most of the message.

</comment><comment><USER3> I can now read any thread on slashdot, digg, reddit, without worry; because I have already read the stupidest headline of the day.</comment>


Do we really want an internet where the use of encryption requires authorization - <AUTHOR> https://www.tedunangst.com/flak/post/moving-to-https <comment><AUTHOR> Previous discussion on lobste.rs:

[https://lobste.rs/s/qeqqge/moving_https](https://lobste.rs/s/qeqqge/moving_https)</comment>


We Should Be Using Base 6 Instead - <AUTHOR> http://www.xanthir.com/b4y30 <comment><USER2> I'm going to have to disagree. We should be using base 7.

It pretty much has all the good points (or at least not-bad points) of base 6. It has significant ease of determining "divisible by 2" or "divisible by 3" \- add the digits. Get an even number, it's divisible by 2. Get a 3 or multiple of 3 - it's divisible by 3, just like base 10 representations are. There's also a counting trick using 2 sets of 4 fingers:

1\. Hold out both hands, palms toward you. Fold in thumbs. You have four fingers on each hand.

2\. Count one for left pinkie.

3\. Count two for right pinkie.

4\. Count three for left ring finger.

5\. Count four for right ring finger.

6 And so on, until count 6 for right middle finger.

7\. Count ten for left index.

8\. Count eleven for right pinkie.

9\. Count twelve for left pinkie.

10\. Count thirteen for right ring finger

11\. And so on, until you count sixteen for left middle finger.

12\. Count twenty for right index finger.

Even numbers are on the right fingers, odd on the left. Even multiples of 10 (base 7) are right index, odd multiples of 10 (base 7) on left index finger.

Even numbers have even parity (sum digits is even), odd numbers have odd sum of digits.

Simple and handy, even if fractions aren't worth it. We shouldn't use fractions anyway, except as a jumping off point for rational numbers. Decimal representation all the way, baby!</comment>


Boston Dynamics Dynamically Balancing Biped Walker - <AUTHOR> http://spectrum.ieee.org/blog/robotics/robotics-software/automaton/first-video-of-boston-dynamics-petman-biped

<comment><USER2> This is great stuff. With batteries and capacitors constantly improving we should soon have quiet humanoid robots walking around. I find it fascinating to think where they will be first used as more then a proof of concept curiosity.

I would guess in nursing homes. It seems Japan is concentrating their humanoid robotic efforts on that. And with an ageing population but without much (or any) immigrants, I would think the economics are most likely to work in favour of humanoid care taker robots there first.

Perhaps soon after we'll have them here, I can just imagine the advertising being very similar to the "I've fallen and can't get up ads." _Except now I have a robot helper to help me and call my family and even call the hospital._

<comment><USER3> Then everyone would need Old Glory Robot Insurance. Because robots eat your medications!

<http://www.robotmarketplace.com/video_oldglory_hi.html>

</comment></comment><comment><USER4> This demo reminds me of the Dexter robot from Anybots. Here is a video from about a year ago: [http://fwd.five.tv/gadget-show/videos/feature/meet-the- human...](http://fwd.five.tv/gadget-show/videos/feature/meet-the-human-robots- the-anybots)

</comment><comment><USER5> The more they produce, the more I can't help but feel that Boston Dynamics must be stopped at all costs.

</comment><comment><USER6> Does anyone know how the software behind this works? Is it some kind of advanced AI? Does it "learn" how to walk?

</comment><comment><USER7> Very cool, but I think that the heel-toe landing move is a bit exaggerated.

<comment><USER8> Perhaps they could swap those climbing shoes for a pair of Vibram Fivefingers and teach it to walk toe-heel.</comment></comment>


Show HN: Ruby Heap Viz – An interactive Ruby object graph visualization - <AUTHOR> https://github.com/mattbaker/ruby-heap-viz

<comment><USER2> To stress your browser, open viz.html and in irb do:

        module Example ; class Foo ; def bar ; end ; end ; end
        100.times {  Example::Foo.new ; sleep 1 }

<comment><USER3> And then, to save yourself:

        GC.start

</comment></comment><comment><USER4> I've seen this in action a couple of times and it is awesome. This is a fantastic way to demo the heap to people who have had some experience in Ruby, but only a touch of compsci fundamentals.

</comment><comment><USER5> Any known results with actor-based scenarios, such as with Celluloid?

Those situations tend to be infinitely recursive, but would be priceless to map visually.</comment>


New CocoaPod, JiffyLogger (developed at goTenna) enables BTLE device logging - <AUTHOR> http://blog.gotenna.com/post/133417331180/meet-jiffylogger-real-time-ios-logging-for <comment><USER2> > Anyone who's worked with BTLE knows field-testing can reveal results quite > different from what's observed in the lab — and what's supposed to happen, > according to spec sheets! — for a seemingly infinite number of reasons.

So true... #ptsd

<comment><AUTHOR> Yes, totally. With this library's functionality, we found the ability to track specific events and view them in-app during field tests to be invaluable!</comment></comment>


Trump executive order seeks to ban TikTok and WeChat in 45 days - <AUTHOR> https://www.engadget.com/tiktok-wechat-executive-order-014615752.html <comment><USER2> Full executive order: [https://mobile.twitter.com/AndrewFeinberg/status/12915453814...](https://mobile.twitter.com/AndrewFeinberg/status/1291545381453602821)

<comment><USER3> Will the WeChat order cause collateral damage to Riot? They are a wholly owned subsidiary of Tencent right?

<comment><USER4> No. It only affects transactions related to WeChat

</comment></comment></comment><comment><USER5> Does banning transactions, mean Apple/Google will be forced to remove TikTok/WeChat from the app stores in the US?</comment>


Why Recruiters Are Bad For Your Career - <AUTHOR> http://www.brandonsavage.net/why-recruiters-are-bad-for-your-career/

<comment><USER2> I'm curious why the recruiting profession still exists when it's bad for the employer, bad for the employee, and the recruiter isn't adding any value that the two of them couldn't contribute? Why do people still pay for these guys?

<comment><USER3> Great question. What it seems to come down to is:

(1) Companies are horrible at hiring in whole a lot of ways, most especially at writing _meaningful_ job specs + quite often, simply knowing what forums to post job ads in.

(2) Candidates suck at marketing themselves (though not quite as much as companies are at writing job specs + knowing where to post them).

(3) And back to the company's side, a lack of a "DYI mentality", i.e. that this is something that not only they _can_ do themselves, but which really ought not to be outsourced, given the absolutely crucial and strategic role it plays in their chances for success moving forward.

Taken together, these lead to a lot of pressure for hiring managers + HR types to throw in the towel, and let hiring be a numbers game, i.e. get as many resumes in the inbox with as little effort as possible, in the hopes that the 1 or 2 decent candidates will stick out like sore thumbs.

Which also leads to a tendency to simply blow candidates off when the search pool narrows, and other accidental gruffness. And this is where recruiters _do_ provide a value-added service of a sort, in that their job to say "no" to a candidate, thus serving as a lightening rod for the negative feelings that tend to arise when the decision turns negative.</comment></comment>