For people studying the brain, I would have hoped not to read the article in the highest contrast my screen can produce with pure white text on a pure black background. After the first two paragraphs I could see nothing but lines :(
For those that are interested, I posted an article[1] a little while ago on how to automate the renewal process for Letsencrypt using Daniel's acme-tiny[2] script. It's a lot nicer to let cron handle it than doing it manually ;)
I just get frustrated being told what I want, being upsold, and being made to feel as if I don't know what I'm talking about when in fact I probably know a lot more than the sales person who has probably never used the device in question the way I've described I will be using it.
I understand that the general case is better serviced this way, but for someone who walks in knowing the part numbers they want, the added friction is a turn off.
I personally avoid going to Apple stores because of how hard it is to actually buy stuff there. Even grabbing a simple USB key off the shelf is incredibly hard to pay for when the cashiers are all hiding in a sea of other people.
Or at the Apple store! omg, the number of times I've walked in, gone directly to a sales person to request that they kindly go to the back room and retrieve a specific item for me so that I can give them money and been stalled, interrogated, and counter advised on other products when really I already know what I want and just want them to get it for me.
me: "Hi, I'd like to buy a White 13" Macbook with a 500gb HD and 8gb of RAM. Could you please get one for me?"
sales person: "What are you using it for? Do you browse the internet? look at photos? do a lot of word processing?"
me: confused "um, I do web development and use Photoshop sometimes..."
sales person: "Oh well you need a Macbook Pro then."
me: "no, I can't afford that and the regular Macbook is plenty powerful for what I need. Can I just buy one please?"
sales person: "Photoshop won't run well on the regular Macbook. What you really want it the Macbook Pro. You'll need at least 16gb of RAM and if you're editing photos you'll want a bigger harddrive, not to mention the extra power that comes from the Pro's CPU."
me: "um, I have money in my hand right here that I will give you in exchange for a regular Macbook. Can you please go get one and take my money?"
I agree with others that the author seems to be missing the point of React. Whether or not it is "reactive" or doing things the way you're supposed to do them is irrelevant. It's a tool, and it either helps you fix your problem, or it doesn't. IMHO React helps a lot.
I've built a few non-trivial apps with React this year (e.g., https://github.com/robmclarty/barss), and after years spent building and maintaining apps made with backbone, angular, jquery, and other libraries (considering the domain of React => the view) I can easily say that React has saved oodles of time, allowed me to greatly understand my apps as a whole much more clearly, and enabled me to think less about propping up a structure for my app and focus on actually designing my app.
The point is, it's not about what's passive or reactive or [insert enlightened path to programming here]. It's about what works; what keeps the ball rolling; what gets your app online and in front of users.
When it's snowing outside and I'm making a decision about what I should cover my feet with, I'm concerned about "what will keep my feet dry?". When I'm moving across town into a new apartment, I'm concerned with "what will have enough volume to transport all my junk?". When I'm making an app, I'm concerned with "what will make this design in my head work in a browser?". Whether I wear boots or shoes, whether I use a diesel truck or a gasoline van, or whether I use React or Whatever; that's not what's important.
I like that React doesn't drag me into event-listener hell where stuff is firing from somewhere that I don't know where. I like that React compartmentalizes templates with the behaviours that manipulate them. I like that React passively alters itself based on state changes.
When it comes down to it, an app is, simply, an interface for mutating and presenting data. It can be in one of many possible states at any given time. React just presents a view of the app that is based on its current state of data. With React, all I have to worry about, conceptually, is "what's the data?" and my app reconfigures its presentation accordingly.
TL;DR At the end of the day it doesn't matter what's right or wrong, it matters what realizes your intentions as a programmer (and as a human). The way React works makes my job easier, more productive, and faster. It doesn't suck at all.
These new rules seem reasonable and no different from what businesses are/should already be doing.
Does "consent" apply to websites which add an "opt in" checkbox but check it off by default and hope that nobody sees it?
This really irritates me and I would argue does not constitute my having given my consent to receive emails. That said, I don't see an easy way to distinguish this kind of practice from a legitimate opt-in checkbox.
Exactly. If you don't want to burden your little head with OPAs and APIs and application architectures, just stick the jQuery and happily manipulate the DOM here and there as you see fit. If you want to make something bigger, something more app-like (in your browser), something that's not merely a web page, you're going to need some structure like that found in an MVC framework.
Coming off working on a large Backbone app, I've seen how bloated, needlessly repeated, and painstakingly verbose things can get. Angular solves a lot of the problems I have with Backbone by taking care of basic plumbing for me so I can focus on the unique parts of my app. It's magical, but that's what I want in a framework: less pounding out boilerplate and more writing application code.
Don't be a used-car web dev then. Be the luxury sedan - sport car web dev. I explain to my clients (not necessarily through this analogy) that I'm definitely not the cheapest dev/designer they'll be able to find, but that they'll gain more quality, etc. for more money with me (with case studies to back that claim up). I don't sell my clients used cars, and so they don't expect to pay used-car rates with me ;)
I think we all understand that spaghetti code simply adds time to the next feature we want to introduce, probably creates unseen bugs, and might explode. But it's always a balance and nothing is black and white.
I hear a lot of "you're wrong, do it the right way first!" but you gotta balance "the right way" with its context. Code isn't made for code's sake, it's made to do something (like a business objective, like "be able to order a book through my browser"). Businesses are trying, first and foremost, to make profit, however they need to do that. Beautiful code has nothing to do with that goal, but is sometimes a means to that end.
If the code achieves the business objective it was meant to achieve, it's doing its job (however minimally). Customers don't care what the code looks like (if they look at it). They just care that it does what they need to do (like order a book). Businesses don't care what the code looks like as long as it makes profit.
Secondary to the business objective is how that code fits into the greater context of the system-as-a-whole. Obviously badly written code is going to accrue technical debt, which will likely lead to cumulative delays to new features, cause things to break, etc. The extra effort involved in dealing with that debt is obviously going to cost something, which will have an affect on the primary goal of business: profit. But also delaying a feature, to "do it right the first time", that could be earning revenue, is also going to affect profit. The key is to balance it to maximize profit overall.
When I do anything (code, draw, write, cook, paint, dance, whatever) I start by doing it the simple, easy, fast way; I probably fuck it up; then I iterate and try to improve upon it and refactor. Usually in getting something out there I discover new solutions that I would not have seen had I not actually made something and put it into the world where I could look at it and point to it and talk about it with other people. Being an early mover aside, I think this kind of process helps overall quality anyway. And in the meantime I've got something that's at least doing something.
I think Joe Armstrong knows what he's talking about ;)
I agree this is a bit of overkill for a "my first hand-coded website" project. I've been hand-writing websites for over 15 years (back when all I had was Notepad on a Windoze box). I think I'd approach this sort of learning adventure more along these lines:
1. HTML/CSS (This is the end-result a browser needs, and you can write it all by hand yourself; by not using any grid/layout frameworks you'll learn all the fun things that CSS can do for you and you can focus on making clean semantic markup without any other dynamic distractions.)
2. Do some simple backend stuff that now dynamically generates the above HTML/CSS based on some simple logic (I'm thinking PHP to start because it's on almost every server already so you don't need to worry about installing anything... just get used to the idea of generating the above static HTML with some programming logic.)
3. Add a database (probably going to want to go with MySQL for the same reason as PHP; learn how to store data in the cloud and retrieve it to show in your dynamic pages)
4. Maybe learn some server config (probably Apache) but don't get too carried away because you can do a lot before you need to be installing Apache modules and tweaking environment variables... I'd just start by playing with redirects and error pages)
5. Now that you can build a full-stack website, I'd probably beef up my graphic design skills to make that shit sparkle (Usability, information hierarchy, and clear communication are the names of the game here. Design skills can make up for many technical difficulties if you think about the business problem you're trying to solve, not just how fancy you can make your sorting algorithm)
6. With the fundamentals under your belt, now I'd start looking into frameworks and libraries and helper tools that can make all of the above easier and faster. Now you'll understand what those tools are really doing for you and where they're appropriate to pull out. Get your CSS grid, your LESS compiler, your deployment tool, your database inspector, your autocompleting IDE (if that's what you're into) and make the computer do the grunt work, but now with the understanding of how it's helping you so that you can bend it to your will.
7. Move on to more advanced stuff like front-end MVC, non-blocking backend, websockets, streaming, ssl, localstorage, scaling optimizations, etc. But now that you can do the foundation yourself, you can add-on any of these advanced techniques as needed (no one in particular is absolutely necessary as they are specialized to particular tasks).
To me, this is the sort of DIY path that should be taken, step by step, to really understand how to construct a web property. IMHO the OP jumped into the deep-end a little too early. Learn to walk before you run ;)
The thing about computers is that yeah, they're awesome at communication, but they do a lot of other stuff too that has nothing to do with person to person transmission of information. IMHO task-oriented UI makes the most sense because I use my computer as a general-purpose tool to get stuff done. In all use cases I find myself performing a type of task. Only in a subset of cases do I find myself communicating with a person.
I guess I'd call myself more of a power user, but when I look at what I've got going on my computer at night it typically looks like this:
- playing a video game
- talking to arbitrary group of friends on skype over headset
- streaming video to twitch (to whomever is watching)
- programming my side project on my laptop during downtime (waiting for people to connect in-game, etc.)
- browsing the web (looking up game items, watching funny videos, researching some kind of programming thing I'm figuring out)
- monitoring my inbox
- monitoring my twitter feed
Talking to my friends on Skype is definitely direct person to person communication. But even then, I think more along the lines of "1. I want to have a group conversation with Friend A, B, and X, 2. I'd like to communicate with them through the medium of Skype, 3. open Skype 4. add the specific friends I want to talk to to my conversation, 5. go ham". There's no one friend in particular I would "open" first, and subsequently open other friends into. That seems backwards. It's more about what I want to do, not necessarily who I want to talk to.
Then I guess my question is this: why is a mostly visual interface/representation mainly controlled by non-visual means? To me, a mind-map is not a "power user" tool and is used for organizing loosely understood ideas in hopes of getting a better grasp on their domain.
IMHO it should be something easy to play with, move things around, unstructured (in the sense that a user's stream of ideas won't necessarily be coming into the program in a structured way; the point of the program being to structure them), and be able to make many corrections and revisions. The goal of the tool should be to take unorganized thought and mould it into a comprehensible hierarchy that can be used to communicate ideas to others.
The article was about how great Apple names things and how bad everyone else does. My point is that Apple's names aren't some brilliant miracle of nomenclature like the article makes them out to be.
Obviously if I'm going to drop $500+ I'm going to kick the tires and take the product for a spin around the block to see how it feels (and maybe even read its specs).
I think what Apple does do well, and which the article points out, is that they limit their offerings to a number I can count on one hand, the differences between each being obvious tradeoffs (e.g., performance vs. portability) which consumers can actually decide between. This empowers consumers, makes them feel good because they understand what's happening, and likely leads to increased sales.
For sure. Bootstrap is good for... bootstrapping. After you've got your MVP working and you're ready to make a real, custom, unique, differentiated, improved user experience, you're going to need to hire a designer and someone who can write CSS. Bootstrap isn't going to make the interface for your Great New Thing (TM) and if your great new thing can be built with Bootstrap... idk, maybe it's not so great?
The interface was a complete mystery to me. I clicked and dragged and hit enter and gave up. I read the manual and discovered the insert key (although I don't have one on my mac laptop) and then used tab. But I need to use my mouse to click on a node and then tab and then back to mouse and tab... seems awkward. Could you make it so i can just click and drag from a node to "pull out" a new node and have that default to have focus so i can just start typing?
With any of these sorts of programs, I think it's good to keep the pen and paper interface in the back of your mind. If it's easier/faster/more intuitive to use pen and paper, I think there's still some work that needs to be done on the interface ;)
Funny. I had a similar experience myself in art class in high school. The assignment was to take a photo from a magazine and reproduce its likeness with pencil and paper. I must have just had good shape and spacial recognition because the drawing I made just happened to be approximately the same size and proportions of the magazine photo I was using as reference and, so, the teacher accused me of simply tracing it. I got a zero on the assignment and was accused of being a hack in front of all my peers even though I drew it freehand, from sight (the way we were instructed).
IMHO there's too much emphasis placed on doing things the "right" way and not enough on actually getting things done. Even if I did simply trace the photo, I still would have had a learning experience, engaging pencil, hand, and paper and understanding a bit more about how they work (to me, the purpose of the assignment). Regardless of how a thing is made, if it actually gets made and gets into other people's heads and gives them an experience worth having, I think it has done its job.
I took up my dispute with the vice-principle along with my parents and redid the assignment on thick, opaque card-stock (that couldn't possibly be used to trace through) and reproduced another photo with just as much accuracy. I went on to attend art school and win illustration awards despite my horrible experiences with art in high school, but I worry that another student might have abandoned their pursuit of art and deprived the world of their creativity, given such negative feedback. I feel we all need to lighten up a bit.