Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    M

    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.

    Visit blogRSSHN submissions
    Web DevelopmentMobile & Apple
    What HN says

    HN links it for his Jeditable jQuery plugin, which commenters call excellent and flexible, and his Apple location services reverse engineering.

    Stats for nerds
    19HN people shared it
    8linked in comments
    179story points
    Mar 2024last shared
    2009people per year2024

    Top posts on HN

    1. 1
      Reverse Engineering Apple Location Services Protocol
      3 people · 162 points · first shared 2017 · 10 comments on HN
    2. 2
      Lazy Load Plugin for jQuery
      10 people · 11 points · first shared 2010 · Discussion on HN
    3. 3
      Using Branca as an Alternative to JWT?
      1 person · 2 points · first shared 2017 · Discussion on HN
    4. 4
      Google Maps Without JavaScript
      1 person · 2 points · first shared 2008 · Discussion on HN
    5. 5
      WiFi Trilateration with Three or More Points
      1 person · 2 points · first shared 2017 · Discussion on HN
    6. 6
      Google maps without javascript
      2 people · first shared 2016
    7. 7
      Jeditable
      2 people · first shared 2009
    8. 8
      Introduction to marker clustering with google maps
      1 person · first shared 2011
    9. 9
      Enabled fadein
      1 person · first shared 2010
    10. 10
      Decentralized social media
      1 person · first shared 2024

    What HN people wrote when they linked it

    • ZandikarJul 2021

      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…

    • niyazpkApr 2012

      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.

    • userbinatorJan 2016

      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.)

    • luketaylorDec 2023

      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/

    • tuupolaMar 2024

      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.

    • terryjsmithSep 2010

      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

    Related

    WebKit Blogwebkit.org723 people

    Face ID and Touch ID for the Web

    WebKit Blog
    Company · last shared 2026
    ProgrammableWeb Blogblog.programmableweb.com158 people

    Jobseekers Invited to “Apply Via API”

    ProgrammableWeb Blog
    Company · last shared 2014
    Addy Osmaniaddyosmani.com230 people

    Essential JavaScript Design Patterns For Beginners

    Addy Osmani
    Personal · last shared 2026
    Marcel Weiherblog.metaobject.com47 people

    Meltdown patch reduces mkfile(8) throughput to less than 1/3 on OS X

    Marcel Weiher
    Personal · last shared 2026
    Jake Archibaldjakearchibald.com191 people

    I discovered a browser bug

    Jake Archibald
    Personal · last shared 2026
    Justin O'Beirnejustinobeirne.com103 people

    Google Maps' Moat

    Justin O'Beirne
    Personal · last shared 2026
    Julien Danjoujulien.danjou.info81 people

    Emacs gets Google Maps support.

    Julien Danjou
    Personal · last shared 2026
    Josh W. Comeaujoshwcomeau.com199 people

    CSS Gradients that avoid the “gray dead zone”

    Josh W. Comeau
    Personal · last shared 2026