HNHacker News
TopNewBestAskShowJobs

ninjakeyboard

1,181 karma · joined February 6, 2013

moo.
submissionscomments
ninjakeyboard··on The Book Is a Time Machine
Apart from being a functional mechanism for communicating ideas, writing can also be artistic and stylistic. Writing can be a form of self expression. Like drawing, writing can express itself in both imitative and impressionistic forms. Or anywhere in between.
ninjakeyboard··on The Book Is a Time Machine
"The Book" or The Book? https://www.amazon.ca/dp/B005LALG9S/ref=dp-kindle-redirect?_...
ninjakeyboard··on Keeping a plaintext “did” file
You can move between headings and files with a few keystrokes in emacs/org-mode. This doc shows a fairly advanced way of doing gtd w/ org-mode. I use a stripped down workflow based on this. https://emacs.cafe/emacs/orgmode/gtd/2017/06/30/orgmode-gtd....
ninjakeyboard··on The Wrong Abstraction (2016)
Eric Evans maybe said it the best that code should be rewritten again and again as new insights come from the domain to get closer and closer to the real thing. Every time we write the code we gain new insight so the original should be essentially written closer to the real things with these new insights. I've been taking this approach coupled with ddd where the aggregate root's pure domain logic is relatively easy to actually discard and recreate.

I can't find the snippet but it's somewhere in the "DDD is not for perfectionists" vein

ninjakeyboard··on Keeping a plaintext “did” file
I use gtd with org mode and I can move my finished tasks to a done file when they're complete (if I care to.) Helps with standup etc.
ninjakeyboard··on The Case Against Patents (2013)
PARENTS I mean parents. Ugh
ninjakeyboard··on Goodbye Microservices: From 100s of problem children to 1 superstar
I've heard Jamie Alan talk about copying shared code into the services. I think shared libraries are an antipattern.
ninjakeyboard··on Show HN: Browsh – A modern, text-based browser
Where do I file a bug? Pornhub doesn't render properly.
ninjakeyboard··on The Case Against Patents (2013)
Sleep deprived from go live, I misread this as "The Case Against Patents."
ninjakeyboard··on Elchemy – write type safe Elixir using Elm-like syntax
awesome - thanks for the reply. Makes sense. I work with elixir full time and the type-safety bugs me. I'll check this out when I can find some time.
ninjakeyboard··on Elchemy – write type safe Elixir using Elm-like syntax
Yeah I would expect to see it compile to bytecode. It seems pretty wild to transpile to a language to compile to bytecode to run in a vm when there is already bytecode and a vm to execute against.

Transpiling is common in js only because there isn't/wasn't a standard like webasm.

ninjakeyboard··on Ask HN: How to not fail on coding interview questions?
Interviewing is its own skill!! To get into eg Google you have to go through the rites of passage of learning to interview. That's not true of all positions. I give take-away assignments now. I want to see you can turn in good code. That's all I really care about. How you get there doesn't matter, your decisions do.

The Golden Rule: When in doubt, use a hashmap. Almost all code challenges are about finding an algorithm or datastructure to fit the problem/solution. Many of them are solvable efficiently via a hashmap.

Preparation

- Practice on a whiteboard

- Do mock interviews with the most skilled people you can find and get feedback! This is critical to glean any information about how you're actually doing! I could volunteer to do that for you remotely if you like. Send me your contact info. I'm a distributed systems guy but could walk you through some problems and tell you how you're doing with whatever you're using for tech very likely still. Drop a note on how to connect if you're comfortable.

- Take an algorithms course before you interview. (The princeton sedgewick one is great and easy to grokk. see coursera: https://www.coursera.org/learn/algorithms-part1)

During:

- Write tests for your code during the interview to demonstrate production quality code.

Especially if interviewing for eg Google. They don't give super tricky problems in every interviews (eg during phone screen) - focus on writing good code that is tested and will compile and run after the interview, not writing mediocre code fast.

- It's okay to incrementally improve your solution. Talk through your thinking. Start at the naive solution and then work toward optimal. Eg give two lists, find any number from list a sums to any number from list b. To start, you could write a couple quick tests on the board to make sure you understand the problem. Then you could reason about solutions - say you could use nested for loops. That's O(n squared) which isn't suitable as a solution. So you ask if the data is sorted. If they say no, you can sort lists, iterate through one and binary search on the larger list to get to an asymptotically linearithmic solution. That's suitable so you write that fairly swiftly. To improve you discover you only need to sort one list so you change the solution to only sort the larger one and iterate through the smaller. If there is extra time you might start to reason about how you can move toward a linear solution. Remember I said the golden rule is use a hashmap? Why don't you make a hashmap out of one of the lists and iterate through the other one to find values in the map? Don't just sit there and take it away to the corner and try to solve it.

God Mode: - WAYYYY before you take the interview: Stop using an IDE at work if you're working in a statically typed language. Use emacs, or vscode or whatever you fancy. Moving to emacs made my brain learn the qualities of the language at an intimate level faster than anything else. You check the docs if you forget the api until you stop forgetting the API. It slows you down a bit at first so it's an investment but whatever - tack 25% on your estimates for a few weeks. You can revert to the IDE for larger refactoring work.

ninjakeyboard··on Things I Regret About Node.js [video]
thanks!
ninjakeyboard··on Ask HN: What are the best hacks to fight depression?
Mindfulness. In canada you can get into a program 100% covered by OHIP called Mindfulness Based Stress Reduction (MBSR) If you can't get into a program, read the book: https://www.amazon.ca/Full-Catastrophe-Living-Revised-Illnes...

Lots of new research kicking around. That's a science-backed approach.

ninjakeyboard··on Things I Regret About Node.js [video]
no. I probably should.
ninjakeyboard··on Things I Regret About Node.js [video]
what is the 15% figure from? I'm suddenly working with a dynamically typed language (elixir) coming from scala and I do find more bugs. Would like some hard evidence to support that so just curious.
ninjakeyboard··on Ask HN: Are you working on interesting technical problems?
Yeah. I don't know - it doesn't seem that hard to get into problems you enjoy. Learn technology that's in interesting spaces, write a book on it or something. Then find work that fits your interests. Maybe I'm over-simplifying it?
ninjakeyboard··on LR Parsing: More Elegant Than You Think
It's come a very long way.
ninjakeyboard··on We analysed 75K builds and this is what we learned about CI/CD
+1 I came here to comment the same. At least on HN.
ninjakeyboard··on Stripe is building a Ruby typechecker
Is the idea that you would take your existing code and add typesafety to it? A statically typed language is faster because it does type checking at compile time and does not need to do "if string, ok else throw exception", so adding a bunch of type checking to a dynamic language adds the development overhead without the benefit. I suppose there is a false economy in that statement as defects caught early save time vs late defect discovery, which in my experience, is very common due to type issues in dynamically typed languages.

I personally prefer working with statically typed languages but I've been working with elixir for the last 8 months or so and do not feel very compelled by the use of dialyze (type checker) in the dynamically typed language - you get used to the idioms and try to keep the code type-y but it seems unidiomatic to take type safety too far in a dynamically typed language when you don't get the performance benefits. You cover the things you're likely to get wrong but embrace it for the sake of development speed otherwise. For a new project the right question to ask is "why would we use this instead of a statically typed language." I suppose for an existing project the question this is trying to solve is "how can we reduce bugs now that we've made it to market."

ninjakeyboard··on Ask HN: Who is hiring? (June 2018)
FunnelCloud | Toronto | Software Engineers | ONSITE | Full Time

We use a blend of Elixir/OTP, Scala/Akka, Ruby/Rails (API, migrations), and Ember, alongside Kafka, Postgres, and Redis to build a Manufacturing Execution System which listens to signals from machines used in manufacturing, and writes back to them to track parts and control manufacturing processes. There are many interesting features to tackle, and a good start on the v2 architecture with many small elixir apps interacting through kafka (via command and event topics). Scala is used for individual part tracking on a model of the physical process route.

The domain is physical, and is a great fit for event driven systems and domain driven design. We talk about things in terms of aggregates, commands and events more or less daily. The code is well covered. It is a small company so we have a few opportunities in terms of process maturity but generally the technical approaches are reasonable.

The company is young but bootstrapped and profitable and growing with substantial equity available for really strong hires. We have some very smart people kicking around as is common in my experience in startups that end up turning out pretty well. I was working at Google for a bit - I'm trying to bring examples from my experiences there into the culture here as we grow.

I worked here on contract and flipped to full time on seeing the equity package, problem space, and rate of growth. It's a good opportunity with smart people in an interesting technical space.

I'm currently hoping to fill a spot for one of those ember/ruby/elixir people (any 2 would be good). I come from a more functional background with scala but I think with the current technology having 2 of 3 of ember/ruby/elixir would be good.

Strong Scala or FP candidates would also be welcome to come if they're alright trying on dynamic typing in elixir as there is a lot of work to be done squarely in elixir and scala right now. You'd be able to pick up rails easily enough for what it's used for.

contact: ...jason...at...funnelcloud...dot...io...

ninjakeyboard··on Leaked Emails Show Google Expected Military Drone AI Work to Grow Exponentially
This is someone responding on Hackernews too. Every time I go to the US on business I see a different world. Adult bible study groups talking in coffee shops about how they are praying that, and believe that Trump will save america, etc.

People can think what they want I guess. It just has more of an effect on the world than I thought it used to so I feel a little saddened watching this new dark age come about.

ninjakeyboard··on Windows gifski.exe with a digital signature
After reading through the comments I realize I do not miss windows.
ninjakeyboard··on Walmart will begin offering to subsidize college tuition for its U.S. workers
Seems like a reasonable assumption. They dominate everything everywhere - they have to maintain this position overtime by keeping mindshare as economic and environmental issues continue to tilt into the red.
ninjakeyboard··on UTC Is Enough for Everyone, Right?
We have had some issues with timezones and DST... Time is not fun. Funny well written article - thanks!
ninjakeyboard··on Show HN: Cost of a 51% Attack on Popular Cryptocurrencies
Just curious - excuse my ignorance - wouldn't there be a high level of chance involved in that you might actually win, that would cause the cost to rocket way up for you to succeed in that double spend? Eg you'd have to keep trying before you got a hash that would cause you to need to actually spend a lot more.

This is for 1h of compute in the calculation so would you not actually need to run for a very long time, and also be spending in each and every one of those blocks?

Again sorry for my ignorance - hoping for some insight.

ninjakeyboard··on Show HN: Cost of a 51% Attack on Popular Cryptocurrencies
ya just commented the same thing - the question is about incentive I think.
ninjakeyboard··on Show HN: Cost of a 51% Attack on Popular Cryptocurrencies
This is very interesting - I was wondering about this too. Assumed it was too high to be reasonable but guess I'm wrong. The question is: what's the cost vs acquiring the same qty of $ by being a good citizen. I suppose first you need to have a lot of crypto to double spend it.
ninjakeyboard··on Stopping the RSI pain that almost destroyed my programming career (2016)
yeah it took a couple weeks of daily practice at home, row by row. Then I switched at work once I could type about 20-30wpm (down from 112wpm or so on my best tests)

It was incredibly painful to start using it full time but I built good habits from the start as I re-learned touch typing. It's a very valuable experience watching the brain learn a new keyboard layout as an adult.

From there it took me maybe a month or two to be very confident. I then was unable to type in qwerty without looking at the keys for a couple years. Now my brain is pretty happy switching back and forth. It's odd but I find Ive learned things like typing one handed with colemak on keyboards that are qwerty (eg my macbook) and odd things like that so the brain keeps learning to work in a pinch in the edge cases years later.

Colemak is _incremental_ to qwerty so is significantly easier to learn and get started with full time than dvorak for a software engineer.

ninjakeyboard··on Stopping the RSI pain that almost destroyed my programming career (2016)
I will experience wristpain if I use my tenkeyless w/ colemak. My laptop keyboard doesn't seem to bother me as much though.
← PreviousPage 4 of 17Next →