I’ve been playing with a Arduino compatible Uno R3 and a WS2812B RGB addressable LED light strip. I cut a 3m strip into 5 strips that are 28 LEDs long and soldered the lights together to make a display. I’ve been working on coding a font for the lights and can display about 10 different characters currently. It’s my first time really doing any sort of embedded work and my first time actually successfully soldering. Now that the thrill is gone since I solved this challenge I was thinking of making a remote control snow plow.
What kinds of things do you write in Racket? I’m a clojure dev and so I’m a big fan of lisp. I’m just curious what kinds of projects you would use Racket for
i'm also curious.. do you use clojure because of jvm? i want to learn some kinda lisp, but there are so many choices. why not just common lisp or the one with emacs.
clojure works on the jvm, or without (babashka, technically graalvm i think), or in the browser (clojurescript). i think there is a .net implementation, not sure.
then you get clojure inspired languages that are quick to learn if you know clojure (janet, C runtime, fennel on the Lua platform).
And soon a clojure optimized for integration with C++ (Jank).
Bonus, clojure is relatively simple language. (it's a small language where most things are immutable, with a small-ish set of functions operating on a small-ish set of provided data structures).
common lisp is cool but looks way (waaay) more complex. so you will need to invest way more to learn it (might be worth it, dont know). i technically "learned" it but never felt the impetus to use it.
i occasionally do some stuff in emacs lisp. but i'll mainly be running clojure & babashka (and rust). currently refreshing my ocaml, and learning ada (this thing is great, should have learned it a long time ago). also nim.
I personally use Clojure because I got a job doing it, I hadn’t touched it before my current position. I would pick it now over Common Lisp and Elisp because I prefer the syntax (I like the brackets in addition to parentheses) but also the Java integration and build tooling make things easier to get going.
I use clojure over common lisp because I find the ecosystem (libraries) a bit more approachable (feels like there is more web oriented stuff in clojure, plus gui support with javafx.) That said, the actual experience of working in common lisp is better (bit better repl/recompilation, conditions, native compilation.) Personally, I don't find scheme as practical for writing programs as either of these two options (too fragmented and/or niche.)
Good lord this is terrible and the things that were learned and seemed to be normalized by Noah are not applicable to 99% of all individuals starting a company.
First section is about growth:
> “Mark, we’re not profitable. Let’s try selling tickets inside Facebook events,” I pleaded.
> He said no.
> Then he took a dry-erase marker and wrote on the board: GROWTH.
> Mark’s goal was 1 billion users.
> Every idea we’d bring, he’d ask, “Does this help growth or not?”
Putting growth above profitability can only work when you are getting some sort of outside funding. Facebook didn't turn a profit until 2009, which means it was about 5 years of burning through other people's money. That is not sustainable for the almost all individuals who are wanting to start a company now or people who are running smaller companies.
Move Fast:
> At Facebook, it was normal to work 12+ hours a day.
That is just awful and it is painful to think that giving up so much of one's life was the norm there.
> We shipped several updates to the site every day. In comparison, companies like Microsoft would take months to write out product details, discuss them in a lot of meetings, and finally build them.
> As a startup, your biggest advantage against giant companies is speed.
There is a reason why things would take longer at Microsoft, you can't "go fast and break things" when it comes to an operating system or other software that is businesses may rely on for their day to day work. The fact that Noah makes the comparison to Microsoft is concerning since I don't believe that Microsoft had any social network product around the time that Noah worked for Facebook (though I could be wrong). A better comparison would be MySpace, since they were an actual competitor of Facebook's at the time and also worked on comparable products.
Treat Your Employees Well:
Many of the perks that he lists out are designed to ensure that the employee stays at the office as much as possible. It is easy to get your employees to work 12+ hour days when you make it so they don't have to go anywhere to get good tasting food 3 times a day, didn't have to worry about your laundry and would even get money for living very close to the office.
Scratch Your Own Itch:
>At the start, Mark never intended to build a company. He was just trying to help connect people at college.
I'm not really sure how creating a clone of "Hot or Not" really helps people connect. If Harvard didn't take Facemash down and Mark didn't face any sort of threat of punishment (expulsion, violation of copyright, etc) would Facebook actually exist currently? I don't think the "scratch your own itch" mantra works in this situation
Pay attention to details:
>He was meticulous about capitalizing the “F” in Facebook
Facebook is the name of the site and company and as such it is a proper noun. I don't know why it would even be a noteworthy thing to want to ensure that a proper noun is capitalized.
Give ownership to the team:
>Engineers and product managers could come up with features and build them out without needing anyone’s approval.
But previously Noah stated that:
>Every idea we’d bring, he’d ask, “Does this help growth or not?”
With that kind of reaction to a feature being suggested it doesn't seem to me like there was as much free reign to build features as this section implies.
> I'm not really sure how creating a clone of "Hot or Not" really helps people connect. If Harvard didn't take Facemash down and Mark didn't face any sort of threat of punishment (expulsion, violation of copyright, etc) would Facebook actually exist currently? I don't think the "scratch your own itch" mantra works in this situation
Well, if his goal was to get fellow students to upload pictures of pretty girls from his campus, that would indeed be a "scratch your own itch" situation. The entire story has strong Revenge of the Nerds vibes - and I mean that in the more recent revisionist "oh god, all of them should be in prison for sexual harassment and at least one count of literally rape" sense.
If it makes you feel better you probably would not have been able to just pick up the dishes and use them without buying extra parts. I had DirectTV and when I cancelled they came and took the feed horn off the satellite dish but left the rest of the dish. I’m not sure how much a feed horn would cost but at least the dish wouldn’t have been immediately usable. I also was interested in making a radio telescope but gave up when I realized DirectTV took that part of the dish
Back when wardriving was a more popular pastime (and before the ISM bands got clogged completely up with everything), I wanted to play around more with long-range 802.11b/g signals.
I scored an old Primestar dish and LNBF. This was the easy part: I just talked to one of the guys at a small local company that dealt with things like consumer satellite, and asked nice. He was curious what I wanted to use it for (Primestar was dead by that point), so I told him, and he thought that was a fun idea so he gave me one or two that he had kicking around in the shop.
The idea was to toss the LNBF and put a biquad antenna made from wire at just the right spot where the parabola focused. It seemed easy enough, but my fabrication skills 20 years ago were lacking, and I didn't have any measurement gear beyond a multimeter and a tape measure, so the project never went anywhere.
But nowadays, with modern accessible CAD and 3D printing and sendcutsend and JLC and SDR dongles and Harbor Freight and everything else? With the RF gear I either own these days, or have access to? Yeah, I'd probably be able to make it work. I might even be able to turn a new feedhorn on my buddy's lathe to increase efficiency. FFS, there's probably already parametric models out there for OpenSCAD that just do this thing.
It seems much, much more do-able with today's resources than it was back then.
Except, also these days: If I wanted a big parabolic wifi antenna, I'd probably just buy one that was made in a factory...and use it. :)
You are correct, however, that isn’t the same as probation. Companies with a probation period may not grant full benefits until after the probation period ends. For example, a company may not let an employee take any time off during the probation period or the company may not let an employee participate i. The company 401k retirement savings plans until after the probation period.
There most definitely are companies that have a probationary period in the US. It may not be common but it does happen. My first dev job had a probationary period and I put up with it because it was a job that was willing to employ me as a dev without a CS degree or prior dev experience. I lasted about 7 or 8 months before I quit for somewhere better.
It may have started that way but now it is used to install and manage applications and it makes it really easy to do so. There is even a Linux version of homebrew now
I’m not really sure how you would be able to write an interpreter without a parser, since you need to know what the user is trying to do. For a more complete tutorial there is Make-A-Lisp (mal) [0] that has steps for making a lisp in various (including JavaScript) and has a process guide [1] to get started.
I can second Make-A-Lisp. I worked through it in C# initially, and I'm now halfway through a Rust implementation. The MAL process guide is a good set of instructions but doesn't go as far as actually presenting pseudocode, so you do have to think, and sometimes 'cheat' by looking at one of the reference implementations. In terms of tokenising and parsing, the MAL guide does include a monster regex statement that recognises the relevant tokens, and the parsing is quite easy due to Lisp's relatively simple syntax. If you choose the right implementation language, it will do some of the heavy lifting for you (notably memory management).
[Edit] Just wanted to reiterate that lexing/parsing Lisp is easy as per the MAL instructions. IIRC the things that I found hardest (in C#, as a C# newby) were understanding how to implement the closures required to support function definition, and then implementing Lisp's macro expansion.
I have not heard of tagless final style interpreter before and that seems really neat. However, based on the link it seems that tagless final interpreter uses a strong type language like Haskell or ML so I don’t know how well it would translate to Javascript, which is what the GP comment said they were using.
The style of the construction is what matters most. If you're using JS then you're already giving up types, but the higher order abstract syntax is what lets you embed and play with language semantics.
I think I may have misunderstood what your original comment was referring to. Were you saying that one doesn’t need a parser to make a working interpreter? I want to make sure that I understand the context of your comments because looking at the post you linked where you did this in C# you show you are using a recursive descent parser. It was when I saw the parser that I realized I could be way off base on what I was thinking you were talking about.
Yes, it doesn't need a parser. I didn't link to one post, it's a tag that links a series of posts discussing tagless interpreters. You can use the interpreter in the first post directly without the parser as well, it's a separate component. IQueryLanguage<T> is the interpreter definition.
I should note that the other posts go into more of the theory and background of final tagless encodings, including links to Oleg's site who has done a lot of work on them. They are a very flexible for implementing embedded languages.
I think the attitude is more the result of lack of competition. All of this was from before my time but doing a quick check on Wikipedia shows that VisiCalc came out in 1979 where 1-2-3 came out in 1983. I’m not familiar enough with the spreadsheet software landscape from the early 1980s but given that the article mentions 1-2-3 specifically I am going to assume there wasn’t really any real competition for at least 4 years. It can be easy to think that the future is in a new product since they seemingly had little to no competition in their original market for 4 years
1-2-3 was 3rd generation. VisiCalc, while groundbreaking, was quite crude. Its fundamental utility outweighs its lack of sophistication. It was quite 1.0, and once the cat was out of the bag, it was hardly secret tech.
There was at least SuperCalc, and Multiplan from MS. But those were really still from the 8-bit world. Lotus was able to start again from scratch with the large memory potential of the PC.
MS did a version of Multiplan for the Macintosh. It was amazing! Mice and spreadsheets were a match made in heaven. But it was just a pre-cursor for Excel, and did not last long.
There are some settings in your profile that show you are open to work without broadcasting it on your profile picture. There is also a setting that is supposed to hide the fact you said you were open to work from people at your company but I’m not sure if that really works.
Have used this feature, works exactly like this. However it is a hit or miss, most of the incoming recruiters/companies are far below my standards. The best way to use LinkedIn is to send out requests to engineers where I want to work and ask for referrals. It's important to do your homework on the role, company, and person. Most of the people are happy to refer if you do this.