1. 3

    I can only but recommend giving Nim a try. It features a Python-like syntax that compiles to C to binary, and is so easy to get started with. And once you dig deeper there’s a lot of amazing stuff to discover there!

    (I also filled out the survey)

    1. 1

      I’ve been hearing a lot about Nim lately. As a fan of Python and someone who does a lot of embedded C/C++ development, I’m quite intrigued!

      1. 1

        If that’s your background, do check it out cuz people like you are a good test of its claims. I’m especially interested in how much it can or can’t improve on how you use C and/or C++.

    1. 1

      He mentions self-hosting a personal wiki but doesn’t mention what software he’s using. Anybody have suggestions?

      1. 1

        I’d suggest bookstack. It’s a joy to use and easy to deploy.

        1. 1

          Hugo + custom theme + GitHub pages + Travis CI, works quite well for me, I don’t write much, if at all but it was painless to setup. Every commit to the source branch triggers a CI that pushes into the master branch of the GH pages, it’s all automated.

          Okay it’s not really self-hosting… but Hugo + custom theme is still usable behind a self-hosted static nginx.

        1. 4

          Curious what it would take to flash a modified version of this to an old iPhone. Could one theoretically boot a Linux kernel if the signing check was omitted?

          1. 4

            Not sure if it’s entirely relevant to this, but I did get Android installed on my 1st gen iPhone back in the day using this: https://www.theiphonewiki.com/wiki/IDroid

            1. 1

              I’m guessing the keys themselves have not been released so the issue is getting anything non-apple onto the device in the first place? Also guessing, if we had the keys we could easily modify iboot, or relatively easily port core boot or whatever the cool kids are using these days and ignore signing?

              1. 2

                You don’t really need keys these days to boot something. You can use kloader which is basically kexec for (32-bit) iOS. It has been used for dual-booting a signed iOS installation with an unsigned one.

                1. 2

                  Wow, that’s awesome. I have an old iPhone 4 that I’d love to re-purpose in this way. Where should I start reading/researching in order to do this myself? Thanks!

              2. 1

                There was the OpeniBoot project – an open source reimplementation of iBoot that works on older iPhones up to iPhone 4.

              1. 7

                Too bad, I deleted my linkedin account a few months ago. I think the job tag could afford to be a bit more popular.

                1. 5

                  I would also love to see more use of the “job” tag. I deleted my LinkedIn account a while back but would be interested in being able to view the postings from folks on this site.

                1. 3

                  Totally love this guy’s work. I’ve since moved on and switched editors to Visual Studio Code, but Emacs Rocks episodes are some of the best ways to showcase what makes emacs such an awesome environment.

                  I particularly dig his episode on restclient-mode

                  1. 1

                    I’m an Emacs user who has been dabbling with Atom. Would be curious to hear what made you switch to VS Code. I’ve never tried it.

                    1. 2

                      What it came down to for me is this: I am in awe of the powerful platform that emacs has become and how mature it and its community are.

                      However, I do not particularly enjoy tinkering with elisp packages of any size. I can write simple configuration stuff but when push comes to shove if confronted with a sizable code base my head explodes :)

                      Most of what I want in an editor is IDE-like convenience without the massive project setup overhead. Visual Studio Code provides that in a very big way and goes even further in many respects.

                      Its extension language is Javascript, which while I would never assert is superior in any way to LISP is more readily understandable and usable by me.

                      Its Python integration is superb and provides a very high level of IDE-like features, that integration is only going to get better because the author was just hired by the VSCode team.

                      In short, vs code gives me exactly what I want without demanding that I endlessly tinker with elisp to get this or that feature working with my environment.

                  1. 1

                    There was a conference in NYC this weekend about running these sort of on-demand platforms as cooperatively owned businesses. Lots of interesting talks and discussion: http://platformcoop.net/events

                    1. 4

                      These are great. Her blog has some really interesting reads as well. Does anyone have any good resource/book/etc. recommendations for learning more about Linux filesystems, signals, syscalls, /proc, etc.?

                      1. 9

                        Design & Implementation of Operating Systems (the minix book) by Andrew Tanenbaum.

                        Advanced Programming in the UNIX Environment by Richard Stevens

                        Design & Implementation of FreeBSD

                        Not trying to troll by recommending a Minix & FreeBSD book, they’re all very good titles. Minix book goes into studying the source which may not be your thing but the reason I listed it is because It assumes zero prior knowledge of internals & brings you up to speed.

                        APUE will teach you the interfaces commonly available and how to use them.

                        D&I FreeBSD is really well written in a long series spanning back to the late 80s covering 4.3BSD.

                        For the Linux specific implementations of features such as procfs & file systems in general, I recommend a healthy dosage of Bryan Cantrill videos on his commentary of implementation in Linux. He’s definitely covered file systems & procfs among many other things.

                        Off the top of my head, file systems was touch on in his last bsdnow interview

                        1. 1

                          It is sadly out of date, but Vahalia’s Unix Internals: A New Frontier is really well written and covers a lot of ground, albeit as of 1996.

                        1. 3

                          Then how do you make anything happen in the future?

                          1. 9

                            The article gives a good example of this.

                            You can run periodic cron-style tasks that query for data that need to be processed right now. So rather than enqueuing a job to process data in a week, say, you save the current timestamp with the data. Then some sort of daily cron job can query for data at least a week old and do the processing immediately.

                            1. 4

                              This has some advantages:
                              1. Your users can’t “make” your server busy at a later date by creating 1000 jobs in a second.
                              2. You can process jobs as quickly as you like at a later date, ie. run continuous integration/unit tests/etc. at 12:00am, but add a 5 minute delay between them to avoid hogging 100% of resources.

                              It has some disadvantages:
                              1. Your jobs are all run at a certain time, you are batching 7 days worth of jobs you may be planning to complete them within 1 hour at midnight on a Saturday/Sunday. This may not scale well, previously the jobs may have been randomly scattered throughout the week.
                              2. “1 week after I sign up at 3PM AEST” might be a better time to do something than “Midnight on a Saturday morning AKST”, for example pushing a notification to my phone while I’m sleeping.

                              1. 3

                                If you’re running a daily cron-style task then you’re only batching 1 day’s worth of jobs (even though the job is operating on data created 7 days ago). I agree there’s a downside in that there a bunch of jobs run at a certain time but you could run the job hourly/etc. to better distribute the work.

                                For example, say you signed up at 8:46AM on Tuesday 6/7/2016. Your email won’t be sent until the hourly task runs on or after 8:46AM on Tuesday 6/14/2016 (probably 9:00AM if jobs are run hourly). If that happens to be an inconvenient time to send the email (based on some condition) the job can just skip it and it will get picked up next time the task runs.

                          1. 1

                            Definitely puts a twist on how things are today. Honestly makes me consider using proxies or software like Ghostery.

                            1. 4

                              I personally use EFF’s Privacy Badger, which I like so far. It does sometimes break sites because of not loading some third-party JS or iframe, though.

                              1. 3

                                The author, referring to Ghostery:

                                Some of the bouncers were trying to be a little bit too clever for my taste, they actually simply took the place of the trackers they blocked.

                                Try https://github.com/gorhill/uBlock instead.

                                1. 2

                                  Ghostery’s statements disagree with that characterization of them.

                                  1. 1

                                    Ghostery is created by a tracking company. Would you trust an anti tracking plugin from google to not report on you?

                              1. 2

                                I very recently started working with a co-op focusing mostly on web design and development. We’re called the CoLab Coop and have members around the world. I have been working for the past few years as an independent contractor and love the freedom afforded by this sort of lifestyle and approach to work. The co-op offers a similar approach plus the mutually beneficial collaboration with other members.

                                1. 1

                                  This is pretty close to what I’m envisioning! Looks awesome. How is it so far?

                                  1. 2

                                    I’ve enjoyed it so far. I’m not a full member at this point so I don’t have as much say over the direction of the company but I think it’s really great how transparent everything is. For example, the coop’s bylaws are in a Git repository and changes are made via pull requests. Collective decisions are made using a tool called Loomio (made by Enspiral, mentioned above) and everyone has the opportunity to participate. I definitely plan on continuing to become more involved with the group.

                                1. 4

                                  i agree that if you use an ORM you trade in problems for others.

                                  the article generalizes the different orm patterns that exist. not all orm are created equal.

                                  since all data can be “relational in nature” his solution to “Encapsulate your relational queries into a Model layer” will in the end just produce your own ORM or lots of duplicated and hard to maintain code.

                                  we currently use the Ruby Sequel Library. I like it because it provides different levels. You can easily drop to customised SQL and speed up things if necessary.

                                  1. 7

                                    Along these lines, another benefit of the ORM is composability. I find that when working directly with SQL it is much harder to compose queries from smaller, singly focused components. That being said, there are abstractions that operate at a lower level than an active-record-style ORM and map much more closely to SQL (such as Ruby’s Sequel mentioned above or Clojure’s Korma) offering much of the composability benefits that you’d get from an ORM.

                                    1. 5

                                      No one has mentioned another big benefit of ORMs: security.

                                      ORMs are supposed to sanitise all input, and prevent sql injection attacks. In theory, programmers could do this themselves. In practice, the dozens of hacks at big name firms (can’t remember any examples now) show that most programmers, even at reputable firms, weren’t doing basic sanitization of input.

                                      1. 6

                                        A really thin typing layer can do this and do it more completely, safely.