Hacker Newsnew | past | comments | ask | show | jobs | submit | greenkey's commentslogin

> a year or two behind the times

How exactly?

I agree with you that use of blockchain on its own is not fully secure, but that can be mitigated for the most part through the same sorts of proof-of-work and proof-of-stake mechanisms and entities that Etherium, etc. use. with adjustments.

This might be exactly the time for Woz and co. to get into this given that there are others handling those problems, right?


> I agree with you that use of blockchain on its own is not fully secure, but that can be mitigated for the most part through the same sorts of proof-of-work and proof-of-trust mechanisms and entities that Etherium, etc. use.

None of that does anything to prove that the energy consumption data you are submitting is true.


That’s what proof-of-work and proof-of-stake are about. I’m saying that the problem has been solved and would need to just be applied to this use case.


Nope: those only apply to elements on the blockchain, not elements in the real world. You'd need proof-of-not-work for a real energy efficiency business.


> That’s what proof-of-work and proof-of-stake are about

Nope. No amount of "proof of X" will help if you put false data on the blockchain in the first place. They will do a great job securing the false data though. Good luck with that.


I’m not a fan of everything Bukowski wrote, but I wouldn’t try to censor him so that little Jimmy could read it, and I liked the movie Barfly.

Similarly, I’m not a fan of everything Linus wrote, but I wouldn’t enforce bad CS101 code on him so that little Jimmy could read it, and I like Linux.


Who is little Jimmy?


Jimmy is a diminutive form of James. It's the sort of thing where parents would call a kid "jimmy" and when they grow up they will ask people to call them "Jim" or "James."

Adding "little" in front just stresses the fact that we are talking about a kid, so the references are about dumbing it down for kids.

Johnny is probably a bit more common than Jimmy, but I've seen both. See e.g. [1]

1: https://en.wikipedia.org/wiki/Why_Johnny_Can%27t_Read


The poster-child for the movie "Think of the Children!"


It refers to an old American comicstrip with a little kid that didn’t know much. (I think anyways)

It just sort of means any below-average person.


This is good advice.

Another thing to consider is cost-to-benefit ratio.

If you don’t know cost, first look at:

Product costs: free < one-time cost < recurring cost or recurring “one-time” costs

Resource alignment costs: (Re-)hiring + severance + knowledge lost or transferred to competitors

Refitting and development costs: converting or re-writing code + (re-)training + architectural changes + design changes

Time + impact to other initiatives and maintenance

Don’t stop after costing!

Then listen to the perceived benefits or need again, being careful to communicate and discuss the perceived costs, so that those selling the idea within the company understand, because if they don’t, their good idea will be poor morale fodder later.

This is much quicker and easier than it seems. If you still haven’t convinced the elements within the company to back down on their idea, and you’ve done a good job listening and considering their points, then either those elements are onto something or they’re “on something” (drinking the kool-aid).

Make your decision.


In my experience, the main reason these companies fail and especially why acquisitions don’t turn out well is the assumption that the way you do business and the people you have are just successful in their own right and will just take in the new sheep and keep fleecing the larger flock. It doesn’t work like that.


> That said, Common Lisp is weird. What I find particularly jarring is that functions and variables live in different namespaces: if you put a function into a variable, you can’t just use it like a function, you have to funcall it.

Unless I’m misunderstanding, the author sounds like a developer that’s primarily used JS. It’s really not abnormal to have to include parens after a method name in a language, which indicating that you are calling a function.


> It’s really not abnormal to have to include parens after a method name in a language

That's not what he means. Assuming some pseudocode with a more common syntax to prune the parentheses question, Common lisp is doing this:

    function f(x) { print(x) }
    let a = f
    funcall(a)(27)  # prints 27
Whereas Scheme is doing this:

    function f(x) { print(x) }
    let a = f
    a(27)           # also prints 27
This is the fundamental difference between so-called Lisp-1 and Lisp-2 families, depending on whether functions and variable share the same namespace or if they have to be “lifted” from one to another through funcall.


I think you are misunderstanding.

In common Lisp you can call a regular function defined with defun as (foo "something"), but if bar is a variable containing a fuction you have to use (funcall bar " something"). I agree that this is weird and confusing.


Isn't that the same thing as using function pointers in C?

You need the * to access the function the variable points to.


No you don't. You call the pointer itself. It points to the first instruction in the function.

It's more like Ruby's method(:foo) and .call().


Sure, this isn't that rare of a thing for languages, but it is increasingly rare to find people who think this is a good idea.


I like this post but “unscrupulous merchant” seems harsh for a company that may have changed their policies and didn’t realize they had to inform the referring agent of those changes.

It’s not uncommon for policies to change; that initial marketing spiel for bringing agents aboard doesn’t look like a contract.

The reselling agent probably didn’t have a case here, and the merchant went out of their way to assist when presented with a good argument.

So, this is less about the “unscrupulous merchant” and more a warning to businesses to be clear and contractual with your policy and policy changes in order to avoid PR disasters like this.


Thanks for reading!

>I like this post but “unscrupulous merchant” seems harsh for a company that may have changed their policies and didn’t realize they had to inform the referring agent of those changes.

Even giving them an extremely generous benefit of the doubt, I can't think of a way to describe them as anything better than "unscrupulous."

If it truly was an honest mistake that they forgot to tell affiliates they changed policies, their reaction upon finding out should have been, "Oh wow! Thanks for telling us! We owe hundreds of people money, so we'd better review our transactions and pay everyone what they're owed." But instead, they (as far as I know) only paid me and never informed any of the other affiliates.

Also bear in mind, that you can't just "forget" to tell people that you changed the terms of your business relationship with them. If I hired hundreds of employees by advertising a $20/hr wage, I can't just privately decide that their pay is lower and secretly reduce their paychecks until one of them notices.


> Oh wow! Thanks for telling us!...

In the US, admitting you did something wrong could open you up to a class action suit where some customers could be eligible for damages due to negligence.

You and others assume the merchant is unscrupulous, but they provided a remedy, so when you then called them out on it and gave them bad PR, you’ve given less incentive for other businesses to provide even that.

You could’ve written your post without specifically mentioning the merchant’s name, if your intent were really only to help others.

Even worse, if the merchant were unscrupulous and your aim were revenge, if it were to turn out that the merchant gets more business because of the PR around your stunt, they might tell other unscrupulous merchants that they should not pay their agents and hope for a windfall from rewarding only one of them with their due.


I can't get behind your interpretation. Not counting the bread, sure whatever. Maybe that's just a missed exclusion clause in the program documentation.

But then sending out discount codes to affiliates explicitly saying, "Boost your sales by giving out these codes!" Then to exclude those purchases from the affiliate program? I mean, come on. Where do you draw the line? Because that's definitely crossed out of my "innocent mistake" threshold.

> In the US, admitting you did something wrong could open you up to a class action suit where some customers could be eligible for damages due to negligence.

This is not a customer relationship, it's a business one. Presumably with some sort of written agreement. Violating that agreement or their own advertising around that agreement is what is going to get them in trouble, not an admission of fault. Besides, paying the author as they did could be submitted to a court as an admission of fault anyway. (That's why real settlements come with an NDA and explicit written agreement that fault was not assigned.)

> You could’ve written your post without specifically mentioning the merchant’s name, if your intent were really only to help others.

I think calling out the merchant is helping others, specifically others in or thinking of joining their affiliate program.


I disagree that “unscrupulous merchant” is harsh. If only for the fact that they create a referral that's not for their flagship product and not for promotional products. Which they then go on to blast the visitor with.

I cannot read that scheme and not agree with “unscrupulous merchant” as a apt description of the company


> ...a company that may have changed their policies and didn’t realize they had to inform the referring agent of those changes.

Presumably the law varies depending on country, but in the UK you're absolutely obliged to inform any involved parties of substantial changes to the terms of any agreement you have with them. Deciding not to pay commission to affiliates on a flagship product is a pretty big change, if I was an affiliate I'd definitely want to know about it so I could reconsider my position.


Same here, I avoid them when I can. It won’t be too long before the gas stations are fast chargers, though- I give it 20 years.


Simply replacing gas stations with chargers is a step back in electric's flexiblity. They don't need large underground storage tanks and special zoning. I think gas stations will simply vanish, and chargers will stay next to useful places like businesses, grocery stores restraurants, malls, etc.


This is true in Urban markets, but in more rural areas the gas station is the grocery store and the restaurant. It will probably help those businesses by giving bored drivers a reason to come into the business and spend.


Now the trunk is auto drive (which is less problematic for long running one that is train service in nature), the business model has to be rethink.


In the ideal world we'd turn the existing gas stations into solar powered super charger stations (which do sort of look like current gas stations [1]). Existing gas stations are often found near useful places like grocery/restaurant/business areas.

But as you say, there are less needs for equipment and regulation, so we could potentially have existing gas station locations converted AND new sites even closer and even more liberally sprinkled about providing even more convenience.

[1] https://electrek.co/2017/04/24/tesla-new-supercharger-statio...


That’s sort of pointless though unless the gas station is in the middle of nowhere. There is no point in wasting valuable real estate with solar panels covering a parking place in front of a building nobody has a reason to visit.

The grid functions with renewable energy so I would rather use the super charger at the grocery store than the one at a previous gas station.


There are a bunch of out-of-the-way gas stations in the US South that would benefit greatly from adding electric "pumps". They are generally located on vacation friendly roadways and are frequented mostly by travellers on their way to the beach.

Adding several electric recharge slots would be a great way to bring people and keep them there for 10-20 minutes. Restroom and snacks (or even meals) for 4-5 people plus you get to clean the bugs off of your windscreen. I personally make this trip every year (sometimes twice a year) and would love to see more electric refueling stops.


Middle of nowhere is a good place for a charger. mmost people will charge at home 95 % of the time. It is only the 5% trips where you don't get back home that you need a charger. Middle of nowhere is where that is likely to be. Look at truck stops, they are all stores and restaurants, everything someone going a long distance needs. They are never inside a city because land is too expensive and anyone in the city for the night has a parking space.


Maybe in the US. House ownership isn't that common in every country. It's rather difficult to charge your car at home in an apartment building.

I wonder whether the charging cables will start getting stolen like rims have been.


I think it's largely a matter of just getting charging stations in more places. People who own cars must park them somewhere, and all those somewheres can have utilities installed if someone's willing to pay for it, it's just a matter of figuring out how to make it happen (whether via mandates or incentives or just market forces).

They don't have to be superchargers, either, just good enough for overnight charging.

The transition will probably take a while, but I expect that eventually people will stop calling them "electric cars" and just call them "cars" and charging stations will become part of the ubiquitous infrastructure of cities, like sidewalks and fire hydrants.

I don't know if people stealing charging cables is a common problem now. People complain where I live about catalytic converter thefts. There are probably ways to solve the issue of people stealing expensive charging equipment and re-selling them, but if people steal cables simply to recover ten dollars or thereabouts of copper, I don't know how to fix that (aside from "move to a nicer neighborhood"). Maybe use less valuable metals like aluminum, if that can be made to work in this application?


I expect apartments will start installing chargers for residents. They just need a way to ensure that they don't lose money giving free power away. The early ones will do it for a direct profit. The later ones will do it because potentialnnew residents will start saying "nice place, but no placeto charge my car", after a while they will get the message and add them to compete. (where needed)

Event though youcan charge in minutes, that doesn't mean you should.


More than a handful of the high speed super chargers need some pretty serious electrical infrastructure so there's still a pretty important niche for something like a gas station for people taking longer trips where the charging time means you need somewhere to kill time while you charge.


Still think battery that can plug and play is a good idea, with all sort of monitoring tools you would not trade your good rental one with a bad one. A d if you have two to three you can simply like drinks just replace it when drive along. (Heave enough not easy to do in your neighbourhood store.). Charging is only for like cinema etc. Gas station is a goner except as cafe etc.


What I don't understand is why a replaceable battery is seen as an all or nothing proposition. Design the car so that you could add 1 or 2 extra batteries when you need them.

So 90%, 95%, 99% of the time you're using your built-in 150-mile range. But you're not dragging around the weight of the extra 200, 250, 300 miles that you don't need. Your car weighs a lot less so you get better eMPG.

Tesla did a demo of having a battery swap: https://www.youtube.com/watch?v=H5V0vL3nnHY That's really cool but if you could roll into Jiffy Lube (now offering Jiffy Volts) and get your extra batteries ...


I like that idea. It's a little tricky to pull off, though. Adding cells in series increases the voltage (which the car might not be designed to handle) or adding them in parallel means they have to be well-matched to what the car already has.

I don't know if anyone has tried this, but a solution I like for adding dissimilar batteries is to break the battery up into blocks that are linked in series, with each block being, let's say, 50 volts. Maybe the stock battery has five of these in series for 250 volts.

If you add more blocks, it exceeds the voltage specifications. So what happens is that each block has a contactor (i.e. a big relay) that can bypass that block; it just looks like a 0-volt battery when enabled.

Supposing you add two extra blocks for a long trip. Then you have a scheduler that disables two blocks at a time on a rotating schedule, so it always has 250 volts. If the added blocks have more amp-hours than the OEM blocks, that's fine: they'll just be enabled for a longer duration. Rotating batteries in and out can be done in a way that keeps their voltages roughly equal with each other as they're depleted.

Maybe this is too complicated and too much of a hassle to be worth it in general (as opposed to just building a car with a big battery to begin with). I'm also not sure if typical relatively-inexpensive contactors can tolerate being switched on and off every few minutes while under load.

On the plus side, you could probably just have a few kinds of generic "extra" batteries that work in a wide range of vehicle as long as they can handle the required current. They wouldn't have to be an exact match for what's already in the car.


Which became dominant for a while, but cgi scripts on the server-side were also hot.

Enter Perl and PhP server-side.

Then there was JSP, ASP, and ColdFusion, all server-side.

Rails! Also server-side.

Then back to JS.


Rails is like 10 years later tho... everything else you mentioned was already around by 2000.


Rails 1 was released in 2004.


I wish Matz had been there with Rubyscript. JS wasn’t as powerful back then; it took over a decade for it to evolve enough where people would really use it for much other than client-side validation and neat UI tricks. In comparison, Ruby was a great language to use, and it would’ve grown more quickly.


Ruby was first released on the same year. Python had been around for 4 years already. What could have been, eh...


There was (in 1995) a Python-based web browser called Grail[1] that could run client-side Python applets[2].

[1] https://en.wikipedia.org/wiki/Grail_(web_browser)

[2] http://grail.sourceforge.net/info/papers/restofus.html#apple...


I wish they’d just used scheme


Exactly - rubyscript would have been just as hated as javascript; something like scheme or some other well designed language would have been better.


That’s kind of harsh. Ruby was a great language and especially great syntax. Except for some duplication of methods and early misspelling of one or two methods, it would’ve been much easier for people to learn and do cool things with that didn’t happen in JS until years later.

Scheme’s not bad, but I think if you compare The uptake of both, Ruby did better? (Not counting Lisp.) It was a cool language though; a lot of problems that would’ve been avoided, if people could type all the braces in correctly... for Lisp at least.


I think we would just have got more Java applets. The idea of a programming language accessible to everyone did contribute a lot to its success.


That’s awesome!

In comparison, here a quote from the OP’s blog entry:

“Fast forward to today. A program to load /usr/share/dict/words into a hash table is 3-5 lines of Perl or Python, depending on how terse you mind being. Looking up a word in this hash table dictionary is a trivial expression, one built into the language. And that's it. Sure, you could come up with some ways to decrease the load time or reduce the memory footprint, but that's icing and likely won't be needed. The basic implementation is so mindlessly trivial that it could be an exercise for the reader in an early chapter of any Python tutorial.

That's progress.”

But is a simpler, less efficient method progress? Sure it allows more words to be added/removed with ease, and I don’t want to advocate over-optimization, but the solution you made for the Spectrum seems better because words don’t change much. Why don’t we use a similar specialized hash and compressed dictionary format to increase spellchecking speed and allow more words in less space? We could still produce that format using /usr/share/dict/words and similar.


> Why don’t we

Because we don't need to and we have much more interesting problems to take up our time.


But GP already solved the problem (at least for English and other Latin script languages). Why throw away those findings?


Problems tend to have more than one solution. GP's solution should be documented, yes, but the alternate solution that won out was computers being capable of storing a million words or so in plaintext very easily, and doing the same using their compression scheme just isn't really worth the space saved nowadays.


Also, compressing could actually be slower for modern computers. Remember when compressing your hard disk made your PC faster, up until disks became faster, then it actually made it slower?

Today's CPUs are very fast, so the trend could have flipped again, that would be an interesting benchmark.


Implementation takes time. Keep it simple and move on.


I always thought that we still use a trie or (to save memory) ternary search trees for that..


How many operations and objects? The method he’s talking about would seem more efficient for the purpose vs all of the strings still being created even if never used in the plain hash version.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: