HNHacker News
TopNewBestAskShowJobs

Davidbrcz

854 karma · joined January 15, 2016

submissionscomments
Davidbrcz··on A meta approach to implementing programming languages (2018)
If you are interested by uncommon approach to implementing programming language, toy should have a look at the K framework (http://www.kframework.org/index.php/Main_Page)

The idea is to write the spec (is grammar and semantics) only once and have for free a compiler as well as some formal tools (model checker,...)

C had been formalized with it for instance.

Davidbrcz··on Ask HN: Are there people who just experiment with tech and make a living?
Researchers ? Tech journalists ?
Davidbrcz··on Show HN: Quickly browse the history of any GitHub file
git-timemachine does it for emacs for those who don't know.
Davidbrcz··on Show HN: Gita – a CLI tool to manage multiple Git repos
wstool (https://github.com/vcstools/wstool) is a tool for managing a workspace of multiple heterogenous SCM repositories.

Very convenient. I have used it for ROS projects with multiples SCM

Davidbrcz··on Documents OCR: Improving Efficiency by Making PDFs Searchable
I've been happily using paperwork for this task ; https://gitlab.gnome.org/World/OpenPaperwork/paperwork/

A simple button for scanning a document, the software does all the processing for you (rotation, OCR,..). You can apply tags to documents, search them, export them. The storage format is more than open (a png file + OCR results as an HTML page,...)

Davidbrcz··on Ask HN: What are some good resources to learn network/app security on my own?

    Reversing: Secrets of Reverse Engineering de Eldad Eilam
    Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation de Bruce Dang, Alexandre Gazet, Elias Bachaalany, Sébastien Josse
    Cryptography Engineering de Niels Ferguson, Bruce Schneier, Tadayoshi Kohno
    Applied Cryptography: Protocols, Algorithms and Source Code in C de Bruce Schneier
Davidbrcz··on Robot Operating System – A flexible framework for writing robot software
A robot is made of dozen, if not hundreds of packages. catkin compiles the whole workspace in a single command while dealing with non trivial build dependency between packages, and generates a ready to deploy folder.

CMake has its drawbacks, fair enough, but 10 years ago it was pretty much already the de facto standard build system for C++. What would have used instead of CMake ?

  - Make and autotools (Haha) ? 
  - scons ?
  - completely custom build system ?
  - something else ?
The most painful I had to deal with was my teammates who, instead of creating a brand new package, would simply copy and paste and existing one without fixing the dependencies, resulting in a build that fails if the workspace was cleared.
Davidbrcz··on Robot Operating System – A flexible framework for writing robot software
I spoke Mikael Arguedas at the 2018 French ROS days (JONAROS) where he gave a presentation about ROS 2 (talks are available online IIRC, in French). During his presentation; he said that most of ROS 1 was engineered before any of today's well known frameworks were available , hence the lot of custom tools. That has driven a major part of ROS 2's design (especially the use of DDS).

Otherwise, I have been personally using ROS for building robots for the French (and European) robot championship (see https://twitter.com/AIGRIS_Birds). It works pretty well, it is convenient, easy to learn and provide some nice tooling (bagging for replaying messages, simulation with Gazebo...).

It is the de facto standard for robotics middleware for scientific projects. It not widely used by industrials because of some shortcomings even if initiatives like ROS Industrial and ROS 2 will likely improve things.

Davidbrcz··on Lorentz Transformations with a Mechanical Time-Globe [video]
I think I'm in love
Davidbrcz··on Ask HN: What are the most interesting emerging fields in computer science?
She/He is right and I was a bit cynical in my answer. There are some real industrial projects that used formal methods. I have in mind Airbus with ASTREEE, the Meteor subway system (Paris' subway line 14), Windows' drivers with the SLAM analyzer...

Also, JPL released its model-checker Java PathFinder and hosts every year the Nasa Formal Method conference so I'm pretty confident that at least someone at NASA is interested in formal methods =)

Davidbrcz··on Ask HN: What are the most interesting emerging fields in computer science?
Haha.

Formal verification has been around for 40/50 years and we can't say it is a wide success from a industrial point of view. It has some achievements in terms of results/methods and projects checked, but on a daily basis, pretty much no one uses it. We are ages away of having every programmer understanding formal verification and having all programs verified/proved.

Type theory is in a similar situation. Many issues in code could be solved with basic typing algorithms but people and companies favor languages with poor/no typing (python, Javascript).

Davidbrcz··on Ask HN: What are the best hacks to fight depression?
To see a doctor ?
Davidbrcz··on Which note taking app has support for linux and android?
I use a self-hosted nextcloud instance with the Note module. The notes are sync with Nexcloud between my devices and there is an android Note app. On my desktop, any text editor will do, but I'm fond of Emacs with Deft

  Deft is an Emacs mode for quickly browsing, filtering, and editing directories of plain text notes, inspired by Notational Velocity. 
  It was designed for increased productivity when writing and taking notes by making it fast and simple to find the right file at the right time and by automating many of the usual tasks such as creating new files and saving files.
Davidbrcz··on Ask HN: Is there any p2p encrypted messenger with lightweight web UI?
ring.cx

Ring is a free and universal communication platform which preserves the users' privacy and freedoms.

    Official GNU package
    Released under GPLv3 licence
    Supported by an active community

    OpenDHT protocol
    Decentralized communication
    Peer-to-peer discovery and connection

    End-to-end encryption with authentification
    Identity managed by X.509 certificates
    Based on RSA/AES/DTLS/SRTP technologies
Davidbrcz··on Ask HN: Why is there not a memory-safe C?
Have a look at C2: http://c2lang.org/site/
Davidbrcz··on $10,000 Stack Overflow Toxicity Challenge
There should a newbie-stackoverflow, where all newbies post. This would avoid to see the same question for the 100000th time or messages from people who do not read error messages on the main SO. It would also prevent many experienced programmers from seeing these questions and answering with snappy comments. That way, the main SO could be focus on high quality questions and answers.
Davidbrcz··on France’s government is building its own encrypted messenger service
81.5 for the whole project SAIP (broadcasting warnings on several mediums (phone, ad panels, radio, TV,...), not only the SAIP app.
Davidbrcz··on France’s government is building its own encrypted messenger service
I think it is intended for the government only, you'll never see it as a citizen.
Davidbrcz··on France’s government is building its own encrypted messenger service
That seems insane, even for the French government. Do you have a source ? I can't find anything with a 2 minutes search.
Davidbrcz··on Ask HN: A month to learn a new programming language
Scala ? OO/Functionnal JVM based language. Not the purest FP language ever, but it is used a lot (Finance, web...).

Any lisp (Scheme, Closure...)

Prolog: logic programming. Tell the computer what you know, ask a question and let it compute the answer for you.

Davidbrcz··on France’s government is building its own encrypted messenger service
Comment from a French insider: It will not work. The last two IT projects the government ordered I have in mind are the ears dropping facility for the police and SAIP, an application to warn citizens in case of a dramatic event such as a terrorist attack. Both are failures. On the first one, the police complains of crashes, slowness, and not fulfilling its missions. The second simply does not warn people when there is an attack...

The worst is that it will cost tax payers millions

Davidbrcz··on Ask HN: What programming blogs do you read daily?
- Fluent cpp - Julian Evans - Simon Brand
Davidbrcz··on Stanford CS students want iPhone that only allows calls, texts, and photos
They want a 3310 and a separate camera.
Davidbrcz··on Ask HN: Lately lots of employees are asking for sabbatical year off
It depends on what they intend to do with that year off.

If they want to travel, they need to be completely off and you can grant it to some people.

If they want to work on some side project, then say no to some of them but propose a part-time job (work 2 or 3 days a week). Make sure to explain why you are saying no (can not afford to give half the staff a year off).

Davidbrcz··on Escaping Hell with Monads (2017)
That's pretty much the point. I'll detail the first example (the Maybe monad).

The idea is that you have a maybe object that is either an just an object (denoted Just(a)) or nothing at all (denoted Nothing). If you want to manually apply a function f on object m, the code would look like this

  if(m is Just(a)){
      f(a)
  } else{
       // there is nothing to do
  }
You can take f as a parameter to create a generic function apply. You want to your new function to be total (to return a value in all cases). Since you may (or may not) have a value within the maybe monad, the return type is also a Maybe value. If there was no value, then return Nothing, else apply `f` on `a` and wrap it back within the JUst part of the monad. The code looks like this.

  apply(m,f){
    if(m is Just(a)){
         return Just(f(a))
    } else{
         return Nothing.
    }
  }

From an initial maybe value m, you can chain calls:

  apply(apply(apply(m,f),g),h)
With a bit of syntactic sugar, the code looks like this.

  do
    m <- getData
    b <- f a
    c <- g b
    d <- h c
    print d

And the code is similar for the others cases. In all solutions, <- denotes an apply function on some monad. There is a function for each type of monad and it is responsible for doing all repetitive plumbing according to the given type of the monad.

I hope it helps =)

Davidbrcz··on Canadian software engineers paid peanuts
No, I don't have them and I don't even know where to begin with as I don't know how many expenses/services work whether in the US or in Canada.

I'm just pointing out that comparing only raw figures is not relevant.

Davidbrcz··on Canadian software engineers paid peanuts
Raw figures are worthless without taking into account cost of living, taxes and public services (social security, retirement plan).
Davidbrcz··on Ask HN: Alternatives to Grammarly?
Languagetool
Davidbrcz··on Ask HN: Did you make your own cloud?
Nextcloud is what you are looking for.

I've been running it for a while on a VPS I rent. I provides file sync, calendar, audio player, password storage (passman), weather and much more with many plugins (which are really easy to install with the app store).

It's stable and the biggest hurdles I have encountered were linked to mysql and charset encoding that lead to something to be above the maximal value in the database.

Davidbrcz··on Ask HN: Looking for a career switch
You could try to get away from app/web field where there is a bazillion of languages and frameworks and move to another fields with bigger inertia. This means the rhythm of adoption of new language and features is slower. For instance, embedded systems heavily use C and there many big Java or C++ applications. One drawback is that you may end up with a 20 years old messy code base to maintain ....

You may also want to try freelance. It is hard as you need to find clients but you are you own boss and pick whatever job you want.

Depending on your education, you could try to join a laboratory as a research associate.

← PreviousPage 5 of 9Next →