HNHacker News
TopNewBestAskShowJobs

jestar_jokin

305 karma · joined February 8, 2010

submissionscomments
jestar_jokin··on This is a horrible idea
Summary: a JS developer wrote a spec for the package.json file, used in Node.js projects. It has many uses, including dependency management.

A developer who has worked on some Node.js package managers (npm, yarn, pnpm) is annoyed that the spec was written by an "outsider" without getting input from stakeholders. And, trying to enforce a rigid structure and behaviour on a configuration file that is interpreted in different ways by different tools.

I agree with thosakwe's comment. The "clearly defined structure" horse has bolted. I can only see this working by creating a new file with its own conventions, which will not be compatible with any existing tooling, which means it will not be adopted by the wider community.

jestar_jokin··on The Surface Book 2 is everything the MacBook Pro should be
When running Digital Audio Workstations like FL Studio, having a touch screen is invaluable. Being able to manipulate knobs, sliders, and buttons using natural movements is much more conducive to creativity.
jestar_jokin··on Godot Engine Opinions by Tynan Sylvester (author of Rimworld)
I see lots of positive feedback for Godot from developers, but there aren't many high profile games made with it. I looked through the showcase, and the only ones I recongised were "Deponia" (the iOS port) and "Dog Mendonça & Pizzaboy".

So it's hard to judge, I worry that it could be one of those engines that looks good initially, but has limitations that are only apparent once you're already waist-deep into a large project.

jestar_jokin··on Proxy, a new JavaScript ES6 feature
It's not type safe, so if you change a property name it's not going to be picked up at compile time, so you'd better have tests in place for every synthesised function. (Of course, most implementations are made in dynamically typed host languages, which have this problem with every line of code.)

It's also just a limited DSL that has none of the capabilities of the host language, and can't be used to express e.g. complex queries.

jestar_jokin··on Salsify – A New Architecture for Real-time Internet Video
"Is this a startup company?

No.

Are you sure? Your website looks like a startup company’s.

It's just the HTML template! They all look like this. [...]"

Brilliant

jestar_jokin··on The Peculiarly Quiet Decline and Fall of the KVM
I have a passive switch that works fine. It's pretty much equivalent to unplugging the cable and plugging it in to a different source/output.

http://www.cablechick.com.au/cables/4-port-hdmi-switcher.htm...

(I have also tried a simple powered switch with an IR remote control, but it caused signal degradation & glitches.)

jestar_jokin··on Nim core developer wanted
Games, or soft real-time systems (like audio tools; synths, DAWs, or editors). Potentially, cross-platform mobile apps.

Thanks to its approach to GC, you can impose a limit on the time to spend on GC between ticks, so no unpredictable performance stuttering.

I see it as having nice "functional-ish" syntax like Python, but with static types.

jestar_jokin··on Bill Nye Saves the World, the Anti-Anti-Science Show, Hits Netflix in April
Okay, what changes have you made to your lifestyle to minimise your ecological impact and personal contribution to climate change?

If the answer is "none", then I'd say the message needs to be repeated.

jestar_jokin··on IBM to pay more than $30m in compensation for Australian census fail
Except you may have step-children, adopted children, foster children, children in the house not part of your family (friends of your child, children of your friends), etc. Keep in mind that the census needs to include everyone who was in the house at the time it was filled out, not everyone who is part of your regular abode/family situation.

You might argue that it would work for the "most common scenario". In which case why not pre-fill all the data to the statistically most common values? (Hint: the census's purpose is to collect those statistics.)

Also, pre-filling might cause confusion as to which fields have already been filled out by the user; if a value is present, they might wrongly assume no action is required on their part.

(Having said all that, I haven't seen the online census.)

jestar_jokin··on Open Game Art
All new artforms are derided as not being "true" art by the establishment, who are invested in the status quo. Even contemporary art, intended to expand our ideas about art, is often only accepted under certain existing categories; performance art, mixed media, others.

Once could hypothesise that when non-gamers think of games, they think of the most popular games, which means the most commercially viable. I would equate it to thinking of advertising illustration or graphic design when talking about "visual art".

Of course, people often think games should be fun in some way, so the kookier games that are artistic expressions might not become popular, because people don't want to experience those works.

Some examples of games I consider arty:

- Moirai [0]

- Sisters of the Amniotic Lens [1]

- Gone home [2]

- The Stanley Parable [3]

[0] http://store.steampowered.com/app/496920/

[1] http://store.steampowered.com/app/287140/

[2] http://store.steampowered.com/app/232430/

[3] http://store.steampowered.com/app/221910/

jestar_jokin··on Fantasy Land 1.0
Now I just some way to use it with TypeScript! Unfortunately, it seems support for Higher Kindred Types is lacking. Apparently you can use some neat trick to kinda fake HKTs in Flow, but not in TypeScript, due to its lack of nominal typing. (I don't know the details, though.)
jestar_jokin··on Crystal: Fast as C, Slick as Ruby
Nim[0] takes an interesting approach. It uses "deferred reference counting", effectively allowing GC cleanup to be spread out over a period of time. This at least helps with GC pauses.

It also seems to allow tweaking for soft realtime systems, e.g. games.

[0]http://nim-lang.org/docs/gc.html

jestar_jokin··on SteamVR Tracking
Not to mention, it's in-person training, so anyone outside the US is effectively excluded.
jestar_jokin··on SteamVR Tracking
Have a look at the VR support in the Unreal Engine editor[0]. You can actually manipulate the virtual world while inhabiting it! It's not much of a stretch to apply the same principles to CAD.

[0] https://docs.unrealengine.com/latest/INT/Engine/Editor/VR/

jestar_jokin··on The Human Cost of Tech Debt
Check out the book "Working Effectively with Legacy Code", by Michael Feathers[0].

I believe the basic approach is to write tests to capture the current behaviour at the system boundaries - for a web application, this might take the form of automated end-to-end tests (Selenium WebDriver) - then, progressively refactor and unit test components and code paths. By the end of the process, you'll end up with a comprehensive regression suite, giving developers the confidence to make changes with impunity - whether that's refactoring to eliminate more technical debt and speed up development, or adding features to fulfill business needs.

This way, you can take a gradual, iterative approach to cleaning up the system, which should boost morale (a little bit of progress made every iteration), and minimises risk (you're not replacing an entire system at once).

I've used this approach to rewrite a Node.js API that was tightly coupled to MongoDB, and migrated it to PostgreSQL.

[0] https://www.amazon.com/Working-Effectively-Legacy-Michael-Fe...

jestar_jokin··on Special projects
Why does Kendo (UI) make you weep?
jestar_jokin··on The Churn
I guess it's more about adjusting your reward system to be driven by helping others, rather than self gratification. I agree, your points can be what makes the work enjoyable on a personal level; but most people will working for others, so it makes sense to deliver the best solution for them.

So, although it's fun to reinvent wheels - partly to build up your skills and knowledge, and satisfy one's curiosity - the best solution for your customer/client/manager/business might be to use something off the shelf.

jestar_jokin··on An event bus framework for event driven programming
No good if you're computing the message somehow. e.g.

    logger.debug(generateSomethingLarge());
jestar_jokin··on Just: A library of dependency-free JS utilities that do just do one thing
Just use Ramda, it's a utility library that "gets the argument order correct", and supports currying and other nice FP concepts.

http://ramdajs.com/

http://fr.umio.us/why-ramda/

jestar_jokin··on Fine-Grained Language Composition: A Case Study
Yes, yes, yes! I despair at the lack of options for Rapid Application Development. Web development is a problem that has been solved a million times over; why is it still so hard? (Sure, you could say browsers, scaling, and interactivity all need special consideration.)

I believe there are certain personalities drawn to software development, who are very detail-oriented and love technical challenges, to the detriment of the end result - forest vs trees. Just look at people who want to make games and end up writing a game engine, vs people who jump into Flash and make do with the tools available.

Personally, I would much prefer to just feed in a specification, or set of constraints, to a program, and have it spit out a working program. Program synthesis seems like an interesting area of research, but fairly basic at the moment. I imagine any useful synthesis will be domain-specific - generating a JSON web service/API will be quite different to writing a music visualizer.

jestar_jokin··on FreePascal and Lazarus Foundation
The problem is, to gain traction these days, you target the developers, give them enough resources to work on something in their spare time, and hope they have enough influence to make their company switch from language A to language B.

Charging the developer, before they even have a chance to try the language out, when there are other free options available, means they'll never even give the language a chance.

jestar_jokin··on Kniterate is a 3D printer for clothes [video]
Freakers[0], a company featured in a documentary on crowd funding, rent time on sock machines, to produce bottle cosies/beverage insulators. Maybe you could contact them for details?

[0] http://www.freakerusa.com/

jestar_jokin··on World’s Biggest Indoor Vertical Farm Near NYC to Use 95% Less Water
But isn't part of the "buying local" movement also buying produce that's in season for your climate?

If you're buying local pineapples in Duluth, I can see it would defeat the purpose.

jestar_jokin··on Study: To Beat Loneliness, Visits Must Be Real, Not Virtual
Someone posts a video on YouTube about some niche work; the original creator of that work posts a comment on the work and adds a little anecdote. (The work could be a game, or movie, or piece of music, or programming language; anything, really.)
jestar_jokin··on I Was Wrong About TypeScript
An IDE can assist you even better when it can understand the code you're writing. For example, autocomplete "myString.re" without type hints, and an IDE like IntelliJ might suggest the method "reject()" (which is found on a Promise interface), or "remove()" (which is found on a DB entity interface), as well as "replace()" (which is found on a String interface). Wouldn't it be nice for it to always pick the right option?

TypeScript doesn't help with immutability at all. For that, you should look at something like PureScript. (Or GHCJS, or any other compile-to-JS languages that support immutability.) TypeScript assumes you are sticking with JavaScript's semantics, mutability and all. If you want immutability, you still need to use "Object.freeze()". Variable mutation is not something picked up by types alone.

There are other languages that introduce "dependent types", which can actually include values in their type signatures, which might be able to specify something like you want; i.e. "a function that accepts an argument of type 'a' which derives a number, and returns the same type 'a', but the returned value must be equal to the input value plus 10".

Documentation is nice... or so I've heard! Speaking for myself, developers are lazy and just want to write code. Why not make them document the code as they write it? Plus, external documentation (even as JavaDoc-style comments) always falls out of date with the code.

I think better than tests, is to enforce "design by contract" - assert your preconditions and postconditions on every function. This inlines your assumptions and behaviour verification with the actual code to be run. (If performance is a concern, you can implement this in a way that allows you to disable assertions.)

In general, the more guarantees you can enforce at compile time (such as only accepting certain types of values, or that input values are never mutated in place), the less need there is for having twice as much testing code as application code.

jestar_jokin··on I Was Wrong About TypeScript
- Documentation. You don't need to have free-text comments saying "@param myArg must be a string", you can just look at the type signature, and immediately know how to use a function. Attempting to pass in a number will fail at the time of writing, not at runtime (of your test). This is a huge benefit when using third party libraries. For a JS lib, you need to read the documentation, and if something is undocumented you need access to the source code and the time to analyse it, to understand exactly how to use the lib. Compare this to making the type interface available.

- It's easier for a machine to read, which means the possibility for better tooling. e.g. linters and checkers, automatic refactoring.

- It's actually faster to write, due to the ease of making changes. If you move a function out to a new module, the compiler will immediately tell you all of the invocation sites that are now broken. (If you rely on tests, you have to make sure you have tests in every invoking module, rather than just the module you are actually changing. [Ignoring mocking issues...])

jestar_jokin··on I Was Wrong About TypeScript
I did this on my current project. Basically:

- Set up your TypeScript config

- Set up Typings (or some other type def manager)

- Rename all ".js" files to ".ts"

- Replace all "var x = require()" calls to "import x = require()"

- Gradually refactor components (controllers, directives, services) to classes, or at least add type annotations to everything.

Because TypeScript is a superset of JavaScript, you can work on an untyped system and add gradual typing until the codebase starts looking nicer. Any new functionality can be implemented in TypeScript; any existing functionality can be slowly refactored when it is touched by changes.

jestar_jokin··on I Was Wrong About TypeScript
I don't know exactly what your code looks like, but a major reason for using Dependency Injection, like AngularJS does, is to allow your tests to "mock" the injected services. Then, you verify the behaviour (but not the implementation), by checking that each mock is invoked with the expected arguments, and set it to return a particular value.

On the server side, I've used TypeMoq, which is pretty nice. I have only used it to mock imported modules; for AngularJS 1, you'd need to invoke the "inject" service, to insert your mocks into the controller.

Further reading:

https://en.wikipedia.org/wiki/Mock_object

jestar_jokin··on I Was Wrong About TypeScript
You should also have a look at Haxe, which comes from an ActionScript-inspired syntax, and compiles to JS (and a whole bunch of other languages, including ActionScript). It has even better language features than TypeScript (gotta love compile-time macros), although TypeScript has the benefit of adding features in an attempt to describe existing JavaScript code using types, so the interop with JS libs is easier.
jestar_jokin··on Show HN: I built a bot to automatically apply to jobs
I agree, cover letters are essential. If you have experience only writing Java web APIs, with no demonstration of competence with implemented anything except that exact tech stack, you'd better explain why you're applying for a position using a different tech stack and writing non-trivial client-side code (in addition to backend work).

Otherwise, the resume gets thrown in the "spam" bin.

← PreviousPage 2 of 6Next →