Mika Tuupola
appelsiini.net · Personal blog · on HN since 2008
Mika Tuupola, a developer, writes about JavaScript plugins, web mapping, location services, and token formats.
What HN saysHN links it for his Jeditable jQuery plugin, which commenters call excellent and flexible, and his Apple location services reverse engineering.
19HN people shared it
14linked it in comments
8stories submitted
179story points
3 years agolast shared
2008people per year2026
Most-shared posts
- 1Lazy Load Plugin for jQuery10 people · 11 points · first shared 2010 · discussion on HN
- 2Reverse Engineering Apple Location Services Protocol3 people · 162 points · first shared 2017 · 10 comments on HN
- 3Jeditable2 people · first shared 2009
- 4Google maps without javascript2 people · first shared 2016
- 5Using Branca as an Alternative to JWT?1 people · 2 points · first shared 2017 · discussion on HN
- 6WiFi Trilateration with Three or More Points1 people · 2 points · first shared 2017 · discussion on HN
- 7Google Maps Without JavaScript1 people · 2 points · first shared 2008 · discussion on HN
- 8Google maps without javascript part 21 people · first shared 2016
- 9Introduction to marker clustering with google maps1 people · first shared 2011
- 10Enabled fadein1 people · first shared 2010
- 11Decentralized social media1 people · first shared 2024
What HN people wrote when they linked it
tuupola · 2024-03-25
I have also been pondering with similar idea. Instagram and Twitter style services could be created with an RSS or RSS-like file format. Biggest problem is content discovery, but the Internet has traditionally solved discovery problem by itself.
https://www.appelsiini.net/2021/decentralized-social-media/
RSS was really great and still is. I still read my blogs using it and ignore the ones which do not offer a feed.
dpnewman · 2009-08-24
http://www.appelsiini.net/projects/jeditable
used it several times... excellent; flexible.
luketaylor · 2023-12-21
Not an exaggeration—Apple’s primary “location services” API, used on iOS/macOS, is just a lookup table for wireless APs’ MAC addresses. [1]
WiFi scanning is much less power intensive than GPS, much more reliable indoors, and often (in dense areas) more accurate even outdoors. iirc the iPhone only connects to “real” GPS in specific situations, such as when visible wifi signals are insufficient (e.g. highway driving).
[1]: https://www.appelsiini.net/2017/reverse-engineering-location-services/
rm_-rf_slash · 2016-02-05
Not bad, reminds me of the functionality I get by mixing DataTables(1) and Jeditable(2). I might take a look at this and see if I can work it into any of my current projects.
(1) https://www.datatables.net
(2) http://www.appelsiini.net/projects/jeditable
userbinator · 2016-01-09
The interface would be slightly different but there's no reason why an interactive map viewer couldn't be done in pure HTML and CSS without JS, and then JS added for more enhancements like AJAX loading.
In fact... it's been done eight years ago:
http://www.appelsiini.net/2008/google-maps-without-javascript
http://www.appelsiini.net/2008/google-maps-without-javascript-part-2
Look at where the map images are coming from, copy the link, and play around with the URL parameters. Yes, this still works.
I also distinctly remember playing some HTML adventure games with similar pan/zoom/click interfaces before the millenium, and they didn't require JS either (nor took quite as long as the apps of today to load, on hardware that was probably an order of magnitude or more less powerful.)
kellros · 2013-06-26
You can google for JavaScript image lazy load
http://lmgtfy.com/?q=javascript+jquery+lazy+image+load
You can also check this out, it seems pretty spot on:
http://www.appelsiini.net/projects/lazyload
bherms · 2011-01-20
You're thinking of lazy load. He's talking about something different. If you were wondering how to do that, though, here is a link http://www.appelsiini.net/projects/lazyload
terryjsmith · 2010-09-08
Just look into lazy loading. Google image search is doing it, as it Facebook now as far as I can tell. Basically all of your images on one page and you load them based on the user's scrolling and what's visible. There's a plugin available from jQuery that can help get you started:
http://www.appelsiini.net/projects/lazyload
qeorge · 2010-08-19
Here's one for jQuery:
http://www.appelsiini.net/projects/lazyload
danwolff2 · 2010-08-19
Check out the jQuery plugin Lazy Load:
http://plugins.jquery.com/project/lazyload
http://www.appelsiini.net/projects/lazyload
byoung2 · 2010-04-25
You can do this with jQuery, e.g.:
http://www.appelsiini.net/projects/lazyload/enabled_fadein.html
Download here:
http://www.appelsiini.net/projects/lazyload
Zandikar · 2021-07-06
You mistake everyone using javascript to do those things as the only way it's possible to do those things. That's certainly not true.
You can use HTML, Canvas, and CSS to do just about everything you mentioned.
Video is easy. In pure HTML: <video autoplay loop muted playsinline src="..."></video>. No Javascript (or even CSS) required. You can certainly expand on that as well.
Google Maps does not require Javascript to provide it's core and common functionality either: https://appelsiini.net/2008/google-maps-without-javascript/ You would have to make some changes, but core functionality still exists.
Github does not require Javascript to function. You can toggle JS off and still use it pretty much as is, and the features that do break are trivial to implement without it.
Interactive realtime chat does not require javascript. https://github.com/kkuchta/css-only-chat , and the same principals can be applied to online docs and editors as well.
Javascript is the norm because it has inertia behind it - largely due to circumstance more than any inherent natural benefit, not because it has some secret sauce that the internet needs that couldn't be easily replaced should it be Thanos-meets-Tron-Crossover Snapped out of existence.
A much stronger argument in favor of Javascript would not be pointing to all the good things you can do with it, but rather, with how well and optimized and streamlined doing those things with Javascript is these days. Just to clarify, I'm not saying…
niyazpk · 2012-04-26
Here are a few that were not mentioned:
- If you have a lot of images like in a product catalog, try lazy loading the images - http://www.appelsiini.net/projects/lazyload
- For sprite-ing your images, use some tool which will automatically generate the css for you: http://spritepad.wearekiss.com
- Have a git commit hook for compressing images. (It could be part of your build, but then you are doing the work every time and the build will be slow if you have a lot of images.)
- If you are using LessCSS or something similar (hint: you should), have your compiler compress the css for you. - http://wearekiss.com/simpless
- Have multiple hosts referring to your CDN to facilitate parallel downloads in the browser.
- Compress your HTML too before deploying - http://code.google.com/p/htmlcompressor/
- Have proper versioning in the name of your JS/CSS files and then cache them for ever. Whenever you change your files, the version should change and only that file will be updated in the client. We normally take the hash of the latest git commit on that file:
cookie-wrapper.js -> cookie-wrapper.bb9303b809210674.js
- Offload whatever you can from your cookies to localStorage or things like that to reduce request size.