1. 1

    I hope to do some stuff with Myrddin.

    1. 2

      The UI looks neat ! I really wonder what GUI toolkit they are using.

      1. 8

        They mentioned they made a custom UI framework in this article: https://www.sublimetext.com/blog/articles/hardware-accelerated-rendering

      1. 2

        The link to the deb-package results in a 404. When I downloaded the zip from Github’s releases page and unpacked it I got a deb-package.

        1. 3

          I’ve fixed the link, thank you.

        1. 4

          Flutter is really nice, at least for an inexperienced mobile developer as I am, but Dart the language is not so awesome. I understand Google wants to have full control over an ecosystem, especially after their adventures with Java and Oracle, but I just wish there would be something else than Dart for Flutter.

          1. 2

            What is it that you don’t like about Dart?

            1. 4
              • Dart promises strong type system, but some type errors are thrown in runtime step instead of compilation step, while in other languages, even older ones like C++, the same class or errors are caught in compilation step.

              • Types are optional instead of mandatory; it’s possible to just skip type annotations and use dynamic which is like void*, or it’s possible to just don’t specify the type at all, which has the same outcome I think (the ‘dynamic’ type).

              • Public/private fields are specified only as a naming convention instead of being supported by the language. I.e. private fields are named with an underscore before the name. I mean, if something has its own convention of doing things the right way, then maybe a new language should have support for it? I get that Dart is not really new, but it’s not old either.

              • (this is pretty subjective, but still) It uses <type> <variable_name> notation instead of <variable_name>: <type> (postfix) notation, which makes it feel that type inference was not a part of the original design document, but was hacked at some later stage (but I haven’t researched if that’s the case),

              the arguments come all the way down to some pretty subjective and not very important things (like that I have to write void main :P, or when I declare int main and return error code, Dart silently ignores this and returns 0 to the shell instead), that bothers probably only me, so I’ll skip them.

              1. 3

                Public/private fields are specified only as a naming convention instead of being supported by the language. I.e. private fields are named with an underscore before the name.

                FWIW, Python also works this way, and I really like it. It’s what I call (or maybe I’ve heard it called) the “we’re all adults here” approach. Languages that strictly enforce private vs public have a problem sometimes where a library author makes something private that you want to use, and you can’t get at it. With a convention you can indicate something is supposed to be private, but users can still access it if they decide they need to.

                1. 1

                  I understand your point of view, but I respectfully disagree with it. Normally private parts of a library is not an API, and by using it you’re increasing the risk of your project not being compatible with future versions of the library, so you’re limiting yourself. If your project is massively popular, up to the point that its popularity surpasses the popularity of the library, using libraries private fields can limit the development of the library itself; the author will no longer be able to introduce all changes to its internal wiring because you’re depending on specific behavior of its internal wiring.

                  Reading about Microsoft’s adventures in providing backward compatibility in Windows is a good source of information why the “we’re all adults here” can be problematic in the long run. They have to emulate their own internal structures that were never APIs, because lots of “clever” application programmers of big and popular applications used parts of Windows that were basically private fields or methods.

                  Lots of languages do allow the user to use private fields if there’s absolutely no choice, i.e. Java allows to use reflection to use private fields. And by using reflection at least you’re forced to check if the thing you’re trying to use actually exists, because it very well might be removed in some new library version, without notice from the author.

                  1. 1

                    Just to clarify, Dart’s language visibility (public vs library-private) is not simply a naming convention but enforced by the compiler toolchain, static analysis, vm runtime etc. Note that Dart’s concept of ‘private’ is library-private, not class-private. That is to say that private API is visible to all code within the same library: a source file plus any other source files making up that library via ‘part of’ directives.

                    See section 6.2 of the spec for details.

              2. 1

                For me it’s more the fact that there are several good options available already. I do not see any reasons to introduce yet another language into the current mix. Why didn’t they just go Typescript for example?

            1. 3

              For work: Refactoring my own bad code. Fighting with d3 again.

              For fun: Figuring out how to index Chinese, Pinyin and English words. I’ve got Chinese and searching works pretty fast (bigrams + inverted index). Now figuring out how to do Pinyin and English.

              1. 5

                For work I’m making a nicer API to combine and filter streams of numbers so they can be easily visualized (in d3). After some experimenting I’ve finally got something that doesn’t requires much boilerplate code when using it. Besides that I’m wrestling with d3 to get something on the screen.

                For otherwork I’ve been figuring out how to print receipts with Chinese characters on a receipt printer using the Windows API. After some days of looking through the incomplete API docs and Notepad++ source I’ve got it working. There must be an easier or better way, but I’m not familiar with Windows.

                For fun I’m reading through Clean Code.

                1. 5

                  It says it’s written in C++, but the repo is 99% Haxe..?

                  1. 2

                    I can’t find any references to Wren in that repository. Maybe it’s old code?

                    1. 5

                      Yep, apparently between Luxe’s “alpha” and not-yet-released “preview” versions it has changed considerably.

                      On https://luxeengine.com/alpha/ it says:

                      All the details of this transition are being expanded in the development logs!
                      In short: The alpha code base was temporary and is going away.

                      1. 3

                        if it was a deliberate strategy to use haxe to develop the alpha quickly and experiment with strategies, and then port to c++ once the code had crystallised, i would love to read a blog post about it.

                  1. 1

                    Hey, I just send a request to join. I’m curious what’s going to be posted.

                    1. 1

                      I’m thinking most jobs and people announcing availability for jobs, but I’m not frequent LinkedIn user so whatever’s normal there is also welcome.

                      ETA: Also, I’m going to automatically approve all requests at least until I start seeing professional recruiters starting to join. If your approval takes a few hours or even days, it’s because I’m running some errands today and I’m not a heavy LinkedIn user.

                      1. 1

                        Am starting to see recruiters trying to join now, FWIW

                    1. 3
                      1. 1

                        Nice! Did you build it yourself?

                        1. 1

                          Slow response… but yes! I may put together a build log at some point but it’d be an after-the-fact thing

                      1. 1

                        West of Eden by Harry Harrison and OCaml from the Very Beginning by John Whitington.

                        1. 1

                          Just a week into Programming Languages, Part A and I like it. I also like Standard ML so I started looking at OCaml, because I don’t think SML is used a lot outside of these kind of courses.

                          For work more C++. I started to maintain an embedded Linux application that’s written in C++/C.

                          1. 2

                            Learning C++ for work, reading Clean Code by Robert C. Martin and looking into different ways to make apps for Android. Anyone got suggestions?

                            1. 3

                              Honestly, I’ve learned a fair bit by reading the C++ FQA, even though it’s not totally up-to-date. I’ve been thrust back into C++ with my work on LLVM and it’s helped a bit (I’m nowhere near done the whole thing, mind you, nor am I anything approaching an expert).

                              Also, A Tour of C++ is helpful.

                            1. 10

                              Yet another Electron app :(

                              1. 4

                                What’s wrong with using Electron?

                                1. 9

                                  A lot of overhead compared to a native application.

                                  1. 5

                                    I imagine it’s a nightmare to port. I haven’t seen a single electron app ported to OpenBSD. Additionally like mentioned by others - the overhead (resources) and complexity of the whole platform (security) that is not required for most apps.

                                    1. 1

                                      Is Chromium available on OpenBSD? I assume Node.js is.

                                      This feels like a good Google Summer of Code project for Electron. Getting on more platforms is probably more of a question of removing platform-specific ops code more than anything else.

                                      1. 2

                                        Is Chromium available on OpenBSD? I assume Node.js is.

                                        Yes we have both Chromium & Node.js.

                                        This feels like a good Google Summer of Code project for Electron. Getting on more platforms is probably more of a question of removing platform-specific ops code more than anything else.

                                        This might be much harder than you make it sound. Take a look at the amount of Chromium patches we maintain ourself as upstream isn’t happy about BSD support.

                                        I’m sure the code is portable but the task is not small.

                                        1. 2

                                          It is, but it takes hours to compile. If 36 copies of chrome show up in the form of electron, that can substantially delay new sets. I also have my filesystem partitioned to a certain size. There’s a limit to how many apps like this I can install.

                                          1. 2

                                            Personally hoping someone makes an “Electron Runtime”, like how the JVM works (or Python, or Ruby…), and we could just distribute the web file….

                                            1. 1

                                              Ditto, I think the problem with that is that Chrome (and to a slightly lesser extent node.js) are such rapidly moving targets that having a single “Electron VM” for multiple apps may be tricky, at least at the moment.

                                      2. 3

                                        I’ve seen it break some of the accessibility tools (screen readers mostly) in strange ways.

                                        1. 1

                                          I don’t know what this says about Electron itself, but the two Electron-created apps I’ve used most, Slack and Atom, are, IMHO, not great. They’re sluggish, eat memory and have a sizeable disk footprint.

                                          I can see the thinking behind creating desktop apps using web technologies, but is Chrome really the best engine to use (yes, I know Electron uses node.js which needs v8) and do we really need a full-fat browser to run a web-based desktop application? Chrome is a slow resource hog as a web browser, so why would I want to be running local apps that use it? But maybe that’s just me being a grump.

                                      1. 3

                                        Whoah! This is very nice. Especially the fact that it supports autotagging/plugins. I already looked at TMSU, but it doesn’t have support for plugins (or I didn’t look good enough).

                                        1. 1

                                          It would have been really nice if it was using a fuse implementation to mount these files.

                                            1. 1
                                          1. 12

                                            On Android I’ve tried many different apps that provide terminal and/or ssh access. And while some are pretty decent, they didn’t get me beyond thinking ‘ok, this will have to do.’

                                            But then I found Termux. It’s the best - sorry, I had to say it, because it provides even more than I wished for: a full blown terminal with its own package manager (apt!), a good number of packages that are kept up to date, and as such it gives you pretty much the terminal environment you prefer. I use zsh plus my own set of zsh config files, .ssh/config actually works, and it even has a (passwordless, key based) openssh server that runs under user privileges.

                                            Another thing that makes Termux so nice is the intuitive key binding system: for ctrl use the volume down button, and use the volume up key as a meta key for numerous useful other keys, e.g. vol-up+e is escape, vol-up+t is tab, vol-up+p is PgUp, +n is PgDn.

                                            It has multiple session support, various color schemes, fonts, you name it. It’s portable, so with another tool like TitaniumBackup, duplicating your whole setup becomes a breeze. And it’s incredibly fast as well.

                                            1. 5

                                              Another great thing is the source is available: https://github.com/termux which may lessen concerns around ssh access into certain servers.

                                              1. 3

                                                I recently discovered this too when a user of my Python package asked if it works in Termux. I was really surprised that installing Python packages worked most of the time (some C-based packages didn’t work).

                                                1. 2

                                                  I really agree. It works really great, and is the only one that works reliably for me. The bulit-in terminal is great, and the software repo has a great selection.

                                                  One thing I regret, is that a shell script that has the shebang #!/bin/sh does not work, but this is due to Android not following the standards, not to termux.

                                                  It was really a good surprise :)

                                                  1. 2

                                                    Definitely agree, i found it a couple of moths ago by total accident and was amazed to see that i could not only install ssh but the latest version of GCC, go, node.js, python, ruby, emacs, vim, etc.

                                                    Typing on an phone is not the most convenient but plenty useful when you need it.

                                                    1. 2

                                                      And even if it doesnt use your sd card as home. You can still access your termux files from the file discovery dialog. I’ve been using it to manage my ssh key on my phone.

                                                    1. 2

                                                      For work (new job):

                                                      • Adding features and trying to refactor a lot in our Angular application.
                                                      • Crying, because our Selenium tests always fail.

                                                      At home:

                                                      • Reading about a bit about OpenGL and playing with nanovg (I made a tiny Go-binding).
                                                      • Writing code for a Django application that keeps track of stored procedures and triggers in Postgres.
                                                      1. 3

                                                        I’ve found that using BrowserMob + a real web browser (not phantomjs) fixed a lot of the pain for me.

                                                      1. 3

                                                        Started implementing design patterns (GoF) and algorithms, because that’s my weak point.

                                                        1. 2

                                                          Ooh, if you want to dive deep on software design patterns (not just modern enterprisey stuff), be sure to check out the WikiWikiWeb at c2.com. It’s the original wiki software - older than Wikipedia! - and is very programmer-oriented. The creator (Ward Cunningham) and his friend (Kent Beck) were part of the original software design patterns movement.

                                                          http://c2.com/cgi/wiki?DesignPatterns

                                                          http://c2.com/cgi/wiki?SoftwareDesignPatternsIndex

                                                          1. 2

                                                            Cool! I’ll make sure to check that out.