text:
Hacker News new | past | comments | ask | show | jobs | submit login
Pagination with rel="next" and rel="prev" (2011) (googleblog.com)
212 points by gorm on April 17, 2016 | hide | past | favorite | 90 comments
kmfrk on April 17, 2016 | next [–]
Literally one of the greatest things about the Opera browser was that you could browse an entire forum or whatever (longform article etc) with the Space key, because the browser would automatically go to the `next` page on hitting the bottom of the page. They also did some cool stuff with swiping to the next page on mobile.
Opera seemed like the only browser vendor that truly championed next/prev.
I only do it now as a habit because of Opera - and, since switching to Chrome after Opera's nadir, for accessibility, regardless of whether screenreaders respect it. But I probably wouldn't know about it if not for Opera.
It's both wistful and aspirational to use them, because this is the way browsers were supposed to work - as was generally the case with most things Opera, of course.
toupeira on April 17, 2016 | parent | next [–]
Which is why I love the Space Next addon for Firefox (https://addons.mozilla.org/en-US/firefox/addon/space-next/)
awqrre on April 18, 2016 | root | parent | next [–]
This addon doesn't work properly for me (at least not on the first 2 sites that I tried it on).
ThrustVectoring on April 17, 2016 | parent | prev | next [–]
The feature is available in some browser extensions as well. Vimium, for instance, has that available with ]]
kentt on April 17, 2016 | root | parent | next [–]
Thank you. I use Vimium but never knew about that. I forgot how much I missed that feature on Opera.
kmfrk on April 17, 2016 | root | parent | prev | next [–]
This one also works admirably on Chrome by my brief impression: https://github.com/kenaniah/chrome-navigation-plugin.
kbenson on April 18, 2016 | root | parent | prev | next [–]
The demo video for Vimium at the chrome store has a fairly funny bit where he goes to HN. His reaction, "ahh, sweet." truly embodies the addiction that is HN.
landr0id on April 17, 2016 | parent | prev | next [–]
I saw recently that Safari's reader view actually pieces together paginated articles into one long view. I haven't had a chance to try it myself though.
Jerry2 on April 17, 2016 | root | parent | next [–]
Safari's Reader view is one of the primary reasons why Safari's my default browser. I still use Chrome for development but 99% of browsing & reading, I do in Safari. Low power usage and the speed of Reader view is just unbeatable. It works so well and concatenates most of the paginated articles as well. If you couple it with Page One extension (it has a bunch of rules that automatically re-directs you to a single-page view of articles), 99% of the sites will be a single page in Reader view.
knight17 on April 18, 2016 | root | parent | next [–]
Clearly extension on Firefox also grabs the text from 'next' page(s) content into the readable view. The built-in reader in Firefox can not do that. It is a very useful feature to have.
edit: While looking for the addon at addons.mozilla, I find that it has been discontinued by Evernote: 'This add-on has been removed by its author.' https://addons.mozilla.org/en-GB/firefox/addon/clearly/
Anyone know of another addon that works similarly?
craigc on April 18, 2016 | root | parent | prev | next [–]
Safari's reader view is actually a modified version of readability. At one point I believe Apple even mentioned this in some about screen or article.
There are extensions/bookmarklets available for other browsers at https://www.readability.com.
Personally, I've been reading long form and paginated content using the readability Send to Kindle bookmarklet which works great.
Readability's slow. It sends request to their server. I've tried every extension and addon for Chrome and Safari... and nothing beats Safari's Reader view when it comes to speed and quality of text extraction. When you hit that Command+Shift+R, it is rendered in a fraction of a second.
neuromute on April 18, 2016 | parent | prev | next [–]
It's a shame that Opera didn't choose to open source their code long ago. I can't help but think that would've changed their course drastically, and for the better. Having another Chrome clone seems like a sad way to go.
matsemann on April 17, 2016 | parent | prev | next [–]
Yeah, this article reminded me about that feature. Used to use it all the time.
Fewer webpages where this would be useful now for me. Most either have infinite scroll, or forums/comments are in a complex tree-structure instead of pages.
kmfrk on April 17, 2016 | root | parent | next [–]
Many forums haven't gone anywhere. By forums I mean what some refer to as bulletin boards.
Neither are blogs. Granted, Medium is making a complete mess of the semantic web, but all the more reason for them to support a semantic standard that might guide hapless readers such as myself to find their way.
For the most part, the "change" that "obviates" the standard are developers writing shitty code with all kinds of JavaScript nonsense that wreak havoc on accessibility, load, and UX. It's a little like saying right-clicking and using the back button in the browser aren't needed anymore, because dumb new frameworks are breaking them. :)
Dear lord, I just remembered Twitter's hashbang urls. To this day, they still break my Pinboard bookmarks.
nxzero on April 17, 2016 | parent | prev | next [–]
Good point about making the interface and content more accessible.
anonymfus on April 18, 2016 | parent | prev | next [–]
At least in Microsoft Edge "Next" button on the toolbar sends you to the "next" page.
gorm on April 18, 2016 | parent | prev | next [–]
I actually posted this link because I found pagination by relnext underused while implementing fast forward (with space support) in the Vivaldi browser.
If it's not present we start, like opera did, analyzing links, which is a little messy.
detaro on April 17, 2016 | prev | next [–]
I wonder why they recommend putting <link rel="..."> tags into the head, instead of marking up existing  tags (which you'll have in most cases for prev/next) with rel-attributes. Actual difference in parsing? Just because  tags might not be on every site?
ldjb on April 17, 2016 | parent | next [–]
Well, for one thing, it's in the HTML standard [1].
But also consider websites such as forums that allow users to post custom HTML to a page. Although there is often some sanitisation, that often doesn't stretch to removing attributes from  tags. In those cases, it might be possible for a user to hijack the sequential links and make them point to some other website.
[1] https://www.w3.org/TR/html/links.html#sequential-link-types
detaro on April 17, 2016 | root | parent | next [–]
your link says:
The next keyword may be used with link, a, and area elements
of course it is allowed to put it in <link>. And if your badly sanitized HTML (which hopefully did strip the malicious onClick handler ;)) includes an , are we sure that parsers will prefer the <link> in the header? Or will Google and others actively ignore the , despite the standard allowing it on both? That would be useful to know.
For simple bots putting it in an easy-to-discover link in  might be good, but a search engine and a browser both have to parse the entire page anyways...
tripzilch on April 19, 2016 | parent | prev | next [–]
Because semantics. The location of the "next" page is a property of the entire page, and therefore belongs in the head (similarly, so does the title of the page). It's not a property that may be present in any of the links (or other elements) of the page.
There's a whole lot of advantages that follow, but aren't quite reasons why (e.g. like a physical book, I don't need to read the page itself to figure out where the next page is), but it follows from applying the semantics of webpage (meta) data in a consistent manner.
(except for a CYOA book)
tyingq on April 17, 2016 | parent | prev | next [–]
I believe it's to unambiguously tie the "next" to the page. Where the page content might have, for example, an  that moves images around in a carousel.
ibejoeb on April 17, 2016 | parent | prev | next [–]
There is only one next in the sequence, but there may be multiple navigational elements that bring the user there. For example, links in both a header and a footer.
chias on April 18, 2016 | parent | prev | next [–]
If you had to put them on your 'a' tags, it could conflict with other "rel"s. That is, how would one make a link that was both "next" and "nofollow"? (that's probably a bad example, but you get what I'm getting at)
jonhohle on April 18, 2016 | root | parent | next [–]
Set both: http://www.w3.org/TR/html401/struct/links.html#adef-rel
SilasX on April 17, 2016 | prev | next [–]
One of their examples is a single sentence split over three pages of an article. I'm not sure if that's just a toy example, or also a jab at the way clickbaiters game the view counts.
mitchtbaum on April 18, 2016 | parent | next [–]
I would guess that whoever wrote it subtly wants to say, if web servers\apps send partial responses to requests without a Range header, then something has broken - probably somewhere between our keyboards and chairs.
captainmuon on April 18, 2016 | prev | next [–]
Ah, this might be the cause of the infuriating behavior where you search for a term, and it appears in one page in a huge forum thread, but after clicking on a search result you end up somewhere completely else in the thread.
I don't know whether Google sends you there, or whether the site redirects you from the "view all" page to the first page, but the result is pretty annoying.
wyuenho on April 18, 2016 | prev | next [–]
Besides making the big G happy, these semantic relationships also helps libraries authors to easily traverse a series purely on the front end. Years ago, I looked at Github's pagination API [1] and discovered this approach also makes infinite paging much easier, just send me a bunch of next pointers until there aren't any more. So I decided to support this format by default.
[1]: https://developer.github.com/guides/traversing-with-paginati...
[2]: https://github.com/backbone-paginator/backbone.paginator
zerotosixty on April 17, 2016 | prev | next [–]
How do you guys implement / What's the best practice for paginating your db using sql and nosql?
I know there are a bunch of gotcha's to look out for
I feel there are essentially two approaches. You could store the entire article text as a single chunk of data. The text would be marked-up to indicate where the page breaks are. Each time a page of the article is requested, the entire article is fetched from the database, but the website software extracts only the necessary extract. This is rather inefficient in principle, although it is possible to optimise, and it does keep things relatively simple.
On the other hand, you could have an "articles" table and a "pages" table with the relationship:
articles 1 <--> 1..* pages
Each page's text is stored as a separate row in the "pages" table, along with the article ID and a page number. When a page is requested, only the page that matches the requested article's ID and the appropriate page number. The database schema here is more complex, but is likely to be more efficient.
err4nt on April 17, 2016 | root | parent | next [–]
I'm no DB programmer, but despite the inefficiencies of the first approach (fetch entire article each time and display a different chunk) it would allow for users (or admins) to change page length after the article is written a LOT more easily than if each page was stored separately. Is this a potential concern of using the second method where each chunk is in its own field?
ldjb on April 17, 2016 | root | parent | next [–]
Assuming there is an actual user interface for composing and publishing articles, that interface doesn't have to be dictated by the way the data is stored.
Whichever method you choose, the software will need to be able to transform the data between two formats: one suitable for the user interface, and one suitable for the database.
However you designed the UI, it would be possible to use either approach for the database. For example, suppose the UI used a single textarea and had a special notation for delimiting pages. For the first approach, the contents of the textarea can simply be stored in its own field. For the second approach, the software would take the contents of the textarea, split it into its individual pages, then store each page separately.
If the UI had separate textareas for each page, then for the first approach, the software combines the contents of the textareas and puts in delimiters. For the second approach, each textarea is mapped to their own database field.
I suppose some of combinations are easier for the programmer than others, but so long as the UI is designed to be easy to use, the user need never know how the article is actually represented in the database.
deathanatos on April 17, 2016 | parent | prev | next [–]
http://use-the-index-luke.com/blog/2013-07/pagination-done-t...
Essentially, once your rows are ordered, your next page is "rows > the last row on the previous page, limit <number of items to return>"
This has the fantastic benefit of being index-friendly, which OFFSET is not, and if you structure the URLs for the pages well, obvious what you're getting back. (e.g., if your records are by date, you might get /daily-reports?since=2015-01-04&limit=50 for the page that starts at 2015-01-04)
It's from an SQL site, but the concept is not specific to SQL. I'm working on an implementation of it for data stored in Mongo, at the moment.
_gi12 on April 17, 2016 | parent | prev | next [–]
It's really easy to paginate data with SQL - just use LIMIT and OFFSET.
limit = page_size
offset = (current_page - 1) * limit
For example, let's say you have a table with 1000 products in it, and you want to display page 3 with a page size of 50. Here's how you would write it:
FROM products
OFFSET 100
danneu on April 17, 2016 | root | parent | next [–]
The downside is that OFFSET is slow if you have a lot of items, like on a forum.
At which point you could assign each post in a topic an indexed `position` column that always increases from 0 within that topic, which lets you jump to arbitrary pages and parameterize perPage.
fromPos = (page - 1) * perPage
FROM posts
WHERE topic_id = $1
AND position >= fromPos
AND position < fromPos + perPage
ORDER BY id
For simpler needs, your "Next" button could load items that come after the last ID on the current page but with a LIMIT.
{% for item in items %}

{{ item }}

Next
FROM items
WHERE id > $afterId
LIMIT $perPage
That's fast and really easy.
lox on April 17, 2016 | root | parent | next [–]
This sounds like a really premature optimization to me. Let the DB do it's job unless you have an explain trace showing it's slow for your workload. Trying to do things like sequence columns adds complexity, when this is often handled by the engine.
tripzilch on April 19, 2016 | root | parent | next [–]
Or they could be speaking from experience, because back in the day when webforums where the place to make online communities, as they grew beyond a certain size this sort of thing became THE bottleneck, especially for large threads.
I empirically know this was an issue back then. I also agree it's something a DB engine should handle, and I do hope that databases do a better job today.
So instead of calling out "premature optimization", maybe instead come with a practical example of a DB engine that properly handles this?
danneu on April 18, 2016 | root | parent | prev | next [–]
OFFSET is not "handled by the engine". It heapsorts the entire dataset before you offset to a page.
The top-level comment is asking for good ways to paginate. OFFSET works on localhost and with hundreds of rows. My solution is one that works in production once OFFSET fails you. For me, it was day 2.
seeing on April 18, 2016 | root | parent | next [–]
It was day 2 for you, with the specific engine you used.
You don't need to heapsort the entire dataset before you offset to a page, and there are engines capable of doing this.
lucasmullens on April 17, 2016 | root | parent | prev | next [–]
You need this if it's for a feed that gets frequent updates. Imagine a paginated Twitter feed, and the user clicks a link with ?page=3, and suddenly there's a new tweet, causing page 3 to have a tweet the user saw on page 2. Using afterId solves that.
momo-reina on April 18, 2016 | root | parent | prev | next [–]
I just wrote about doing it this way yesterday.
http://www.mozartreina.com/
mceachen on April 18, 2016 | root | parent | next [–]
You should at least reference the fact that with MySQL, the server has to step through OFFSET result rows before it can start streaming you data. This can get surprisingly expensive, surprisingly quickly. See http://stackoverflow.com/questions/4481388/why-does-mysql-hi...
pmarreck on April 17, 2016 | root | parent | prev | next [–]
And if the data frequently changes during pagination?
objclxt on April 17, 2016 | root | parent | next [–]
That's why it's often better to use a cursor in your client-facing API (or a pseudo-cursor that maps to something you have in your database), rather than passing the limit/offset through.
xrstf on April 17, 2016 | parent | prev | next [–]
As fbonetti already said, LIMIT is the canonical way to do it with SQL databases (I would just add to their comment that you should ensure a positive page_size and offset, because "LIMIT -5" is invalid in at least MySQL, and to limit the page size to some sensible values).
For NoSQL, specifically (only?) CouchDB, you start iterating from a given key (in SQL, this would effectively be "WHERE id >= $start ORDER BY id ASC LIMIT n").
This difference is why I would recommend, especially for paginated REST APIs, to provide links to the next/prev pages, so API clients can follow these links without thinking about how pagination is accomplished exactly. To prevent people from guessing the inner workings and working around your links, you can encode the parameters in a "cursor" (so instead of ?pagesize=20&page=10 you could have ?cursor=base64encode("20,10") (SQL) or ?cursor=base64encode("$startKey") (NoSQL)). IIRC Facebook does it this way. Encrypting or authenticating the cursor is IMHO overblown here, given cursor values can be easily validated and rejected if fiddled with.
Using an opaque cursor also gives you the ability to change how pagination works without breaking existing API clients.
If you plan for lots of data and many pages, think twice before outputting links to all pages (on a website) or outputting the total number of elements (in an API). COUNT(*) on InnoDB is slow and I heard it's not the quickest thing in NoSQL databases either.
yeukhon on April 17, 2016 | root | parent | next [–]
How do you keep the cursor / know where you left off with the database? For example, I don't want to repeat what I saw in page 1 in page 2 because someone else just added more articles.
HappyTypist on April 18, 2016 | root | parent | next [–]
Use continuations.
emmelaich on April 18, 2016 | parent | prev | next [–]
Use the seek method:
http://use-the-index-luke.com/sql/partial-results/fetch-next...
edit: more on this via a slideshare presentation or pdf:
tantalor on April 17, 2016 | parent | prev | next [–]
One great approach is cursors. Basically, you keep track of the value of the sort function (e.g., relevance) of the last record on the page, and add that to your filter (e.g., WHERE relevance > $LAST_RELEVANCE) to get the next page.
This is very efficient when your table is indexed by that field; you can seek directly to the next record.
Some database APIs do this for you!
I wrote up my experience implementing this on App Engine here, http://johntantalo.com/blog/paginating-with-bookmarks-in-app...
spottedquoll on April 17, 2016 | parent | prev | next [–]
Why would you break content into "pages"? If the requestor wants the data, give it to them
Forcing artificial page-breaks is abusive.
So HN should be a single page with all submissions ever? ;)
Yes, don't unnecessarily break up content. But most pages are going to include lists of some sort that you want to be paginated in some way.
If you look at HNs /new queue, there are submission IDs in the next links, so you can click "more" multiple times without seeing content multiple times, even if new submissions have pushed them down in the global list by now. Useful if there are many updates and new entries come in at the "top" of the list.
gnaritas on April 17, 2016 | root | parent | prev | next [–]
So if someone requires the entire table you think a single API call should just send it? Does it not occur to you that people used page data to limit response sizes and manage the performance of their API's?
Roberto_ua on April 17, 2016 | prev | next [–]
What are the recommendations for infinite scroll?
kachnuv_ocasek on April 17, 2016 | parent | next [–]
Don't use it. It's an antipattern and an awful meme.
amelius on April 17, 2016 | root | parent | next [–]
> Don't use it. It's an antipattern and an awful meme.
I sometimes hate it (e.g. in facebook because it bluntly breaks the scrollbar), but at other times I miss it (e.g. in gmail).
MichaelGG on April 17, 2016 | root | parent | next [–]
Even Twitter, for instance, with their hundreds of engineers can't get it right. Login, scroll, read, click something, maybe it navs, maybe it opens a modal. Sooner or later I end up reloading the page and completely losing my place. I dont bother anymore.
M2Ys4U on April 18, 2016 | root | parent | next [–]
Sometimes doing _any_ sort of action will jump to the top of the feed. It doesn't happen as often on web as it does in their app but occasionally it will.
clay_to_n on April 18, 2016 | root | parent | prev | next [–]
Yet the somehow got it right on their iOS app (that top left back button actually works as you'd expect).
Amazing how nice it is on the phone, but how broken it is (because of modal inconsistencies, the way you'll eventually have to press your browser back button) on the web version.
username3 on April 18, 2016 | root | parent | next [–]
wscott on April 18, 2016 | root | parent | prev | next [–]
How about something like photos.google.com? They have infinite(well, all history) scroll, but it is done perfectly. The scrollbar size doesn't change and you are given enough feedback to scroll directly to the part you want.
Similar is google maps. If you make it a large canvas where the missing data is paged in then it becomes quite natural.
ajkjk on April 17, 2016 | root | parent | prev | next [–]
Why's that?
Groxx on April 17, 2016 | root | parent | next [–]
OTOH:
- usually breaks the back button (e.g. scroll to the 20th page, click something, go back. welcome to page 1!)
- usually breaks links (how do you show someone things-on-page-10?) (fixable by tweaking the URL as you go, but nothing is really consistent + predictable by non-technical users)
- usually performs hideously on low-power machines (e.g. mobile) due to memory growth (there are techniques, but few use them). can even tank powerful machines in time.
- footers. headers. etc.
Viper007Bond on April 18, 2016 | root | parent | next [–]
> usually breaks the back button (e.g. scroll to the 20th page, click something, go back. welcome to page 1!)
This is easily overcome by pushState or what have you. As you scroll, the URL in the address bar changes to like `/page/20/` and then going back takes you to that URL where only the results from page 20 are displayed.
This works fairly well in a lot of cases, and I definitely prefer it over page 1. But if you do that, you can't scroll up to see page 19 - you didn't really go back, you were just brought to a one-time page to see that thing you looked at most recently in a massive list. What if you were comparing things on page 17 and 20?
Another approach is with "virtual scrolling", by preserving space for the items above and loading whatever you scroll to - I've seen that once (I forget where) and it was really nice. They didn't tackle the linkability problem tho, and had other issues.
But all of this is fairly complex, and very few sites (or apps!) actually do so. Which is part of the problem.
It is extremely rare that it doesn't bring my browser to its knees after a certain amount of scrolling. (This is with 12 GB on Chrome.)
You will also end up losing your reading position after a browser restart or on iOS where Mobile Safari reloads a page to save memory.
It's a dumb, pointless feature that at the very least shouldn't be the default option. I'm sure there are hypothetical scenarios that may or may not warrant it, but it is a pain and a half for the user. Tumblr blogs have it in spades, and it's a miserable experience to browse.
Guest91283 on April 17, 2016 | root | parent | next [–]
I don't understand why more sites don't just use pagination with larger result sets. Return pages with 100 or 200 results each. It takes a little more bandwidth, but it's a good middle ground between pagination and infinite scroll.
Not to mention that people still use that one terrible loading-animation icon that looks like crap, because they didn't configure the CSS properties correctly.[^1]
[^1]: https://jsfiddle.net/76FSM/17/
ldjb on April 17, 2016 | root | parent | prev | next [–]
There are probably things the web developer can do to minimise memory consumption, though there isn't an obvious solution.
That said, the problem of losing your reading position can be solved using something like history.replaceState(). As the user scrolls, update the history entry with a reference to the current reading location. Then, when the browser restarts, the website can know where the user was previously at and can return them to that location. This is the approach Discourse uses [1]. Alternatively, I suppose cookies could be used, but that's a slightly messier solution, imo.
Unfortunately, I haven't seen many websites adopt such a feature. Which is a shame because infinite scroll can make for a great user experience -- if done right. But too many websites actually suffer as a result of poorly implemented infinite scroll.
[1] https://eviltrout.com/2013/02/16/infinite-scrolling-that-wor...
codedokode on April 18, 2016 | root | parent | next [–]
> Alternatively, I suppose cookies could be used, but that's a slightly messier solution, imo. Cookies are shared between tabs. You should use URL or builtin browser capabilities (remembering scroll position on a page) for this purpose.
Infinite scroll has other UX problems. For example, you cannot see the footer of a page or cannot navigate to the items by page number. As there is no page numbers you cannot even remember how to find some item.
Not necessarily. Though it's true that many implementations have these problems, they're not inherent to infinite scroll.
Regarding footers, who's to say the footer needs to go beneath the infinite scroll area? You could instead place the contents of the footer in a sidebar that stays in a fixed position. Alternatively the footer could be overlayed at the bottom of the page so it is always visible (a recent design trend would have it hide when the user scrolls down, but reappear when the user scrolls up).
As for page numbers, there's nothing stopping you from adding them. Each item should probably have some sort of permalink to allow you access it directly, and there should be suitable navigation to allow you to find individual items.
I find it quite sad that infinite scroll gets a bad rap due to poorly designed implementations. Perhaps it will get a better reputation if more websites actually put some thought into how infinite scroll is used.
currysausage on April 17, 2016 | root | parent | prev | next [–]
Pages become so complex that browsers start lagging. If you click a link on the infinitely scrolling page and then come back, your position is lost and you have to scroll down the whole way again (see Facebook, Twitter).
Scirra_Tom on April 17, 2016 | root | parent | prev | next [–]
I can't stand trying to click a footer link but it keeps loading more content. If you use infinite scroll, don't put anything underneath it.
D-Coder on April 17, 2016 | root | parent | prev | next [–]
Infinite scroll breaks text search. :-(
hisyam on April 18, 2016 | root | parent | prev | next [–]
I love inifinite scrolling in Pinterest but hate it in an ecommerce site with more than 200 items on a page.
azazqadir on April 18, 2016 | root | parent | prev | next [–]
Infinite scroll is fine on some websites, like Reddit, Image galleries or Medium.
ademarre on April 17, 2016 | parent | prev | next [–]
From the same Google Webmasters blog (2014): https://webmasters.googleblog.com/2014/02/infinite-scroll-se...
azazqadir on April 18, 2016 | parent | prev | next [–]
Like everyone else said, avoid using infinite scrolling, because it's not suitable for all types of websites. But if you still want to use it, then add a "load more" button just before footer. So, if someone want to check out footer information, he doesn't have to face the annoying infinite scrolling.
amelius on April 17, 2016 | parent | prev | next [–]
Can anybody point to an implementation of infinite scroll that actually works? I know facebook's implementation doesn't work correctly because the scrollbar breaks when scrolling down using it.
austinjp on April 17, 2016 | root | parent | next [–]
Seems that we can learn lessons from comments here, and hopefully some can point to a decent implementation, or build one.
Salient points seem to be:
# Update URL during scrolling so links don't break, and link to the "deep" item not just the first page.
# Don't break history, so back/forward/reload buttons act as would be expected.
# Truly endless scrolling kills browsers due to consuming increasing resources, so don't do it. Seems that a compromise might be: larger page sizes that lazy-load content up to a sensible max length. For example, in a data set of 1,000 results perhaps display the first 10 immediately and lazy-load up to 50 during scrolling. Then normal paging occurs. (Max items per page could be user-selected, as is currently seen sometimes.) Items that have scrolled off the top of the page could be removed from the DOM too, and lazily reloaded on demand.
# Endless scrolling is not always appropriate, but there may be appropriate use cases. It would be good to identify these cases, perhaps through user testing.
# Obviously, it shouldn't break screen readers or text-only browsers etc. These should be handled gracefully.... which raises the question of how to effectively navigate through a large list, possibly of unknowable length, in these browsers.
I feel sure I've seen various of these, but not all together in one implementation. Anyone seen somewhere that does all this well?
Any further suggestions/criticisms of this pattern?
jalfresi on April 17, 2016 | root | parent | next [–]
I've seen implementations on other systems where this has been solved by placing a vertical bar to the right of the window. The height of this bar represents the total length of the document. Inside this vertical bar is a small bar which represents the current viewing window on the document. The user can "scroll" this small bar to move the current viewport over the large document.
I think I might start overriding the existing methods which users are used to with this method because I've build websites for a couple of years and think I know better than years of UI development by much more experienced people than I.
Sounds familiar. I recall instances where the small vertical bar-within-a-bar you mention becomes vanishingly small, and the overall page size unmanageable, making "scrolling" a joke.
It would be nice to know if we're making progress on problems like this. Paging and scrolling both evolved to solve problems. Perhaps they're imperfect, or could stand improvement. Perhaps not. Regardless, an open-minded discussion would probably shed some light on current thinking.
CiPHPerCoder on April 17, 2016 | prev | next [–]
This is a blog post from 2011. The current HN submission title does not indicate this article's age.
DiabloD3 on April 17, 2016 | parent | next [–]
I agree, but Google still seems to recommend this usage.
peterburkimsher on April 18, 2016 | prev | next [–]
The iPod Notes format used this type of pagination! It was essential back then because each note could only have a maximum of 1000 characters.
draw_down on April 17, 2016 | prev | next [–]
One of the nice things this does is give the browser's "reader mode" a hint where the next page is. And it's great. Only problem is, publishers seem to have no interest in helping the reader mode. On the contrary, many seem hell-bent on defeating its content detection algorithm, etc, to make it useless so we all look at their stupid ads.
dumbguy on April 17, 2016 | prev [–]
Also known as a good way to break many a SPA.
ycombobreaker on April 17, 2016 | parent [–]
Single page application? Can you explain why the existence of next/prev relationships would break these? I would expect such a site to simply not use this. It's definitely nice for linearly-linked content on supporting browsers (e.g. old opera, as mentioned elwewhere in this thread).
dumbguy on April 18, 2016 | root | parent [–]
Well, look at it this way, when creating a SPA, you're running everything in a single place. A single HTML page. In some instances, it makes sense to push the state to the query string, but often it doesn't, and more often still are the occasions developers haven't thought about it. So every time you hit the back button, and weren't where you thought you would be, that's the same issue. SPA frameworks's are getting better at that, but this still happens to me on the daily.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact


You enter the room. For some it's a familiar room. For others, not. Some faces you recognize and hugs are exchanged. Some faces are new and introductions are exchanged. You grab a drink. Pull out a chair. Take out your script. Grab a pencil.
It's first read - the first time the director, stage manager and actors get together and just sit around a table and read the script. It's the first time you hear all the actors voices, the first time you start to get a sense of what this cast and this director are about to make of this script.
First judgements are made. You try not to, but you can't help it. Wow. She's really good. Jeez. He's already got the makings of his character. Uh-oh. That guy's going to need some work.
And you wonder what they think of you? Did they hear how you just nailed that last line? You hope they don't hear the flaws in your British accent. It's early in the process. Are you throwing out too much too early? Or too little? Hold back? Open up?
Let go. It's first read.
Pictured above: MISALLIANCE director Sam White with cast member Carl Cawthorne.


We are a family owned and operated real estate brokerage on the Hilo side of the Big Island. We pride ourselves on our exceptional work ethic and ability to place our client's needs first. We are always striving to better ourselves as a company in order to serve our clients to the best of our ability. We provide real estate services to help you buy or sell residential properties/vacant land. We look forward to working with you and making you feel a part of our family!
Born and raised in Hawaii, our company's agents are knowledgeable in the East Hawaii local real estate market. With over 10 years of experience in the real estate business, Ah Chong Realty will make sure that our clients understand the current market and are aware of the different aspects that play a part in the real estate transaction.
Choose the team that will make your real estate transaction a priority during this exciting period of your life.


Clips Casual Pants - Crepe, no appliqués, basic solid color, high waisted, regular fit, straight leg, zip, no pockets, stretch, pants. 70% Viscose, 26% Acetate, 4% Elastane.
Clips Casual Pants - Twill, no appliqués, solid color, high waisted, regular fit, straight leg, hook-and-bar, zip, multipockets, stretch, pants. 70% Polyester, 24% Viscose, 6% Elastane.
Clips Casual Pants - Plain weave, no appliqués, basic solid color, mid rise, regular fit, straight leg, hook-and-bar, zip, no pockets, stretch, pants. 63% Polyester, 32% Viscose, 5% Elastane.
8 clever strategies—no coupon-clipping required.


Looking to elope with that special someone. There are great places in New Hampshire that cater to those who want to elope!
Looking to get married? Don't want to spend THOUSANDS on a huge wedding? Come to the Snowflake Inn and take advantage of our elopement package!
Why spend tens of thousands on a wedding and a honeymoon when you can do it all at one place and at a low price at Coppertoppe Inn and Retreat Center!
Farm by the River offers many different amenities such as horseback riding, horse-drawn carriage rides elopements and small weddings.
Bayside Inn is located right on Lake Winnipesaukee, in Alton Bay. Along with 300' of water front you will enjoy beautiful views from your room.


Hi, welcome to my portfolio website. My name is Bart Heijt and currently I am working in the DAF Design Center, Eindhoven, The Netherlands. As Automotive designer at DAF I am responsible for designing parts for exterior and interior, meeting the requirements for both styling and engineering. Before DAF I worked at CNH Industrial as part of a six month internship.
I am a Master graduate (MA) in Transportation and Car Design which I followed at Scuola Politecnica di Design, Milan, Italy. Before I went to Italy, I finished my bachelor degree (Bsc) in Industrial Design Engineering at the Delft University of Technology, The Netherlands. During my time there I participated in an exchange program at the School of Arts and Design at the Coventry University, United Kingdom, in Automotive and Transportation Design.
Next to my job at DAF I also work as a freelance designer. I design for companies and foundations but also for individual persons or groups. From graphical applications such as posters, signs, logo's, photo retouching, and digital 3d work, to tangible products like physical chairs, lamps etc.
My aim is to frequently add content to this website. If you have any questions you can contact me here. You can also get in touch with me on Linkedin where you can also see my full CV, follow me on Instagram or view my 2016-2017 portfolio in pdf here.
*All products from my portfolio are designed by me and can therefore not be used or copied without permission. All logo's used in the drawings are used for study purposes or owned by the clients I worked for. All photographs and products I used in the blog are made by other artists, and I will strive to give the rightfull artist the credits. No rights can be derived from the given information on this website.


text:
namespace EmbeddedWizardDemo
{
    partial class Step2
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.lstCourses = new System.Windows.Forms.ListBox();
            this.btnAdd = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // lstCourses
            //
            this.lstCourses.FormattingEnabled = true;
            this.lstCourses.Location = new System.Drawing.Point(12, 39);
            this.lstCourses.Name = "lstCourses";
            this.lstCourses.Size = new System.Drawing.Size(434, 225);
            this.lstCourses.TabIndex = 11;
            //
            // btnAdd
            //
            this.btnAdd.Location = new System.Drawing.Point(371, 270);
            this.btnAdd.Name = "btnAdd";
            this.btnAdd.Size = new System.Drawing.Size(75, 24);
            this.btnAdd.TabIndex = 10;
            this.btnAdd.Text = "&Add";
            this.btnAdd.UseVisualStyleBackColor = true;
            this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
            //
            // Step2
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(459, 306);
            this.Controls.Add(this.lstCourses);
            this.Controls.Add(this.btnAdd);
            this.Name = "Step2";
            this.Text = "Step2";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Label lblCaption;
        private System.Windows.Forms.ListBox lstCourses;
        private System.Windows.Forms.Button btnAdd;
    }
}

redpajama_set_name: RedPajamaGithub


When you're in an accident, your entire life changes. With the help of the best personal injury law firm, Schuler Law Office, your rights can be protected. We understand the stresses that you face following an accident. We can help represent you and help you to get the compensation you deserve. During a free consultation, we will discuss your case and determine whether or not your case is a case that we can assist with.
Our team at Schuler Law Office has the experience needed to provide you with the representation you need during your Kentucky personal injury lawsuit. We will be there through it all – from the investigation process through settlement negotiations and in the courtroom. We will give you the care that you required in order to get the best results for you regarding your personal injury lawsuit.
Why Are We the Best Personal Injury Law Firm?
We are confident and fully understand Kentucky personal injury law. We have represented countless clients all of whom have been represented fairly and justly throughout their entire legal process. We work hard to help you to retrieve the most compensation for your losses as we possibly can get for you. We also can work directly with insurance companies, meaning that all the hard work is out of your hands. This leaves you to recover from your injuries or allow you to go about your daily activities without any added stress.
Our personal injury cases include injuries from dog bites, nursing home abuse, wrongful death, workers compensation, defective products, car accidents, slip and falls, or even construction accidents. Our team is prepared to provide you advice related to Kentucky law that helps you to understand the process better. Don't wait to contact the best personal injury law firm in Louisville today! We're waiting to hear from you and will immediately start working with you on the first steps to take regarding your personal injury lawsuit today.


Although new slot machines are released online and at land based casinos on a regular basis, we rarely get as excited about new slot machines as we've gotten about the release of the 50 Dolphins slot machine by Ainsworth Game Technology. Featuring 50 lines of gaming action, the 50 Dolphins slot machine was introduced online for the first time in May of 2013 and has already made quite a splash amongst casino players from around the world (no pun intended). With some of the most impressive features you'll ever see on a slot machine including stacked wilds and a fantastic free games feature, we can't help but recommend the 50 Dolphins slot machine to all of our website visitors!
As we mentioned above, the 50 Dolphins slot machine was created by Ainsworth; an Australian based gaming company that specializes in developing state-of-the-art casino games that are unlike any others. From the moment you play your very first spin on the 50 Dolphins slot machine, you'll immediately realize why Ainsworth is one of the leaders in creating innovative casino games that appeal to a wide variety of players. The graphics alone on the 50 Dolphins slot machine are enough to entice even the most hesitant of players to try their luck on a few spins, but when you couple the graphics with its magical sound effects and lucrative bonus round feature, the 50 Dolphins slot machine becomes simply irresistible!
The bonus round feature on the 50 Dolphins slot machine is without a doubt one of the most entertaining slot machine bonus rounds available online. To trigger the bonus round, you must collect three or more scattered Coin symbols anywhere on the reels. Once triggered, you will be awarded 10 free games during which stacked Dolphin symbols acting as wilds can appear anywhere on the middle three reels. During the bonus round, you can win an additional 5 free games whenever you collect three or more Coin symbols on any spin, which gives you a chance to extend your bonus round and increase your winnings while playing the 50 Dolphins slot machine!
Now that you know a little bit about the 50 Dolphins slot machine, we think you'll agree that this is undoubtedly one of the most exciting slot machines to be released in quite some time! In fact, we'd go as far as to say that there won't be another game quite like this one released anytime soon, so do yourself a favor and try out the 50 Dolphins slot machine today to see firsthand everything that this game has to offer!
You can find Ainsworth's 50 Dolphins slot machine in land-based casinos and in online casinos. Depending on where you live, there are different online casinos that will accept your wagers. Here are our recommendations of online casinos where you can play the 50 Dolphins slot machine and the countries they accept as players.
50 Dolphins is available online exclusively at MoneyGaming. They do not accept players from United States. Please see below for online casinos where you can play similar games that will accept your wagers.
Many of the older style slot machines are no longer visually appealling, however the graphics on these images you've included are so very striking. I am always drawn to colourful images on machines.
I agree, I'm totally drawn in by good graphics and find colourful, detailed images much more appealing than a lot of the more generic ones offered by many on offer today. There's something strangely exciting about glimpsing a new slot machine's graphics and being hooked in that first few seconds, completely grabs my attention & reels me in! Loving this offering from Ainsworth!


text:
Ту () — коммуна во Франции, находится в регионе Центр. Департамент — Шер. Входит в состав кантона Вайи-сюр-Содр. Округ коммуны — Бурж.

Код INSEE коммуны — 18264.

География
Коммуна расположена приблизительно в 165 км к югу от Парижа, в 80 км юго-восточнее Орлеана, в 45 км к северо-востоку от Буржа.

По территории коммуны протекают реки , правый приток реки Шер, и Салерен.

Население
Население коммуны на 2008 год составляло 78 человек.

Администрация

Экономика

В 2007 году среди 50 человек в трудоспособном возрасте (15-64 лет) 34 были экономически активными, 16 — неактивными (показатель активности — 68,0 %, в 1999 году было 68,4 %). Из 34 активных работали 32 человека (20 мужчин и 12 женщин), безработных было 2 (1 мужчина и 1 женщина). Среди 16 неактивных 2 человека были учениками или студентами, 9 — пенсионерами, 5 были неактивными по другим причинам.

Примечания

Ссылки

Коммуны департамента Шер

redpajama_set_name: RedPajamaWikipedia


text:
Home Webinars Modern Greek Studies The Greek Military Dictatorship: Revisiting a Troubled Past, 1967-1974
This event (part of a series on Modern Greek Studies co-organised by the BSA and the Greek Politics Specialist Group), will reflect on the military regime's reactionary, ultra-conservative, repressive and pseudo-modernising attitudes and policies towards education, youth and culture, as well as on the long lasting legacies of this disturbing past. Some of these views draw from the recently published volume The Greek Military Dictatorship: Revisiting a troubled Past, 1967-1974 (Berghahn 2021) edited by Anastasakis and Lagos, which contains a novel and well-researched study of the regime's domestic and foreign affairs, a haunting period in Greece' s recent history.
Othon Anastasakis is the Director of South East European Studies at Oxford (SEESOX); Senior Research Fellow at St Antony's College; Associate at the Department of Politics and International Relations; Affiliate of the Centre for International Studies; Affiliate of the Oxford School of Global and Area Studies (OSGA); former Director of the European Studies Centre, St Antony's College, Oxford (July 2012-October 2015). Katerina Lagos is a Professor of History at California State University, Sacramento and the Director of the CSUS Hellenic Studies Program and Hellenic Studies Center.
Discussants: Konstantina Botsiou (University of Peloponnese) & Eirini Karamouzi (Sheffield University)
Organised by Eirini Karamouzi (University of Sheffield) and Lamprini Rori (University of Exeter) and hosted by the British School at Athens.
The Greek Military Dictatorship: Revisiting a Troubled Past, 1967-1974 – YouTube
Previous articleThe Greek Military Dictatorship: Revisiting a Troubled Past, 1967-1974
Next articleGPSG Newsflash 01/22

redpajama_set_name: RedPajamaCommonCrawl


text:
Penkridge band Sugarthief talk ahead of new single release - unsigned interview
Staffordshire | Entertainment | Published: Mar 31, 2017
After a sold out launch event at The Sunflower Lounge, Penkridge band Sugarthief have released their fourth single When Did It All Go Wrong.
Formed in summer 2015 by brothers Jordi and Jack James and featuring ex-school mates Luke Owen and Reece Downton, the band enjoyed a successful 2016 establishing themselves on the local scene and beyond.
This began when the group released debut single New Ends that saw them being regularly played on both BBC Introducing WM and Amazing Radio. The group released their second single, Crowing Youth, and they were invited to perform an unplugged live session for BBC Birmingham. The first two tracks led to Sugarthief to become the first band to be included via submission of a demo on the Flying Vinyl music subscription service. It led to a succession of headline shows at popular Birmingham venues such as The Oobleck, The Sunflower Lounge, O2 Academy and The Victoria.
The band's latest single sees them channelling a sense of indie-rock nostalgia of the mid-noughties with a sound not far removed from early Arctic Monkeys, Reverend & The Makers and The Strokes that's certain to take the band to the next level. '
"All of these songs are really about my view of the world," says frontman Jordi.
"As a typical teenager I like to question everything I read, hear and see. You start to unearth different emotions and experience new feelings, and music helps me to explore and express these.
"The title of the song, When Did It All Go Wrong, seems more apt now than when we wrote it – but the track is really about people's ever growing fear of rejection or desperate need for recognition."
Accompanied by a pastel tinged video, When Did It All Go Wrong provides an assault on the visionary senses that harks back to a vintage age of video making. "The video brings together the typical stereotypes seen every day on social media sites – all fighting for attention instead of just living their lives," says Jordi.
When asked about what the future holds. he says: "We really want to just keep on writing more songs and performing them to as many people as possible. The past 12 months have been great fun and a fantastic experience, the more we play, the more we learn and the more people we meet . . . we just want more! The dream would be to play some of the bigger more established music festivals – we're playing Bands on The Beacon in Walsall in July and have just been selected to play When in Manchester festival on the Flying Vinyl Stage. Our launch show at The Sunflower Lounge sold out – which was amazing, as Circa Waves and Magic Gang also played.
"We'll have a couple of other headline gigs later in the year, and are hopeful of supporting more bands as they tour through Birmingham. We also want to get back in the studio as we've written some amazing new songs. The plan is to crowd-fund an album or EP – we are all poor students so any money we get from ticket sales or merchandise sales goes straight into recording music." Having been listed as one of 20 Birmingham Bands You Need To Hear Now on Fred Perry Subculture as well as being played by Steve Lamacq on his BBC Radio 6 Music show, the future looks bright for this Staffordshire four piece. "Hopefully as more people hear us and the words spreads we'll get more national airplay, but we have no illusions – there are a lot a great new bands in the Midlands – let alone the UK, all hoping for a little break.
"The West Midlands often gets overlooked but there is such amazing talent out there – go to a gig and see for yourself – it's million times better than watching a manufactured talent show on TV!"
By Dan Earl
Follow the band on Facebook.com/sugarthiefuk, Twitter @sugarthiefuk, or Instagram.com/sugarthiefuk
Entertainment Staffordshire entertainment News Local Hubs Staffordshire Stafford Penkridge Walsall
'I hope people will be moved and it makes them think a bit': Black Country film-marker talks Bafta-nominated Ray and Liz
Cradley Heath | Feb 9, 2019
Wolverhampton micropub pulls in cider award
Wolverhampton | Jun 19, 2019
Top children's attractions in the Midlands and Shropshire
Entertainment | Aug 22, 2018
UK News | Last updated: 1 hour ago


80% of all B2B leads generated via social media come from LinkedIn, according to this Oktopost infographic. Being recognizes as a thought leader or influencer through mastery of LinkedIn B2B marketing can deepen engagement with high-value audiences and provide significant visibility for your company and brand. Of the network's 500 million members, 61 million hold senior leadership positions and 40 million are B2B decision-makers.
The LinkedIn marketing tactics that were effective in 2016 are unlikely to work today. The LinkedIn algorithm now rewards high-quality content creators with visibility, while significantly limiting the exposure of lower-quality LinkedIn users.
Although you can certainly find tips and tricks on how to "beat the algorithm" with optimized posts, you can't really hack your way to hard-earned status as an B2B marketing influencer with genuine engagement by posting sub-par content.
If you really want to be perceived as an industry thought leader and build a LinkedIn following, there are some top B2B influencers who provide some valuable cues to help you network your way to the top.
1. Trish Bertuzzi | CEO at The Bridge Group, Inc.
With over 216,000 followers, Trish Bertuzzi's LinkedIn presence is among the most prominent in B2B marketing. Her posts emphasize the value of human relationships and trust in marketing through compelling anecdotes and stories. Followers can anticipate a mixture of insights through podcast links, videos and other highly relevant content.
Trish has mastered the art of creating compelling, multimedia content which is easily consumable for LinkedIn users – including stories, anecdotes and short-form video. She's also an engaged member of conversations around B2B sales, marketing and entrepreneurship who actively comments and shares content from within her network.
Aside from his role at Terminus, Sangram Vajre is well-known for his daily "#FlipMyFunnel" podcast on B2B marketing, sales and customer success. While his LinkedIn presence and social media strategy for sharing content reflect a broad mixture of B2B insights, his podcast's promotion on his LinkedIn profile is particularly inspiring.
Aspiring influencers may want take a cue from Sangram's mastery of LinkedIn. His podcast is well-optimized for search with a well-written description and visually appealing links to recent content.
3. Aaron Ross | Co-CEO at Predictable Revenue, Inc.
With over 30,000 followers, B2B marketing influencer and author Aaron Ross is an excellent LinkedIn source for webinars, videos and articles on sales conversion optimization.
Aaron takes full advantage of LinkedIn Pulse to share his thought leadership efforts, frequently publishing insightful interviews with B2B sales leaders who get to the heart of issues such as customer experience, revenue forecasting and prospecting best practices.
4. Matt Heinz | President at Heinz Marketing, Inc.
In addition to his role at Heinz Marketing, Matt Heinz is well-known throughout the demand generation and ABM verticals for his work as a keynote speaker, author and host of Sales Pipeline Radio.
With over 34,000 LinkedIn followers, Matt focuses on sharing stories and insights through long-form posts which are optimized for visibility on the network. His thoughts spark engagement and conversation among his followers, not only increasing his own visibility but encouraging more connection between marketers and sales pros.
As one of the original co-founders of Marketo (which as we all know recently landed a massive acquisition by Adobe) Jon is a highly sought-after keynote speaker and recognized influencer in topics such as marketing automation, predictive analytics, ABM and demand generation for B2B marketing.
Jon regularly shares high-value content with his LinkedIn followers to help them up-level their strategies and rethink their current marketing tactics.
With over 25 years of experience in B2B marketing and account-based marketing (ABM), Peter Isaacson is widely recognized as a key expert in topics such as demand generation, multi-channel marketing, lead management and more. His LinkedIn updates include valuable insight into the future of ABM, best practices for account-based marketing success, industry news and emerging research. Peter regularly contributes to LinkedIn Pulse to further share his expertise in account-based strategy.
Near and dear to our hearts at Integrate, Scott Vaughan is recognized B2B marketing influencer. His areas of focus include integrated marketing at the intersection of art and science, sales enablement, thought leadership marketing and strategic positioning.
Scott's actively shares an array of industry news, trends and research, while always including his own thoughtful analysis on each piece of content.
And last but far from least, with over 338,000 LinkedIn followers, Ann Handley is among the most influential thought leaders on LinkedIn. Ann's posts garner hundreds to thousands of interactions on LinkedIn. She shares content that teaches, enlightens and inspires us to all be better marketers, writers, professionals and people.
If you're looking to add someone to your feed whose posts will often make you think or smile, and who can help you step up your game, Ann is definitely a LinkedIn influencer worth following.
Although there are several social media analytics platforms for business, they aren't really built to measure the success of your personal LinkedIn strategy.
For demand generation professionals who aspire to be thought leaders, LinkedIn is the ideal platform to create an optimized profile, develop a content strategy, engage with others and build an audience. Not only does LinkedIn offer strong B2B lead generation potential for businesses, but it's also among the ideal channels for people to develop their reputations as subject matter experts. And after all, it's our presence as leaders in the industry that truly amplifies the presence of our brands.
While LinkedIn algorithms are in a state of rapid flux and the role of social marketing is evolving quickly, influencer status is worth striving for. At the end of the day, what's really important is to be authentic, find your voice, share helpful content with your unique point of view and engage with others who are adding value to the community.


There are many different ways out there to spy on somebody. Ranging from call recording to video call recording, every method has been used to spy on someone. Each method comes with its own risk and own advantages. However, a very safe way of knowing what a person writes on his or her device is through keylogger spy software.
There are two methods through which one may be able to spy on a person's keystrokes. First one is the software method and the second one is the hardware method. The target person can easily detect the hardware method. Because you must attach the keylogging device to the computer. The software is relatively safe.
A keylogger spy software records the keystrokes of a person. If a person doesn't have an anti-keylogger or an antivirus installed on their computer or another gadget, they may never know that their keystrokes are being recorded. This software is for all kinds of gadgets especially personal computers where might be keeping a few secrets.
Usually, people need such software in office computers, children's computers or the PC of their spouse. If a company deals with information which they cannot afford to leak then for them a keylogger spy software can be very useful to know the keystrokes of the employees. You can see how to install keylogger here. It helps the management to know which employee might be doing things slightly out of the line and that's how they can catch the person in action.
Similarly, when children use their PC, they sometimes go to prohibited websites and talk to strangers out of curiosity so catching them in time can save them from serious consequences. In the end, the most useful purpose is to keep an eye on one's spouse. This can give the person an idea of what their spouse types on their PC and through that they can find out whether something is fishy or not.
All of these keylogger apps are free, and all of them have minor differences with one major similarity. It will keep you updated about the targeted person's keystrokes. It also keeps records about entire emails/messages.
There is one very important yet controversial use of keylogger, and that is to know the passwords of the targeted person. How is that possible? Well, when the person types a password, even that is saved as a keystroke. This makes one wonder if someone is spying on you as well. One can't be sure. Some of those softwares are very well hidden. Therefore, even you will not be sure if someone is keeping an eye on your activities. Another very important legal aspect is that you should be the owner of the device otherwise you will be invading the privacy of the targeted person without their consent.
These apps mostly provide limited functions, but at pctattletale.com you can find every function along with keylogging. It is considered as the most reliable one in the market. If you are planning to go for such a spying method, then PC Tattletale will give you all those facilities in just one app. You can try it free by using the pctattletale free download link. Registration and other methods are quite easy, so there won't be any confusing steps where you might decide to give up simply.


text:
Mastermind Century Group
A Curator of Strategy, Leadership, Spirituality, and Rock and Roll…. "Changing the world…one "contact" at a time…."
About Bill DeMarco
Strategy/Policy
DeMarco Originals
Course Info/Data
DeMarco Banter.com
Posted on August 24, 2012 August 24, 2012 by jstfly21
How 'Air-Sea Battle' Fits In U.S. Planning By Michael O'Hanlon and James Steinberg
Pg. 13
The new concept of American overseas military operations known as "Air-Sea Battle" has come under scrutiny and criticism. Popular with the Air Force and Navy, it has been construed as an aggressive policy, and some in the Pentagon see it as a way for those two services to grab budget share away from the Army. Across Asia, especially in China, many view it as a way for the United States to challenge a rising People's Republic.
In fact, as a military concept, Air-Sea Battle reflects some needed rethinking in response to global changes in weaponry and military strategy in the Middle East and especially East Asia. The challenge for policymakers is not to discard it and replace it with something more seemingly benign but to place it within a broader security strategy for the Asia-Pacific region that preserves stability and protects U.S. interests without becoming unduly confrontational.
China's military budget is almost $200 billion a year, according to the Defense Department, which makes it the world's No. 2 military power. With those considerable funds, China is building and purchasing advanced submarines, more and increasingly accurate ballistic and cruise missiles, homing munitions on antiship ballistic missiles, satellites, antisatellite weapons and modern stealthy combat aircraft. American analysts often label these innovations as part of an "anti-access/area denial" strategy that could be employed against U.S. forces in the region. The Chinese would try to push U.S. forces back from areas near China or seek greater ability to dominate waters near Taiwan as well as the South China and East China seas.
In response, the Air-Sea Battle concept seeks to use new technologies to counter these perceived Chinese initiatives as well as similar — if more modest — efforts by Iran to challenge U.S. capabilities in the Persian Gulf. Air-Sea Battle rightly emphasizes improved command-and-control, precision strike, advanced missile defenses, robotics, submarine operations, and the use of air and space domains. So far, it has not involved big new weapons platforms.
The challenge for policymakers is that each country tends to see the other's efforts to defend its interests as threatening or even provocative — what political scientists call the "security dilemma." Chinese strategists are acutely aware of their country's history of being attacked by sea, so they want to reduce their vulnerability to foreign forces. Meanwhile, the U.S. Air Force and Navy argue that the Air-Sea concept is not directed at China but, rather, is about preserving U.S. military access and — perhaps most important — sustaining the credibility of U.S. security commitments to allies.
Because of their size and capabilities, China and the United States represent a central element in each other's major strategic planning. Denials of this lack credibility and feed distrust — which is all the more reason policymakers must put this military doctrine into perspective and not let it become a prescription for unfettered rivalry.
While U.S. defense spending and capabilities still appear astronomical to China — and U.S. alliance partners themselves formidable — officials in Beijing should keep in mind that perhaps half of U.S. defense capability is intended for other parts of the world — and that the turbulence in the broader Middle East suggests it will continue to be. The United States is no declining superpower, but the country is nonetheless war-weary and financially strapped. U.S. leaders are cutting military spending even as they speak of "rebalancing" toward Asia. Moreover, the international order that U.S. military force has upheld for decades is serving both countries' core economic interests.
For the United States, China's rise is impressive and in some ways foreboding. But China is still a developing country: It ranks roughly in the middle of all nations in per capita gross domestic product, at less than $10,000 a year, according to the World Bank. In coming years it will also face enormous demographic, environmental, economic and governance challenges. Although its military budget is growing fast, such spending is just 2 percent of China's GDP, or less than half of the U.S. level (more than 4 percent). The stock of modern U.S. military equipment is worth $3 trillion; despite its spending, China is at perhaps 10 percent that figure. Nor does China's military have experience in modern combat operations.
None of this attempts to justify every Chinese or American modernization. But the main challenge for those worried about the risks of rivalry and war is to place military innovation efforts in a broader political strategy that recognizes the benefits of Chinese-U.S. cooperation as well as the mutual risks if competition turns into rivalry or conflict.
As we continue necessary military modernizations, enhanced dialogue with China's military and foreign policy actors will become all the more important, as will sober crisis management when problems arise. Our current approach seems well-balanced, but the task will require active management on both sides for decades to come. Air-Sea Battle is not the problem, but neither can it be the entirety of the solution.
Michael O'Hanlon is a senior fellow at the Brookings Institution. James Steinberg, a deputy secretary of state in the Obama administration, is dean of the Maxwell School at Syracuse University.
CategoriesStrategy/Policy
Previous PostPrevious A Time To Redesign Government By Michele A. Flournoy
Next PostNext Why America Lacks Global Leaders by Bronwyn Fryer
Clones and Bad Ideas
Synchronicity, Jung, Yeats, and Sting—DeMarco Banter
The Four Disciplines of Organizational Health
Nothing Changes on New Year's Day…
The Enlightened Rebel's 4 Cs of Anointed Leadership: DeMarco Banter
Synchronicity, Jung, Yeats, and Sting—DeMarco Banter m100group.com/2021/01/13/116… 1 week ago
The Enlightened Rebel's 4 Cs of Anointed Leadership: DeMarco Banter m100group.com/2020/12/23/the… 4 weeks ago
Leadership Philosophy 101: Who Are You?… DeMarco Banter m100group.com/2020/12/16/lea… 1 month ago
RT @CJBSsocinnov: Traditionally, an #masters in #socialinnovation residential ends with a formal dinner at a #Cambridge college. Good food,… 1 month ago
11 Reminders For Busy Leaders: Just Say NO To Status Quo: Neo-DeMarconian Memories m100group.com/2020/12/09/11-… 1 month ago
Bill's TEDx Talk
https://www.youtube.com/watch?v=ivYprJSIuGY
Who in the world is Mr Mojo Risin?
Walking through Cambridge: The Pink Floyd Sound—Us and Them and Losing One's Sanity—DeMarco Banter
"The House of the Rising Sun" recorded in 1934....really?
Lex Luthor/Professor X
jstfly21
Pondering many things from National Strategy, Family, God, politics…mountain biking, education, Star Wars, Batman, aircraft, cars, policy, history, the decline of empire…good food, fitness, surfing, hiking, outdoors, rock climbing, kayaking, the 49ers, The Clash, Pink Floyd, Led Zeppelin, but where would one go to find such things?


text:
package com.microsoft.azure.management.monitor.v2016_03_01;

import java.util.Map;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
 * Specifies the action to post to service when the rule condition is
 * evaluated. The discriminator is always RuleWebhookAction in this case.
 */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "odata.type")
@JsonTypeName("Microsoft.Azure.Management.Insights.Models.RuleWebhookAction")
public class RuleWebhookAction extends RuleAction {
    /**
     * the service uri to Post the notification when the alert activates or
     * resolves.
     */
    @JsonProperty(value = "serviceUri")
    private String serviceUri;

    /**
     * the dictionary of custom properties to include with the post operation.
     * These data are appended to the webhook payload.
     */
    @JsonProperty(value = "properties")
    private Map<String, String> properties;

    /**
     * Get the service uri to Post the notification when the alert activates or resolves.
     *
     * @return the serviceUri value
     */
    public String serviceUri() {
        return this.serviceUri;
    }

    /**
     * Set the service uri to Post the notification when the alert activates or resolves.
     *
     * @param serviceUri the serviceUri value to set
     * @return the RuleWebhookAction object itself.
     */
    public RuleWebhookAction withServiceUri(String serviceUri) {
        this.serviceUri = serviceUri;
        return this;
    }

    /**
     * Get the dictionary of custom properties to include with the post operation. These data are appended to the webhook payload.
     *
     * @return the properties value
     */
    public Map<String, String> properties() {
        return this.properties;
    }

    /**
     * Set the dictionary of custom properties to include with the post operation. These data are appended to the webhook payload.
     *
     * @param properties the properties value to set
     * @return the RuleWebhookAction object itself.
     */
    public RuleWebhookAction withProperties(Map<String, String> properties) {
        this.properties = properties;
        return this;
    }

}


text:
Found a New Religion Based On You
I'm on a deadline... please talk amongst yourselves.
PS: Is it just me or do these guys sound a lot like the Ataris?
Labels: Time Tells All
And then there's this:
In the spirit of The Beatles' Love, someone remixed and recombined a bunch of Rutles songs... and...
I'll let him tell you:
During a layover between flights in 2000, Stig befriended the founder of renowned square dancing troupe Circle of Hay. Over beers in the Concourse bar, they discussed the idea of doing a new show using Rutles music but lost touch after Stig's retirement. With the blessings of Dirk and Barry, who were easily reached, work began on recombining classic Rutle tracks in ways that could support a show and give this semi-legendary band another lunchtime.
They made the Sixties what they are today, and we hope we have helped make them that again.
The Circle of Hay/Rutles collaborative production of LUNCH ran for 3 shows at Tulsa's Central Community Center, February 29-31 2010.
I'm sure there was a good reason I missed this important show. But I can't recall what it was; better check my calendar!
Labels: the Rutles
Dig, Deep
Elena read her story in class.
It was about something I can't remember. Some barely disguised version of herself going on and on about some trivial event from her childhood.
It didn't ring true. No one wanted to tell her. Because we all liked her.
But this piece was horrible. It didn't mean anything. It felt like a huge monument to nothing.
But no one wanted to tell her.
When we went around the room, no one spoke.
So the professor had to sum up what we were all thinking.
"I know it has a lot of meaning to you," he said gently. "Because you bring all your experiences, all your feelings, all your past, into it. But the rest of us... we're outside. And from the outside, it doesn't seem important."
She bit her lip. "But this is what happened," Elena objected.
"Dig. Deeper," he said.
She turned away. "You could be on the verge of something. Something important. But you have to make us see it. Make us feel it."
Her eyes teared up. She seemed opened her mouth to speak. But nothing came out.
So she ran out of the room. And dropped the class.
Years later, I ran into her. Randomly. In a coffee shop.
And we had a nice talk.
Eventually circling back to that day in that class.
And all she could remember were the details of her story. Which still meant nothing to me.
And all I could think about was her biting her lip. And starting to cry. And running out.
One event.
Two frameworks.
Each one sticking with a different person. For different reasons.
Labels: Big Daddy
Twin Songs of Different Mothers?
Or is this song by Kaiser Chiefs...
...just another way of expressing the sentiments of this song by Dogs Die in Hot Cars?
Happy Monday everyone...
Labels: Dogs Die in Hot Cars, Kaiser Chiefs
Falling Off the Sky
From New York, North Carolina, and all over the world
There's a new dB's album out called Falling Off the Sky.
It's their first album in 25 years, their first with the original lineup in 30 years.
They've been recording it (slowly) since 2005.
And when I heard about it, I hoped.
But I didn't let myself hope too much. I didn't want to be disappointed.
After all, how many reunion albums by once-vibrant bands arrive with a noisy clunk. You listen once or twice, then wish they'd never gotten back together.
That's what I was afraid of.
The new dBs album has no reason to be good.
No reason to be as good as their classic records from long, long ago.
They sound just as good as they ever did. But somehow also have the wisdom of their experiences over the past 30 years.
So, courtesy of Bar/None and the dBs, enjoy these tasty tracks from Chris Stamey, Peter Holsapple, Will Rigby, and Gene Holder (with some help from producer/guitarist Mitch Easter):
Labels: dBs
All The Way Through History
Man Machine No Mystery
I wish I'd made this up:
Tween #1: I like that band XTC. My dad listens to them.
Tween #2: When were they popular? The 90s? The 80s?
Tween #1: I dunno. Sometime before we were born.
Tween #2: Yeah. They had that big green record with the horse, right?
Tween #1:I think so. Hey wasn't that the first album that used an electric guitar?
Tween #2: Must have been.
I fear for the future.
She Came Out of the Past
I've got special powers that render me invisible to everyone but you
Tara rolled down the mountain.
In an old car. With bad brakes.
She rolled down like the fog rolling in. Like an old memory that jabs your brain in the middle of the night, waking you from a sound sleep.
She came into town with a vengeance. With memory banks armed to the teeth.
She had information. Some of it true, most of it not.
Years earlier, she'd been one way. Then she'd changed.
I could spend hours speculating about what happened. Hours explaining it.
But that's all it would be -- speculation.
Which rolls under doors like the fog. Or the old car with bad brakes gunning down the mountain pass.
What exactly was this? Dread? Anger? Guilt? The thawing of long-frozen engines?
"Tara's coming back," I told a friend.
"I hope not," he answered.
I told a few other friends. They all had the same answer.
"Isn't she the one who tore your still-beating heart from your chest, ran it up a flagpole, and shot missiles through it?"
Yes. Not literally, of course. But if she'd had the power.
"What makes you think anything's different?" a friend asked me.
I don't know. I don't know how to answer that.
"What makes you think anything's the same?" someone else said.
I don't know that either.
All I know is the feeling. Hard to put into words. Hard to distinguish from memory. Or anger. Or fantasy.
Tara's coming.
So it shouldn't have been a surprise when her text appeared: "I am storming the Bastille of your heart."
Days late. Or maybe years.
I wasn't sure when. I wasn't sure where. I was definitely not sure why.
But one thing was certain: Tara was coming back.
Jettin' Out to Rio
And some other sunny spots
I was listening to the rerelease of Nick Lowe's first record Jesus of Cool (retitled Pure Pop For Now People for the U.S. with a few track changes). It's a great two-disk set... although for some reason I couldn't find the second disk.
If I left it in a rental car in Alaska and you find it, please send it back to me.
This song mentions three of the major record labels from 1978.
Of the three:
CBS (Columbia Records in the U.S.) was sold to Sony in 1988
Arista was sold to a German company (which also bought RCA) that rechristened itself BMG. Arista operated as a label until it was eliminated in 2011 in a corporate reorganization, which Detroit staffers refer to as "going to the big Pontiac in the sky"
Only Atlantic still exists -- and that's probably because it already sold out to Warner Bros. in the late 1960s.
Funny how the world changes...
Just What the Truth Is I Can't Say Anymore
I rolled my eyes. I didn't want to hear it again.
Because I grew up listening to FM radio. And if I haven't heard it a million times, it's probably in the tens of thousands.
And it's overblown. And overwrought. And has that line I've never been able to figure out. (I look it up every few years, then instantly forget it.)
"There's a reason these things are classics," she said to me.
And I sneered. (Inasmuch as I can sneer.) "Yeah," I said. "Because people years ago had no taste."
"Just listen," she said. And she lowered the needle onto the vinyl.
And I closed my eyes. And I forgot all the tens of thousands of times I'd heard it.
Forgot the early girlfriend who loved the song. And the later one who hated it.
I let go of all the associations.
And just listened.
"I know," she said when it was over. "I know."
And while I certainly don't need to hear it a million more times, I get it now. Again.
I understand why it's a classic.
Flaws and all.
Labels: Moody Blues
Day in the Life Surprise Ending
Yeah, might have seemed a bit too hippie-ish.
Still... this ending is appropriately cool.
Labels: Beatles
Everybody Wants An Egg
How did it last this long?
"These days," she said.
And I waited.
"These days what," I wondered. But I waited patiently.
"These days it's hard to see," she said.
And she sighed.
And gestured at a pile of newspapers. Or maybe the TV.
I nodded cautiously. These days it's hard to tell how to deal with her.
She sat slowly. Sinking her long legs into the couch.
Sighing.
Taking a sip of herbal tea.
"These days," she said. Again.
And I waited. Because often she'd say something insightful.
But not that day.
Labels: Todd Rundgren
Hey Babe, It's a Summer Rerun
[Originally published July 4, 2009]
For a few minutes in the 1980s, guitarist Billy Zoom left the band X and was replaced by Dave Alvin of the roots-rock band the Blasters. Alvin had previously played with X's D.J. Bonebrake, John Doe, and Exene Cervenka in the acoustic-country collective the Knitters.
Alvin wouldn't last long in X, but he did bring in an amazing song he wrote -- a sad and poignant look at the City of Angels that's worth revisiting more than once a year.
And another version (sung here by Alvin himself) for your holiday listening pleasure:
Ironically, by the time X got around to releasing the song, Alvin was already gone (replaced by guitarist Tony Gilkyson) and X itself would soon be gone (although they'd resurface and vanish again several times in the 1990s).
For years, one of my favorite radio stations would play this song every July 4th at noon. They played it from vinyl and the record was filled with clicks and pops that perfectly amplified the song's story of disappointments and the sad shimmer of hope. A few years ago, that radio station upgraded all their equipment and their library. When they played the song at noon on the 4th of July, the sound from a shiny, newly remastered CD free from surface noises.
It just wasn't the same.
Labels: Dave Alvin, X
Louder Than a Big Bass Drum
Salivate Like a Pavlov Dog
"Don't tell me," she said.
But I did. I couldn't help myself.
It didn't help. I should've known it wouldn't. But I had to. It was a compulsion.
Looking back, I know the problem wasn't hers. It was mine.
Briefly, she attracted men like flames attract moths.
Until they circle, drawn in by the light and heat that blinds them.
Until it kills them.
And I had to tell her this.
I don't know why.
I can't imagine what effect I imagined it would have for me to speak these words. To tell her this truth.
She denied it, of course.
I can't think of anything else she might have done.
And I stood back. Watching. The moths circling.
The words lingering, sizzling around the flame.
Too late to take back.
Labels: the Rolling Stones


text:
GagaOOLala – Asia's first LGBT Film Streaming Platform
Melissa Carlo
On Friday, June 14th, Asia's first LGBT film streaming platform, GagaOOLala, finally came. The Taiwanese OTT platform is currently expanding into 8 territories that constitute South Asia. Also, adding up to a total of 21 countries across the continent, accessing over one-third of the global population.
GagaOOLala is starting its journey in India with 377 LGBT titles. This number, however, is expected to reach well over 400 by the end of the month. 377 is an oddly specific number, and with good reason, as it brings honour to Section 377!. This was done to celebrate the repeal of the law that banned homosexual acts in the country which was finally removed from the penal code on September 6th, 2018.
Jay Lin, founder of GagaOOLala
Among its vast catalogue, GagaOOLala will feature a ton of exclusively queer content. Some of this has never been distributed in India.
These include international box office hits, like the recent Taiwanese gay/lesbian family drama – Bao Bao. Multiple film award winners like last years Thai entry for the Academy Awards – Malila: The Farewell Flower and the Filipino transgender drama – Those Long Haired Nights.
Multiple exclusive short films from filmmakers across the world like the classic series such as Queer as Folk. Furthermore, there are new gems like the multi-awarded French LGBT series – Les Engages and the first Singaporean gay series – People Like Us.
People Like Us, Season2, Now streaming on GogoOOLala
In addition, GagaOOLala has a diverse and growing slate of original content. It will produce its first original in India as part of the new season of Queer Asia.
The shooting of episodes did take place in 5 different countries of the region. The docu-series Queer Asia explores the uniqueness of the LGBT culture in India.
Thereby, GagaOOLala is looking for local producers, filmmakers and creators to collaborate and bring the series to life.
Collaborations and Expressions:
KASHISH Mumbai International Queer Film Festival is the largest queer film festival in India. It recently signed a 3-year collaboration agreement with GagaOOLala. The Taiwanese platform will sponsor the Best International Short Film Award during the period of the collaboration. They will also offer a distribution deal to each year's winner.
Moreover, a selection of the Best Short Indian films ever screened at KASHISH will be available on GagaOOLala to all Asia, under the brand "Best of KASHISH".
Sridhar Rangayan – Kashish Organizer and Jay Lin – Founder or GogoOOLala
GagaOOLala founder, Jay Lin, expresses that "India is changing rapidly. What seemed impossible one year ago is now a reality. Thanks to events like this film festival and the people behind it. For almost a decade KASHISH has brought the best local and international LGBT films to the cinemas of Mumbai. This furthermore, builds up an amazing community. Through this partnership, GagaOOLala wants to bring these diverse stories to places where queer film festivals are still unthinkable. We are also looking for local projects to combine creative elements from South and Southeast Asia and distribute them globally."
More About GagaOOLala:
The platform is one of the five members of the Marriage Equality Coalition Taiwan, a lobby that has pushed for same-sex marriage rights in the island for years.
On May 17th, Taiwan became the first country in Asia to pass the same-sex marriage bill.
Now, GagaOOLala looks forward to spreading the strength of the Taiwanese LGBT community, and help push for more equal rights in India and the rest of Asia through the power of the stories in its films.
GagaOOLala is currently available in 21 territories (Afghanistan, Bangladesh, Bhutan, Brunei, Cambodia, Hong Kong, India, Indonesia, Laos, Macau, Malaysia, Maldives, Myanmar, Nepal, Pakistan, Philippines, Singapore, Sri Lanka, Taiwan, Thailand, Vietnam), and it currently offers two types of memberships: a limited free one, and an unlimited VIP membership for 390 Rupees. The platform also updates new content every week.
FSOG Picks
Tagged: GagaOOLalaIndian LGBT communityPrideSection 377
This author has not added a biography. Meanwhile Melissa Carlo has contributed 77 posts.	Click here	to view them.
Lawyers Who Fought For Legalising Homosexuality Will Now Fight For Same Sex Marriages In India
September 8th, 2018 is the day Indian government decided to scrape the 158
Queer Villains That Are Praised By The LGBTQ Youth
Throughout the history of Cinema, something has been catching our eye ̵
How Well Do you Know India's Pride Movement History?
The term 'Pride' is associated with LGBTQ+ pride movement march
A Survivor's Story: Abhijit Has Been Through A Lot & Came Out Victorious
Abhijit Arun Gadakh went through a lot in his life. Even so, he rose up to
Tips To Navigate Through The Holiday Season: Unaccepting Family
The holiday season always means meeting up with the family. This also means
Things To Know About Transitioning
Contraceptives: A Brief (and goofy) History


text:
Haim >
Haim's secret sister power
By Bang Showbiz on 16 February 2013
Follow Haim
Haim have a ''secret power'' because they are sisters, as they can intuitively predict what the other band members will do.
Haim have a ''secret power'' because they are sisters.
The 'Don't Save Me' band - Este, Danielle and Alana Haim- have been performing together since they were children making it much easier than playing with other people as they can pre-empt each other's moves.
Danielle said: ''It's not magic, it's just when you live in close quarters, you figure out every single thing about the other person. You know exactly where they're gonna go next, musically. It's definitely a secret power.''
Danielle added she tried to form a band when she was at school, but it didn't work out an she was quickly kicked out.
She explained to NME magazine: ''I had a band for one day in middle school. We all said we'd start a band. But then I got really frustrated with them. I was like, 'How can you not know C, G and F chords? I made them all cry and they kicked me out of the band.''
Haim are currently working on their debut album in Los Angeles.
Haim delay 2021 UK tour dates due to COVID-19 travel restrictions
Haim collaborate with Paloma Wool on album-inspired shirts
Haim drop expanded version of Women In Music Pt III featuring Taylor Swift and Thundercat
Haim share snippet of new version of Gasoline featuring Taylor Swift
HAIM - Christmas Wrapping 2020 (All I Want For Christmas Time Is A Vaccine) Video Video
Haim - Man From The Magazine Video Video
Haim hail Stevie Nicks 'the best human on this planet'
Haim - Don't Wanna Video Video
Haim turned dark times into 'lightness' on their forthcoming album
HAIM inspired by Madonna
Haim's new song I Know Alone was eerily penned pre-pandemic
Haim - The Steps Video Video
HAIM - Summer Girl Video Video
'We Fired Our Agent': How The Gender Pay Gap Hit Haim At A Festival
Bands Index: 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


text:
package HelperClasses;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

public class GeneralHelpers {
    public static void copyIntArray(int[] source, int[] destination) {
        for (int i = 0; i < source.length; ++i) {
            destination[i] = source[i];
        }
    }

    public static int[] generateArray(int requiredLength, int maxNum) {
        int[] a = new int[requiredLength];

        for (int i = 0; i < requiredLength; ++i) {
            int randomNumber = (int) (Math.random() * maxNum);
            a[i] = randomNumber;
        }

        return a;
    }

    public static int[] generateArrayWithNegativeNumbers(int requiredLength, int maxNum) {
        int[] a = new int[requiredLength];

        for (int i = 0; i < requiredLength; ++i) {
            int randomNumber = (int) (Math.random() * maxNum);
            int sign = (int) (Math.random() * 2);

            if (sign == 1) {
                randomNumber = -randomNumber;
            }

            a[i] = randomNumber;
        }

        return a;
    }

    public static String getRandomDateString(String dateFormat) {
        DateTime dateTime;
        long currentTimeMillis = System.currentTimeMillis();
        long offset = (long) (Math.random() * currentTimeMillis);
        if ((int) (Math.random() * 2) == 0) {
            dateTime = new DateTime(currentTimeMillis - offset);
        } else {
            dateTime = new DateTime(currentTimeMillis + offset);
        }

        return DateTimeFormat.forPattern(dateFormat).print(dateTime);
    }

    public static void swap(int[] a, int idx1, int idx2) {
        int tmp = a[idx1];
        a[idx1] = a[idx2];
        a[idx2] = tmp;
    }
}


In the run-up to Christmas we are again offering our Special Voucher worth €175 for just €50. This voucher entitles the recipient to a portrait sitting (which normally costs €50) and either, a 7" gift print, or €125 off a framed wall portrait or collection.
The voucher must be registered with the studio within 3 months of the purchase date and used within a further 3 months.
The expiry date for this 'Special Voucher' is six months from date of issue.
The 'Special Voucher' cannot be used in conjunction with any other offer, or used to buy prints from a previous session.
Only one special offer €175 gift voucher is allowed per family session.
Session times available for use of this voucher are Tuesday to Saturday.
This 'Voucher Special' can be purchased through our website by clicking on the 'voucher sales' tab above. This voucher can also be purchased by phone or email, or by appointment at the studio.